# https://sqlite.org/forum/forumpost/0683a49cb02f31a1 # https://bugs.gentoo.org/942918 # Compiled from https://sqlite.org/forum/forumpost/6fd4ca69e86eafc6, https://www.sqlite.org/src/info/38136b33f9536b63 and https://www.sqlite.org/src/info/2f6e5946cf34e094 --- a/tool/buildtclext.tcl +++ b/tool/buildtclext.tcl @@ -140,12 +140,13 @@ if {[string length $OPTS]>1} { append LDFLAGS $OPTS } - set CMD [subst $cmd] if {$TCLMAJOR>8} { set OUT libtcl9sqlite$VERSION.$SUFFIX } else { set OUT libsqlite$VERSION.$SUFFIX } + set @ $OUT; # workaround for https://sqlite.org/forum/forumpost/6b1af7eb10884373 + set CMD [subst $cmd] } # Show information about prior installs From b03592c324a4d066e12c3af945dd510dc28b6d65 Mon Sep 17 00:00:00 2001 From: stephan Date: Sat, 16 Nov 2024 14:33:01 +0000 Subject: [PATCH] Add DESTDIR support to the tclextension-install target, via [67a3ca0c013b] and [d1663cf05f7d]. --- a/Makefile.in +++ b/Makefile.in @@ -1600,7 +1600,7 @@ tclextension: tclsqlite3.c # to find it. # tclextension-install: tclsqlite3.c - $(TCLSH_CMD) $(TOP)/tool/buildtclext.tcl --cc "$(CC)" $(CFLAGS) $(OPT_FEATURE_FLAGS) $(OPTS) + $(TCLSH_CMD) $(TOP)/tool/buildtclext.tcl --destdir "$(DESTDIR)" --cc "$(CC)" $(CFLAGS) $(OPT_FEATURE_FLAGS) $(OPTS) # Install the SQLite TCL extension that is used by $TCLSH_CMD # +38136b33f9536b63520d3810f397a3b4b5372028b31108806f84fe44bf338425 --- a/tool/buildtclext.tcl +++ b/tool/buildtclext.tcl @@ -15,6 +15,7 @@ Options: --info Show info on existing SQLite TCL extension installs --install-only Install an extension previously build --uninstall Uninstall the extension + --destdir DIR Installation root (used by "make install DESTDIR=...") Other options are retained and passed through into the compiler.} @@ -25,6 +26,7 @@ set uninstall 0 set infoonly 0 set CC {} set OPTS {} +set DESTDIR ""; # --destdir "$(DESTDIR)" for {set ii 0} {$ii<[llength $argv]} {incr ii} { set a0 [lindex $argv $ii] if {$a0=="--install-only"} { @@ -42,6 +44,9 @@ for {set ii 0} {$ii<[llength $argv]} {incr ii} { } elseif {$a0=="--cc" && $ii+1<[llength $argv]} { incr ii set CC [lindex $argv $ii] + } elseif {$a0=="--destdir" && $ii+1<[llength $argv]} { + incr ii + set DESTDIR [lindex $argv $ii] } elseif {[string match -* $a0]} { append OPTS " $a0" } else { @@ -245,7 +250,7 @@ package ifneeded sqlite3 $VERSION \\ if {$install} { # Install the extension - set DEST2 $DEST/sqlite$VERSION + set DEST2 ${DESTDIR}$DEST/sqlite$VERSION file mkdir $DEST2 puts "installing $DEST2/pkgIndex.tcl" file copy -force pkgIndex.tcl $DEST2 From 375552f224813c7e2fac0e67dd13ecd6ba3a3571 Mon Sep 17 00:00:00 2001 From: stephan Date: Sat, 16 Nov 2024 17:12:17 +0000 Subject: [PATCH] Handle DESTDIR at an earlier phase in buildtclext.tcl to account for the is-writable-dir check and to filter out //zipfs: dirs as (im)possible installation targets. --- a/tool/buildtclext.tcl +++ b/tool/buildtclext.tcl @@ -198,7 +198,15 @@ if {$install} { # set DEST {} foreach dir $auto_path { - if {[file writable $dir]} { + if {[string match //*:* $dir]} { + # We can't install to //zipfs: paths + continue + } elseif {"" ne $DESTDIR && ![file writable $DESTDIR]} { + continue + } + set dir ${DESTDIR}$dir + if {[file writable $dir] || "" ne $DESTDIR} { + # the dir will be created later ^^^^^^^^ set DEST $dir break } elseif {[glob -nocomplain $dir/sqlite3*/pkgIndex.tcl]!=""} { @@ -216,7 +224,7 @@ if {$install} { puts "to work around this problem.\n" puts "These are the (unwritable) \$auto_path directories:\n" foreach dir $auto_path { - puts " * $dir" + puts " * ${DESTDIR}$dir" } exit 1 } @@ -250,7 +258,7 @@ package ifneeded sqlite3 $VERSION \\ if {$install} { # Install the extension - set DEST2 ${DESTDIR}$DEST/sqlite$VERSION + set DEST2 $DEST/sqlite$VERSION file mkdir $DEST2 puts "installing $DEST2/pkgIndex.tcl" file copy -force pkgIndex.tcl $DEST2