/Misc/RPM/python-2.6.spec
http://unladen-swallow.googlecode.com/ · Unknown · 387 lines · 327 code · 60 blank · 0 comment · 0 complexity · 040433c6ded69c5d6dcf884073181bff MD5 · raw file
- ##########################
- # User-modifiable configs
- ##########################
- # Is the resulting package and the installed binary named "python" or
- # "python2"?
- #WARNING: Commenting out doesn't work. Last line is what's used.
- %define config_binsuffix none
- %define config_binsuffix 2.6
- # Build tkinter? "auto" enables it if /usr/bin/wish exists.
- #WARNING: Commenting out doesn't work. Last line is what's used.
- %define config_tkinter no
- %define config_tkinter yes
- %define config_tkinter auto
- # Use pymalloc? The last line (commented or not) determines wether
- # pymalloc is used.
- #WARNING: Commenting out doesn't work. Last line is what's used.
- %define config_pymalloc no
- %define config_pymalloc yes
- # Enable IPV6?
- #WARNING: Commenting out doesn't work. Last line is what's used.
- %define config_ipv6 yes
- %define config_ipv6 no
- # Location of the HTML directory.
- %define config_htmldir /var/www/html/python
- #################################
- # End of user-modifiable configs
- #################################
- %define name python
- #--start constants--
- %define version 2.6.4
- %define libver 2.6
- #--end constants--
- %define release 1pydotorg
- %define __prefix /usr
- # kludge to get around rpm <percent>define weirdness
- %define ipv6 %(if [ "%{config_ipv6}" = yes ]; then echo --enable-ipv6; else echo --disable-ipv6; fi)
- %define pymalloc %(if [ "%{config_pymalloc}" = yes ]; then echo --with-pymalloc; else echo --without-pymalloc; fi)
- %define binsuffix %(if [ "%{config_binsuffix}" = none ]; then echo ; else echo "%{config_binsuffix}"; fi)
- %define include_tkinter %(if [ \\( "%{config_tkinter}" = auto -a -f /usr/bin/wish \\) -o "%{config_tkinter}" = yes ]; then echo 1; else echo 0; fi)
- %define libdirname %(( uname -m | egrep -q '_64$' && [ -d /usr/lib64 ] && echo lib64 ) || echo lib)
- # detect if documentation is available
- %define include_docs %(if [ -f "%{_sourcedir}/html-%{version}.tar.bz2" ]; then echo 1; else echo 0; fi)
- Summary: An interpreted, interactive, object-oriented programming language.
- Name: %{name}%{binsuffix}
- Version: %{version}
- Release: %{release}
- Copyright: Modified CNRI Open Source License
- Group: Development/Languages
- Source: Python-%{version}.tar.bz2
- %if %{include_docs}
- Source1: html-%{version}.tar.bz2
- %endif
- BuildRoot: %{_tmppath}/%{name}-%{version}-root
- BuildPrereq: expat-devel
- BuildPrereq: db4-devel
- BuildPrereq: gdbm-devel
- BuildPrereq: sqlite-devel
- Prefix: %{__prefix}
- Packager: Sean Reifschneider <jafo-rpms@tummy.com>
- %description
- Python is an interpreted, interactive, object-oriented programming
- language. It incorporates modules, exceptions, dynamic typing, very high
- level dynamic data types, and classes. Python combines remarkable power
- with very clear syntax. It has interfaces to many system calls and
- libraries, as well as to various window systems, and is extensible in C or
- C++. It is also usable as an extension language for applications that need
- a programmable interface. Finally, Python is portable: it runs on many
- brands of UNIX, on PCs under Windows, MS-DOS, and OS/2, and on the
- Mac.
- %package devel
- Summary: The libraries and header files needed for Python extension development.
- Prereq: python%{binsuffix} = %{PACKAGE_VERSION}
- Group: Development/Libraries
- %description devel
- The Python programming language's interpreter can be extended with
- dynamically loaded extensions and can be embedded in other programs.
- This package contains the header files and libraries needed to do
- these types of tasks.
- Install python-devel if you want to develop Python extensions. The
- python package will also need to be installed. You'll probably also
- want to install the python-docs package, which contains Python
- documentation.
- %if %{include_tkinter}
- %package tkinter
- Summary: A graphical user interface for the Python scripting language.
- Group: Development/Languages
- Prereq: python%{binsuffix} = %{PACKAGE_VERSION}-%{release}
- %description tkinter
- The Tkinter (Tk interface) program is an graphical user interface for
- the Python scripting language.
- You should install the tkinter package if you'd like to use a graphical
- user interface for Python programming.
- %endif
- %package tools
- Summary: A collection of development tools included with Python.
- Group: Development/Tools
- Prereq: python%{binsuffix} = %{PACKAGE_VERSION}-%{release}
- %description tools
- The Python package includes several development tools that are used
- to build python programs. This package contains a selection of those
- tools, including the IDLE Python IDE.
- Install python-tools if you want to use these tools to develop
- Python programs. You will also need to install the python and
- tkinter packages.
- %if %{include_docs}
- %package docs
- Summary: Python-related documentation.
- Group: Development/Documentation
- %description docs
- Documentation relating to the Python programming language in HTML and info
- formats.
- %endif
- %changelog
- * Mon Dec 20 2004 Sean Reifschneider <jafo-rpms@tummy.com> [2.4-2pydotorg]
- - Changing the idle wrapper so that it passes arguments to idle.
- * Tue Oct 19 2004 Sean Reifschneider <jafo-rpms@tummy.com> [2.4b1-1pydotorg]
- - Updating to 2.4.
- * Thu Jul 22 2004 Sean Reifschneider <jafo-rpms@tummy.com> [2.3.4-3pydotorg]
- - Paul Tiemann fixes for %{prefix}.
- - Adding permission changes for directory as suggested by reimeika.ca
- - Adding code to detect when it should be using lib64.
- - Adding a define for the location of /var/www/html for docs.
- * Thu May 27 2004 Sean Reifschneider <jafo-rpms@tummy.com> [2.3.4-2pydotorg]
- - Including changes from Ian Holsman to build under Red Hat 7.3.
- - Fixing some problems with the /usr/local path change.
- * Sat Mar 27 2004 Sean Reifschneider <jafo-rpms@tummy.com> [2.3.2-3pydotorg]
- - Being more agressive about finding the paths to fix for
- #!/usr/local/bin/python.
- * Sat Feb 07 2004 Sean Reifschneider <jafo-rpms@tummy.com> [2.3.3-2pydotorg]
- - Adding code to remove "#!/usr/local/bin/python" from particular files and
- causing the RPM build to terminate if there are any unexpected files
- which have that line in them.
- * Mon Oct 13 2003 Sean Reifschneider <jafo-rpms@tummy.com> [2.3.2-1pydotorg]
- - Adding code to detect wether documentation is available to build.
- * Fri Sep 19 2003 Sean Reifschneider <jafo-rpms@tummy.com> [2.3.1-1pydotorg]
- - Updating to the 2.3.1 release.
- * Mon Feb 24 2003 Sean Reifschneider <jafo-rpms@tummy.com> [2.3b1-1pydotorg]
- - Updating to 2.3b1 release.
- * Mon Feb 17 2003 Sean Reifschneider <jafo-rpms@tummy.com> [2.3a1-1]
- - Updating to 2.3 release.
- * Sun Dec 23 2001 Sean Reifschneider <jafo-rpms@tummy.com>
- [Release 2.2-2]
- - Added -docs package.
- - Added "auto" config_tkinter setting which only enables tk if
- /usr/bin/wish exists.
- * Sat Dec 22 2001 Sean Reifschneider <jafo-rpms@tummy.com>
- [Release 2.2-1]
- - Updated to 2.2.
- - Changed the extension to "2" from "2.2".
- * Tue Nov 18 2001 Sean Reifschneider <jafo-rpms@tummy.com>
- [Release 2.2c1-1]
- - Updated to 2.2c1.
- * Thu Nov 1 2001 Sean Reifschneider <jafo-rpms@tummy.com>
- [Release 2.2b1-3]
- - Changed the way the sed for fixing the #! in pydoc works.
- * Wed Oct 24 2001 Sean Reifschneider <jafo-rpms@tummy.com>
- [Release 2.2b1-2]
- - Fixed missing "email" package, thanks to anonymous report on sourceforge.
- - Fixed missing "compiler" package.
- * Mon Oct 22 2001 Sean Reifschneider <jafo-rpms@tummy.com>
- [Release 2.2b1-1]
- - Updated to 2.2b1.
- * Mon Oct 9 2001 Sean Reifschneider <jafo-rpms@tummy.com>
- [Release 2.2a4-4]
- - otto@balinor.mat.unimi.it mentioned that the license file is missing.
- * Sun Sep 30 2001 Sean Reifschneider <jafo-rpms@tummy.com>
- [Release 2.2a4-3]
- - Ignacio Vazquez-Abrams pointed out that I had a spruious double-quote in
- the spec files. Thanks.
- * Wed Jul 25 2001 Sean Reifschneider <jafo-rpms@tummy.com>
- [Release 2.2a1-1]
- - Updated to 2.2a1 release.
- - Changed idle and pydoc to use binsuffix macro
- #######
- # PREP
- #######
- %prep
- %setup -n Python-%{version}
- ########
- # BUILD
- ########
- %build
- ./configure --enable-unicode=ucs4 %{ipv6} %{pymalloc} --prefix=%{__prefix}
- make
- ##########
- # INSTALL
- ##########
- %install
- # set the install path
- echo '[install_scripts]' >setup.cfg
- echo 'install_dir='"${RPM_BUILD_ROOT}%{__prefix}/bin" >>setup.cfg
- [ -d "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
- mkdir -p $RPM_BUILD_ROOT%{__prefix}/%{libdirname}/python%{libvers}/lib-dynload
- make prefix=$RPM_BUILD_ROOT%{__prefix} install
- # REPLACE PATH IN PYDOC
- if [ ! -z "%{binsuffix}" ]
- then
- (
- cd $RPM_BUILD_ROOT%{__prefix}/bin
- mv pydoc pydoc.old
- sed 's|#!.*|#!%{__prefix}/bin/env python'%{binsuffix}'|' \
- pydoc.old >pydoc
- chmod 755 pydoc
- rm -f pydoc.old
- )
- fi
- # add the binsuffix
- if [ ! -z "%{binsuffix}" ]
- then
- ( cd $RPM_BUILD_ROOT%{__prefix}/bin; rm -f python[0-9a-zA-Z]*;
- mv -f python python"%{binsuffix}" )
- ( cd $RPM_BUILD_ROOT%{__prefix}/man/man1; mv python.1 python%{binsuffix}.1 )
- ( cd $RPM_BUILD_ROOT%{__prefix}/bin; mv -f pydoc pydoc"%{binsuffix}" )
- ( cd $RPM_BUILD_ROOT%{__prefix}/bin; mv -f idle idle"%{binsuffix}" )
- fi
- ########
- # Tools
- echo '#!%{__prefix}/bin/env python%{binsuffix}' >${RPM_BUILD_ROOT}%{__prefix}/bin/idle%{binsuffix}
- echo 'import os, sys' >>${RPM_BUILD_ROOT}%{__prefix}/bin/idle%{binsuffix}
- echo 'os.execvp("%{__prefix}/bin/python%{binsuffix}", ["%{__prefix}/bin/python%{binsuffix}", "%{__prefix}/lib/python%{libvers}/idlelib/idle.py"] + sys.argv[1:])' >>${RPM_BUILD_ROOT}%{__prefix}/bin/idle%{binsuffix}
- echo 'print "Failed to exec Idle"' >>${RPM_BUILD_ROOT}%{__prefix}/bin/idle%{binsuffix}
- echo 'sys.exit(1)' >>${RPM_BUILD_ROOT}%{__prefix}/bin/idle%{binsuffix}
- chmod 755 $RPM_BUILD_ROOT%{__prefix}/bin/idle%{binsuffix}
- cp -a Tools $RPM_BUILD_ROOT%{__prefix}/%{libdirname}/python%{libvers}
- # MAKE FILE LISTS
- rm -f mainpkg.files
- find "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/lib-dynload -type f |
- sed "s|^${RPM_BUILD_ROOT}|/|" |
- grep -v -e '_tkinter.so$' >mainpkg.files
- find "$RPM_BUILD_ROOT""%{__prefix}"/bin -type f |
- sed "s|^${RPM_BUILD_ROOT}|/|" |
- grep -v -e '/bin/idle%{binsuffix}$' >>mainpkg.files
- rm -f tools.files
- find "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/idlelib \
- "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/Tools -type f |
- sed "s|^${RPM_BUILD_ROOT}|/|" >tools.files
- echo "%{__prefix}"/bin/idle%{binsuffix} >>tools.files
- ######
- # Docs
- %if %{include_docs}
- mkdir -p "$RPM_BUILD_ROOT"%{config_htmldir}
- (
- cd "$RPM_BUILD_ROOT"%{config_htmldir}
- bunzip2 < %{SOURCE1} | tar x
- )
- %endif
- # fix the #! line in installed files
- find "$RPM_BUILD_ROOT" -type f -print0 |
- xargs -0 grep -l /usr/local/bin/python | while read file
- do
- FIXFILE="$file"
- sed 's|^#!.*python|#!%{__prefix}/bin/env python'"%{binsuffix}"'|' \
- "$FIXFILE" >/tmp/fix-python-path.$$
- cat /tmp/fix-python-path.$$ >"$FIXFILE"
- rm -f /tmp/fix-python-path.$$
- done
- # check to see if there are any straggling #! lines
- find "$RPM_BUILD_ROOT" -type f | xargs egrep -n '^#! */usr/local/bin/python' \
- | grep ':1:#!' >/tmp/python-rpm-files.$$ || true
- if [ -s /tmp/python-rpm-files.$$ ]
- then
- echo '*****************************************************'
- cat /tmp/python-rpm-files.$$
- cat <<@EOF
- *****************************************************
- There are still files referencing /usr/local/bin/python in the
- install directory. They are listed above. Please fix the .spec
- file and try again. If you are an end-user, you probably want
- to report this to jafo-rpms@tummy.com as well.
- *****************************************************
- @EOF
- rm -f /tmp/python-rpm-files.$$
- exit 1
- fi
- rm -f /tmp/python-rpm-files.$$
- ########
- # CLEAN
- ########
- %clean
- [ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf $RPM_BUILD_ROOT
- rm -f mainpkg.files tools.files
- ########
- # FILES
- ########
- %files -f mainpkg.files
- %defattr(-,root,root)
- %doc Misc/README Misc/cheatsheet Misc/Porting
- %doc LICENSE Misc/ACKS Misc/HISTORY Misc/NEWS
- %{__prefix}/man/man1/python%{binsuffix}.1*
- %attr(755,root,root) %dir %{__prefix}/include/python%{libvers}
- %attr(755,root,root) %dir %{__prefix}/%{libdirname}/python%{libvers}/
- %{__prefix}/%{libdirname}/python%{libvers}/*.txt
- %{__prefix}/%{libdirname}/python%{libvers}/*.py*
- %{__prefix}/%{libdirname}/python%{libvers}/pdb.doc
- %{__prefix}/%{libdirname}/python%{libvers}/profile.doc
- %{__prefix}/%{libdirname}/python%{libvers}/curses
- %{__prefix}/%{libdirname}/python%{libvers}/distutils
- %{__prefix}/%{libdirname}/python%{libvers}/encodings
- %{__prefix}/%{libdirname}/python%{libvers}/plat-linux2
- %{__prefix}/%{libdirname}/python%{libvers}/site-packages
- %{__prefix}/%{libdirname}/python%{libvers}/test
- %{__prefix}/%{libdirname}/python%{libvers}/xml
- %{__prefix}/%{libdirname}/python%{libvers}/email
- %{__prefix}/%{libdirname}/python%{libvers}/email/mime
- %{__prefix}/%{libdirname}/python%{libvers}/sqlite3
- %{__prefix}/%{libdirname}/python%{libvers}/compiler
- %{__prefix}/%{libdirname}/python%{libvers}/bsddb
- %{__prefix}/%{libdirname}/python%{libvers}/hotshot
- %{__prefix}/%{libdirname}/python%{libvers}/logging
- %{__prefix}/%{libdirname}/python%{libvers}/lib-old
- %files devel
- %defattr(-,root,root)
- %{__prefix}/include/python%{libvers}/*.h
- %{__prefix}/%{libdirname}/python%{libvers}/config
- %files -f tools.files tools
- %defattr(-,root,root)
- %if %{include_tkinter}
- %files tkinter
- %defattr(-,root,root)
- %{__prefix}/%{libdirname}/python%{libvers}/lib-tk
- %{__prefix}/%{libdirname}/python%{libvers}/lib-dynload/_tkinter.so*
- %endif
- %if %{include_docs}
- %files docs
- %defattr(-,root,root)
- %{config_htmldir}/*
- %endif