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.
This commit is contained in:
stu 2015-05-22 04:17:01 +00:00
parent 4bf93e9ac6
commit b167292249
8 changed files with 78 additions and 133 deletions

View File

@ -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 <stwo@users.sourceforge.net>
@ -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 <bsd.port.arch.mk>
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}

View File

@ -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

View File

@ -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} {

View File

@ -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
}

View File

@ -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";

View File

@ -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
#--------------------------------------------------------------------

View File

@ -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

View File

@ -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