On Mar 5, 2014, at 16:19, c...@macports.org wrote:

> Revision
> 117621
> Author
> c...@macports.org
> Date
> 2014-03-05 14:19:14 -0800 (Wed, 05 Mar 2014)
> Log Message
> 
> macports: use a local copy of Tcl 8.5, mostly fix out-of-source build (#28001)
> 
> This change switches MacPorts to a private copy of Tcl 8.5 that will be 
> extracted, configured, built
> and installed along with MacPorts. This will allow us to drop Tcl 
> 8.4-compatibility for older OS
> releases that didn't ship Tcl 8.5 and is an important step towards Tcl 8.6 
> compatibility.
> 
> Most of the changes to make this happen were in aclocal.m4 (where I 
> re-implemented a custom version
> of AC_CONFIG_SUBDIRS similar to what was proposed upstream in
> 
> http://lists.gnu.org/archive/html/autoconf/2011-04/msg00000.html
>  but never actually merged),
> configure.ac and the vendor directory.
> 
> Since we want to build MacPorts against the headers of our custom Tcl, this 
> change also required
> adjusting Mk/macports.autoconf.mk.in to pass the correct path to the headers. 
> However, we cannot use
> the build directory containing the public headers, because this directory is 
> also clobbered with
> other headers such as regex.h, breaking the build later on when this file is 
> included in pextlib1.0.
> Fortunately, the Tcl autoconf macros take care of all the other details 
> required to build against
> a private Tcl.
> 
> Not having the blessed copy of Tcl around during configure lead to some other 
> difficulties such as
> the MP_TCL_PLATFORM macro, which uses $TCLSH to read the $tcl_platform 
> variable. I have
> re-implemented this as MP_PLATFORM using uname in the same way as the 
> $tcl_platform variable is set
> up in the Tcl source code.
> 
> Besides a standard Tcl distribution, this change also installs the Tcl Thread 
> package (required for
> trace mode) and Tcllib, a package containing various helpful modules for Tcl 
> (such as an
> 8.6-compatible try implementation). It also drops support for the Tcl sqlite3 
> extension that is
> present on OS X and was previously picked up by configure, but isn't used in 
> the source.
> 
> While I was refactoring the build system I also mostly fixed out-of-source 
> builds (see #28001,
> caused all Makefile -> Makefile.in moves). The remaining issue is that the 
> pkgIndex.tcl files
> generated by pkg_mkIndex only list the files present in the build directory 
> (i.e. all files that
> have been re-inplaced or built from source), but not those from the source 
> directory. That currently
> causes the Tcl scripts in the install target to fail.
> 
> I also unified indentation in aclocal.m4.

Thank you for doing all of this work! I’m really excited about the future 
improvements this will make possible.

_______________________________________________
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to