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

Use of SITE_PERL in dependencies

/!\ As of September 2013, bsd.perl.mk is dead. Therefore, this section may be obsolete.

This is problematic because it means that bsd.perl.mk must be included for the port's Makefile just to make the dependency work, thus hindering efforts to make it a conditional include.

Number of ports that use ${SITE_PERL} in dependencies: 1

find /usr/ports/ -name Makefile -exec egrep -l '\${SITE_PERL}.*\${PORTSDIR}' '{}' '+' | wc -l

Fix: Depend on packages for erl ports, rather than the .pm file;

instead of:

${SITE_PERL}/IO/Tee.pm:${PORTSDIR}/devel/p5-IO-Tee

use instead

p5-IO-Tee>=0.64:${PORTSDIR}/devel/p5-IO-Tee

There is a script at http://www.bayofrum.net/~crees/scripts/bin/site_perl_to_packages.sh to automate this, but you MUST ensure that the dependencies are correct before committing!

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>

Doc Targets

See also DocLongtermTargets

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

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 2018-07-11 06:54:31 by KubilayKocak)