Longterm Targets of Ports Collection

Also known as sneaking changes.

Better use of RC_SUBR infrastructure

Number of ports with USE_RC_SUBR: 988

Number of ports that install rc script manually (bad use of RC_SUBR and non-RCng scripts): 103

Number of ports that install any rc script: 1046

find /usr/ports/ -name Makefile -exec grep ^USE_RC_SUBR '{}' '+' | wc -l
find /usr/ports/ -name pkg-plist\* -exec grep -l etc/rc.d/ '{}' '+' | wc -l
(find /usr/ports/ -name pkg-plist\* -exec grep -l etc/rc.d/ '{}' '+' | cut -d / -f 5; find /usr/ports/ -name Makefile -exec grep ^USE_RC_SUBR '{}' '+' | awk -F '/' '{print $5}') | sort -u | wc -l

unexec rmdir / @dirrmtry

Number of @unexec rmdir lines in plists: 8

Number of @dirrmtry in plists: 0

find /usr/ports/ -name pkg-plist\* -exec grep 'unexec.rmdir %D' '{}' '+' | wc -l
find /usr/ports/ -name pkg-plist\* -exec grep dirrmtry '{}' '+' | wc -l

CPAN ports that use ../../authors as SUBDIR

Number of ports that use MASTER_SITE_SUBDIR=../../authors: 0

Total number of CPAN ports: 6234

find /usr/ports/ -name Makefile -exec grep '^MASTER_SITE_SUBDIR.*\.\./.*authors' '{}' '+' | wc -l
find /usr/ports/ -name Makefile -exec grep '^MASTER_SITE.*CPAN' '{}' '+' | wc -l

Ports which don't use USES=dos2unix

See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=87234

Number of ports that have ^M's in the Makefile

find /usr/ports/ -name Makefile\* -exec grep `printf '\15'` -l '{}' '+' | wc -l

1 ports left

Number of patch-files that have ^M's in them

find /usr/ports/ -name '*patch-*' -exec grep `printf '\15'` -l '{}' '+' | wc -l

109 ports left

nox-- added EXTRACT_BEFORE_ARGS+= -aq because of the ^Ms in projectx

QT/QMAKE settings

Number of ports which set QMAKESPEC

find /usr/ports/ -name Makefile\* -exec grep -l QMAKESPEC '{}' '+' | wc -l

7 ports left

Number of ports which set QTDIR

find /usr/ports/ -name Makefile\* -exec grep -l QTDIR '{}' '+' | wc -l

56 ports left

Remove unnecessary dependencies (Perl core modules) from {BUILD|RUN|TEST}_DEPENDS

I (sunpoet@) am working on this issue.

You can use corelist (devel/p5-Module-CoreList) to check if the specific dependency/module has been added to Perl core modules. If so, you may either

Note that please align PERL_LEVEL checks to stable Perl releases (lang/perl5.*). If one modules has been added to Perl since 5.9.3, please use .if ${PERL_LEVEL} < 501000 instead of .if ${PERL_LEVEL} < 500903. By doing so, it has higher possibility to merge multiple PERL_LEVEL checks to one check.

Example 1:

BUILD_DEPENDS=  p5-parent>=0:${PORTSDIR}/devel/p5-parent

According to corelist (parent was first released with perl v5.10.1), the above line should be changed to

.include <bsd.port.pre.mk>

.if ${PERL_LEVEL} < 501001
BUILD_DEPENDS+= p5-parent>=0:${PORTSDIR}/devel/p5-parent
.endif

.include <bsd.port.post.mk>

Example 2:

The port requires Compress::Zlib 2.030 or above.

BUILD_DEPENDS=  p5-IO-Compress>=2.030:${PORTSDIR}/archivers/p5-IO-Compress
RUN_DEPENDS:=   ${BUILD_DEPENDS}

Accoring to corelist, Perl bundled Compress::Zlib 2.030 since 5.13.4. The above lines should be changed to

.include <bsd.port.pre.mk>

.if ${PERL_LEVEL} < 501400
BUILD_DEPENDS+= p5-IO-Compress>=2.030:${PORTSDIR}/archivers/p5-IO-Compress
RUN_DEPENDS+=   p5-IO-Compress>=2.030:${PORTSDIR}/archivers/p5-IO-Compress
.endif

.include <bsd.port.post.mk>

References to NOPORTDOCS/NOPORTEXAMPLES

find /usr/ports/ -name Makefile\* -mindepth 3 -maxdepth 3 -exec egrep "NOPORTDOCS|NOPORTEXAMPLES" '{}' '+' | wc -l

13 ports left

DOCS and EXAMPLES: convert to OptionsNG

Fix USE_PERL5 and USE_PERL5_BUILD pulling perl as EXTRACT_DEPENDS and PATCH_DEPENDS

This should be fixed as it reduced over dependencies which also speed up operation on package building cluster (around 5% performance boost has been noticed in that case)

These should be fixed as other important issues are fixed

Poorly written COMMENTs

X11 ports lacking .desktop files

awk -F\| '$9~/libX11/{print $2}' /usr/ports/INDEX-10 | while read port; do grep -q DESKTOP_ENTRIES $port/Makefile || grep -q share/applications $port/Makefile || grep -q share/applications $port/pkg-plist 2>/dev/null || echo $port; done | wc -l

5381 ports left

Reproducible Builds

See ReproducibleBuilds/Ports

Undefined LICENSE

find /usr/ports -name Makefile -depth 3 -exec grep -L '^LICENSE=' {} + | wc -l

10230 ports left

This one-liner is not ideal as it does not take into account that the license could be included in an extra Makefile (as for example it is done in mail/claws-mail: there are two makefiles: Makefile and Makefile.claws; the license is specified in Makefile.claws).

Other tasks

List of things need to cleanup the infrastructure.

nuke EXTRACT_PRESERVE_OWNERSHIP

it is not needed anymore

move MTREE_CMD TOUCH PATCH TAR etc definition to bsd.commands.mk)

more cleanups

move WWW to Makefile

done

move all the DESKTOP_* into a USES=desktop

while here extract the shell part into a proper script

refactor the following targets: checksum/do-config/compress-man/create-manifest/fetch/patch info using external readable scripts

that will improve the check Q/A check we can do as well as makeing code more maintainable

continue moving most of bsd.*.mk into USES=

this will improve flexibility


CategoryPorts CategoryTodo

Ports/LongtermTargets (last edited 2023-06-29T12:15:49+0000 by ReneLadan)