From b1672922495b8ee93b416632dc8e258244ca340b Mon Sep 17 00:00:00 2001 From: stu Date: Fri, 22 May 2015 04:17:01 +0000 Subject: [PATCH] Update to 8.6.4. Discontinue the installation of private header files. Discontinue patching an irrelevant file. Use INSTALL_* as with the other Tcl/Tk ports. Better stripping. Setup Tcl package path at configure time. Cleanup README and adjust for new man.conf. Improved lib/package/module path config/runtime. Skip tests that will always fail due to assumptions that don't hold on OpenBSD. Port improvements for less diff churn on future port updates. --- lang/tcl/8.6/Makefile | 40 ++++---- lang/tcl/8.6/distinfo | 4 +- lang/tcl/8.6/patches/patch-library_init_tcl | 21 +++-- .../8.6/patches/patch-tools_installData_tcl | 12 --- lang/tcl/8.6/patches/patch-unix_Makefile_in | 16 ++-- lang/tcl/8.6/patches/patch-unix_configure | 15 +++ lang/tcl/8.6/pkg/PLIST | 9 +- lang/tcl/8.6/pkg/README | 94 ++++--------------- 8 files changed, 78 insertions(+), 133 deletions(-) delete mode 100644 lang/tcl/8.6/patches/patch-tools_installData_tcl create mode 100644 lang/tcl/8.6/patches/patch-unix_configure diff --git a/lang/tcl/8.6/Makefile b/lang/tcl/8.6/Makefile index ddc639a8aba..b9772389213 100644 --- a/lang/tcl/8.6/Makefile +++ b/lang/tcl/8.6/Makefile @@ -1,11 +1,11 @@ -# $OpenBSD: Makefile,v 1.12 2014/10/21 05:08:53 stu Exp $ +# $OpenBSD: Makefile,v 1.13 2015/05/22 04:17:01 stu Exp $ COMMENT = Tool Command Language -DISTNAME = tcl8.6.2 -PKGNAME = tcl-8.6.2 -REVISION = 0 -SHARED_LIBS = tcl86 1.1 +P = 4 +DISTNAME = tcl8.6.${P} +PKGNAME = tcl-8.6.${P} +SHARED_LIBS = tcl86 1.2 CATEGORIES = lang lang/tcl HOMEPAGE = http://www.tcl.tk/ MAINTAINER = Stuart Cassoff @@ -16,13 +16,16 @@ PERMIT_PACKAGE_CDROM = Yes WANTLIB = c m pthread z MASTER_SITES = ${MASTER_SITE_SOURCEFORGE:=tcl/} -DISTFILES = tcl-core8.6.2-src.tar.gz +DISTFILES = tcl-core8.6.${P}-src.tar.gz -MAKE_FLAGS += TCL_PACKAGE_PATH='$$(prefix)/lib/tcl' \ - TCL_LIBRARY='$$(prefix)/lib/tcl/tcl$$(VERSION)' +MAKE_FLAGS = TCL_LIBRARY='$$(prefix)/lib/tcl/tcl$$(VERSION)' -FAKE_FLAGS = INSTALL_PACKAGE_TARGETS='' \ - CONFIG_INSTALL_DIR='$$(SCRIPT_INSTALL_DIR)' +FAKE_FLAGS = INSTALL_DATA_DIR="${INSTALL_DATA_DIR}" \ + INSTALL_LIBRARY="${INSTALL_DATA}" \ + INSTALL_DATA="${INSTALL_DATA}" \ + INSTALL_PROGRAM="${INSTALL_PROGRAM}" \ + CONFIG_INSTALL_DIR='$$(SCRIPT_INSTALL_DIR)' \ + INSTALL_PACKAGE_TARGETS='' TEST_FLAGS = HOME=${TESTHOME} TESTFLAGS="${TESTFLAGS}" SEPARATE_BUILD = Yes @@ -35,30 +38,35 @@ CONFIGURE_ARGS += ${CONFIGURE_SHARED} \ --sysconfdir="${SYSCONFDIR}" \ --enable-man-symlinks \ --disable-rpath \ - EXTRA_INSTALL="install-private-headers" \ SHLIB_VERSION="${LIBtcl86_VERSION}" .include +ALL_TARGET = binaries + .if ${NO_SHARED_LIBS:L} == "no" -ALL_TARGET = binaries libtcl86.a +ALL_TARGET += libtcl86.a CONFIGURE_ARGS += EXTRA_INSTALL_BINARIES='@echo "Installing libtcl86.a to $$(LIB_INSTALL_DIR)/" \ && $$(INSTALL_DATA) libtcl86.a $$(LIB_INSTALL_DIR)/libtcl86.a \ && (cd $$(LIB_INSTALL_DIR) ; $$(RANLIB) libtcl86.a)' -.else -ALL_TARGET = binaries .endif WRKSRC = ${WRKDIST}/unix TEST_TARGET = test-tcl -SUBST_VARS += _README_DIR TESTHOME = ${WRKDIR}/testhome # Use TESTFLAGS to control the Tcl tests TESTFLAGS = +# These tests will always fail due to assumptions that don't hold on OpenBSD. +# Skip them until they're improved. +# fCmd-9.4.b expects to be able to overwrite a read-only directory. +# http-4.14 and many socket-14.* expect certain socket errors to occur +# later rather than sooner. Bug 2911139. +TESTFLAGS += -skip 'fCmd-9.4.b http-4.14 socket-14.*' + pre-configure: - @${SUBST_CMD} ${WRKSRC}/installManPage + @${SUBST_CMD} ${WRKDIST}/library/init.tcl pre-test: mkdir -p ${TESTHOME} diff --git a/lang/tcl/8.6/distinfo b/lang/tcl/8.6/distinfo index 06d1d02caca..a7dddeb0eeb 100644 --- a/lang/tcl/8.6/distinfo +++ b/lang/tcl/8.6/distinfo @@ -1,2 +1,2 @@ -SHA256 (tcl-core8.6.2-src.tar.gz) = jFFC+ydShPdnhGKpWJW4kuZCYKdtX73GkKY2XecrJmc= -SIZE (tcl-core8.6.2-src.tar.gz) = 5808780 +SHA256 (tcl-core8.6.4-src.tar.gz) = Nz6EkGfzMVlHAGDzV0IRD/I7X7oH5C8B+9BlTXqaNx8= +SIZE (tcl-core8.6.4-src.tar.gz) = 5813056 diff --git a/lang/tcl/8.6/patches/patch-library_init_tcl b/lang/tcl/8.6/patches/patch-library_init_tcl index 5c10b5caf7a..673a3c0e1d6 100644 --- a/lang/tcl/8.6/patches/patch-library_init_tcl +++ b/lang/tcl/8.6/patches/patch-library_init_tcl @@ -1,18 +1,19 @@ -$OpenBSD: patch-library_init_tcl,v 1.2 2013/09/22 10:33:12 stu Exp $ ---- library/init.tcl.orig Tue Sep 3 08:47:31 2013 -+++ library/init.tcl Sat Sep 7 08:33:19 2013 -@@ -52,11 +52,14 @@ namespace eval tcl { +$OpenBSD: patch-library_init_tcl,v 1.3 2015/05/22 04:17:01 stu Exp $ +--- library/init.tcl.orig Thu Feb 26 11:58:16 2015 ++++ library/init.tcl Mon Apr 6 03:54:27 2015 +@@ -52,9 +52,14 @@ namespace eval tcl { lappend ::auto_path $Dir } } -+# OpenBSD layout -+if {0} { ++ ++# OpenBSD layout. ++# Tcl extensions shouldn't be installed in ${LOCALBASE}/lib. ++# Don't add ${LOCALBASE}/lib to the auto_path. ++ set Dir [file join [file dirname [file dirname \ [info nameofexecutable]]] lib] - if {$Dir ni $::auto_path} { +- if {$Dir ni $::auto_path} { ++ if {$Dir ne {${LOCALBASE}/lib} && $Dir ni $::auto_path} { lappend ::auto_path $Dir } -+} catch { - foreach Dir $::tcl_pkgPath { - if {$Dir ni $::auto_path} { diff --git a/lang/tcl/8.6/patches/patch-tools_installData_tcl b/lang/tcl/8.6/patches/patch-tools_installData_tcl deleted file mode 100644 index 895b89ddf1b..00000000000 --- a/lang/tcl/8.6/patches/patch-tools_installData_tcl +++ /dev/null @@ -1,12 +0,0 @@ -$OpenBSD: patch-tools_installData_tcl,v 1.1.1.1 2013/02/02 11:15:01 stu Exp $ ---- tools/installData.tcl.orig Tue May 31 11:03:47 2011 -+++ tools/installData.tcl Wed Oct 5 01:55:14 2011 -@@ -32,7 +32,7 @@ proc copyDir {d1 d2} { - } elseif {[file isfile $f]} { - file copy -force $f [file join $d2 $ftail] - if {$::tcl_platform(platform) eq {unix}} { -- file attributes [file join $d2 $ftail] -permissions 0644 -+ file attributes [file join $d2 $ftail] -permissions 0444 - } else { - file attributes [file join $d2 $ftail] -readonly 1 - } diff --git a/lang/tcl/8.6/patches/patch-unix_Makefile_in b/lang/tcl/8.6/patches/patch-unix_Makefile_in index f2f0d7dde71..4b7c0af41cf 100644 --- a/lang/tcl/8.6/patches/patch-unix_Makefile_in +++ b/lang/tcl/8.6/patches/patch-unix_Makefile_in @@ -1,7 +1,7 @@ -$OpenBSD: patch-unix_Makefile_in,v 1.4 2014/10/21 05:08:53 stu Exp $ ---- unix/Makefile.in.orig Mon Jul 28 11:58:05 2014 -+++ unix/Makefile.in Sat Aug 16 18:21:09 2014 -@@ -632,6 +632,10 @@ ${STUB_LIB_FILE}: ${STUB_LIB_OBJS} +$OpenBSD: patch-unix_Makefile_in,v 1.5 2015/05/22 04:17:01 stu Exp $ +--- unix/Makefile.in.orig Fri Oct 24 16:39:18 2014 ++++ unix/Makefile.in Sat Oct 25 19:11:21 2014 +@@ -633,6 +633,10 @@ ${STUB_LIB_FILE}: ${STUB_LIB_OBJS} rm -f $@ @MAKE_STUB_LIB@ @@ -12,7 +12,7 @@ $OpenBSD: patch-unix_Makefile_in,v 1.4 2014/10/21 05:08:53 stu Exp $ # Make target which outputs the list of the .o contained in the Tcl lib useful # to build a single big shared library containing Tcl and other extensions. # Used for the Tcl Plugin. -- dl -@@ -798,7 +802,6 @@ install-binaries: binaries +@@ -799,7 +803,6 @@ install-binaries: binaries done; @echo "Installing $(LIB_FILE) to $(DLL_INSTALL_DIR)/" @@INSTALL_LIB@ @@ -20,7 +20,7 @@ $OpenBSD: patch-unix_Makefile_in,v 1.4 2014/10/21 05:08:53 stu Exp $ @echo "Installing ${TCL_EXE} as $(BIN_INSTALL_DIR)/tclsh$(VERSION)${EXE_SUFFIX}" @$(INSTALL_PROGRAM) ${TCL_EXE} "$(BIN_INSTALL_DIR)/tclsh$(VERSION)${EXE_SUFFIX}" @echo "Installing tclConfig.sh to $(CONFIG_INSTALL_DIR)/" -@@ -813,7 +816,7 @@ install-binaries: binaries +@@ -814,7 +817,7 @@ install-binaries: binaries @EXTRA_INSTALL_BINARIES@ @echo "Installing pkg-config file to $(LIB_INSTALL_DIR)/pkgconfig/" @$(INSTALL_DATA_DIR) $(LIB_INSTALL_DIR)/pkgconfig @@ -29,7 +29,7 @@ $OpenBSD: patch-unix_Makefile_in,v 1.4 2014/10/21 05:08:53 stu Exp $ install-libraries: libraries @for i in "$(SCRIPT_INSTALL_DIR)"; \ -@@ -824,7 +827,7 @@ install-libraries: libraries +@@ -825,7 +828,7 @@ install-libraries: libraries else true; \ fi; \ done; @@ -38,7 +38,7 @@ $OpenBSD: patch-unix_Makefile_in,v 1.4 2014/10/21 05:08:53 stu Exp $ do \ if [ ! -d "$(SCRIPT_INSTALL_DIR)"/$$i ] ; then \ echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \ -@@ -844,21 +847,21 @@ install-libraries: libraries +@@ -845,21 +848,21 @@ install-libraries: libraries $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/http1.0; \ done; @echo "Installing package http 2.8.8 as a Tcl Module"; diff --git a/lang/tcl/8.6/patches/patch-unix_configure b/lang/tcl/8.6/patches/patch-unix_configure new file mode 100644 index 00000000000..831aff100d4 --- /dev/null +++ b/lang/tcl/8.6/patches/patch-unix_configure @@ -0,0 +1,15 @@ +$OpenBSD: patch-unix_configure,v 1.3 2015/05/22 04:17:01 stu Exp $ + +Setting this here will allow it to propagate through everything. + +--- unix/configure.orig Mon Apr 6 20:35:14 2015 ++++ unix/configure Mon Apr 6 20:35:36 2015 +@@ -19207,7 +19207,7 @@ if test "$FRAMEWORK_BUILD" = "1" ; then + elif test "$prefix/lib" != "$libdir"; then + TCL_PACKAGE_PATH="${libdir} ${prefix}/lib ${TCL_PACKAGE_PATH}" + else +- TCL_PACKAGE_PATH="${prefix}/lib ${TCL_PACKAGE_PATH}" ++ TCL_PACKAGE_PATH="${prefix}/lib/tcl" + fi + + #-------------------------------------------------------------------- diff --git a/lang/tcl/8.6/pkg/PLIST b/lang/tcl/8.6/pkg/PLIST index 6dacfebd7c4..61a8a739a42 100644 --- a/lang/tcl/8.6/pkg/PLIST +++ b/lang/tcl/8.6/pkg/PLIST @@ -1,4 +1,4 @@ -@comment $OpenBSD: PLIST,v 1.6 2014/10/21 05:08:53 stu Exp $ +@comment $OpenBSD: PLIST,v 1.7 2015/05/22 04:17:01 stu Exp $ @option no-default-conflict @conflict tcl->=8.6,<8.7 %%SHARED%% @@ -6,18 +6,11 @@ include/tcl8.6/ include/tcl8.6/tcl.h include/tcl8.6/tclDecls.h -include/tcl8.6/tclInt.h -include/tcl8.6/tclIntDecls.h -include/tcl8.6/tclIntPlatDecls.h include/tcl8.6/tclOO.h include/tcl8.6/tclOODecls.h -include/tcl8.6/tclOOInt.h -include/tcl8.6/tclOOIntDecls.h include/tcl8.6/tclPlatDecls.h -include/tcl8.6/tclPort.h include/tcl8.6/tclTomMath.h include/tcl8.6/tclTomMathDecls.h -include/tcl8.6/tclUnixPort.h lib/libtcl86.a @lib lib/libtcl86.so.${LIBtcl86_VERSION} lib/libtclstub86.a diff --git a/lang/tcl/8.6/pkg/README b/lang/tcl/8.6/pkg/README index 77a30e58e8a..362e992380a 100644 --- a/lang/tcl/8.6/pkg/README +++ b/lang/tcl/8.6/pkg/README @@ -1,4 +1,4 @@ -$OpenBSD: README,v 1.3 2014/01/11 12:56:41 ajacoutot Exp $ +$OpenBSD: README,v 1.4 2015/05/22 04:17:01 stu Exp $ +----------------------------------------------------------------------- | Running ${FULLPKGNAME} on OpenBSD @@ -8,24 +8,20 @@ The OpenBSD port of the Tcl dynamic language was designed to balance deriving the maximum value from the original software while keeping any modifications to a minimum. -This document describes these differences and includes a handy guide -and patch for adding Tcl and Tk to /etc/man.conf. - -Principally, the original install locations have been altered to enable +Install locations and file names differ from the default to enable installing multiple versions of Tcl and Tk on OpenBSD without conflict. -Tclsh and Wish -============== -Tclsh and wish are installed as tclsh8.6 and wish8.6, respectively. -Many Tcl programs expect to find tclsh or wish. They will have to be -modified to launch the correct shell or links tclsh and wish may be -created which point to tclsh8.6 and wish8.6, respectively. These links -may have already been created by the system administrator. It is of -course also possible to create one's own links. Files and Directories ===================== +Tclsh and Wish +-------------- +normally +${TRUEPREFIX}/lib/tclsh, ${TRUEPREFIX}/lib/wish +now +${TRUEPREFIX}/lib/tclsh8.6, ${TRUEPREFIX}/lib/wish8.6 + Library files ------------- scripts, encoding files, etc. @@ -56,7 +52,7 @@ Manual Pages normally in ${TRUEPREFIX}/man now in -${TRUEPREFIX}/lib/tcl8.6/man, ${TRUEPREFIX}/lib/tk8.6/man +${TRUEPREFIX}/lib/tcl/tcl8.6/man, ${TRUEPREFIX}/lib/tcl/tk8.6/man Demos ----- @@ -72,40 +68,29 @@ Bundled Tcl Modules normally in ${TRUEPREFIX}/lib/tcl8/... now in -${TRUEPREFIX}/lib/tcl/tcl8.6/modules/... +${TRUEPREFIX}/lib/tcl/tcl8.6/modules Tcl Module Paths ---------------- normally ${TRUEPREFIX}/lib/tcl8/... now -${TRUEPREFIX}/lib/tcl/modules/... - -Additional Header Files ------------------------ -Additional ('private') header files are installed -in ${TRUEPREFIX}/include/tcl8.6 and ${TRUEPREFIX}/include/tk8.6. +${TRUEPREFIX}/lib/tcl/modules/{85,86} Libraries ========= On architectures that support shared libraries, additional static -libraries (libtcl86.a, libtk86.a) are built from the -fPIC compiled +libraries (libtcl86.a, libtk86.a) are built from the pic-compiled object (.o) files. A symbolic link from any lib.a to lib_pic.a is created in order to satisfy libtool. Manual Page Configuration ========================= -Changes to /etc/man.conf are required so that OpenBSD's man(1) and -related commands can find the Tcl and Tk manual pages. +Adding the following lines to /etc/man.conf wil enable man(1) +and related commands can find the Tcl and Tk manual pages. -Additional _whatdb entries are needed which point to the Tcl and Tk -whatis.db files. The Tcl and Tk manual page directories need to be -added to the _default and n sections. Additional sections tcl and tk -point to the Tcl and Tk manual page directories. - -Following this text is a patch (with instructions) that will perform -the aforementioned changes on an unmodified /etc/man.conf. -If not used directly it can serve as a guide. +manpath ${TRUEPREFIX}/lib/tcl/tcl8.6/man +manpath ${TRUEPREFIX}/lib/tcl/tk8.6/man Tcl/Tk Resources ================ @@ -115,48 +100,3 @@ Tutorial: http://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html Wikibook: http://en.wikibooks.org/wiki/Programming:Tcl Book: Practical Programming in Tcl and Tk, 4th Edition ISBN: 0-13-038560-3 - -Patch to add Tcl and Tk to /etc/man.conf -======================================== -Run: -$ patch -o man.conf.new /etc/man.conf ${_README_DIR}/${FULLPKGNAME} -Examine and install as /etc/man.conf if it appeases you. - -@@ -7,6 +7,8 @@ - _whatdb /usr/share/man/whatis.db - _whatdb /usr/local/man/whatis.db - _whatdb /usr/X11R6/man/whatis.db -+_whatdb /usr/local/lib/tcl/tcl8.6/man/whatis.db -+_whatdb /usr/local/lib/tcl/tk8.6/man/whatis.db - - # Subdirectories for paths ending in '/', IN SEARCH ORDER. - _subdir {cat,man}1 {cat,man}8 {cat,man}6 {cat,man}2 {cat,man}3 {cat,man}5 {cat,man}7 {cat,man}4 {cat,man}9 {cat,man}3p {cat,man}3f {cat,man}n -@@ -31,17 +33,19 @@ - # directory with all of the subdirectories listed for the keyword _subdir. - - # default --_default /usr/{share,X11R6,local,ports/infrastructure}/man/ -+_default /usr/{share,X11R6,local,local/lib/tcl/{tcl,tk}8.6,ports/infrastructure}/man/ - - # Other sections that represent complete man subdirectories. - X11 /usr/X11R6/man/ - X11R6 /usr/X11R6/man/ - local /usr/local/man/ -+tcl /usr/local/lib/tcl/tcl8.6/man/ -+tk /usr/local/lib/tcl/tk8.6/man/ - - # Specific section/directory combinations. --1 /usr/{share,X11R6,local}/man/{cat,man}1 -+1 /usr/{share,X11R6,local,local/lib/tcl/{tcl,tk}8.6}/man/{cat,man}1 - 2 /usr/{share,X11R6,local}/man/{cat,man}2 --3 /usr/{share,X11R6,local}/man/{cat,man}3 -+3 /usr/{share,X11R6,local,local/lib/tcl/{tcl,tk}8.6}/man/{cat,man}3 - 3F /usr/local/man/{cat,man}3f - 3f /usr/local/man/{cat,man}3f - 3P /usr/{share,local}/man/{cat,man}3p -@@ -52,4 +56,4 @@ - 7 /usr/{share,X11R6,local}/man/{cat,man}7 - 8 /usr/{share,X11R6,local}/man/{cat,man}8 - 9 /usr/share/man/{cat,man}9 --n /usr/local/man/{cat,man}n -+n /usr/{local,local/lib/tcl/{tcl,tk}8.6}/man/{cat,man}n