View Ticket
Bounty program for improvements to Tcl and certain Tcl packages.
2022-03-12
18:13 Ticket [37bbdb9fb2] `make install` does not work when `configure` was called without --prefix status still Open with 5 other changes artifact: deede30708 user: anonymous
2021-01-27
08:17 New ticket [37bbdb9fb2]. artifact: b0cf94ff67 user: anonymous

Ticket Hash: 37bbdb9fb2abbc383fb4657118642fd495cf723d
Title: `make install` does not work when `configure` was called without --prefix
Status: Open Type: Build Problem
Severity: Important Priority: Immediate
Subsystem: Resolution: Open
Last Modified: 2022-03-12 18:13:54
Version Found In: 1.7.22
User Comments:
anonymous added on 2021-01-27 08:17:35:

The TCL_PACKAGE_PATH variable is set to {/usr/lib} with braces.

  $ sudo make install
  ...
  /usr/bin/install -c -d '{/usr/lib}/tcltls1.7.22'
  /usr/bin/install -c tcltls.so '{/usr/lib}/tcltls1.7.22'
  /usr/bin/install -c -m 644    pkgIndex.tcl '{/usr/lib}/tcltls1.7.22'

As this is not valid brace expansion (comma is required), that results in creating a directory called { and installing the files under it, instead of /usr/lib.


anonymous added on 2022-03-12 18:13:54:

This is actually a bug in the Tcl configure script. Starting in Tcl 8.6.11, the lines:

if test "$prefix/lib" != "$libdir"; then
    TCL_PACKAGE_PATH="${libdir} ${prefix}/lib"
else
    TCL_PACKAGE_PATH="${prefix}/lib"
fi

were changed to:

if test "$prefix/lib" != "$libdir"; then
    TCL_PACKAGE_PATH="{${libdir}} {${prefix}/lib}"
else
    TCL_PACKAGE_PATH="{${prefix}/lib}"
fi

The extra braces propagate into the tclConfig.sh file, which then breaks the makefile.