Opened 15 years ago

Closed 15 years ago

Last modified 15 years ago

#21418 closed defect (fixed)

Tiger: unzip 6.0 fails because of lchmod

Reported by: garribald@… Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 1.8.0
Keywords: tiger Cc:
Port: unzip

Description

Doing the upgrade of unzip to version 6 on Tiger (10.4.11 & Xcode 2.5) and it fails because of

unix/unix.c: In function 'set_symlnk_attribs':
unix/unix.c:1305: warning: implicit declaration of function 'lchmod'
cc -o unzip  -Lbzip2 unzip.o crc32.o  crypt.o envargs.o explode.o extract.o fileio.o globals.o inflate.o list.o match.o process.o ttyio.o ubz2err.o unreduce.o unshrink.o zipinfo.o unix.o  
/usr/libexec/gcc/powerpc-apple-darwin8/4.0.1/ld: Undefined symbols:
_lchmod
collect2: ld returned 1 exit status

The full debug output, only removed the list of pings and ping results:

sudo port -vd upgrade unzip
DEBUG: Found port in file:///opt/local/var/macports/sources/rsync.macports.org/release/ports/archivers/unzip
DEBUG: epoch: in tree: 0 installed: 0
DEBUG: unzip 6.0_0 exists in the ports tree
DEBUG: unzip 5.52_0  is the latest installed
DEBUG: unzip 5.52_0  is active
DEBUG: Merging existing variants  into variants
DEBUG: new fully merged portvariants: 
DEBUG: Changing to port directory: /opt/local/var/macports/sources/rsync.macports.org/release/ports/archivers/unzip
DEBUG: OS Platform: darwin
DEBUG: OS Version: 8.11.0
DEBUG: Mac OS X Version: 10.4
DEBUG: System Arch: powerpc
DEBUG: setting option os.universal_supported to yes
DEBUG: org.macports.load registered provides 'load', a pre-existing procedure. Target override will not be provided
DEBUG: org.macports.distfiles registered provides 'distfiles', a pre-existing procedure. Target override will not be provided
DEBUG: Reading variant descriptions from /opt/local/var/macports/sources/rsync.macports.org/release/ports/_resources/port1.0/variant_descriptions.conf
DEBUG: universal variant already exists, so not adding the default one
DEBUG: Requested variant powerpc is not provided by port unzip.
DEBUG: Requested variant darwin is not provided by port unzip.
DEBUG: Requested variant macosx is not provided by port unzip.
DEBUG: Attempting ln -sf /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_archivers_unzip/work /opt/local/var/macports/sources/rsync.macports.org/release/ports/archivers/unzip/work
--->  Computing dependencies for unzip
DEBUG: Executing org.macports.main (unzip)
--->  Fetching unzip
DEBUG: Executing org.macports.fetch (unzip)
--->  unzip60.tar.gz doesn't seem to exist in /opt/local/var/macports/distfiles/unzip
DEBUG: Pinging downloads.sourceforge.net...
[...]
--->  Attempting to fetch unzip60.tar.gz from http://mesh.dl.sourceforge.net/infozip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1344k  100 1344k    0     0   324k      0  0:00:04  0:00:04 --:--:--  397k
--->  Verifying checksum(s) for unzip
DEBUG: Executing org.macports.checksum (unzip)
--->  Checksumming unzip60.tar.gz
DEBUG: Correct (md5) checksum for unzip60.tar.gz
DEBUG: Correct (sha1) checksum for unzip60.tar.gz
DEBUG: Correct (rmd160) checksum for unzip60.tar.gz
--->  Extracting unzip
DEBUG: Executing org.macports.extract (unzip)
--->  Extracting unzip60.tar.gz
DEBUG: setting option extract.args to /opt/local/var/macports/distfiles/unzip/unzip60.tar.gz
DEBUG: Environment: MACOSX_DEPLOYMENT_TARGET='10.4'
DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_archivers_unzip/work" && /usr/bin/gzip -dc /opt/local/var/macports/distfiles/unzip/unzip60.tar.gz | /usr/bin/gnutar --no-same-owner -xf -'
DEBUG: Executing org.macports.patch (unzip)
--->  Configuring unzip
DEBUG: Using compiler 'Mac OS X gcc 4.0'
DEBUG: Executing org.macports.configure (unzip)
--->  Building unzip
DEBUG: Executing org.macports.build (unzip)
DEBUG: Environment: MACOSX_DEPLOYMENT_TARGET='10.4'
DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_archivers_unzip/work/unzip60" && /usr/bin/nice -n 18 /usr/bin/make -j1 macosx -f unix/Makefile'
/usr/bin/make unzips CFLAGS="-O3 -Wall -DBSD" LF2=""
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   unzip.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   crc32.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   crypt.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   envargs.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   explode.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   extract.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   fileio.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   globals.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   inflate.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   list.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   match.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   process.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   ttyio.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   ubz2err.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   unreduce.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   unshrink.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   zipinfo.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   unix/unix.c
unix/unix.c: In function 'set_symlnk_attribs':
unix/unix.c:1305: warning: implicit declaration of function 'lchmod'
cc -o unzip  -Lbzip2 unzip.o crc32.o  crypt.o envargs.o explode.o extract.o fileio.o globals.o inflate.o list.o match.o process.o ttyio.o ubz2err.o unreduce.o unshrink.o zipinfo.o unix.o  
/usr/libexec/gcc/powerpc-apple-darwin8/4.0.1/ld: Undefined symbols:
_lchmod
collect2: ld returned 1 exit status
make[1]: *** [unzip] Error 1
make: *** [macosx] Error 2
Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_archivers_unzip/work/unzip60" && /usr/bin/nice -n 18 /usr/bin/make -j1 macosx -f unix/Makefile " returned error 2
Command output: /usr/bin/make unzips CFLAGS="-O3 -Wall -DBSD" LF2=""
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   unzip.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   crc32.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   crypt.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   envargs.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   explode.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   extract.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   fileio.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   globals.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   inflate.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   list.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   match.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   process.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   ttyio.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   ubz2err.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   unreduce.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   unshrink.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   zipinfo.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   unix/unix.c
unix/unix.c: In function 'set_symlnk_attribs':
unix/unix.c:1305: warning: implicit declaration of function 'lchmod'
cc -o unzip  -Lbzip2 unzip.o crc32.o  crypt.o envargs.o explode.o extract.o fileio.o globals.o inflate.o list.o match.o process.o ttyio.o ubz2err.o unreduce.o unshrink.o zipinfo.o unix.o  
/usr/libexec/gcc/powerpc-apple-darwin8/4.0.1/ld: Undefined symbols:
_lchmod
collect2: ld returned 1 exit status
make[1]: *** [unzip] Error 1
make: *** [macosx] Error 2

