mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			382 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			RPMSpec
		
	
	
	
	
	
			
		
		
	
	
			382 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			RPMSpec
		
	
	
	
	
	
##########################
 | 
						|
#  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.4
 | 
						|
 | 
						|
#  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
 | 
						|
%define version 2.4
 | 
						|
%define libvers 2.4
 | 
						|
%define release 2pydotorg
 | 
						|
%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
 | 
						|
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}/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
 |