The attached python.patch file and patch to the python.spec file bring
python up to date with the 2.4.1 release as well as adding several options,
dependencies, and a few tweaks to get various modules to build properly on
a SuSE 9.2 Professional system running OpenPKG Release 2.3 (mostly with
some CURRENT thrown in for good measure :-).
The python.patch file is basically stripped of all the hacks to make
python-2.4 work (more or less) with the Berkeley DB.
I spent several hours tonight hacking in options to the spec file to
specify various optional modules and their associated dependencies. There
were also some tweaks to the %build section to get modules to build
properly that were failing during the old build process (the dbm and
localle options).
I added the dependencies mostly because The Python build process doesn't
say much about failed extension builds so one may well not get all the
modules expected. I set the defaults for all these modules to "yes" so the
behaviour should be unchanged on a build where all the required packages
are installed.
One suggestion that I would like to make is that all the ``%{l_shtool}
subst'' things be done in the %build section, not in %prep. This makes it
a bit easier to create new patch files, and I think is somewhat more
logical as the %prep should be loading source files and applying patches
while %build does the heavy lifting.
The source rpm is available at:
ftp://ftp.celestial.com/private/ftp.openpkg.org/release/2.3/SRC/python-2.4.1-20050416.src.rpm
Bill
--
INTERNET: [EMAIL PROTECTED] Bill Campbell; Celestial Software LLC
UUCP: camco!bill PO Box 820; 6641 E. Mercer Way
FAX: (206) 232-9186 Mercer Island, WA 98040-0820; (206) 236-1676
URL: http://www.celestial.com/
``Liberals love to say things like, 'We're just asking everyone to pay
their fair share.' But government is not about asking. It is about telling.
The difference is fundamental. It is the difference between making love and
being raped, between working for a living and being a slave.''
Dr. Thomas Sowell, Forbes, July 1994
Index: Include/pyport.h
--- Include/pyport.h.orig 2004-06-05 18:34:53.146935009 +0200
+++ Include/pyport.h 2004-06-05 18:34:58.681503403 +0200
@@ -238,8 +238,12 @@
* config to #define Py_HUGE_VAL to something that works on your platform.
*/
#ifndef Py_HUGE_VAL
+#if defined (__SVR4) && defined (__sun)
+#define Py_HUGE_VAL HUGE
+#else
#define Py_HUGE_VAL HUGE_VAL
#endif
+#endif
/* Py_OVERFLOWED(X)
* Return 1 iff a libm function overflowed. Set errno to 0 before calling
Index: python.spec
===================================================================
RCS file: /v/openpkg/cvs/openpkg-src/python/python.spec,v
retrieving revision 1.60
diff -u -d -a -u -r1.60 python.spec
--- python.spec 24 Mar 2005 11:20:07 -0000 1.60
+++ python.spec 17 Apr 2005 05:12:42 -0000
@@ -32,8 +32,19 @@
Class: BASE
Group: Language
License: GPL
-Version: 2.4
-Release: 20050311
+Version: 2.4.1
+Release: 20050416
+
+# package options
+%option with_readline yes
+%option with_bsdb yes
+%option with_dbm yes
+%option with_curses yes
+%option with_bzip2 yes
+%option with_xml yes
+%option with_tkinter yes
+%option with_locale yes
+%option with_ssl yes
# list of sources
Source0:
ftp://ftp.python.org/pub/python/%{version}/Python-%{version}.tar.bz2
@@ -42,10 +53,50 @@
# build information
Prefix: %{l_prefix}
BuildRoot: %{l_buildroot}
-BuildPreReq: OpenPKG, openpkg >= 20040130, gcc
-PreReq: OpenPKG, openpkg >= 20040130, gcc
+BuildPreReq: OpenPKG, openpkg >= 2.3.0, gcc
+PreReq: OpenPKG, openpkg >= 2.3.0, gcc
BuildPreReq: zlib
PreReq: zlib
+%if "%{with_readline}" == "yes"
+BuildPreReq: readline
+PreReq: readline
+%endif
+%if "%{with_bsdb}" == "yes"
+BuildPreReq: db
+PreReq: db
+%endif
+%if "%{with_bsdb}" == "yes"
+BuildPreReq: db
+PreReq: db
+%endif
+%if "%{with_dbm}" == "yes"
+BuildPreReq: gdbm::with_ndbm = yes
+PreReq: gdbm::with_ndbm = yes
+%endif
+%if "%{with_curses}" == "yes"
+BuildPreReq: ncurses
+PreReq: ncurses
+%endif
+%if "%{with_bzip2}" == "yes"
+BuildPreReq: bzip2
+PreReq: bzip2
+%endif
+%if "%{with_xml}" == "yes"
+BuildPreReq: expat
+PreReq: expat
+%endif
+%if "%{with_tkinter}" == "yes"
+BuildPreReq: tcl
+PreReq: tcl
+%endif
+%if "%{with_locale}" == "yes"
+BuildPreReq: gettext, libiconv
+PreReq: gettext, libiconv
+%endif
+%if "%{with_ssl}" == "yes"
+BuildPreReq: openssl
+PreReq: openssl
+%endif
AutoReq: no
AutoReqProv: no
@@ -101,12 +152,27 @@
Lib/distutils/command/install.py
%build
+ libs=''
+ # create empty cache file
+ > config.cache
+%if "%{with_dbm}" == "yes"
+ libs="$libs -lndbm -lgdbm"
+%endif
+%if "%{with_locale}" == "yes"
+ echo 'ac_cv_lib_intl_textdomain=yes' >> config.cache
+ # add iconv to locale_libs in setup.py
+ %{l_shtool} subst -s \
+ -e 's/locale_libs =.*intl.*/locale_libs = ["intl", "iconv"]/' \
+ setup.py
+%endif
+
CC="%{l_cc}" \
CXX="%{l_cxx}" \
CFLAGS="%{l_cflags -O}" \
CXXFLAGS="%{l_cxxflags -O}" \
- LDFLAGS="%{l_ldflags}" \
+ LDFLAGS="%{l_ldflags} $libs" \
./configure \
+ --cache-file=./config.cache \
--prefix=%{l_prefix}
%{l_make} %{l_mflags}