DEBUG: Backtrace: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_archivers_unzip/work/unzip60" && /usr/bin/nice -n 18 /usr/bin/make -j1 macosx -f unix/Makefile " returned error 2
Command output: /usr/bin/make unzips CFLAGS="-O3 -Wall -DBSD" LF2=""
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   unzip.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   crc32.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   crypt.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   envargs.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   explode.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   extract.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   fileio.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   globals.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   inflate.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   list.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   match.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   process.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   ttyio.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   ubz2err.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   unreduce.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   unshrink.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   zipinfo.c
cc -c -O3 -Wall -DBSD -I. -Ibzip2 -DUNIX   unix/unix.c
unix/unix.c: In function 'set_symlnk_attribs':
unix/unix.c:1305: warning: implicit declaration of function 'lchmod'
cc -o unzip  -Lbzip2 unzip.o crc32.o  crypt.o envargs.o explode.o extract.o fileio.o globals.o inflate.o list.o match.o process.o ttyio.o ubz2err.o unreduce.o unshrink.o zipinfo.o unix.o  
/usr/libexec/gcc/powerpc-apple-darwin8/4.0.1/ld: Undefined symbols:
_lchmod
collect2: ld returned 1 exit status
make[1]: *** [unzip] Error 1
make: *** [macosx] Error 2

    while executing
"command_exec build"
    (procedure "portbuild::build_main" line 9)
    invoked from within
"$procedure $targetname"
Warning: the following items did not execute (for unzip): org.macports.destroot org.macports.build
DEBUG: 
Error: Unable to upgrade port: 1

Using MacPorts 1.8.0 - maybe an error due to the upgrade (old ports, something broken here,...)?

Change History (3)

comment:1 Changed 15 years ago by garribald@…

This might go in the right direction for a solution/patch:
I have changed the relevant line in the makefile (in the "unix" subfolder) from

$(MAKE) unzips CFLAGS="-O3 -Wall -DBSD" LF2=""

to

$(MAKE) unzips CFLAGS="-O3 -Wall -DBSD -DNO_LCHMOD" LF2=""

and compiling is fine. I took that -DNO_LCHMOD flag from other compilerflag lines from the makefile of at least as outdated systems as Tiger is ;) :D

I have done the compiling outside of MacPorts, since I have not really experiences in doing patch files, including them into MacPorts, doing all the stuff in a local port - and I wanted to have a quick proof of the theory right now. Maybe a more experienced user / the port maintainer could look over it and do a Tiger specific paragraph in the portfile and include a patch to exclude the lchmod usage for Tiger.

The relevant part in the /unix/makefile is in the lines 873-876

# Macintosh MacOS X (Unix-compatible enviroment), using standard compiler
macosx:	unix_make
	$(MAKE) unzips CFLAGS="-O3 -Wall -DBSD" LF2=""
	$(STRIP) $(UNZIPS)

As said, the additional -DNO_LCHMOD in the CFLAGS seems to do the trick. But please, test it.

comment:2 Changed 15 years ago by jmroot (Joshua Root)

Keywords: tiger added; unzip Tiger removed
Resolution: fixed
Status: newclosed
Summary: Tiger: unzip 6.0 fails because of lchmod?Tiger: unzip 6.0 fails because of lchmod

comment:3 in reply to:  2 Changed 15 years ago by garribald@…

Replying to jmr@…:

r57780

Works perfectly. Thanks!

Note: See TracTickets for help on using tickets.