ports/133081: PYEASYINSTALL_ARCHDEP=yes makes broken packages
Stef Walter
stef at memberwebs.com
Thu Mar 26 02:30:04 UTC 2009
>Number: 133081
>Category: ports
>Synopsis: PYEASYINSTALL_ARCHDEP=yes makes broken packages
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Mar 26 02:30:03 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator: Stef Walter
>Release: 7.0-RELEASE-p3
>Organization:
>Environment:
FreeBSD dev-srv0.ws.local 7.0-RELEASE-p3 FreeBSD 7.0-RELEASE-p3 #2: Wed Aug 27 01:11:37 UTC 2008 root at dev-srv0.local:/usr/obj/usr/src/sys/DEVSRV0 i386
>Description:
The PYEASYINSTALL_ARCHDEP=YES port option makes packages that can only be installed on the same specific patch level of FreeBSD.
For example if you build net/py-ldap2 as a package on FreeBSD 7.1-RELEASE-p3 then it won't install on a FreeBSD 7.1-RELEASE-p4 system.
The following ports are affected:
audio/py-tagpy
databases/py-MySQLdb-devel
databases/py-pg_pqueue
devel/py-jsonlib
devel/py-pylib
devel/py-lxml
devel/py-cheetah
devel/py-fusefs
devel/py-ruledispatch
devel/py-Jinja
devel/py-ll-core
devel/py-rbtree
devel/py-durus
devel/py-rtree
devel/py-Jinja2
devel/py-traits
devel/py-protocols-devel
devel/py-xattr
devel/py-icu
devel/py-simplejson
devel/py-zopeInterface
devel/py-mwlib.ext
devel/py-mwlib
math/py-igraph
net/py-ldap2
net/py-zopeproxy
security/py-m2crypto
security/py-pycryptopp
security/py-posix1e
textproc/py-rdflib
textproc/py-genshi
www/py-amf
www/xist
>How-To-Repeat:
Build any of the above ports.
>Fix:
Attached are two patches that help fix this problem.
patch-python-distutils-osrel.diff
* place in /usr/ports/lang/python25/files
* Should eventually go upstream, but should be patched in python port.
* Haven't tested with other pythons but patch will be similar.
bsd-python-osrel.diff
* patch for Mk/bsd.python.mk
The result of these two patches is that PYEASYINSTALL_ARCHDEP packages built on any 7.x system will install on any 7.x system as expected.
Patch attached with submission follows:
#!/bin/sh
# This is a shell archive (produced by GNU sharutils 4.6.3).
# To extract the files from this archive, save it to some FILE, remove
# everything before the `#!/bin/sh' line above, then type `sh FILE'.
#
lock_dir=_sh09385
# Made on 2009-03-25 09:23 UTC by <stef at stef>.
# Source directory was `/data/Desktop'.
#
# Existing files will *not* be overwritten, unless `-c' is specified.
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 885 -rw-r--r-- bsd-python-osrel.diff
# 520 -rw-r--r-- patch-python-distutils-osrel.diff
#
MD5SUM=${MD5SUM-md5sum}
f=`${MD5SUM} --version | egrep '^md5sum .*(core|text)utils'`
test -n "${f}" && md5check=true || md5check=false
${md5check} || \
echo 'Note: not verifying md5sums. Consider installing GNU coreutils.'
save_IFS="${IFS}"
IFS="${IFS}:"
gettext_dir=FAILED
locale_dir=FAILED
first_param="$1"
for dir in $PATH
do
if test "$gettext_dir" = FAILED && test -f $dir/gettext \
&& ($dir/gettext --version >/dev/null 2>&1)
then
case `$dir/gettext --version 2>&1 | sed 1q` in
*GNU*) gettext_dir=$dir ;;
esac
fi
if test "$locale_dir" = FAILED && test -f $dir/shar \
&& ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
then
locale_dir=`$dir/shar --print-text-domain-dir`
fi
done
IFS="$save_IFS"
if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED
then
echo=echo
else
TEXTDOMAINDIR=$locale_dir
export TEXTDOMAINDIR
TEXTDOMAIN=sharutils
export TEXTDOMAIN
echo="$gettext_dir/gettext -s"
fi
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null
then if (echo -n test; echo 1,2,3) | grep n >/dev/null
then shar_n= shar_c='
'
else shar_n=-n shar_c= ; fi
else shar_n= shar_c='\c' ; fi
f=shar-touch.$$
st1=200112312359.59
st2=123123592001.59
st2tr=123123592001.5 # old SysV 14-char limit
st3=1231235901
if touch -am -t ${st1} ${f} >/dev/null 2>&1 && \
test ! -f ${st1} && test -f ${f}; then
shar_touch='touch -am -t $1$2$3$4$5$6.$7 "$8"'
elif touch -am ${st2} ${f} >/dev/null 2>&1 && \
test ! -f ${st2} && test ! -f ${st2tr} && test -f ${f}; then
shar_touch='touch -am $3$4$5$6$1$2.$7 "$8"'
elif touch -am ${st3} ${f} >/dev/null 2>&1 && \
test ! -f ${st3} && test -f ${f}; then
shar_touch='touch -am $3$4$5$6$2 "$8"'
else
shar_touch=:
echo
${echo} 'WARNING: not restoring timestamps. Consider getting and'
${echo} 'installing GNU `touch'\'', distributed in GNU coreutils...'
echo
fi
rm -f ${st1} ${st2} ${st2tr} ${st3} ${f}
#
if test ! -d ${lock_dir}
then : ; else ${echo} 'lock directory '${lock_dir}' exists'
exit 1
fi
if mkdir ${lock_dir}
then ${echo} 'x - created lock directory `'${lock_dir}\''.'
else ${echo} 'x - failed to create lock directory `'${lock_dir}\''.'
exit 1
fi
# ============= bsd-python-osrel.diff ==============
if test -f 'bsd-python-osrel.diff' && test "$first_param" != -c; then
${echo} 'x -SKIPPING bsd-python-osrel.diff (file already exists)'
else
${echo} 'x - extracting bsd-python-osrel.diff (text)'
sed 's/^X//' << 'SHAR_EOF' > 'bsd-python-osrel.diff' &&
--- Mk/bsd.python.mk.orig 2009-03-26 00:57:49.000000000 +0000
+++ Mk/bsd.python.mk 2009-03-26 01:06:38.000000000 +0000
@@ -175,7 +175,7 @@
X #
X # PYEASYINSTALL_OSARCH
X # - Platform identifier for easy_install.
-# default: -${OPSYS:L}-${_OSRELEASE}-${ARCH}
+# default: -${OPSYS:L}-${_OSRELEASE:R}-${ARCH}
X # if PYEASYINSTALL_ARCHDEP is defined.
X #
X # PYEASYINSTALL_CMD - Full file path to easy_install command.
@@ -470,7 +470,7 @@
X .if !defined(_OSRELEASE)
X _OSRELEASE!= ${UNAME} -r
X .endif
-PYEASYINSTALL_OSARCH?= -${OPSYS:L}-${_OSRELEASE}-${ARCH}
+PYEASYINSTALL_OSARCH?= -${OPSYS:L}-${_OSRELEASE:R}-${ARCH}
X .endif
X PYEASYINSTALL_EGG?= ${PYDISTUTILS_PKGNAME:C/[^A-Za-z0-9.]+/_/g}-${PYDISTUTILS_PKGVERSION:C/[^A-Za-z0-9.]+/_/g}-${PYTHON_VERSION:S/thon//}${PYEASYINSTALL_OSARCH}.egg
X PYEASYINSTALL_CMD?= ${LOCALBASE}/bin/easy_install-${PYTHON_VER}
SHAR_EOF
(set 20 09 03 26 01 09 22 'bsd-python-osrel.diff'; eval "$shar_touch") &&
chmod 0644 'bsd-python-osrel.diff'
if test $? -ne 0
then ${echo} 'restore of bsd-python-osrel.diff failed'
fi
if ${md5check}
then (
${MD5SUM} -c >/dev/null 2>&1 || ${echo} 'bsd-python-osrel.diff: MD5 check failed'
) << SHAR_EOF
8c4d79c13cae52c2b426c342c2422cb7 bsd-python-osrel.diff
SHAR_EOF
else
test `LC_ALL=C wc -c < 'bsd-python-osrel.diff'` -ne 885 && \
${echo} 'restoration warning: size of bsd-python-osrel.diff is not 885'
fi
fi
# ============= patch-python-distutils-osrel.diff ==============
if test -f 'patch-python-distutils-osrel.diff' && test "$first_param" != -c; then
${echo} 'x -SKIPPING patch-python-distutils-osrel.diff (file already exists)'
else
${echo} 'x - extracting patch-python-distutils-osrel.diff (text)'
sed 's/^X//' << 'SHAR_EOF' > 'patch-python-distutils-osrel.diff' &&
--- Lib/distutils/util.py.orig 2009-03-26 01:08:25.000000000 +0000
+++ Lib/distutils/util.py 2009-03-26 00:55:08.000000000 +0000
@@ -52,6 +52,9 @@
X # i386, etc.
X # XXX what about Alpha, SPARC, etc?
X return "%s-%s" % (osname, machine)
+ elif osname[:7] == "freebsd":
+ release = release.split('.')[0]
+ return "%s-%s-%s" % (osname, release, machine)
X elif osname[:5] == "sunos":
X if release[0] >= "5": # SunOS 5 == Solaris 2
X osname = "solaris"
SHAR_EOF
(set 20 09 03 26 01 29 00 'patch-python-distutils-osrel.diff'; eval "$shar_touch") &&
chmod 0644 'patch-python-distutils-osrel.diff'
if test $? -ne 0
then ${echo} 'restore of patch-python-distutils-osrel.diff failed'
fi
if ${md5check}
then (
${MD5SUM} -c >/dev/null 2>&1 || ${echo} 'patch-python-distutils-osrel.diff: MD5 check failed'
) << SHAR_EOF
41a5c35ac728b8707c1f942ce9d70a57 patch-python-distutils-osrel.diff
SHAR_EOF
else
test `LC_ALL=C wc -c < 'patch-python-distutils-osrel.diff'` -ne 520 && \
${echo} 'restoration warning: size of patch-python-distutils-osrel.diff is not 520'
fi
fi
if rm -fr ${lock_dir}
then ${echo} 'x - removed lock directory `'${lock_dir}\''.'
else ${echo} 'x - failed to remove lock directory `'${lock_dir}\''.'
exit 1
fi
exit 0
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list