Opened 3 years ago

Closed 2 years ago

Last modified 2 years ago

#63699 closed defect (fixed)

openldap-devel @2.6.0: build fails on 10.5 PPC

Reported by: mascguy (Christopher Nielsen) Owned by: mascguy (Christopher Nielsen)
Priority: Normal Milestone:
Component: ports Version:
Keywords: ppc Cc: evanmiller (Evan Miller), ballapete (Peter "Pete" Dyballa)
Port: openldap-devel

Description

To proactively support our 10.4 and 10.5 users, I quickly tested an install of this new port on 10.5 PPC.

Since this version of OpenLDAP is fresh off the release train - and required tweaking of several patches - there's a reasonable chance that this may be easy to fix.

Will attach the build log, and investigate further, as time allows.

Attachments (1)

openldap-devel-10.5-ppc-failure.log.xz (11.0 KB) - added by mascguy (Christopher Nielsen) 3 years ago.

Download all attachments as: .zip

Change History (21)

Changed 3 years ago by mascguy (Christopher Nielsen)

comment:1 Changed 3 years ago by mascguy (Christopher Nielsen)

The failure is - drumroll, please - Socket-related:

:info:build /usr/bin/gcc-4.2 -pipe -Os -arch ppc -I../../include -I../../include -I/opt/local/include -I/opt/local/include/db48 -I/opt/local/include/openssl -DBIND_8_COMPAT -DMDB_FDATASYNC=fsync -DMDB_DSYNC=O_SYNC -c -o passwd.o passwd.c
:info:build In file included from ../../include/lutil.h:21,
:info:build                  from passwd.c:60:
:info:build ../../include/ac/socket.h:247: error: redefinition of typedef 'Sockaddr'
:info:build ../../include/ldap_pvt.h:188: error: previous declaration of 'Sockaddr' was here
:info:build make[2]: *** [passwd.o] Error 1

comment:2 Changed 2 years ago by evanmiller (Evan Miller)

Some redefinition errors are fixed with newer compilers / C standards, maybe give that a try first.

comment:3 in reply to:  2 Changed 2 years ago by mascguy (Christopher Nielsen)

Replying to evanmiller:

Some redefinition errors are fixed with newer compilers / C standards, maybe give that a try first.

