Tcl Source Code

Ticket Change Details
Login
Overview

Artifact ID: 2644d82d01799f8b97697ca529860ba045c2ca51
Ticket: 2f7cbd01c30ab9417bcff4053c88c169345add05
tcl8.6.1 fails to build on FreeBSD 10.0
User & Date: anonymous 2014-03-07 03:04:33
Changes

  1. assignee changed to: "nobody"
  2. closer changed to: "nobody"
  3. cmimetype changed to: "text/plain"
  4. comment changed to:
    On a FreeBSD 10.0 system, I attempted to build tcl8.6.1 in the usual way, in a subdirectory of tcl8.6.1/unix:
    
        ../configure
        make
    
    This failed because the build created libtcl86.so.1, but then attempted to link with -ltcl86:
    
    rm -f libtcl86.so.1
    cc -shared -o libtcl86.so.1 regcomp.o regexec.o regfree.o regerror.o tclAlloc.o  tclAssembly.o tclAsync.o tclBasic.o tclBinary.o tclCkalloc.o  tclClock.o tclCmdAH.o tclCmdIL.o tclCmdMZ.o  tclCompCmds.o tclCompCmdsGR.o tclCompCmdsSZ.o tclCompExpr.o  tclCompile.o tclConfig.o tclDate.o tclDictObj.o  tclEncoding.o tclEnsemble.o  tclEnv.o tclEvent.o tclExecute.o tclFCmd.o tclFileName.o tclGet.o  tclHash.o tclHistory.o tclIndexObj.o tclInterp.o tclIO.o tclIOCmd.o  tclIORChan.o tclIORTrans.o tclIOGT.o tclIOSock.o tclIOUtil.o  tclLink.o tclListObj.o  tclLiteral.o tclLoad.o tclMain.o tclNamesp.o tclNotify.o  tclObj.o tclOptimize.o tclPanic.o tclParse.o tclPathObj.o tclPipe.o  tclPkg.o tclPkgConfig.o tclPosixStr.o  tclPreserve.o tclProc.o tclRegexp.o  tclResolve.o tclResult.o tclScan.o tclStringObj.o  tclStrToD.o tclThread.o  tclThreadAlloc.o tclThreadJoin.o tclThreadStorage.o tclStubInit.o  tclTimer.o tclTrace.o tclUtf.o tclUtil.o tclVar.o tclZlib.o  tclTomMathInterface.o tclUnixChan.o tclUnixEvent.o tclUnixFCmd.o  tclUnixFile.o tclUnixPipe.o tclUnixSock.o  tclUnixTime.o tclUnixInit.o tclUnixThrd.o  tclUnixCompat.o tclUnixNotfy.o   tclOO.o tclOOBasic.o tclOOCall.o tclOODefineCmds.o tclOOInfo.o  tclOOMethod.o tclOOStubInit.o tclLoadDl.o bncore.o bn_reverse.o bn_fast_s_mp_mul_digs.o  bn_fast_s_mp_sqr.o bn_mp_add.o bn_mp_and.o  bn_mp_add_d.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o  bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o  bn_mp_cnt_lsb.o bn_mp_copy.o  bn_mp_count_bits.o bn_mp_div.o bn_mp_div_d.o bn_mp_div_2.o  bn_mp_div_2d.o bn_mp_div_3.o  bn_mp_exch.o bn_mp_expt_d.o bn_mp_grow.o bn_mp_init.o  bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o  bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_karatsuba_mul.o  bn_mp_karatsuba_sqr.o  bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mul.o bn_mp_mul_2.o  bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_neg.o bn_mp_or.o  bn_mp_radix_size.o bn_mp_radix_smap.o  bn_mp_read_radix.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_int.o  bn_mp_shrink.o  bn_mp_sqr.o bn_mp_sqrt.o bn_mp_sub.o bn_mp_sub_d.o  bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o  bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_toradix_n.o  bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_s_mp_add.o  bn_s_mp_mul_digs.o bn_s_mp_sqr.o bn_s_mp_sub.o -Wl,-soname=libtcl86.so.1 -lz -lpthread -lm  -Wl,-rpath,/usr/local/lib
    cc -c -DNDEBUG -O2  -pipe -fvisibility=hidden -Wall -fPIC -DBUILD_tcl  -I"." -I/usr0/dws/tcltk/src/tcl8.6.1/unix -I/usr0/dws/tcltk/src/tcl8.6.1/generic -I/usr0/dws/tcltk/src/tcl8.6.1/libtommath  -DPACKAGE_NAME=\"tcl\" -DPACKAGE_TARNAME=\"tcl\" -DPACKAGE_VERSION=\"8.6\" -DPACKAGE_STRING=\"tcl\ 8.6\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DNO_VALUES_H=1 -DHAVE_LIMITS_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_PTHREAD_ATFORK=1 -DTCL_THREADS=1 -DTCL_CFGVAL_ENCODING=\"iso8859-1\" -DHAVE_ZLIB=1 -DMODULE_SCOPE=extern -DHAVE_CAST_TO_UNION=1 -DTCL_SHLIB_EXT=\".so\" -DNDEBUG=1 -DTCL_CFG_OPTIMIZED=1 -DTCL_TOMMATH=1 -DMP_PREC=4 -DTCL_WIDE_INT_IS_LONG=1 -DHAVE_GETCWD=1 -DHAVE_MKSTEMP=1 -DHAVE_OPENDIR=1 -DHAVE_STRTOL=1 -DHAVE_WAITPID=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GETADDRINFO=1 -DHAVE_FREEADDRINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_STRUCT_ADDRINFO=1 -DHAVE_STRUCT_IN6_ADDR=1 -DHAVE_STRUCT_SOCKADDR_IN6=1 -DHAVE_STRUCT_SOCKADDR_STORAGE=1 -DHAVE_GETPWUID_R_5=1 -DHAVE_GETPWUID_R=1 -DHAVE_GETPWNAM_R_5=1 -DHAVE_GETPWNAM_R=1 -DHAVE_GETGRGID_R_5=1 -DHAVE_GETGRGID_R=1 -DHAVE_GETGRNAM_R_5=1 -DHAVE_GETGRNAM_R=1 -DHAVE_GETHOSTBYNAME_R_6=1 -DHAVE_GETHOSTBYNAME_R=1 -DHAVE_GETHOSTBYADDR_R_8=1 -DHAVE_GETHOSTBYADDR_R=1 -DHAVE_TERMIOS_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_GMTIME_R=1 -DHAVE_LOCALTIME_R=1 -DHAVE_MKTIME=1 -DHAVE_TM_GMTOFF=1 -DHAVE_STRUCT_STAT_ST_BLOCKS=1 -DHAVE_STRUCT_STAT_ST_BLKSIZE=1 -DHAVE_BLKCNT_T=1 -DHAVE_INTPTR_T=1 -DHAVE_UINTPTR_T=1 -DNO_UNION_WAIT=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_LANGINFO=1 -DHAVE_CHFLAGS=1 -DHAVE_MKSTEMPS=1 -DHAVE_FTS=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1 -DTCL_UNLOAD_DLLS=1 -DHAVE_CPUID=1     /usr0/dws/tcltk/src/tcl8.6.1/unix/tclAppInit.c
    cc -DNDEBUG -O2  -pipe -fvisibility=hidden  tclAppInit.o  -L/usr0/dws/tcltk/src/tcl8.6.1/unix/x64_fbsd10 -ltcl86 libtclstub86.a -lz -lpthread -lm   -Wl,-rpath,/usr/local/lib -o tclsh
    /usr/bin/ld: cannot find -ltcl86
    
    
    Based on what I saw in the base OS install, I strongly suspected that we could dispense with both the ".1" on the shared library suffix, and also with the whole TCL_TRIM_DOTS idiom altogether, so I tried this change:
    
    : pa-bsd-6a; diff -u ../configure ../configure.freebsd
    --- ../configure        2013-09-19 16:17:13.000000000 -0400
    +++ ../configure.freebsd        2014-03-06 21:39:10.000000000 -0500
    @@ -7829,10 +7829,10 @@
     fi
    
                # Version numbers are dot-stripped by system policy.
    -           TCL_TRIM_DOTS=`echo ${VERSION} | tr -d .`
    -           UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
    -           SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1'
    -           TCL_LIB_VERSIONS_OK=nodots
    +           # TCL_TRIM_DOTS=`echo ${VERSION} | tr -d .`
    +           # UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
    +           # SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1'
    +           # TCL_LIB_VERSIONS_OK=nodots
                ;;
            Darwin-*)
                CFLAGS_OPTIMIZE="-Os"
    
    
    With the above change in place, the build proceeds about 800 commands further, but fails to find a different library:
    
    rm -f libtdbcmysql.so.1
    cc -shared -o libtdbcmysql.so.1 tdbcmysql.o mysqlStubInit.o -L/usr0/dws/tcltk/src/tcl8.6.1/unix/x64_fbsd10/pkgs/tdbc1.0.0 -ltdbcstub100 -L/usr0/dws/tcltk/src/tcl8.6.1/unix/x64_fbsd10/pkgs/tdbc1.0.0 -ltdbcstub100 -L/usr0/dws/tcltk/src/tcl8.6.1/unix/x64_fbsd10 -ltclstub8.6
    /usr/bin/ld: cannot find -ltdbcstub100
    
    What the build has created in this case is libtdbcstub.a, but subsequent parts of the build are attempting to link with -ltdbcstub100.
    
    There is evidence of this in pkgs/tdbc1.0.0/tdbcConfig.sh:
    
    $ grep tdbcstub pkgs/tdbc1.0.0/tdbcConfig.sh
    tdbc_STUB_LIB_FILE="libtdbcstub.a"
    TDBC_STUB_LIB_FILE="libtdbcstub.a"
    tdbc_BUILD_STUB_LIB_SPEC="-L/usr0/dws/tcltk/src/tcl8.6.1/unix/x64_fbsd10/pkgs/tdbc1.0.0 -ltdbcstub100"
    TDBC_BUILD_STUB_LIB_SPEC="-L/usr0/dws/tcltk/src/tcl8.6.1/unix/x64_fbsd10/pkgs/tdbc1.0.0 -ltdbcstub100"
    tdbc_STUB_LIB_SPEC="-L/usr/local/lib/tdbc1.0.0 -ltdbcstub100"
    TDBC_STUB_LIB_SPEC="-L/usr/local/lib/tdbc1.0.0 -ltdbcstub100"
    tdbc_BUILD_STUB_LIB_PATH="/usr0/dws/tcltk/src/tcl8.6.1/unix/x64_fbsd10/pkgs/tdbc1.0.0/libtdbcstub.a"
    TDBC_BUILD_STUB_LIB_PATH="/usr0/dws/tcltk/src/tcl8.6.1/unix/x64_fbsd10/pkgs/tdbc1.0.0/libtdbcstub.a"
    tdbc_STUB_LIB_PATH="/usr/local/lib/tdbc1.0.0/libtdbcstub.a"
    TDBC_STUB_LIB_PATH="/usr/local/lib/tdbc1.0.0/libtdbcstub.a"
    
    At this point I decided to give up and report the problem :)
    
  5. foundin changed to: "8.6.1"
  6. is_private changed to: "0"
  7. login: "anonymous"
  8. priority changed to: "5 Medium"
  9. private_contact changed to: "2f8ec2358fa4ef4cf741b61c0d997aed283680e5"
  10. resolution changed to: "None"
  11. severity changed to: "Severe"
  12. status changed to: "Open"
  13. submitter changed to: "anonymous"
  14. subsystem changed to: "53. Configure and Build Tools"
  15. title changed to: "tcl8.6.1 fails to build on FreeBSD 10.0"
  16. type changed to: "Bug"