From owner-freebsd-ports-bugs@FreeBSD.ORG Sun Dec 9 07:40:00 2012 Return-Path: Delivered-To: freebsd-ports-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C3B5E83F for ; Sun, 9 Dec 2012 07:40:00 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id 9278E8FC0C for ; Sun, 9 Dec 2012 07:40:00 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id qB97e05a070505 for ; Sun, 9 Dec 2012 07:40:00 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id qB97e0FE070504; Sun, 9 Dec 2012 07:40:00 GMT (envelope-from gnats) Resent-Date: Sun, 9 Dec 2012 07:40:00 GMT Resent-Message-Id: <201212090740.qB97e0FE070504@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Garrett Cooper Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id AF103818 for ; Sun, 9 Dec 2012 07:35:12 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id 8D7A48FC0C for ; Sun, 9 Dec 2012 07:35:12 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.5/8.14.5) with ESMTP id qB97ZC2Q073853 for ; Sun, 9 Dec 2012 07:35:12 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.5/8.14.5/Submit) id qB97ZC4P073852; Sun, 9 Dec 2012 07:35:12 GMT (envelope-from nobody) Message-Id: <201212090735.qB97ZC4P073852@red.freebsd.org> Date: Sun, 9 Dec 2012 07:35:12 GMT From: Garrett Cooper To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Subject: ports/174291: [pkgng] fails to properly register manpages for pkg-remove and pkg-static because of bad MLINKS shims in bsd.port.mk X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Dec 2012 07:40:00 -0000 >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 >Release-Note: >Audit-Trail: >Unformatted: