From owner-freebsd-ports-bugs@FreeBSD.ORG Tue Jan 10 19:50:04 2006 Return-Path: X-Original-To: freebsd-ports-bugs@hub.freebsd.org Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1DBE116A41F for ; Tue, 10 Jan 2006 19:50:04 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6455C43D49 for ; Tue, 10 Jan 2006 19:50:03 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id k0AJo31n021962 for ; Tue, 10 Jan 2006 19:50:03 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id k0AJo3A3021961; Tue, 10 Jan 2006 19:50:03 GMT (envelope-from gnats) Resent-Date: Tue, 10 Jan 2006 19:50:03 GMT Resent-Message-Id: <200601101950.k0AJo3A3021961@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, "John E. Hein" Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6AD4416A41F; Tue, 10 Jan 2006 19:45:50 +0000 (GMT) (envelope-from jhein@timing.com) Received: from Daffy.timing.com (ns1int.timing.com [206.168.13.218]) by mx1.FreeBSD.org (Postfix) with ESMTP id AB1CC43D45; Tue, 10 Jan 2006 19:45:49 +0000 (GMT) (envelope-from jhein@timing.com) Received: from gromit.timing.com (gromit.timing.com [206.168.13.209]) by Daffy.timing.com (8.13.1/8.12.8) with ESMTP id k0AJjmEM045929; Tue, 10 Jan 2006 12:45:48 -0700 (MST) (envelope-from jhein@timing.com) Received: from gromit.timing.com (localhost [127.0.0.1]) by gromit.timing.com (8.13.4/8.13.4) with ESMTP id k0AJjmaw015723; Tue, 10 Jan 2006 12:45:48 -0700 (MST) (envelope-from jhein@gromit.timing.com) Received: (from jhein@localhost) by gromit.timing.com (8.13.4/8.13.4/Submit) id k0AJjmTv015722; Tue, 10 Jan 2006 12:45:48 -0700 (MST) (envelope-from jhein) Message-Id: <200601101945.k0AJjmTv015722@gromit.timing.com> Date: Tue, 10 Jan 2006 12:45:48 -0700 (MST) From: "John E. Hein" To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: ache@FreeBSD.org Subject: ports/91610: DESTDIR used incorrectly in png's makefile.freebsd X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: "John E. Hein" List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2006 19:50:04 -0000 >Number: 91610 >Category: ports >Synopsis: DESTDIR used incorrectly in png's makefile.freebsd >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Tue Jan 10 19:50:02 GMT 2006 >Closed-Date: >Last-Modified: >Originator: John E. Hein >Release: FreeBSD 6.0-STABLE i386 >Organization: Timing Solutions >Environment: >Description: At some point after 4.x, make was changed to pass down make arguments in MAKEFLAGS. Because of this, if you try to invoke the 'make install' of png from a parent make where DESTDIR was specified, png installs to the wrong place. >How-To-Repeat: In the following example, I show how trying to install with DESTDIR= screws up (and another install without DESTDIR= does the right thing). Annotations for the example below... [1] Here it tries to install libs into /lib. It succeeds since /lib is a dir. But that's not what we want. We want it to go to ${DESTDIR}/usr/local/lib [2] Here it tries to install headers into /include/libpng. It fails, of course, since /include does not exist. % pwd /usr/ports/graphics/png % cat Makefile.1 x: make DESTDIR= sudo pkg_delete png-1.2.8_2 sudo make DESTDIR= install || \ { echo ; echo "********* Error: install with DESTDIR failed" ; echo ; \ sudo make install; } % uname -a FreeBSD gromit.timing.com 6.0-STABLE FreeBSD 6.0-STABLE #0: Tue Jan 3 12:47:11 MST 2006 jhein@Speedy.timing.com:/usr/obj/usr/src/sys/GROMIT i386 % make -f Makefile.1 make DESTDIR= ===> Extracting for png-1.2.8_2 => MD5 Checksum OK for libpng-1.2.8.tar.bz2. ===> Patching for png-1.2.8_2 ===> Applying FreeBSD patches for png-1.2.8_2 ===> Configuring for png-1.2.8_2 ===> Building for png-1.2.8_2 cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c png.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngset.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngget.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngrutil.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngtrans.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngwutil.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngread.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngrio.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngwio.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngwrite.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngrtran.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngwtran.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngmem.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngerror.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngpread.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pnggccrd.c building static png library ranlib libpng.a cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c png.c -o png.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngset.c -o pngset.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngget.c -o pngget.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngrutil.c -o pngrutil.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngtrans.c -o pngtrans.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngwutil.c -o pngwutil.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngread.c -o pngread.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngrio.c -o pngrio.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngwio.c -o pngwio.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngwrite.c -o pngwrite.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngrtran.c -o pngrtran.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngwtran.c -o pngwtran.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngmem.c -o pngmem.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngerror.c -o pngerror.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngpread.c -o pngpread.So cc -fpic -DPIC -O -pipe -I. -DPNG_USE_PNGGCCRD -c pnggccrd.c -o pnggccrd.So building shared library libpng.so.5 gzip -cn libpng.3 > libpng.3.gz gzip -cn libpngpf.3 > libpngpf.3.gz gzip -cn png.5 > png.5.gz ( cat scripts/libpng-config-head.in; echo prefix=\"/usr/local\"; echo libdir=\"/usr/local/lib\"; echo ccopts=\"-O -pipe \"; echo cppflags=\"-DPNG_USE_PNGGCCRD\"; echo I_opts=\"-I/usr/local/include/libpng\"; echo L_opts=\"-L/usr/local/lib\"; echo libs=\"-lpng -lz -lm\"; echo ldopts=\"\"; cat scripts/libpng-config-body.in ) > libpng-config chmod +x libpng-config cc -O -pipe -I. -DPNG_USE_PNGGCCRD -c pngtest.c cc -O -pipe -I. -DPNG_USE_PNGGCCRD -L. -static -o pngtest pngtest.o -lpng -lz -lm ./pngtest Testing libpng version 1.2.8 with zlib version 1.2.1 libpng version 1.2.8 - December 3, 2004 Copyright (c) 1998-2004 Glenn Randers-Pehrson Copyright (c) 1996-1997 Andreas Dilger Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. library (10208): libpng version 1.2.8 - December 3, 2004 (header) pngtest (10208): libpng version 1.2.8 - December 3, 2004 (header) png_sizeof(png_struct)=604, png_sizeof(png_info)=288 Testing pngtest.png: Pass 0: rwrwrwrwrwrwrwrwrw Pass 1: rwrwrwrwrwrwrwrwrw Pass 2: rwrwrwrwrwrwrwrw Pass 3: rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw Pass 4: rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw Pass 5: rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw rwrwrwrw Pass 6: rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw rwrwrwrwrw PASS (9782 zero samples) Filter 0 was used 21 times Filter 1 was used 15 times Filter 2 was used 52 times Filter 3 was used 10 times Filter 4 was used 33 times tIME = 7 Jun 1996 17:58:08 +0000 libpng passes test find work -type d -exec chmod a+rwx {} \; sudo pkg_delete png-1.2.8_2 sudo make DESTDIR= install || { echo ; echo "********* Error: install with DESTDIR failed" ; echo ; sudo make install; } ===> Installing for png-1.2.8_2 ===> Generating temporary packing list ===> Checking if graphics/png already installed install -o root -g wheel -m 555 libpng-config /usr/local/bin ln -sf libpng-config /usr/local/bin/libpng12-config install -C -o root -g wheel -m 444 libpng.a /lib [1] install -s -o root -g wheel -m 444 libpng.so.5 /lib ln -fs libpng.so.5 /lib/libpng.so install -C -o root -g wheel -m 444 png.h pngconf.h /include/libpng [2] install: wrong number or types of arguments usage: install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode] [-o owner] file1 file2 install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode] [-o owner] file1 ... fileN directory install -d [-v] [-g group] [-m mode] [-o owner] directory ... *** Error code 64 Stop in /usr/ports/graphics/png/work/libpng-1.2.8. *** Error code 1 Stop in /usr/ports/graphics/png. ********* Error: install with DESTDIR failed ===> Installing for png-1.2.8_2 ===> Generating temporary packing list ===> Checking if graphics/png already installed install -o root -g wheel -m 555 libpng-config /usr/local/bin ln -sf libpng-config /usr/local/bin/libpng12-config install -C -o root -g wheel -m 444 libpng.a /usr/local/lib install -s -o root -g wheel -m 444 libpng.so.5 /usr/local/lib ln -fs libpng.so.5 /usr/local/lib/libpng.so install -C -o root -g wheel -m 444 png.h pngconf.h /usr/local/include/libpng install -o root -g wheel -m 444 libpng.3.gz /usr/local/man/man3 install -o root -g wheel -m 444 libpngpf.3.gz /usr/local/man/man3 install -o root -g wheel -m 444 png.5.gz /usr/local/man/man5 /usr/local/include/libpng/../png.h -> libpng/png.h /usr/local/include/libpng/../pngconf.h -> libpng/pngconf.h /usr/bin/sed -e 's|@PREFIX@|/usr/local|' /usr/ports/graphics/png/work/libpng-1.2.8/scripts/libpng.pc.in > /usr/ports/graphics/png/work/libpng-1.2.8/scripts/libpng.pc install -o root -g wheel -m 444 /usr/ports/graphics/png/work/libpng-1.2.8/scripts/libpng.pc /usr/local/libdata/pkgconfig/libpng12.pc ===> Running ldconfig /sbin/ldconfig -m /usr/local/lib ===> Registering installation for png-1.2.8_2 >Fix: Don't use DESTDIR improperly. Here's a modified patch-aa. % cat files/patch-aa --- scripts/makefile.freebsd.orig Sat May 18 08:46:45 2002 +++ scripts/makefile.freebsd Tue Jan 10 12:05:18 2006 @@ -12,22 +12,22 @@ NOOBJ= YES # where make install puts libpng.a and png.h -DESTDIR= ${PREFIX} -LIBDIR= /lib +LIBDIR= ${PREFIX}/lib INCS= png.h pngconf.h -INCSDIR= /include/libpng +INCSDIR= ${PREFIX}/include/libpng INCDIR= ${INCSDIR} # for 4.x bsd.lib.mk MAN= libpng.3 libpngpf.3 png.5 -MANDIR= /man/man +MANDIR= ${PREFIX}/man/man SYMLINKS= libpng/png.h ${INCSDIR}/../png.h \ libpng/pngconf.h ${INCSDIR}/../pngconf.h LDADD+= -lm -lz DPADD+= ${LIBM} ${LIBZ} -CFLAGS+= -I. -DPNG_USE_PNGGCCRD -.if (${MACHINE_ARCH} != "i386") -CFLAGS+= -DPNG_NO_ASSEMBLER_CODE +cppflags=-DPNG_USE_PNGGCCRD +.if (${ARCH} != "i386") +cppflags+=-DPNG_NO_ASSEMBLER_CODE .endif +CFLAGS+=-I. ${cppflags} SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \ pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \ @@ -44,5 +44,23 @@ DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO writelock: chmod a-w *.[ch35] $(DOCS) scripts/* + +libpng-config: + ( cat scripts/libpng-config-head.in; \ + echo prefix=\"${PREFIX}\"; \ + echo libdir=\"${PREFIX}${LIBDIR}\"; \ + echo ccopts=\"${ccopts}\"; \ + echo cppflags=\"${cppflags}\"; \ + echo I_opts=\"-I${PREFIX}${INCSDIR}\"; \ + echo L_opts=\"-L${PREFIX}${LIBDIR}\"; \ + echo libs=\"-lpng -lz -lm\"; \ + echo ldopts=\"${ldopts}\"; \ + cat scripts/libpng-config-body.in ) > libpng-config + chmod +x libpng-config + +beforeinstall: libpng-config + ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ + libpng-config ${PREFIX}/bin + ln -sf libpng-config ${PREFIX}/bin/libpng12-config .include ... and in diff format ... % cvs diff files/patch-aa Index: files/patch-aa =================================================================== RCS file: /base/FreeBSD-CVS/ports/graphics/png/files/patch-aa,v retrieving revision 1.23 diff -u -p -r1.23 patch-aa --- files/patch-aa 30 Jan 2005 14:41:31 -0000 1.23 +++ files/patch-aa 10 Jan 2006 19:05:37 -0000 @@ -1,6 +1,21 @@ ---- scripts/makefile.freebsd.orig Sat May 18 18:46:45 2002 -+++ scripts/makefile.freebsd Sun Jan 30 17:33:45 2005 -@@ -24,10 +24,11 @@ +--- scripts/makefile.freebsd.orig Sat May 18 08:46:45 2002 ++++ scripts/makefile.freebsd Tue Jan 10 12:05:18 2006 +@@ -12,22 +12,22 @@ + NOOBJ= YES + + # where make install puts libpng.a and png.h +-DESTDIR= ${PREFIX} +-LIBDIR= /lib ++LIBDIR= ${PREFIX}/lib + INCS= png.h pngconf.h +-INCSDIR= /include/libpng ++INCSDIR= ${PREFIX}/include/libpng + INCDIR= ${INCSDIR} # for 4.x bsd.lib.mk + MAN= libpng.3 libpngpf.3 png.5 +-MANDIR= /man/man ++MANDIR= ${PREFIX}/man/man + SYMLINKS= libpng/png.h ${INCSDIR}/../png.h \ + libpng/pngconf.h ${INCSDIR}/../pngconf.h LDADD+= -lm -lz DPADD+= ${LIBM} ${LIBZ} @@ -15,7 +30,7 @@ SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \ pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \ -@@ -44,5 +45,23 @@ +@@ -44,5 +44,23 @@ DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO writelock: chmod a-w *.[ch35] $(DOCS) scripts/* >Release-Note: >Audit-Trail: >Unformatted: