python2: Use posix layout for installations.

This commit is contained in:
Alexpux
2014-02-11 23:49:22 +04:00
parent 30d64a697c
commit 6ec4b4162e
2 changed files with 172 additions and 139 deletions

View File

@@ -0,0 +1,28 @@
--- Python-2.7.6/Lib/distutils/command/install.py.orig 2014-02-11 23:40:23.180600000 +0400
+++ Python-2.7.6/Lib/distutils/command/install.py 2014-02-11 23:44:48.104600000 +0400
@@ -32,10 +32,10 @@
}
else:
WINDOWS_SCHEME = {
- 'purelib': '$base/Lib/site-packages',
- 'platlib': '$base/Lib/site-packages',
- 'headers': '$base/Include/$dist_name',
- 'scripts': '$base/Scripts',
+ 'purelib': '$base/lib/python$py_version_short/site-packages',
+ 'platlib': '$base/lib/python$py_version_short/site-packages',
+ 'headers': '$base/include/python$py_version_short/$dist_name',
+ 'scripts': '$base/bin',
'data' : '$base',
}
@@ -65,8 +65,8 @@
'nt_user': {
'purelib': '$usersite',
'platlib': '$usersite',
- 'headers': '$userbase/Python$py_version_nodot/Include/$dist_name',
- 'scripts': '$userbase/Scripts',
+ 'headers': '$userbase/include/python$py_version_short/$dist_name',
+ 'scripts': '$userbase/bin',
'data' : '$userbase',
},
'os2': {

View File

@@ -53,167 +53,171 @@ source=("http://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz"
0520-Add-interp-Python-DESTSHARED-to-PYTHONPATH-b4-pybuilddir-txt-dir.patch
0525-msys-monkeypatch-os-system-via-sh-exe.patch
0530-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch
0535-msys-cygwin-semi-native-build-sysconfig.patch)
0535-msys-cygwin-semi-native-build-sysconfig.patch
0540-mingw-install-layout-as-posix.patch)
prepare() {
cd "${srcdir}/Python-${pkgver}"
cd "${srcdir}/Python-${pkgver}"
# Remove files created by patching so repatching succeeds.
rm -f Modules/_ctypes/libffi_msvc/win32.S Python/fileblocks.c Misc/python-config.sh.in
# Remove files created by patching so repatching succeeds.
rm -f Modules/_ctypes/libffi_msvc/win32.S Python/fileblocks.c Misc/python-config.sh.in
patch -Np1 -i "${srcdir}"/0005-MINGW.patch
patch -Np1 -i "${srcdir}"/0006-mingw-removal-of-libffi-patch.patch
patch -Np1 -i "${srcdir}"/0007-mingw-system-libffi.patch
patch -Np1 -i "${srcdir}"/0010-mingw-osdefs-DELIM.patch
patch -Np1 -i "${srcdir}"/0015-mingw-use-posix-getpath.patch
patch -Np1 -i "${srcdir}"/0020-mingw-w64-test-for-REPARSE_DATA_BUFFER.patch
patch -Np1 -i "${srcdir}"/0025-mingw-regen-with-stddef-instead.patch
patch -Np1 -i "${srcdir}"/0030-mingw-add-libraries-for-_msi.patch
patch -Np1 -i "${srcdir}"/0035-MSYS-add-MSYSVPATH-AC_ARG.patch
patch -Np1 -i "${srcdir}"/0040-mingw-cygwinccompiler-use-CC-envvars-and-ld-from-print-prog-name.patch
patch -Np1 -i "${srcdir}"/0045-cross-darwin.patch
patch -Np1 -i "${srcdir}"/0050-mingw-sysconfig-like-posix.patch
patch -Np1 -i "${srcdir}"/0055-mingw-pdcurses_ISPAD.patch
patch -Np1 -i "${srcdir}"/0060-mingw-static-tcltk.patch
patch -Np1 -i "${srcdir}"/0065-mingw-x86_64-size_t-format-specifier-pid_t.patch
patch -Np1 -i "${srcdir}"/0070-python-disable-dbm.patch
patch -Np1 -i "${srcdir}"/0075-add-python-config-sh.patch
patch -Np1 -i "${srcdir}"/0080-mingw-nt-threads-vs-pthreads.patch
patch -Np1 -i "${srcdir}"/0085-cross-dont-add-multiarch-paths-if.patch
patch -Np1 -i "${srcdir}"/0090-mingw-reorder-bininstall-ln-symlink-creation.patch
patch -Np1 -i "${srcdir}"/0095-mingw-use-backslashes-in-compileall-py.patch
patch -Np1 -i "${srcdir}"/0100-mingw-distutils-MSYS-convert_path-fix-and-root-hack.patch
patch -Np1 -i "${srcdir}"/0105-mingw-MSYS-no-usr-lib-or-usr-include.patch
patch -Np1 -i "${srcdir}"/0110-mingw-_PyNode_SizeOf-decl-fix.patch
patch -Np1 -i "${srcdir}"/0115-mingw-cross-includes-lower-case.patch
patch -Np1 -i "${srcdir}"/0500-mingw-install-LDLIBRARY-to-LIBPL-dir.patch
patch -Np1 -i "${srcdir}"/0505-add-build-sysroot-config-option.patch
patch -Np1 -i "${srcdir}"/0510-cross-PYTHON_FOR_BUILD-gteq-275-and-fullpath-it.patch
patch -Np1 -i "${srcdir}"/0515-mingw-add-GetModuleFileName-path-to-PATH.patch
patch -Np1 -i "${srcdir}"/0520-Add-interp-Python-DESTSHARED-to-PYTHONPATH-b4-pybuilddir-txt-dir.patch
patch -Np1 -i "${srcdir}"/0525-msys-monkeypatch-os-system-via-sh-exe.patch
patch -Np1 -i "${srcdir}"/0530-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch
patch -Np1 -i "${srcdir}"/0535-msys-cygwin-semi-native-build-sysconfig.patch
patch -Np1 -i "${srcdir}"/0005-MINGW.patch
patch -Np1 -i "${srcdir}"/0006-mingw-removal-of-libffi-patch.patch
patch -Np1 -i "${srcdir}"/0007-mingw-system-libffi.patch
patch -Np1 -i "${srcdir}"/0010-mingw-osdefs-DELIM.patch
patch -Np1 -i "${srcdir}"/0015-mingw-use-posix-getpath.patch
patch -Np1 -i "${srcdir}"/0020-mingw-w64-test-for-REPARSE_DATA_BUFFER.patch
patch -Np1 -i "${srcdir}"/0025-mingw-regen-with-stddef-instead.patch
patch -Np1 -i "${srcdir}"/0030-mingw-add-libraries-for-_msi.patch
patch -Np1 -i "${srcdir}"/0035-MSYS-add-MSYSVPATH-AC_ARG.patch
patch -Np1 -i "${srcdir}"/0040-mingw-cygwinccompiler-use-CC-envvars-and-ld-from-print-prog-name.patch
patch -Np1 -i "${srcdir}"/0045-cross-darwin.patch
patch -Np1 -i "${srcdir}"/0050-mingw-sysconfig-like-posix.patch
patch -Np1 -i "${srcdir}"/0055-mingw-pdcurses_ISPAD.patch
patch -Np1 -i "${srcdir}"/0060-mingw-static-tcltk.patch
patch -Np1 -i "${srcdir}"/0065-mingw-x86_64-size_t-format-specifier-pid_t.patch
patch -Np1 -i "${srcdir}"/0070-python-disable-dbm.patch
patch -Np1 -i "${srcdir}"/0075-add-python-config-sh.patch
patch -Np1 -i "${srcdir}"/0080-mingw-nt-threads-vs-pthreads.patch
patch -Np1 -i "${srcdir}"/0085-cross-dont-add-multiarch-paths-if.patch
patch -Np1 -i "${srcdir}"/0090-mingw-reorder-bininstall-ln-symlink-creation.patch
patch -Np1 -i "${srcdir}"/0095-mingw-use-backslashes-in-compileall-py.patch
patch -Np1 -i "${srcdir}"/0100-mingw-distutils-MSYS-convert_path-fix-and-root-hack.patch
patch -Np1 -i "${srcdir}"/0105-mingw-MSYS-no-usr-lib-or-usr-include.patch
patch -Np1 -i "${srcdir}"/0110-mingw-_PyNode_SizeOf-decl-fix.patch
patch -Np1 -i "${srcdir}"/0115-mingw-cross-includes-lower-case.patch
patch -Np1 -i "${srcdir}"/0500-mingw-install-LDLIBRARY-to-LIBPL-dir.patch
patch -Np1 -i "${srcdir}"/0505-add-build-sysroot-config-option.patch
patch -Np1 -i "${srcdir}"/0510-cross-PYTHON_FOR_BUILD-gteq-275-and-fullpath-it.patch
patch -Np1 -i "${srcdir}"/0515-mingw-add-GetModuleFileName-path-to-PATH.patch
patch -Np1 -i "${srcdir}"/0520-Add-interp-Python-DESTSHARED-to-PYTHONPATH-b4-pybuilddir-txt-dir.patch
patch -Np1 -i "${srcdir}"/0525-msys-monkeypatch-os-system-via-sh-exe.patch
patch -Np1 -i "${srcdir}"/0530-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch
patch -Np1 -i "${srcdir}"/0535-msys-cygwin-semi-native-build-sysconfig.patch
patch -Np1 -i "${srcdir}"/0540-mingw-install-layout-as-posix.patch
autoreconf -vfi
# Temporary workaround for FS#22322
# See http://bugs.python.org/issue10835 for upstream report
sed -i "/progname =/s/python/python${_pybasever}/" Python/pythonrun.c
autoreconf -vfi
# Enable built-in SQLite module to load extensions (fix FS#22122)
sed -i "/SQLITE_OMIT_LOAD_EXTENSION/d" setup.py
# Temporary workaround for FS#22322
# See http://bugs.python.org/issue10835 for upstream report
sed -i "/progname =/s/python/python${_pybasever}/" Python/pythonrun.c
# FS#23997
sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python2|" Lib/cgi.py
# Enable built-in SQLite module to load extensions (fix FS#22122)
sed -i "/SQLITE_OMIT_LOAD_EXTENSION/d" setup.py
sed -i "s/python2.3/python2/g" Lib/distutils/tests/test_build_scripts.py \
Lib/distutils/tests/test_install_scripts.py Tools/scripts/gprof2html.py
touch Include/graminit.h
touch Python/graminit.c
touch Parser/Python.asdl
touch Parser/asdl.py
touch Parser/asdl_c.py
touch Include/Python-ast.h
touch Python/Python-ast.c
echo \"\" > Parser/pgen.stamp
# Ensure that we are using the system copy of various libraries (expat, zlib and libffi),
# rather than copies shipped in the tarball
rm -r Modules/expat
rm -r Modules/zlib
rm -r Modules/_ctypes/{darwin,libffi}*
# FS#23997
sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python2|" Lib/cgi.py
sed -i "s/python2.3/python2/g" Lib/distutils/tests/test_build_scripts.py \
Lib/distutils/tests/test_install_scripts.py Tools/scripts/gprof2html.py
touch Include/graminit.h
touch Python/graminit.c
touch Parser/Python.asdl
touch Parser/asdl.py
touch Parser/asdl_c.py
touch Include/Python-ast.h
touch Python/Python-ast.c
echo \"\" > Parser/pgen.stamp
# Ensure that we are using the system copy of various libraries (expat, zlib and libffi),
# rather than copies shipped in the tarball
rm -r Modules/expat
rm -r Modules/zlib
rm -r Modules/_ctypes/{darwin,libffi}*
}
build() {
pushd ${MINGW_PREFIX} > /dev/null
export PREFIX_WIN=`pwd -W`
popd > /dev/null
pushd ${MINGW_PREFIX} > /dev/null
export PREFIX_WIN=`pwd -W`
popd > /dev/null
CFLAGS+=" -fwrapv -D__USE_MINGW_ANSI_STDIO=1 -I$PREFIX_WIN/${MINGW_CHOST}/include "
CXXFLAGS+=" -fwrapv -D__USE_MINGW_ANSI_STDIO=1 -I$PREFIX_WIN/include -I$PREFIX_WIN/include/ncursesw -I$MINGWHOME_WIN/$HOST/include "
CPPFLAGS+=" -I$PREFIX_WIN/include -I$PREFIX_WIN/include/ncursesw -I$PREFIX_WIN/${MINGW_CHOST}/include "
LDFLAGS+=" -L$PREFIX_WIN/${MINGW_CHOST}/lib -L$PREFIX_WIN/lib "
if check_option "strip" "y"; then
LDFLAGS+=" -s "
fi
if check_option "debug" "n"; then
CFLAGS+=" -DNDEBUG "
CXXFLAGS+=" -DNDEBUG "
else
plain " -DDEBUG -DPy_DEBUG -D_DEBUG does not work unfortunately .."
# CFLAGS+=" -DDEBUG -DPy_DEBUG -D_DEBUG "
# CXXFLAGS+=" -DDEBUG -DPy_DEBUG -D_DEBUG "
CFLAGS+=" -O0 -ggdb"
CXXFLAGS+=" -O0 -ggdb"
fi
CFLAGS+=" -fwrapv -D__USE_MINGW_ANSI_STDIO=1 -I$PREFIX_WIN/${MINGW_CHOST}/include "
CXXFLAGS+=" -fwrapv -D__USE_MINGW_ANSI_STDIO=1 -I$PREFIX_WIN/include -I$PREFIX_WIN/include/ncursesw -I$MINGWHOME_WIN/$HOST/include "
CPPFLAGS+=" -I$PREFIX_WIN/include -I$PREFIX_WIN/include/ncursesw -I$PREFIX_WIN/${MINGW_CHOST}/include "
LDFLAGS+=" -L$PREFIX_WIN/${MINGW_CHOST}/lib -L$PREFIX_WIN/lib "
if check_option "strip" "y"; then
LDFLAGS+=" -s "
fi
if check_option "debug" "n"; then
CFLAGS+=" -DNDEBUG "
CXXFLAGS+=" -DNDEBUG "
else
plain " -DDEBUG -DPy_DEBUG -D_DEBUG does not work unfortunately .."
# CFLAGS+=" -DDEBUG -DPy_DEBUG -D_DEBUG "
# CXXFLAGS+=" -DDEBUG -DPy_DEBUG -D_DEBUG "
CFLAGS+=" -O0 -ggdb"
CXXFLAGS+=" -O0 -ggdb"
fi
LIBFFI_INC=`${MINGW_PREFIX}/bin/pkg-config libffi --cflags-only-I | sed "s|\-I||g"`
pushd ${LIBFFI_INC} > /dev/null
export LIBFFI_INCLUDEDIR=`pwd -W`
popd > /dev/null
# Workaround for conftest error on 64-bit builds
export ac_cv_working_tzset=no
mkdir -p "${srcdir}/build-${CARCH}" && cd "${srcdir}/build-${CARCH}"
MSYSTEM=MINGW ../Python-${pkgver}/configure \
--prefix=${MINGW_PREFIX} \
--host=${MINGW_CHOST} \
--build=${MINGW_CHOST} \
--enable-shared \
--with-threads \
--with-system-expat \
--with-system-ffi \
OPT="" \
CXX=g++
# --with-dbmliborder=gdbm:ndbm
make
LIBFFI_INC=`${MINGW_PREFIX}/bin/pkg-config libffi --cflags-only-I | sed "s|\-I||g"`
pushd ${LIBFFI_INC} > /dev/null
export LIBFFI_INCLUDEDIR=`pwd -W`
popd > /dev/null
# Workaround for conftest error on 64-bit builds
export ac_cv_working_tzset=no
mkdir -p "${srcdir}/build-${CARCH}" && cd "${srcdir}/build-${CARCH}"
MSYSTEM=MINGW ../Python-${pkgver}/configure \
--prefix=${MINGW_PREFIX} \
--host=${MINGW_CHOST} \
--build=${MINGW_CHOST} \
--enable-shared \
--with-threads \
--with-system-expat \
--with-system-ffi \
--with-dbmliborder=gdbm:ndbm \
OPT="" \
CXX=g++
make
}
package() {
cd "${srcdir}/build-${CARCH}"
MSYSTEM=MINGW \
MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \
make install DESTDIR="$pkgdir"
mv "${pkgdir}${MINGW_PREFIX}"/bin/smtpd.py "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/
cd "${srcdir}/build-${CARCH}"
MSYSTEM=MINGW \
MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \
make install DESTDIR="$pkgdir"
cp -f "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config/libpython${_pybasever}.dll.a "${pkgdir}${MINGW_PREFIX}"/lib/libpython${_pybasever}.dll.a
mv "${pkgdir}${MINGW_PREFIX}"/bin/smtpd.py "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/
# some useful "stuff"
install -dm755 "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/{i18n,scripts}
install -m755 "${srcdir}/Python-${pkgver}"/Tools/i18n/{msgfmt,pygettext}.py "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/i18n/
install -m755 "${srcdir}/Python-${pkgver}"/Tools/scripts/{README,*py} "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/scripts/
cp -f "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config/libpython${_pybasever}.dll.a "${pkgdir}${MINGW_PREFIX}"/lib/libpython${_pybasever}.dll.a
# clean up #!s
find "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/ -name '*.py' | \
xargs sed -i "s|#[ ]*![ ]*/usr/bin/env python$|#!/usr/bin/env python2|"
# some useful "stuff"
install -dm755 "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/{i18n,scripts}
install -m755 "${srcdir}/Python-${pkgver}"/Tools/i18n/{msgfmt,pygettext}.py "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/i18n/
install -m755 "${srcdir}/Python-${pkgver}"/Tools/scripts/{README,*py} "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/scripts/
# clean-up reference to build directory
sed -i "s#${srcdir}/Python-${pkgver}:##" "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config/Makefile
#sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python2|"
sed -i "s|#!${pkgdir}${MINGW_PREFIX}/bin/python${_pybasever}.exe|#!python2|" "${pkgdir}${MINGW_PREFIX}"/bin/python${_pybasever}-config
sed -i "s|#!${pkgdir}${MINGW_PREFIX}/bin/python${_pybasever}.exe|#!python2|" "${pkgdir}${MINGW_PREFIX}"/bin/python2-config
sed -i "s|#!${pkgdir}${MINGW_PREFIX}/bin/python${_pybasever}.exe|#!python2|" "${pkgdir}${MINGW_PREFIX}"/bin/python-config
# clean up #!s
find "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/ -name '*.py' | \
xargs sed -i "s|#[ ]*![ ]*/usr/bin/env python$|#!/usr/bin/env python2|"
# fix permissons
find ${pkgdir}${MINGW_PREFIX} -type f \( -name *.dll -o -name *.exe \) | xargs chmod 0755
# Fix up two instances of MSYS2 paths in python-config.sh in-case the final consumer of the results are native executables.
sed -i "s|${MINGW_PREFIX}|${PREFIX_WIN}|" "${pkgdir}${MINGW_PREFIX}"/bin/python-config.sh
# clean-up reference to build directory
sed -i "s#${srcdir}/Python-${pkgver}:##" "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config/Makefile
# replace paths in sysconfig
sed -i "s|${pkgdir}${MINGW_PREFIX}|${MINGW_PREFIX}|g" \
"${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/_sysconfigdata.py \
"${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/smtpd.py
#sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python2|"
sed -i "s|#!${pkgdir}${MINGW_PREFIX}/bin/python${_pybasever}.exe|#!python2|" "${pkgdir}${MINGW_PREFIX}"/bin/python${_pybasever}-config
sed -i "s|#!${pkgdir}${MINGW_PREFIX}/bin/python${_pybasever}.exe|#!python2|" "${pkgdir}${MINGW_PREFIX}"/bin/python2-config
sed -i "s|#!${pkgdir}${MINGW_PREFIX}/bin/python${_pybasever}.exe|#!python2|" "${pkgdir}${MINGW_PREFIX}"/bin/python-config
# replace paths in pkgconfig files
for _file in "${pkgdir}${MINGW_PREFIX}"/lib/pkgconfig/*.pc; do
sed -i "s|${pkgdir}${MINGW_PREFIX}|${MINGW_PREFIX}|g" $_file
done
# fix permissons
find ${pkgdir}${MINGW_PREFIX} -type f \( -name *.dll -o -name *.exe \) | xargs chmod 0755
# Fix up two instances of MSYS2 paths in python-config.sh in-case the final consumer of the results are native executables.
sed -i "s|${MINGW_PREFIX}|${PREFIX_WIN}|" "${pkgdir}${MINGW_PREFIX}"/bin/python-config.sh
# replace paths in sysconfig
sed -i "s|${pkgdir}${MINGW_PREFIX}|${MINGW_PREFIX}|g" \
"${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/_sysconfigdata.py \
"${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/smtpd.py
# replace paths in pkgconfig files
for _file in "${pkgdir}${MINGW_PREFIX}"/lib/pkgconfig/*.pc; do
sed -i "s|${pkgdir}${MINGW_PREFIX}|${MINGW_PREFIX}|g" $_file
done
}
sha1sums=('8321636af2acbeaa68fc635d7dda7369ed446a80'
'a0906988a059ce6cb5029132035eaa4de207d6ed'
'fc595de283e5437fbb61a71f3e6e3d8549e4df99'
@@ -247,4 +251,5 @@ sha1sums=('8321636af2acbeaa68fc635d7dda7369ed446a80'
'484ebdb5eaf2a2469ba368a1cc1e721475958542'
'10e704afbabdcb0d966be4f7dfd4961bb51cb580'
'ecbcc13515f6195b6930b6eb5a9326e7f8398179'
'6d5893cfd91c96b7883cfacfd09710a7549290d0')
'6d5893cfd91c96b7883cfacfd09710a7549290d0'
'1b867e941b1fa702febc2b36ce3b9dd195b3d774')