ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CMSDIST/python.spec
Revision: 1.70
Committed: Fri Sep 24 09:37:16 2010 UTC (14 years, 7 months ago) by eulisse
Branch: MAIN
Changes since 1.69: +4 -0 lines
Log Message:
Export DB4_ROOT

* This is now needed because we patched the python configure to use such an
  environment variable to pick up our version of DB4, but things got broken
  since we are not exporting _ROOT variables by default anymore.

File Contents

# User Rev Content
1 dsr 1.62 ### RPM external python 2.6.4
2 eulisse 1.3 ## INITENV +PATH PATH %i/bin
3     ## INITENV +PATH LD_LIBRARY_PATH %i/lib
4 argiro 1.1 # OS X patches and build fudging stolen from fink
5 elmer 1.55 %define closingbrace )
6 dsr 1.62 %define online %(case %cmsplatf in *onl_*_*%closingbrace echo true;; *%closingbrace echo false;; esac)
7    
8 ratnik 1.34 Requires: expat bz2lib db4 gdbm
9    
10 elmer 1.55 %if "%online" != "true"
11 dsr 1.62 Requires: zlib openssl sqlite
12 ratnik 1.34 %endif
13    
14 eulisse 1.8 # FIXME: readline, crypt
15 argiro 1.1 # FIXME: gmp, panel, tk/tcl, x11
16    
17 dsr 1.62 Source0: http://www.python.org/ftp/%n/%realversion/Python-%realversion.tgz
18 eulisse 1.69 Patch0: python-2.6.4-dont-detect-dbm
19 steen 1.19
20 argiro 1.1 %prep
21 dsr 1.62 %setup -n Python-%realversion
22 eulisse 1.5 perl -p -i -e "s|#!.*/usr/local/bin/python|#!/usr/bin/env python|" Lib/cgi.py
23    
24 eulisse 1.69 case %cmsplatf in
25     osx*)
26     sed 's|@PREFIX@|%i|g' < %_sourcedir/python-osx | patch -p1
27     ;;
28     esac
29     %patch0 -p1
30 argiro 1.1
31     %build
32     # Python is awkward about passing other include or library directories
33     # to it. Basically there is no way to pass anything from configure to
34     # make, or down to python itself. To get python detect the extensions
35     # we want to enable, we simply have to link the contents into python's
36     # own include/lib directories. Ugh.
37     #
38     # NB: It would sort-of make sense to link more stuff from /sw on OS X,
39     # but we simply cannot link the whole world. If you need something,
40     # see above for the commented-out list of packages that could be
41     # linked specifically, or could be built by ourselves, depending on
42     # whether we like to pick up system libraries or want total control.
43 dsr 1.62 #mkdir -p %i/include %i/lib
44     mkdir -p %i/include %i/lib %i/bin
45 ratnik 1.34
46 elmer 1.55 %if "%online" != "true"
47 dsr 1.62 %define extradirs $ZLIB_ROOT $OPENSSL_ROOT $SQLITE_ROOT
48 ratnik 1.34 %else
49     %define extradirs %{nil}
50     %endif
51    
52     dirs="$EXPAT_ROOT $BZ2LIB_ROOT $NCURSES_ROOT $DB4_ROOT $GDBM_ROOT %{extradirs}"
53    
54 eulisse 1.70 # We need to export it because setup.py now uses it to determine the actual
55     # location of DB4, this was needed to avoid having it picked up from the system.
56     export DB4_ROOT
57    
58 eulisse 1.16 echo $dirs
59 argiro 1.1 for d in $dirs; do
60     for f in $d/include/*; do
61 eulisse 1.29 [ -e $f ] || continue
62 argiro 1.1 rm -f %i/include/$(basename $f)
63     ln -s $f %i/include
64     done
65     for f in $d/lib/*; do
66 eulisse 1.29 [ -e $f ] || continue
67 argiro 1.1 rm -f %i/lib/$(basename $f)
68     ln -s $f %i/lib
69     done
70     done
71    
72 eulisse 1.39 additionalConfigureOptions=""
73     case %cmsplatf in
74     osx105* )
75     additionalConfigureOptions="--disable-readline"
76     ;;
77     esac
78    
79     ./configure --prefix=%i $additionalConfigureOptions --enable-shared \
80     --without-tkinter --disable-tkinter
81    
82 ratnik 1.38 # The following is a kludge around the fact that the /usr/lib/libreadline.so
83     # symlink (for 32-bit lib) is missing on the 64bit machines
84 dsr 1.62 case %cmsplatf in
85     slc4_ia32* )
86     mkdir -p %{i}/lib
87     ln -s /usr/lib/libreadline.so.4.3 %{i}/lib/libreadline.so
88     ;;
89     esac
90 ratnik 1.38 make %makeprocesses
91 ratnik 1.37
92 argiro 1.1 %install
93     make install
94 dsr 1.62 %define pythonv %(echo %realversion | cut -d. -f 1,2)
95 eulisse 1.8
96 dsr 1.62 case %cmsplatf in
97     osx*)
98     make install prefix=%i
99     (cd Misc; /bin/rm -rf RPM)
100     mkdir -p %i/share/doc/%n
101     cp -R Demo Doc %i/share/doc/%n
102     cp -R Misc Tools %i/lib/python%{pythonv}
103     gcc -dynamiclib -all_load -single_module \
104     -framework System -framework CoreServices -framework Foundation \
105     %i/lib/python%{pythonv}/config/libpython%{pythonv}.a \
106     -undefined dynamic_lookup \
107     -o %i/lib/python%{pythonv}/config/libpython%{pythonv}.dylib \
108     -install_name %i/lib/python%{pythonv}/config/libpython%{pythonv}.dylib \
109     -current_version %{pythonv} -compatibility_version %{pythonv} -ldl
110     (cd %i/lib/python%{pythonv}/config
111     perl -p -i -e 's|-fno-common||g' Makefile)
112    
113     find %i/lib/python%{pythonv}/config -name 'libpython*' -exec mv -f {} %i/lib \;
114     ;;
115     esac
116 eulisse 1.9
117     perl -p -i -e "s|^#!.*python|#!/usr/bin/env python|" %{i}/bin/idle \
118     %{i}/bin/pydoc \
119 dsr 1.62 %{i}/bin/python-config \
120     %{i}/bin/2to3 \
121     %{i}/bin/python2.6-config \
122 eulisse 1.9 %{i}/bin/smtpd.py \
123 dsr 1.62 %{i}/lib/python2.6/bsddb/dbshelve.py \
124     %{i}/lib/python2.6/test/test_bz2.py \
125     %{i}/lib/python2.6/test/test_largefile.py \
126     %{i}/lib/python2.6/test/test_optparse.py
127 eulisse 1.67
128     find %{i}/lib -maxdepth 1 -mindepth 1 ! -name '*python*' -exec rm {} \;
129     find %{i}/include -maxdepth 1 -mindepth 1 ! -name '*python*' -exec rm {} \;
130 muzaffar 1.28
131 valya 1.48 # remove tkinter that brings dependency on libtk:
132 elmer 1.58 find %{i}/lib -type f -name "_tkinter.so" -exec rm {} \;
133 valya 1.48
134 dsr 1.62 # Makes sure that executables start with /usr/bin/env perl and not with comments.
135     find %i -type f -perm -555 -name '*.py' -exec perl -p -i -e 'if ($. == 1) {s|^"""|#/usr/bin/env python\n"""|}' {} \;
136     find %i -type f -perm -555 -name '*.py' -exec perl -p -i -e 'if ($. == 1) {s|^\'\'\'|#/usr/bin/env python\n\'\'\'|}' {} \;
137     find %i -type f -perm -555 -name '*.py' -exec perl -p -i -e 'if ($. == 1) {s|/usr/local/bin/python|/usr/bin/env python|}' {} \;
138     rm -f %i/share/doc/python/Demo/rpc/test
139    
140 lat 1.68 # Generate dependencies-setup.{sh,csh} so init.{sh,csh} picks full environment.
141 diego 1.63 mkdir -p %i/etc/profile.d
142 lat 1.68 : > %i/etc/profile.d/dependencies-setup.sh
143     : > %i/etc/profile.d/dependencies-setup.csh
144     for tool in $(echo %{requiredtools} | sed -e's|\s+| |;s|^\s+||'); do
145     root=$(echo $tool | tr a-z- A-Z_)_ROOT; eval r=\$$root
146     if [ X"$r" != X ] && [ -r "$r/etc/profile.d/init.sh" ]; then
147     echo "test X\$$root != X || . $r/etc/profile.d/init.sh" >> %i/etc/profile.d/dependencies-setup.sh
148     echo "test X\$$root != X || source $r/etc/profile.d/init.csh" >> %i/etc/profile.d/dependencies-setup.csh
149     fi
150 diego 1.63 done
151    
152 eulisse 1.16 %post
153 dsr 1.62 %{relocateConfig}lib/python2.6/config/Makefile
154 lat 1.68 %{relocateConfig}etc/profile.d/dependencies-setup.*sh