[MacPorts] #61253: configuring base requires working tclsh
MacPorts
noreply at macports.org
Wed Sep 30 23:41:12 UTC 2020
#61253: configuring base requires working tclsh
-------------------------+--------------------
Reporter: ryandesign | Owner: (none)
Type: defect | Status: new
Priority: Normal | Milestone:
Component: base | Version: 2.6.99
Resolution: | Keywords:
Port: |
-------------------------+--------------------
Description changed by ryandesign:
Old description:
> It was a surprise to me to discover that tcllib's configure script, which
> our configure script runs, requires a working tclsh, and that if
> ${prefix}/libexec/macports/bin/tclsh8.5 exists, it will choose that one.
> This is a problem when ${prefix}/libexec/macports/bin/tclsh8.5 exists but
> is broken, which was the case on my system and was one of the reasons why
> I was trying to rebuild from source.
>
> The symptom was:
>
> {{{
> Installing Tcllib 1.18
> You have chosen the following configuration ...
>
> Packages: /Users/rschmidt/macports-base/vendor/vendor-
> destroot/opt/local/libexec/macports/lib/.
> Applications: Not installed.
> Examples: Not installed.
> Documentation: Not installed.
> [snip]
> chmod: /Users/rschmidt/macports-base/vendor/vendor-
> destroot/opt/local/libexec/macports/lib/tcllib*: No such file or
> directory
> }}}
>
> The packages path is wrong! It should not end with `lib/.`; it should end
> with `lib/tcllib1.18`.
>
> tcllib's configure script replaces placeholder strings `@PACKAGE@` and
> `@VERSION@` with values computed by a script called sak.tcl. The version
> is composed of the major version, then a literal dot, then the minor
> version. Since in my case tclsh did not work, the package, major and
> minor version strings were empty, leaving only the literal dot.
>
> Apple has announced that scripting languages like tclsh won't necessarily
> be included in future versions of macOS. We should modify our build
> process so that we first build tclsh, and only then do we configure
> tcllib and point it at the tclsh that we built.
New description:
It was a surprise to me to discover that tcllib's configure script, which
our configure script runs, requires a working tclsh, and that if
${prefix}/libexec/macports/bin/tclsh8.5 exists, it will choose that one.
This is a problem when ${prefix}/libexec/macports/bin/tclsh8.5 exists but
is broken, which was the case on my system and was one of the reasons why
I was trying to rebuild from source.
The symptom was:
{{{
Installing Tcllib 1.18
You have chosen the following configuration ...
Packages: /Users/rschmidt/macports-base/vendor/vendor-
destroot/opt/local/libexec/macports/lib/.
Applications: Not installed.
Examples: Not installed.
Documentation: Not installed.
[snip]
chmod: /Users/rschmidt/macports-base/vendor/vendor-
destroot/opt/local/libexec/macports/lib/tcllib*: No such file or directory
}}}
The packages path is wrong! It should not end with `lib/.`; it should end
with `lib/tcllib1.18`.
tcllib's configure script replaces placeholder strings `@PACKAGE@` and
`@VERSION@` with values computed by a script called sak.tcl. The version
consists of the major version, then a literal dot, then the minor version.
Since in my case tclsh did not work, the package, major and minor version
strings were empty, leaving only the literal dot.
My workaround was to move the directory ${prefix} to ${prefix}old, then
run configure and make, then move ${prefix}old back to ${prefix}, then
sudo make install.
Apple has announced that scripting languages like tclsh won't necessarily
be included in future versions of macOS. We should modify our build
process so that we first build tclsh, and only then do we configure tcllib
and point it at the tclsh that we built.
--
--
Ticket URL: <https://trac.macports.org/ticket/61253#comment:2>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list