[117621] trunk/base
Ryan Schmidt
ryandesign at macports.org
Fri Mar 7 23:53:43 PST 2014
On Mar 5, 2014, at 16:19, cal at macports.org wrote:
> Revision
> 117621
> Author
> cal at 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.
More information about the macports-dev
mailing list