Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#33315 closed defect (fixed)

libzzip: universal variant fails with clang

Reported by: david.reitter@… Owned by: ryandesign (Ryan Schmidt)
Priority: Normal Milestone:
Component: ports Version: 2.0.3
Keywords: clang universal Cc:
Port: libzzip

Description (last modified by ryandesign (Ryan Schmidt))

libzzip fails to build. It tries to build with clang and fails with the error message:

:info:build /bin/sh ../libtool --silent --tag=CC   --mode=link /Developer/usr/bin/clang  -O2 -arch i386 -arch x86_64 -D_USE_MMAP  -fomit-frame-pointer -Wall -Wpointer-arith -Wsign-compare -Wmissing-declarations -Wdeclaration-after-statement -Werror-implicit-function-declaration -Wstrict-aliasing -Warray-bounds -fstrict-prototypes -Wstrict-prototypes --export-dynamic -L/opt/local/lib -arch i386 -arch x86_64 -o zzipwrap zzipwrap.o libzzipwrap.la   
:info:build clang: error: unsupported option '--export-dynamic'

The build commands were

sudo port uninstall libzzip
sudo port clean libzzip
sudo port install libzzip +universal

As a workaround, I managed to install libzzip with the following trick:

sudo port install libzzip +universal configure.compiler=llvm-gcc-4.2

See also #30849

Attachments (1)

main.log (83.6 KB) - added by david.reitter@… 8 years ago.

Download all attachments as: .zip

Change History (6)

Changed 8 years ago by david.reitter@…

Attachment: main.log added

comment:1 Changed 8 years ago by david.reitter@…

port info clang
clang @2.9, Revision 1 (lang)
Replaced by:          clang-2.9
Variants:             universal

comment:2 Changed 8 years ago by ryandesign (Ryan Schmidt)

Cc: david.reitter@… removed
Description: modified (diff)
Keywords: universal added
Summary: libzzip won't build correctly with clanglibzzip: universal variant fails with clang

Ok, I can reproduce this, but only when using the universal variant; if you don't really need a universal build, clean and build without the universal variant and it should work.

comment:3 Changed 8 years ago by ryandesign (Ryan Schmidt)

Owner: changed from macports-tickets@… to ryandesign@…
Status: newassigned

The problem is that we fix the --export-dynamic problem like this:

post-patch {
    reinplace {/ZZIPLIB_LDFLAGS=/s/--export-dynamic/-export-dynamic/} \
        ${worksrcpath}/configure
}

But when the universal variant is selected we do this:

if {[variant_isset universal]} {
    patchfiles-append patch-configure.ac.diff
    use_autoconf yes
}

This causes autoconf to run, thus regenerating configure from configure.ac and wiping out what we did in our reinplace.

It would be simplest if we get rid of the reinplace and turn it into a patch-configure.diff, and also add the patch to the existing patch-configure.ac.diff for when the universal variant is used.

comment:4 Changed 8 years ago by ryandesign (Ryan Schmidt)

Resolution: fixed
Status: assignedclosed

comment:5 Changed 8 years ago by david.reitter@…

Thank you! I do need +universal (it's i386 and x86_64 for me) due to many problems with building non-MacPorts software when linking against libraries.

Note: See TracTickets for help on using tickets.