Longterm Targets of Ports Collection

Also known as sneaking changes.

Converting from NO_STAGE to staged

find /usr/ports/ -type f -name Makefile -exec grep NO_STAGE '{}' '+' | wc -l

4588 ports left

Converting @exec install-info to INFO

Number of ports using INFO: 395

Number of ports with @exec install-info in their pkg-plist: 12

That gives us: 3.03% is rotten

find /usr/ports/ -name Makefile -exec grep ^INFO= '{}' '+' | wc -l
find /usr/ports/ -name pkg-plist\* -exec grep -l exec.install-info '{}' '+' | wc -l

Better use of RC_SUBR infrastructure

Number of ports with USE_RC_SUBR: 924

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

Number of ports that install any rc script: 989

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 | uniq | wc -l

Not using :: in patchfile name

Number of patch files with : in the name: 1288

Total number of patch files: 25588

That gives us: 5.03% is rotten

find /usr/ports/ -name '*patch*:*' | wc -l
find /usr/ports/ -name '*patch*' | wc -l

unexec rmdir

Number of @unexec rmdir lines in plists: 42

Number of @dirrmtry in plists: 65327

That gives us: 0.005% is rotten

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: 2

Total number of CPAN ports: 5900

That gives us: 0.03% is rotten

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

Note that USE_DOS2UNIX is deprecated in favor of USES=dos2unix

Number of ports that use USE_DOS2UNIX: 224

See http://www.freebsd.org/cgi/query-pr.cgi?pr=87234

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

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

5 ports left

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

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

132 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

10 ports left

Number of ports which set QTDIR

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

58 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 perl 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>

Ports that depend on xorg-libraries

No ports should depend on the meta port. Instead they should USE_XORG with the specific libs they care about

find /usr/ports/ -name Makefile\* -maxdepth 3 -mindepth 3 -exec grep -H USE_XLIB '{}' '+' | wc -l

Number of ports total: 1

Fix LIB_DEPENDS

Fix LIB_DEPENDS

Doc Targets

See also DocLongtermTargets

References to NOPORTDOCS/NOPORTEXAMPLES/NOPORTDATA

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

1598 ports left

DOCS and EXAMPLES: convert to OptionsNG DATA: drop now

gnomehack vs pathfix

find /usr/ports/ -name Makefile\* -mindepth 3 -maxdepth 3 -exec grep -F "gnomehack" '{}' '+' | wc -l

181 ports left

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

Remove use of pkg-req

Any port which uses pkg-req should be changed to do the work in Makefile or pkg-message

Poorly written COMMENTs

- Remove Leading Articles From COMMENTs

cut -d'|' -f 2,4 /usr/ports/INDEX-10 | egrep "\|(A|An|The) " | wc -l

2947 ports left

- Comments with words "very" or "extremely" in them

cut -d'|' -f 2,4 /usr/ports/INDEX-10 | egrep -i "\|.* very|extremely " | wc -l

22 ports left

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

6013 ports left

PortsLongtermTargets (last edited 2014-04-16 08:18:40 by CarloStrub)