sendmail-8.13.3 fails to build on Alpha. Reproducible: Always Steps to Reproduce: 1. emerge sendmail Actual Results: The build fails with the following output: make[1]: Entering directory `/var/tmp/portage/sendmail-8.13.3/work/sendmail-8.13.3/obj.Linux.2.6.11.8.alpha/vacation' cc -O2 -I. -I../../sendmail -I../../include -DNEWDB -DMAP_REGEX -DTCPWRAPPERS -DSTARTTLS -D_FFR_DEAL_WITH_ERROR_SSL -DNOT_SENDMAIL -mieee -O3 -mcpu=ev56 -c -o vacation.o vacation.c cc -o vacation -Wl -z now -s vacation.o /var/tmp/portage/sendmail-8.13.3/work/sendmail-8.13.3/obj.Linux.2.6.11.8.alpha/libsmdb/libsmdb.a /var/tmp/portage/sendmail-8.13.3/work/sendmail-8.13.3/obj.Linux.2.6.11.8.alpha/libsmutil/libsmutil.a /var/tmp/portage/sendmail-8.13.3/work/sendmail-8.13.3/obj.Linux.2.6.11.8.alpha/libsm/libsm.a -ldb -lresolv -lcrypt -lnsl -lwrap -lssl -lcrypto gcc: now: No such file or directory make[1]: *** [vacation] Error 1 make[1]: Leaving directory `/var/tmp/portage/sendmail-8.13.3/work/sendmail-8.13.3/obj.Linux.2.6.11.8.alpha/vacation' make: *** [all] Error 2 !!! ERROR: mail-mta/sendmail-8.13.3 failed. Expected Results: The emerge should have completed successfully.
Same error for me with versions: 8.13.3 (stable) and 8.13.4 (testing). Seems to be a problem with Makefiles under subdir "obj.Linux.2.4.28.alpha". Lots of these makefiles have the "evil" line: "LDOPTS= -Wl -z now -s" and after this definition, we have the line that is my candidate for fail: """ vacation: ${vacationOBJS} ${vacationSMDEPLIBS} ${CC} -o vacation ${LDOPTS} ${LIBDIRS} ${vacationOBJS} ${LIBS} """ (example from /vacation Makefile) I think, not sure, that gcc is taking bad LDOPTS since they are defined using spaces, so instead of taking "-z now" as a whole option take "-z" as option and "now" as a file since not using - symbol. Note that gcc error is: "gcc: now: No such file or directory" List taken from /var/tmp/portage/sendmail-8.13.3/work/sendmail-8.13.3/, after "emerge sendmail" fails, using grep -R " now " * | grep Makefile | uniq (hope it could be useful): obj.Linux.2.4.28.alpha/libsm/Makefile:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/libsm/Makefile.old:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/libsmutil/Makefile:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/libsmutil/Makefile.old:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/libsmdb/Makefile:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/libsmdb/Makefile.old:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/sendmail/Makefile:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/sendmail/Makefile.old:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/editmap/Makefile:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/editmap/Makefile.old:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/mail.local/Makefile:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/mail.local/Makefile.old:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/mailstats/Makefile:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/mailstats/Makefile.old:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/makemap/Makefile:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/makemap/Makefile.old:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/praliases/Makefile:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/praliases/Makefile.old:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/rmail/Makefile:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/rmail/Makefile.old:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/smrsh/Makefile:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/smrsh/Makefile.old:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/vacation/Makefile:LDOPTS= -Wl -z now -s obj.Linux.2.4.28.alpha/vacation/Makefile.old:LDOPTS= -Wl -z now -s Lcars, would you mind take care of this problem? If need more details or some testing, please feel free to contact alpha team. Thanks.
Created attachment 60058 [details, diff] site.config.m4.patch This patch changes the definition of LDOPTS and LDOPTS_SO making on the install process through site.config.m4 file (placed into subdir /files). Now use comma separated list instead of spaces. It solves compilation problems on alpha and also compiles on x86.
-Wl does indeed accept comma separated options but are you sure that using -shared,-Wl,<options> works? I'm not getting any errors but I'd like to get confirmation that a comma separated list is doing the job ;). If it does then I don't see any problems with the change.
Just found out that we don't need to redefine LDOPTS_SO since the '-shared' is appended by default. Grepping the source shows LDOPTS_SO = ${LDOPTS} -shared So we can strip out the confLDOPTS_SO line and not worring about my concerns for comma inclusion on that option.
I see your solution clearer. Looks fine for me. Would be nice have this issue solved as soon as posible since is blocking our stable branch :/ Please Andrea, make a comment here when you commit the patch to cvs in order to I can make the final test on alpha and close this bug. Thanks Andrea :)
Created attachment 60094 [details] new site.config.m4 file Attaching a new site.config.m4 without LDOPTS_SO and comma separated Wl options, I'm leaving the '-s' option outside -Wl arguments since that it's meant to be passed to gcc (it shouldn't make a big difference, I'm pretty sure it works both ways but this is cleaner and we've confirmed that it works on alpha).
My dev machine is down right now. Can somebody in the net-mail herd commit this please?
Commited. Thanks to all. Ferdy