Date: Sun, 9 Dec 2012 07:35:12 GMT From: Garrett Cooper <yanegomi@gmail.com> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/174291: [pkgng] fails to properly register manpages for pkg-remove and pkg-static because of bad MLINKS shims in bsd.port.mk Message-ID: <201212090735.qB97ZC4P073852@red.freebsd.org> Resent-Message-ID: <201212090740.qB97e0FE070504@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 174291 >Category: ports >Synopsis: [pkgng] fails to properly register manpages for pkg-remove and pkg-static because of bad MLINKS shims in bsd.port.mk >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Dec 09 07:40:00 UTC 2012 >Closed-Date: >Last-Modified: >Originator: Garrett Cooper >Release: 10-CURRENT >Organization: EMC Isilon >Environment: FreeBSD fallout-atf-current.local 10.0-CURRENT FreeBSD 10.0-CURRENT #3: Mon Oct 22 10:30:54 PDT 2012 root@fallout-atf-current.local:/usr/obj/usr/src/sys/GENERIC i386 >Description: pkg-remove and pkg-static's manpages aren't being properly registered for pkg-1.0.3_1, even though they're being installed properly. The problem is how bsd.port.mk is dealing with the MLINKS variable as the plist generated is busted. My guess is that it's this section of code that's doing things wrong in bsd.port.mk: 2995 .if (defined(MLINKS) || defined(_MLINKS_PREPEND)) && !defined(_MLINKS) 2996 __pmlinks!= ${ECHO_CMD} '${MLINKS:S/ / /}' | ${AWK} \ 2997 '{ if (NF % 2 != 0) { print "broken"; exit; } \ 2998 for (i=1; i<=NF; i++) { \ 2999 if ($$i ~ /^-$$/ && i != 1 && i % 2 != 0) \ 3000 { $$i = $$(i-2); printf " " $$i " "; } \ 3001 else if ($$i ~ /^[^ ]+\.[1-9ln][^. ]*$$/ || $$i ~ /^\//) \ 3002 printf " " $$i " "; \ 3003 else \ 3004 { print "broken"; exit; } \ 3005 } \ 3006 }' | ${SED} -e 's^H \([^/ ][^ ]*\.\(.\)[^. ]*\)^H $${MAN\2PREFIX}/$$$$$$$${__lang}/man\2/\1${MANEXT}^Hg' -e 's/ /^H/g' -e 's/MANlPREFIX/MANLPREFIX/g' -e 's/MANnPREFIX/MANNPREFIX/g' 3007 .if ${__pmlinks:Mbroken} == "broken" 3008 check-makevars:: 3009 @${ECHO_MSG} "${PKGNAME}: Makefile error: unable to parse MLINKS." 3010 @${FALSE} 3011 .endif It doesn't seem correct for MLINKS to be duplicated between the package installation and the installation proper though, so I just nuked the references and given that tar does the right thing with hardlinks I assumed it best to apply the attached patch and move on. ports should do the right thing for non-autoconf based ports, but that's an aside to the issue that's seen here that can be easily resolved. root@fallout-atf-current:/usr/ports/ports-mgmt/pkg # make reinstall ===> Installing for pkg-1.0.3_1 ===> Generating temporary packing list ===> external (install) ===> external/sqlite (install) ===> external/libyaml (install) ===> libpkg (install) install -C -o root -g wheel -m 444 libpkg.a /usr/local/lib install -o root -g wheel -m 444 libpkg.so.0 /usr/local/lib ln -fs libpkg.so.0 /usr/local/lib/libpkg.so install -C -o root -g wheel -m 444 pkg.h /usr/local/include install -m 644 pkg.pc /usr/local/libdata/pkgconfig ===> pkg (install) install -o root -g wheel -m 555 pkg /usr/local/sbin install -o root -g wheel -m 444 pkg.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-add.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-audit.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-autoremove.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-backup.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-check.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-clean.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-create.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-delete.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-fetch.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-info.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-install.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-query.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-register.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-repo.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-rquery.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-search.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-set.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-shell.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-shlib.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-stats.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-update.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-updating.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-upgrade.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-version.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-which.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg.conf.5.gz /usr/local/man/man5 /usr/local/man/man8/pkg-remove.8.gz -> /usr/local/man/man8/pkg-delete.8.gz /usr/local/man/man8/pkg-static.8.gz -> /usr/local/man/man8/pkg.8.gz ===> pkg-static (install) install -o root -g wheel -m 555 pkg-static /usr/local/sbin If you are upgrading from the old package format, first run: # pkg2ng ln: /usr/local//man8/pkg-remove.8.gz: No such file or directory ln: /usr/local//man8/pkg-static.8.gz: No such file or directory ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ HERE ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ===> Running ldconfig /sbin/ldconfig -m /usr/local/lib ===> Registering installation for pkg-1.0.3_1 pkg: lstat(/man8/pkg-remove.8.gz): No such file or directory pkg: lstat(/man8/pkg-static.8.gz): No such file or directory ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ HERE ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Installing pkg-1.0.3_1... done root@fallout-atf-current:/usr/ports/ports-mgmt/pkg # find /usr/local/man/man8 -name pkg\*.gz /usr/local/man/man8/pkg.8.gz /usr/local/man/man8/pkg-add.8.gz /usr/local/man/man8/pkg-audit.8.gz /usr/local/man/man8/pkg-autoremove.8.gz /usr/local/man/man8/pkg-backup.8.gz /usr/local/man/man8/pkg-check.8.gz /usr/local/man/man8/pkg-clean.8.gz /usr/local/man/man8/pkg-create.8.gz /usr/local/man/man8/pkg-delete.8.gz /usr/local/man/man8/pkg-fetch.8.gz /usr/local/man/man8/pkg-info.8.gz /usr/local/man/man8/pkg-install.8.gz /usr/local/man/man8/pkg-query.8.gz /usr/local/man/man8/pkg-register.8.gz /usr/local/man/man8/pkg-repo.8.gz /usr/local/man/man8/pkg-rquery.8.gz /usr/local/man/man8/pkg-search.8.gz /usr/local/man/man8/pkg-set.8.gz /usr/local/man/man8/pkg-shell.8.gz /usr/local/man/man8/pkg-shlib.8.gz /usr/local/man/man8/pkg-stats.8.gz /usr/local/man/man8/pkg-update.8.gz /usr/local/man/man8/pkg-updating.8.gz /usr/local/man/man8/pkg-upgrade.8.gz /usr/local/man/man8/pkg-version.8.gz /usr/local/man/man8/pkg-which.8.gz /usr/local/man/man8/pkg-remove.8.gz /usr/local/man/man8/pkg-static.8.gz # make -V_MLINKS /usr/local//man8/pkg-delete.8.gz /usr/local//man8/pkg-remove.8.gz /usr/local//man8/pkg.8.gz /usr/local//man8/pkg-static.8.gz After the patch... root@fallout-atf-current:/usr/ports/ports-mgmt/pkg # make reinstall ===> Installing for pkg-1.0.3_1 ===> Generating temporary packing list ===> external (install) ===> external/sqlite (install) ===> external/libyaml (install) ===> libpkg (install) install -C -o root -g wheel -m 444 libpkg.a /usr/local/lib install -o root -g wheel -m 444 libpkg.so.0 /usr/local/lib ln -fs libpkg.so.0 /usr/local/lib/libpkg.so install -C -o root -g wheel -m 444 pkg.h /usr/local/include install -m 644 pkg.pc /usr/local/libdata/pkgconfig ===> pkg (install) install -o root -g wheel -m 555 pkg /usr/local/sbin install -o root -g wheel -m 444 pkg.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-add.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-audit.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-autoremove.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-backup.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-check.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-clean.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-create.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-delete.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-fetch.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-info.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-install.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-query.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-register.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-repo.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-rquery.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-search.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-set.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-shell.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-shlib.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-stats.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-update.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-updating.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-upgrade.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-version.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg-which.8.gz /usr/local/man/man8 install -o root -g wheel -m 444 pkg.conf.5.gz /usr/local/man/man5 /usr/local/man/man8/pkg-remove.8.gz -> /usr/local/man/man8/pkg-delete.8.gz /usr/local/man/man8/pkg-static.8.gz -> /usr/local/man/man8/pkg.8.gz ===> pkg-static (install) install -o root -g wheel -m 555 pkg-static /usr/local/sbin If you are upgrading from the old package format, first run: # pkg2ng ===> Running ldconfig /sbin/ldconfig -m /usr/local/lib ===> Registering installation for pkg-1.0.3_1 Installing pkg-1.0.3_1... done # pkg info -l pkg pkg-1.0.3_1 owns the following files: /usr/local/etc/periodic/daily/411.pkg-backup /usr/local/etc/periodic/security/410.pkg-audit /usr/local/etc/pkg.conf.sample /usr/local/include/pkg.h /usr/local/lib/libpkg.a /usr/local/lib/libpkg.so /usr/local/lib/libpkg.so.0 /usr/local/libdata/pkgconfig/pkg.pc /usr/local/man/man5/pkg.conf.5.gz /usr/local/man/man8/pkg-add.8.gz /usr/local/man/man8/pkg-audit.8.gz /usr/local/man/man8/pkg-autoremove.8.gz /usr/local/man/man8/pkg-backup.8.gz /usr/local/man/man8/pkg-check.8.gz /usr/local/man/man8/pkg-clean.8.gz /usr/local/man/man8/pkg-create.8.gz /usr/local/man/man8/pkg-delete.8.gz /usr/local/man/man8/pkg-fetch.8.gz /usr/local/man/man8/pkg-info.8.gz /usr/local/man/man8/pkg-install.8.gz /usr/local/man/man8/pkg-query.8.gz /usr/local/man/man8/pkg-register.8.gz /usr/local/man/man8/pkg-remove.8.gz /usr/local/man/man8/pkg-repo.8.gz /usr/local/man/man8/pkg-rquery.8.gz /usr/local/man/man8/pkg-search.8.gz /usr/local/man/man8/pkg-set.8.gz /usr/local/man/man8/pkg-shell.8.gz /usr/local/man/man8/pkg-shlib.8.gz /usr/local/man/man8/pkg-static.8.gz /usr/local/man/man8/pkg-stats.8.gz /usr/local/man/man8/pkg-update.8.gz /usr/local/man/man8/pkg-updating.8.gz /usr/local/man/man8/pkg-upgrade.8.gz /usr/local/man/man8/pkg-version.8.gz /usr/local/man/man8/pkg-which.8.gz /usr/local/man/man8/pkg.8.gz /usr/local/sbin/pkg /usr/local/sbin/pkg-static /usr/local/sbin/pkg2ng /usr/local/share/licenses/pkg-1.0.3_1/BSD /usr/local/share/licenses/pkg-1.0.3_1/LICENSE /usr/local/share/licenses/pkg-1.0.3_1/catalog.mk /usr/local/share/zsh/site-functions/_pkg >How-To-Repeat: cd /usr/ports cd ports-mgmt/pkg; make install >Fix: Patch attached with submission follows: diff --git a/ports-mgmt/pkg/Makefile b/ports-mgmt/pkg/Makefile index 1555a94..2962bae 100644 --- a/ports-mgmt/pkg/Makefile +++ b/ports-mgmt/pkg/Makefile @@ -38,6 +38,7 @@ MAN8= pkg.8 \ pkg-install.8 \ pkg-query.8 \ pkg-register.8 \ + pkg-remove.8 \ pkg-repo.8 \ pkg-rquery.8 \ pkg-search.8 \ @@ -45,14 +46,13 @@ MAN8= pkg.8 \ pkg-shell.8 \ pkg-shlib.8 \ pkg-stats.8 \ + pkg-static.8 \ pkg-update.8 \ pkg-updating.8 \ pkg-upgrade.8 \ pkg-version.8 \ pkg-which.8 MAN5= pkg.conf.5 -MLINKS= pkg-delete.8 pkg-remove.8 \ - pkg.8 pkg-static.8 .include <bsd.port.pre.mk> >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201212090735.qB97ZC4P073852>