Posted to tcl by aku at Tue Apr 06 16:15:20 GMT 2021view pretty

----

General setup

----

hephaistos:(502) ~/Development/Tcl/Meine/Critcl > md I

hephaistos:(503) ~/Development/Tcl/Meine/Critcl > cd I

hephaistos:(505) ~/Development/Tcl/Meine/Critcl/I > g hc andreas-kupries/critcl

Cloning into 'critcl'...
remote: Enumerating objects: 45, done.
remote: Counting objects: 100% (45/45), done.
remote: Compressing objects: 100% (44/44), done.
remote: Total 8210 (delta 18), reused 10 (delta 0), pack-reused 8165
Receiving objects: 100% (8210/8210), 15.54 MiB | 5.85 MiB/s, done.
Resolving deltas: 100% (5024/5024), done.
critcl cloned

hephaistos:(506) ~/Development/Tcl/Meine/Critcl/I > cd critcl/

hephaistos:(507) ~/Development/Tcl/Meine/Critcl/I/critcl > git log | head -6

commit 07292456bda518052c20fad66e40f217122ec478
Author: Andreas Kupries <akupries@shaw.ca>
Date:   Thu May 14 11:48:25 2020 -0700

    Change build defaults for callback package: No symbols, no assertions.

hephaistos:(508) ~/Development/Tcl/Meine/Critcl/I/critcl > g bc

* master

hephaistos:(509) ~/Development/Tcl/Meine/Critcl/I/critcl > mkdir ../local-install

hephaistos:(516) ~/Development/Tcl/Meine/Critcl/I/critcl > head -3 build.tcl 

#!/bin/sh
# -*- tcl -*- \
exec tclsh "$0" ${1+"$@"}

hephaistos:(511) ~/Development/Tcl/Meine/Critcl/I/critcl > which tclsh
/home/aku/opt/ActiveTcl/bin/tclsh

hephaistos:(512) ~/Development/Tcl/Meine/Critcl/I/critcl > echo 'puts [info patchlevel];exit' | /home/aku/opt/ActiveTcl/bin/tclsh
8.6.10

----

Trying a relative path.

----

hephaistos:(505) ~/Development/Tcl/Meine/Critcl/I/critcl > ./build.tcl install ../local-install

Installing into:
	Packages:	../local-install
	Application:	./bin
	Headers:	./include

Installed package:      ../local-install/critcl-app3.1.18
Installed package:      ../local-install/critcl3.1.18
Installed package:      ../local-install/critcl-bitmap1.0.1
Installed package:      ../local-install/critcl-class1.1.1
Installed package:      ../local-install/critcl-cutil0.2.1
Installed package:      ../local-install/critcl-emap1.2
Installed package:      ../local-install/critcl-enum1.1
Installed package:      ../local-install/critcl-iassoc1.1
Installed package:      ../local-install/critcl-literals1.3
Installed package:      ../local-install/critcl-platform1.0.15
Installed package:      ../local-install/critcl-util1.1
Installed package:      ../local-install/dict841
Installed package:      ../local-install/lassign841.0.1
Installed package:      ../local-install/lmap841
Installed package:      ../local-install/stubs_container1
Installed package:      ../local-install/stubs_gen_decl1
Installed package:      ../local-install/stubs_gen_header1
Installed package:      ../local-install/stubs_gen_init1
Installed package:      ../local-install/stubs_gen_lib1
Installed package:      ../local-install/stubs_gen_macro1
Installed package:      ../local-install/stubs_gen_slot1
Installed package:      ../local-install/stubs_genframe1
Installed package:      ../local-install/stubs_reader1
Installed package:      ../local-install/stubs_writer1
geedonk {. .. local-install}
Installed application:  ./bin/critcl

Installed C package:	critcl::md5c
executing {exec >@ stdout 2>@ stderr /home/aku/opt/ActiveTcl/bin/tclsh ./bin/critcl -libdir ../local-install/tmp -pkg /home/aku/Development/Tcl/Meine/Critcl/I/critcl/lib/critcl-md5c/md5c.tcl}
Config:   linux-x86_64-gcc
Build:    linux-x86_64-gcc
Target:   linux-x86_64
Source:   md5c.tcl  (provide critcl_md5c 0.12)
Library:  md5c.so
 (tclStubsPtr     =>  TclStubs *tclStubsPtr;)
 (tclPlatStubsPtr =>  TclPlatStubs *tclPlatStubsPtr;)
Package:  /home/aku/Development/Tcl/Meine/Critcl/I/local-install/tmp/md5c
Installed package:      ../local-install/critcl_md5c0.12

Installed C package:	critcl::callback
Config:   linux-x86_64-gcc
Build:    linux-x86_64-gcc
Target:   linux-x86_64
Source:   callback.tcl  (provide critcl::callback 1) (include <critcl_assert.h>) (include <critcl_alloc.h>) (include <critcl_trace.h>) (include <critcl_alloc.h>)
Library:  callback.so
 (tclStubsPtr     =>  TclStubs *tclStubsPtr;)
 (tclPlatStubsPtr =>  TclPlatStubs *tclPlatStubsPtr;)
Package:  /home/aku/Development/Tcl/Meine/Critcl/I/local-install/tmp/callback
Headers:  ../local-install/tmp/critcl_callback
Installed package:      ../local-install/critcl_callback1
Installed headers:      ./include/critcl_callback

hephaistos:(506) ~/Development/Tcl/Meine/Critcl/I/critcl > 

----

Notes:

	Packages:	../local-install	!! libdir
	Application:	./bin			!! bindir = dirname(libdir)/bin
	Headers:	./include		!! incdir = dirname(libdir)/include

build.tcl line 410

build.tcl line 412 converts the libdir to all paths. May modify the libdir!
	       	   Proc `target`.
		   Uses a `findlib` for the libdir/libdir change.

This seems to look for a path segment `lib`.

Would explain why the path is reduced to `/` when you use an absolute path.
Note that the so "found" path is used as the basis for the bindir/incdir conversion.

Unclear why.

Do not remember that code.

Suspicion that this was added by pooryorick at some point.

Reasons and motivating issues unknown.