I’m having trouble with Fossil and Tcl integration. At a high level, I have two 
main problems:

Problem 1. When I configure Fossil to build as a dynamically linked binary, the 
build succeeds and loads the Tcl library. However, when I run a TH1 script that 
uses a command requiring Tcl integration (e.g. tclInvoke) it fails.

Problem 2. When I configure Fossil to build as a statically linked binary, the 
build either fails or the Fossil crashes when loading the Tcl library.

Here’s a summary of what I’ve tried on a machine running Ubuntu 16.04.

1. I’ve successfully built Fossil with Tcl integration as a dynamically linked 
binary using:

./configure --json --with-tcl --with-tcl-stubs --with-tcl-private-stubs
make

I can see that the Tcl library is getting loaded by running ‘fossil version -v’ 
and getting the following output:

**** Begin 'fossil version -v' output ****
This is fossil version 2.1 [4fa4c0218f] 2017-03-13 01:12:30 UTC
Compiled on Mar 16 2017 17:33:43 using clang-3.8.0 (tags/RELEASE_380/final) 
(64-bit)
Schema version 2015-01-24
zlib 1.2.8, loaded 1.2.8
hardened-SHA1 by Marc Stevens and Dan Shumow
SSL (OpenSSL 1.0.2g  1 Mar 2016)
TCL (Tcl 8.6.0, loaded TH_OK: 8.6.5)
USE_TCL_STUBS
FOSSIL_ENABLE_TCL_PRIVATE_STUBS
JSON (API 20120713)
UNICODE_COMMAND_LINE
FOSSIL_DYNAMIC_BUILD
SQLite 3.18.0 2017-03-10 17:03:11 f8560c60d1
SQLITE_ENABLE_DBSTAT_VTAB
SQLITE_ENABLE_FTS3
SQLITE_ENABLE_FTS3_PARENTHESIS
SQLITE_ENABLE_FTS4
SQLITE_ENABLE_FTS5
SQLITE_ENABLE_JSON1
SQLITE_LIKE_DOESNT_MATCH_BLOBS
SQLITE_OMIT_DECLTYPE
SQLITE_OMIT_DEPRECATED
SQLITE_OMIT_LOAD_EXTENSION
SQLITE_OMIT_PROGRESS_CALLBACK
SQLITE_OMIT_SHARED_CACHE
SQLITE_SYSTEM_MALLOC
SQLITE_THREADSAFE=0
SQLITE_USE_ALLOCA
**** End 'fossil version -v' output ****

However, when I try to test a TH1 script that uses a command that requires Tcl 
integration, it doesn’t work. For example, I tried this with the following:

fossil test-th-source -th-trace ~/test.th1 
Has TCL
TCL Not Ready
TH_ERROR: no such command:  tclInvoke

------------------ BEGIN TRACE LOG ------------------
th1-init 0x0 => 0x0<br />
th1-setup {} => TH_OK<br />
[hasfeature tcl] => 1<br />
[tclReady] => 0<br />

------------------- END TRACE LOG -------------------

I’ve included test.th1 in case I’m doing something wrong there. I’ve also tried 
the same script from the the Fossil UI page Admin -> TH1. I’ve verified that 
Tcl is enabled with 'fossil settings tcl’ which gives the following output:

**** Begin 'fossil settings tcl’ output ****
tcl                  (local)  1
tcl-setup           
**** End 'fossil settings tcl’ output ****

I’m not sure what I’m missing here. If anyone has guidance here, any help would 
be appreciated. I’m happy to provide any relevant information that I may be 
missing here.

2. To build Fossil as a statically linked binary, I first tried just using the 
Tcl stubs that come with Fossil.

./configure --static --json --with-tcl --with-tcl-stubs --with-tcl-private-stubs

After configuring Fossil in this way, the build succeeds. However, Fossil 
crashes when loading the Tcl library. For example, Fossil crashes when I run:

./fossil version -v
Segmentation fault (core dumped)

I’ve attached a stack trace of the crash if that’s useful to anyone.

Next, I tried to build Tcl as a static library first and then build Fossil 
using that library. I configured and built Tcl 8.6.6 from source with:

./configure --disable-shared
make
sudo make install

Then, configure and build Fossil with:

./configure --static --json --with-tcl=/usr/local
make

The build fails during linking with the following error:

/usr/bin/ld: dynamic STT_GNU_IFUNC symbol `sin' with pointer equality in 
`/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libm.a(s_sin.o)'
 can not be used when making an executable; recompile with -fPIE and relink 
with -pie
clang: error: linker command failed with exit code 1 (use -v to see invocation)
src/main.mk:591: recipe for target 'fossil' failed
make: *** [fossil] Error 1

Again, if any one has guidance on how to properly build Fossil with Tcl 
integration as a statically linked binary, any help would be appreciated.

Thanks,

Ryan


Attachment: fossil-crash.log
Description: Binary data

Attachment: test.th1
Description: Binary data

_______________________________________________
fossil-users mailing list
[email protected]
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to