python 2.7 自定义 RPM 编译[备忘]

4 篇文章 0 订阅

要求

把 python 2.7 进行编译

安装目标位置

可执行文件位置   /apps/svr/python27

其他库文件, 头文件, doc 安装位置  /apps/lib/python27

对应源码 python-2.7.5.tar.gz

 

参见  python-2.7_centOS5.8.spec 文件

%define _topdir %(echo `cd ..; pwd`)
%define binsuffix 27
%define pybasever 2.7
%define version 2.7.5
%define name python
%define release 20140124vipclound.centOS58
############# edit by terry ############
%define _prefix                 /apps
%define _exec-prefix            /apps
%define _bindir                 /apps/svr/python27
%define _sbindir                /apps/svr/python27
%define _sysconfdir             /apps/conf
%define _includedir             /apps/lib
%define _libexecdir             /apps/lib
%define _infodir                /apps/lib
%define _oldincludedir          /apps/lib
%define _libdir                 /apps/lib
%define _defaultdocdir          /apps/lib

%define config_include_docs no

############# edit by terry ############

Name: %{name}%{binsuffix}
Version: %{version}
Release: 20140121.vipclound.el5
Summary: An interpreted, interactive, object-oriented programming language.
Group: Development/Languages
Source0: http://www.python.org/ftp/python/%{version}/Python-%{version}.tar.bz2


License: PSF
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)


AutoReq: no
Provides: python(abi) = %{pybasever}


BuildRequires: autoconf
BuildRequires: bzip2
BuildRequires: bzip2-devel
BuildRequires: db4-devel
BuildRequires: expat-devel
BuildRequires: findutils
BuildRequires: gcc-c++
BuildRequires: glibc-devel
BuildRequires: make
BuildRequires: openssl-devel
BuildRequires: pkgconfig
BuildRequires: readline-devel
BuildRequires: sqlite-devel
BuildRequires: tar
BuildRequires: zlib-devel


%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.
Requires: %{name} = %{version}-%{release}
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.


%prep
%setup -n Python-%{version}



%build
%configure \
        --enable-ipv6 \
        --enable-unicode=ucs4 \
        --enable-shared \
        --with-system-ffi \
        --with-system-expat \

%{__make} %{?_smp_mflags}




%install
[ -d $RPM_BUILD_ROOT ] && rm -fr $RPM_BUILD_ROOT


%{__make} altinstall DESTDIR=$RPM_BUILD_ROOT
%{__rm} -f $RPM_BUILD_ROOT%{_prefix}/bin/python{,2}
%{__rm} -f $RPM_BUILD_ROOT%{_prefix}/bin/python{,2}-config
%{__rm} -f $RPM_BUILD_ROOT%{_prefix}/bin/2to3
%{__rm} -f $RPM_BUILD_ROOT%{_prefix}/bin/idle
%{__rm} -f $RPM_BUILD_ROOT%{_prefix}/bin/pydoc
%{__rm} -f $RPM_BUILD_ROOT%{_prefix}/bin/smtpd.py
%{__rm} -rf $RPM_BUILD_ROOT%{_libdir}/pkgconfig/
%{__ln_s} %{_libdir}/python2.7/config $RPM_BUILD_ROOT%{_prefix}/lib/python2.7/config
%{__ln_s} %{_libdir}/python2.7/lib-dynload $RPM_BUILD_ROOT%{_prefix}/lib/python2.7/lib-dynload


# 创建对应 ldconfig 库配置文件
mkdir -p $RPM_BUILD_ROOT/apps/conf/python27
touch $RPM_BUILD_ROOT/apps/conf/python27/python27.conf
echo "/apps/lib/" > $RPM_BUILD_ROOT/apps/conf/python27/python27.conf
echo "/apps/lib/python2.7/" > $RPM_BUILD_ROOT/apps/conf/python27/python27.conf



# 手动创建 man file 否则无法创建 RPM
gzip -c $RPM_BUILD_ROOT/%{_libdir}/man1/python2.7.1 >> $RPM_BUILD_ROOT/%{_libdir}/man1/python2.7.1.gz

######
# POST
######

%post
# 移动对应库文件
mv /apps/lib/libpython2.7.so.1.0 /apps/lib/python2.7/.
ln -s  /apps/lib/python2.7/libpython2.7.so.1.0 /apps/lib/python2.7/libpython2.7.so

