lang/lua fails to build on 9.0-STABLE amd64 - bug or config issue?

Lee Thomas lthomas_lists at lthomas.net
Mon Jan 23 23:22:33 UTC 2012


Hello fellow FreeBSD users,
I ran across an odd issue compiling lua from ports on amd64 with 
FreeBSD 9.0-STABLE, and I'm not sure whether it's a bug or incorrect 
configuration on my part. The lang/lua port throws a linker error, 
claiming to need -fPIC, which is odd because the port Makefile seems to 
have logic to add that in, but somehow the logic seems not to have any 
effect, at least in my case. Making the port Makefile put ${CFLAGS} 
directly into lua's Makefile (patch at the end of this mail) fixes 
matters for me, but I don't understand the port infrastructure well 
enough to understand whether this patch represents a bugfix or a 
workaround of some local configuration issue. Has anyone run into this 
issue before? If this is a config issue, any hints on what might be 
going on or how to dope it out?

Thanks for your help,
Lee Thomas

The details:

#date
Mon Jan 23 18:01:30 EST 2012

#uname -a
FreeBSD Anon 9.0-STABLE FreeBSD 9.0-STABLE #0: Sat Jan 21 10:39:05 EST 
2012 anon at Anon:/usr/obj/usr/src/sys/GENERIC  amd64

#cat /etc/make.conf
CPUTYPE?=nocona
CFLAGS= -O2 -fno-strict-aliasing -pipe
COPTFLAGS= -O -pipe

#csup ports-supfile
Connected to 216.165.129.134
Updating collection ports-all/cvs
Finished successfully

#cd /usr/ports/lang/lua && make clean build
===>  Cleaning for lua-5.1.4_6
===>  Vulnerability check disabled, database not found
===>  License check disabled, port has not defined LICENSE
===>  Extracting for lua-5.1.4_6
=> SHA256 Checksum OK for lua-5.1.4.tar.gz.
=> SHA256 Checksum OK for patch-lua-5.1.4-3.
===>  Patching for lua-5.1.4_6
===>  Applying distribution patches for lua-5.1.4_6
===>  Applying FreeBSD patches for lua-5.1.4_6
===>   lua-5.1.4_6 depends on executable: pkg-config - found
===>  Configuring for lua-5.1.4_6
===>  Building for lua-5.1.4_6
cd src && make freebsd
make all MYCFLAGS="-DLUA_USE_LINUX" MYLIBS="-Wl,-E -lreadline"
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lapi.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lcode.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c ldebug.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c ldo.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c ldump.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lfunc.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c llex.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lgc.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lmem.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lobject.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lopcodes.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lparser.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lstate.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lstring.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c ltable.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c ltm.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lundump.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lvm.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lzio.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lauxlib.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lbaselib.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c ldblib.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c liolib.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c loslib.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lmathlib.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c ltablib.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lstrlib.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c loadlib.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c linit.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c lua.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c luac.c
cc -O2 -fno-strict-aliasing -pipe -march=nocona -Wall -DLUA_USE_LINUX 
-c print.c
cc -o liblua.so -O2 -fno-strict-aliasing -pipe -march=nocona -Wall 
-DLUA_USE_LINUX   -shared -Wl,-soname=liblua-5.1.so.1 lapi.o lcode.o 
ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o 
lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o 
lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o 
lstrlib.o loadlib.o linit.o
ar rcu liblua.a lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o 
llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o 
ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o ldblib.o liolib.o 
lmathlib.o loslib.o ltablib.o lstrlib.o loadlib.o linit.o
ranlib liblua.a
/usr/bin/ld: lapi.o: relocation R_X86_64_32 against `luaO_nilobject_' 
can not be used when making a shared object; recompile with -fPIC
lapi.o: could not read symbols: Bad value
*** Error code 1
1 error
*** Error code 2
1 error
*** Error code 2
1 error
*** Error code 1


The following patch fixes matters for me, but I don't understand why it 
should be necessary, which makes me think something might be wrong on my 
end.


--- old/ports/lang/lua/Makefile	2012-01-23 17:15:54.000000000 -0500
+++ new/ports/lang/lua/Makefile	2012-01-23 17:46:35.000000000 -0500
@@ -53,7 +53,7 @@
  	@${REINPLACE_CMD} -Ee \
  		'/^INSTALL_.*=/s/INSTALL_TOP/prefix/ ; \
  		 s|^(CC\|AR\|RANLIB)=|\1?=| ; \
-		 /^CFLAGS=/ { s/=/+=/; s/-O2//; } ; \
+		 /^CFLAGS=/ { s/-O2/${CFLAGS}/; } ; \
  		 s|/usr/local|${PREFIX}|' \
  		 ${WRKSRC}/Makefile ${WRKSRC}/src/Makefile
  	@${REINPLACE_CMD} -i '' -Ee \




More information about the freebsd-questions mailing list