Contents
-
Longterm Targets of Ports Collection
- Better use of RC_SUBR infrastructure
- unexec rmdir / @dirrmtry
- CPAN ports that use ../../authors as SUBDIR
- Ports which don't use USES=dos2unix
- QT/QMAKE settings
- Use of SITE_PERL in dependencies
- Remove unnecessary dependencies (Perl core modules) from {BUILD|RUN|TEST}_DEPENDS
- References to NOPORTDOCS/NOPORTEXAMPLES
- Fix USE_PERL5 and USE_PERL5_BUILD pulling perl as EXTRACT_DEPENDS and PATCH_DEPENDS
- Poorly written COMMENTs
- X11 ports lacking .desktop files
- Reproducible Builds
- Undefined LICENSE
- Other tasks
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
- Remove it from {BUILD|RUN|TEST}_DEPENDS if it is already in all supported Perl releases (they are 5.8.9, 5.10.1, 5.12.* and 5.14.* currently)
Add corresponding PERL_LEVEL check (see Example 1 & 2) if it exists only in some supported Perl releases
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
- Remove Leading Articles From COMMENTs
cut -d'|' -f 2,4 /usr/ports/INDEX-10 | egrep "\|(A|An|The) " | wc -l
528 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
23 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
5381 ports left
Reproducible Builds
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 |