# 删除库文件(已备份) 删除 MAN FILE
rm -rf %{_libdir}/libpython2.7.so.1.0
rm -rf %{_libdir}/libpython2.7.so
rm -rf /%{_libdir}/man1

mkdir /apps/svr/python -p

ln -s /apps/svr/python27/python2.7 /apps/svr/python/python


%postun
rm -rf /apps/lib/python2.7/libpython2.7.so.1.0 /apps/lib/python2.7/libpython2.7.so
rm -rf /apps/svr/python/python

%post  devel
# 移动头文件
mv /apps/include/python2.7/pyconfig.h /apps/lib/python2.7/.

total=`ls /apps/include/ | wc -l`
if [ $total -eq 1 ]
then
   rm -rf /apps/include
fi

%postun devel
rm -rf /apps/lib/python2.7/pyconfig.h



%clean
%{__rm} -rf $RPM_BUILD_ROOT




%files
%defattr(-,root,root,-)
%{_prefix}/lib/python2.7/*
%{_libdir}/python2.7/lib-dynload/*
%{_libdir}/libpython2.7.so*
%{_bindir}/python2.7*
# %{_mandir}/man1/python2.7.1
%{_bindir}/2to3
%{_bindir}/idle
%{_bindir}/pydoc
%{_bindir}/smtpd.py
%{_mandir}/man1/python2.7.1
%config(noreplace) /apps/conf/python27/python27.conf

#   /apps/svr/python27/2to3
#   /apps/svr/python27/idle
#   /apps/svr/python27/pydoc
#   /apps/svr/python27/smtpd.py


%doc
%{_mandir}/man1/python2.7.1.gz


%files devel
%defattr(-,root,root,-)
%{_prefix}/include/python2.7/*
%{_libdir}/python2.7/config/*


%changelog
* Mon Jan 21 2014 Terry Tsang <signmem@hotmail.com> - 2.7.5-1
- Initial RPM release

 

python-2.7_centOS5.8.spec 存放位置 /usr/src/redhat/SPECS/

python-2.7.5.tar.gz 存放位置 /usr/src/redhat/SOURCES/


 

编译方法

rpm -bb python-2.7_centOS5.8.spec


 

 


参见 python-2.7_centOS6.5.spec 文件

%define _topdir %(echo `cd ..; pwd`)
%define binsuffix 27
%define pybasever 2.7
%define version 2.7.5
%define name python
%define release 20140124vipclound.centOS65

############# edit by terry ############
%define _prefix                 /apps
%define _exec-prefix            /apps
%define _bindir                 /apps/svr/python27
%define _sbindir                /apps/svr/python27
%define _sysconfdir             /apps/conf
%define _includedir             /apps/lib
%define _libexecdir             /apps/lib
%define _infodir                /apps/lib
%define _oldincludedir          /apps/lib
%define _libdir                 /apps/lib
%define _defaultdocdir          /apps/lib
#%define _mandir                /apps/lib

%define config_include_docs no

############# edit by terry ############

Name: %{name}%{binsuffix}
Version: %{version}
Release: 20140121.vipclound.el6
Summary: An interpreted, interactive, object-oriented programming language.
Group: Development/Languages
Source0: http://www.python.org/ftp/python/%{version}/Python-%{version}.tar.bz2


License: PSF
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)


AutoReq: no
Provides: python(abi) = %{pybasever}


BuildRequires: autoconf
BuildRequires: bzip2
BuildRequires: bzip2-devel
BuildRequires: db4-devel
BuildRequires: expat-devel
BuildRequires: findutils
BuildRequires: gcc-c++
BuildRequires: glibc-devel
# BuildRequires: gmp-devel
# BuildRequires: libffi-devel
# BuildRequires: libGL-devel
# BuildRequires: libX11-devel
BuildRequires: make
# BuildRequires: ncurses-devel
BuildRequires: openssl-devel
BuildRequires: pkgconfig
BuildRequires: readline-devel
BuildRequires: sqlite-devel
BuildRequires: tar
# BuildRequires: tcl-devel
# BuildRequires: tix-devel
# BuildRequires: tk-devel
BuildRequires: zlib-devel


%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.
Requires: %{name} = %{version}-%{release}
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.


%prep
%setup -n Python-%{version}



%build
%configure \
        --enable-ipv6 \
        --enable-unicode=ucs4 \
        --enable-shared \
        --with-system-ffi \
        --with-system-expat \

%{__make} %{?_smp_mflags}


%install
[ -d $RPM_BUILD_ROOT ] && rm -fr $RPM_BUILD_ROOT


%{__make} altinstall DESTDIR=$RPM_BUILD_ROOT
%{__rm} -f $RPM_BUILD_ROOT%{_prefix}/bin/python{,2}
%{__rm} -f $RPM_BUILD_ROOT%{_prefix}/bin/python{,2}-config
%{__rm} -f $RPM_BUILD_ROOT%{_prefix}/bin/2to3
%{__rm} -f $RPM_BUILD_ROOT%{_prefix}/bin/idle
%{__rm} -f $RPM_BUILD_ROOT%{_prefix}/bin/pydoc
%{__rm} -f $RPM_BUILD_ROOT%{_prefix}/bin/smtpd.py
%{__rm} -rf $RPM_BUILD_ROOT%{_libdir}/pkgconfig/
%{__ln_s} %{_libdir}/python2.7/config $RPM_BUILD_ROOT%{_prefix}/lib/python2.7/config
%{__ln_s} %{_libdir}/python2.7/lib-dynload $RPM_BUILD_ROOT%{_prefix}/lib/python2.7/lib-dynload


# 创建对应 ldconfig 库配置文件
mkdir -p $RPM_BUILD_ROOT/apps/conf/python27
touch $RPM_BUILD_ROOT/apps/conf/python27/python27.conf
echo "/apps/lib/" > $RPM_BUILD_ROOT/apps/conf/python27/python27.conf
echo "/apps/lib/python2.7/" > $RPM_BUILD_ROOT/apps/conf/python27/python27.conf



# 手动创建 man file 否则无法创建 RPM
gzip -c $RPM_BUILD_ROOT/%{_libdir}/man1/python2.7.1 >> $RPM_BUILD_ROOT/%{_libdir}/man1/python2.7.1.gz

######
# POST
######

%post
# 移动对应库文件
mv /apps/lib/libpython2.7.so.1.0 /apps/lib/python2.7/.
ln -s  /apps/lib/python2.7/libpython2.7.so.1.0 /apps/lib/python2.7/libpython2.7.so

# 删除库文件(已备份) 删除 MAN FILE
rm -rf %{_libdir}/libpython2.7.so.1.0
rm -rf %{_libdir}/libpython2.7.so
rm -rf /%{_libdir}/man1

mkdir /apps/svr/python -p

ln -s /apps/svr/python27/python2.7 /apps/svr/python/python


%postun
rm -rf /apps/lib/python2.7/libpython2.7.so.1.0 /apps/lib/python2.7/libpython2.7.so
rm -rf /apps/svr/python/python

%post  devel
# 移动头文件
mv /apps/include/python2.7/pyconfig.h /apps/lib/python2.7/.

total=`ls /apps/include/ | wc -l`
if [ $total -eq 1 ]
then
   rm -rf /apps/include
fi

%postun devel
rm -rf /apps/lib/python2.7/pyconfig.h



%clean
%{__rm} -rf $RPM_BUILD_ROOT




%files
%defattr(-,root,root,-)
%{_prefix}/lib/python2.7/*
%{_libdir}/python2.7/lib-dynload/*
%{_libdir}/libpython2.7.so*
%{_bindir}/python2.7*
# %{_mandir}/man1/python2.7.1
%{_bindir}/2to3
%{_bindir}/idle
%{_bindir}/pydoc
%{_bindir}/smtpd.py
%{_mandir}/man1/python2.7.1
%{_bindir}/smtpd.pyc
%{_bindir}/smtpd.pyo
%config(noreplace) /apps/conf/python27/python27.conf

#   /apps/svr/python27/2to3
#   /apps/svr/python27/idle
#   /apps/svr/python27/pydoc
#   /apps/svr/python27/smtpd.py


%doc
%{_mandir}/man1/python2.7.1.gz


%files devel
%defattr(-,root,root,-)
%{_prefix}/include/python2.7/*
%{_libdir}/python2.7/config/*


%changelog
* Mon Jan 21 2014 Terry Tsang <signmem@hotmail.com> - 2.7.5-1
- Initial RPM release


 

python-2.7_centOS65.spec 存放位置 /root/rpmbuild/SPECS/

python-2.7.5.tar.gz 存放位置 /root/rpmbuild/SOURCES/


 

编译方法

rpm -bb python-2.7_centOS65.spec

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terry_Tsang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值