Great point! I was hoping to keep the supported compiler list as broad as possible, to avoid a dependency on GCC 7. (As Ken and others have pointed out, though, a tremendous number of ports require something more modern than apple-gcc-4.2. So perhaps there's no getting around this.)

Still need to dig some more, though. And additional thoughts/ideas welcome, as always!

Last edited 2 years ago by mascguy (Christopher Nielsen) (previous) (diff)

comment:4 Changed 2 years ago by mascguy (Christopher Nielsen)

As an update, I'm in the process of installing gcc7 on 10.5 PPC.

I was hoping to avoid it, given that it'll take an eternity to build from source. But since it's needed for this case anyway - and will support future efforts (as well as allow installation of many other ports) - finally doing it.

So far, the build has been running for nearly 18 hours, just to build libgcc7. And it died after 16 hours, with a segfault. But resumed, and so far, it's continuing successfully. So hoping that was just a fluke.

The machine itself is maxed out with RAM - 2gb - so no issues there. Keep your fingers crossed for me! LOL

comment:5 Changed 2 years ago by evanmiller (Evan Miller)

Likely the redefinition is a bug in the source that can be hacked around.... It should show up as a warning with -Wpedantic using later compilers. We recently worked through a similar issue with lighttpd.

Good luck with the GCC7 build! It's a pain to compile (think it took 3 days on my G3 with 1 GB?) but opens up a lot of ports.

comment:6 Changed 2 years ago by mascguy (Christopher Nielsen)

Good News: The build for libgcc7 completed successfully earlier today, and gcc7 installed via a pre-built MacPorts binary. So not too bad at all!

comment:7 Changed 2 years ago by evanmiller (Evan Miller)

openldap-devel builds OK here with GCC7.

I'm having trouble testing with intermediate versions though, for reasons described here: https://trac.macports.org/ticket/63723

comment:8 in reply to:  7 Changed 2 years ago by mascguy (Christopher Nielsen)

Replying to evanmiller:

openldap-devel builds OK here with GCC7.

I'm having trouble testing with intermediate versions though, for reasons described here: https://trac.macports.org/ticket/63723

Is there value in trying to support GCC versions prior to 7, for this particular case? I don't have enough understanding of the implications on 10.4/10.5, so more insight would be great!

As for selecting GCC 7 for those specific platforms, is there a preferred portfile recipe?

comment:9 Changed 2 years ago by evanmiller (Evan Miller)

Well, I'm hoping to figure out which GCC versions choke on the redefinitions. Then we can write a blacklist as narrow as possible so that we don't necessarily have to require GCC7, just blacklist whatever won't compile openldap-devel.

Usually the blacklists take the form *gcc-3.* *gcc-4.* but I'd like to figure out if GCC5/6 are okay, and likewise if GCC 4.5, 4.6, etc should be allowed.

comment:10 in reply to:  7 Changed 2 years ago by ballapete (Peter "Pete" Dyballa)

Replying to evanmiller:

I'm having trouble testing with intermediate versions though, for reasons described here: https://trac.macports.org/ticket/63723

I wouldn't care. For reasons I do not understand GCC5 based libgcc exists, used by more than 30 ports (on my Tiger). libgcc6 also exists, used by five ports, of which three are also depending on libgcc. I think GCC5 and GCC6 are not used any more to build packages, so why care for them? OTOH, -arch seems to be a switch passed to as. At least on PPC Tiger, which is available for me right now, -arch is not a genuine compiler option (from »gcc-version« -v --help. If it gets removed from configure then this will help also (almost) up-to-date compilers, like GCC7.

comment:11 Changed 2 years ago by evanmiller (Evan Miller)

I think GCC5 and GCC6 are not used any more to build packages, so why care for them?

When I'm modifying various port blacklists, I'd like to be able to tell the maintainers that I tested X, Y, and Z versions.

I've seen this -arch issue with several ports now – which seems to be evidence that these compilers are rarely used in practice.

comment:12 Changed 2 years ago by kencu (Ken)

Base's idea of which gcc compilers understand "-arch" is centralized here:

<https://github.com/macports/macports-base/blob/55da32098bbda9c70b1e454a4b67515d6b6f310f/src/port1.0/portconfigure.tcl#L708>

Individual ports might also throw arch flags in on their own.

Last edited 2 years ago by kencu (Ken) (previous) (diff)

comment:13 Changed 2 years ago by kencu (Ken)

As above, base is under the impression that gcc-4.7+ support the "-arch" flag.

That is sort of true, if you only consider -arch i386 and -arch x86_64, support for which came in here:

<https://github.com/gcc-mirror/gcc/commit/bd837408eeb0bd05b4b2621983f79bb7da8d253c>

in gcc-4.7.

However, the support for -arch ppc and -arch ppc64 was not added by Iain until gcc-6.

The commit that brought it in is here:

<https://github.com/gcc-mirror/gcc/commit/37341412a50d7389802039e1890df3dca717b9db>

So -- the code in base should be updated to indicate that only gcc-6+ FULLY support the -arch flags.

comment:14 Changed 2 years ago by evanmiller (Evan Miller)

Thanks, Ken! That clarifies the situation here.

comment:15 Changed 2 years ago by barracuda156

openlpad @2.6.1 fails on 10.6.8 Rosetta using gcc-4.2:

 Entering subdirectory liblutil
make[2]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_databases_openldap/openldap/work/openldap-2.6.1/libraries/liblutil'
rm -f version.c
../../build/mkversion -v "2.6.1" liblutil.a > version.c
/usr/bin/gcc-4.2 -pipe -Os -arch ppc -I../../include        -I../../include   -I/opt/local/include -I/opt/local/include/db48 -I/opt/local/include/openssl -DBIND_8_COMPAT -DMDB_FDATASYNC=fsync     -c -o base64.o base64.c
/usr/bin/gcc-4.2 -pipe -Os -arch ppc -I../../include        -I../../include   -I/opt/local/include -I/opt/local/include/db48 -I/opt/local/include/openssl -DBIND_8_COMPAT -DMDB_FDATASYNC=fsync     -c -o entropy.o entropy.c
/usr/bin/gcc-4.2 -pipe -Os -arch ppc -I../../include        -I../../include   -I/opt/local/include -I/opt/local/include/db48 -I/opt/local/include/openssl -DBIND_8_COMPAT -DMDB_FDATASYNC=fsync     -c -o sasl.o sasl.c
/usr/bin/gcc-4.2 -pipe -Os -arch ppc -I../../include        -I../../include   -I/opt/local/include -I/opt/local/include/db48 -I/opt/local/include/openssl -DBIND_8_COMPAT -DMDB_FDATASYNC=fsync     -c -o signal.o signal.c
/usr/bin/gcc-4.2 -pipe -Os -arch ppc -I../../include        -I../../include   -I/opt/local/include -I/opt/local/include/db48 -I/opt/local/include/openssl -DBIND_8_COMPAT -DMDB_FDATASYNC=fsync     -c -o hash.o hash.c
/usr/bin/gcc-4.2 -pipe -Os -arch ppc -I../../include        -I../../include   -I/opt/local/include -I/opt/local/include/db48 -I/opt/local/include/openssl -DBIND_8_COMPAT -DMDB_FDATASYNC=fsync     -c -o passfile.o passfile.c
/usr/bin/gcc-4.2 -pipe -Os -arch ppc -I../../include        -I../../include   -I/opt/local/include -I/opt/local/include/db48 -I/opt/local/include/openssl -DBIND_8_COMPAT -DMDB_FDATASYNC=fsync     -c -o md5.o md5.c
/usr/bin/gcc-4.2 -pipe -Os -arch ppc -I../../include        -I../../include   -I/opt/local/include -I/opt/local/include/db48 -I/opt/local/include/openssl -DBIND_8_COMPAT -DMDB_FDATASYNC=fsync     -c -o passwd.o passwd.c
/usr/bin/gcc-4.2 -pipe -Os -arch ppc -I../../include        -I../../include   -I/opt/local/include -I/opt/local/include/db48 -I/opt/local/include/openssl -DBIND_8_COMPAT -DMDB_FDATASYNC=fsync     -c -o sha1.o sha1.c
In file included from ../../include/lutil.h:21,
                 from passwd.c:60:
../../include/ac/socket.h:247: error: redefinition of typedef ‘Sockaddr’
../../include/ldap_pvt.h:188: error: previous declaration of ‘Sockaddr’ was here
/usr/bin/gcc-4.2 -pipe -Os -arch ppc -I../../include        -I../../include   -I/opt/local/include -I/opt/local/include/db48 -I/opt/local/include/openssl -DBIND_8_COMPAT -DMDB_FDATASYNC=fsync     -c -o getpass.o getpass.c
make[2]: *** [passwd.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_databases_openldap/openldap/work/openldap-2.6.1/libraries/liblutil'
make[1]: *** [all-common] Error 1

comment:16 in reply to:  15 ; Changed 2 years ago by mascguy (Christopher Nielsen)

Replying to barracuda156:

openlpad @2.6.1 fails on 10.6.8 Rosetta using gcc-4.2

The port was just updated to 2.6.2, and should be available within the next hour or two. Can you retry your build?

comment:17 in reply to:  16 Changed 2 years ago by ballapete (Peter "Pete" Dyballa)

Replying to mascguy:

The port was just updated to 2.6.2, and should be available within the next hour or two. Can you retry your build?

Next week probably. Right now I am working on Tiger, upgrading from Python 3.8 to 3.9, for which some packages are getting rebuilt. Tomorrow the sun will shine and I'll be on a discovery tour for (German) Wikipedia in the woods at some creeks… (it's kind of a jungle there)

comment:18 in reply to:  16 ; Changed 2 years ago by evanmiller (Evan Miller)

Replying to mascguy:

Replying to barracuda156:

openlpad @2.6.1 fails on 10.6.8 Rosetta using gcc-4.2

The port was just updated to 2.6.2, and should be available within the next hour or two. Can you retry your build?

2.6.2 builds fine here on Tiger/PPC.

comment:19 in reply to:  18 Changed 2 years ago by mascguy (Christopher Nielsen)

Resolution: fixed
Status: assignedclosed

Replying to evanmiller:

2.6.2 builds fine here on Tiger/PPC.

Great, thanks Evan!

comment:20 in reply to:  16 Changed 2 years ago by ballapete (Peter "Pete" Dyballa)

It built here on PPC Leopard OK (did not try on PPC Tiger since it was reported that it builds).

Note: See TracTickets for help on using tickets.