MeeGo handset 1.1开发环境[6]:封装*.src.rpm和*.rpm

  在MeeGo handset 1.1开发环境[4][5]中,我们利用QtCreator工具生成了rpm包。我们去看linux的rpm包,对于某个软件包有两个rpm包,一个是*.rpm,一个是*.src.rpm,我们应当将源程序也进行打包,这样在代码管理上会好很多。此外,可能是习惯问题,如果可以脱离QtCreator,直接在linux的命令行中进行编译,打包,我觉得更加方便和自由。本次,我们将记录如何在命令行中将程序打成*.src.rpm和*.rpm包。

  实际以前我们在moblin也探讨过这个问题,在MeeGo Handset SDK 1.1的环境中,利用rpmbuild,我们在作一次。我们还是利用rpmbuild的缺省目录~/rpmbuild。下面是相关的步骤。

步骤一:建立需打包的project小例子

  利用mad建立我们的project,我们可以现查看一下mad可以创建那些类型的project,然后根据需要选择创建。

$ mad pscreate -l
TEMPLATE NAME TYPE DESCRIPTION
lib-simple lib Simple example for C/C++ library
python python Simple example for Python (Qt) application
qt-empty prog Empty project for Qt application
qt-lib-simple lib Simple example for Qt library
qt-simple qtprog Simple example for Qt application
simple prog Simple example for C/C++ application

$ mad -t meego-handset-ia32-1.1 pscreate -t qt-simple test-rpm-0.0.1

  请注意这个project的名字,我们将version信息也加入,这也是rpm包命名的标准方式。在后面我们也会看到spec文件中对文件夹的缺省命名,提供version信息,可以是我们更好的管理不同版本当然源代码,同时也方便打patch。

$ cd test-rpm-0.0.1/
$ mad -t meego-handset-ia32-1.1 qmake

  通过这一步,可以生成Makefile,打开Makefile文件,我们做一些小修改,将涉及绝对路径的修改为相对路径,例如该文件夹的绝对路径在/workspace/meego/test/qt/test-rpm-0.0.1,我们可以查询这个路径,或者查询install,是在target中install desktop文件时会写成绝对路径。因为我们将利用rpmbuild的缺省目录,而且不同环境,安装的绝对路径不一样,所以需要修改。

  这是我们可以直接通过make命令来进行编译。由于是实验打包的情况,我只在*.desktop文件中修改了图标的描述名字,并将源文件中的Hello, World改为其他文字。

步骤二:打包

  当我们确保编译没有出现问题,包括在target上调测后也没有问题,我们准备封装发布的rpm和src.rpm。采用make clean将所有编译内容清除后,将test-rpm-0.0.1/打包为test-rpm-0.0.1.tar.gz。接着我们编写rpm的spec文件,可以直接利用之前QtCreator编写的其他spec文件过来修改,spec文件可以参考:

  下面是这个例子的spec文件test-rpm.spec的内容

$ cat test-rpm.spec
# no post install
#%define __os_install_post %{nil}
# no strip
#%define __strip /bin/true
# no debug package
#%define debug_package %{nil}
# disable automatic dependency processing
#AutoReqProv: no

Name: test-rpm
Version: 0.0.1
Release: 1
License: GPL
Summary: Wei: Test for Meego handset 1.1 *.src.rpm and *.rpm
#Url: <insert url tag>
Group: Qt/Qt Mobility
Source0: %{name}-%{version}.tar.gz
#BuildRequires: pkgconfig(QtCore)
#BuildRequires: libqt-devel

%description
Wei test for Meego handset SDK 1.1 for package *.src.rpm and *.rpm.

%prep
%setup -q

%build
# Add here commands to configure the package.
#%qmake
#qmake -makefile -nocache QMAKE_STRIP=: PREFIX=%{_prefix}

# Add here commands to compile the package.
#make %{?jobs:-j%jobs}
#make %{?_smp_mflags}
make

%install
# Add here commands to install the package.
#%qmake_install
make install INSTALL_ROOT=%{buildroot}

%files
%defattr(-,root,root,-)
%{_prefix}/*

  我们将在rmpbuild的标准目录下来进行,可以直接执行rpmbuild -ba test-rpm.spec,运行会报错,但是会生成正确的缺省路径~/rpmbuild,在该目录下会有以下的目录BUILD/ BUILDROOT/ RPMS/ SOURCES/ SPECS/ SRPMS/,我们将test-、rpm.0.0.1.tar.gz文件copy到SOURCES目录下,将test-rpm.spec文件copy到SPECS/下,进入~/rpmbuild/SPECS目录,执行命令rpmbuild -ba test-rpm.spec,则源文件解压后将存放在BUILD/路径下,在目标机的解压后的文件将在BUILDROOT/下,test-rpm-0.0.1-1.i386.rpm将存放在RPMS/i386/路径下,源文件rpm包test-rpm-0.0.1-1.src.rpm位于SRPMS/。

步骤三:检验

  我们打开模拟器或者目标机,通过网络,将rpm传递上去

$ scp -P 6666 /home/wei/rpmbuild/RPMS/i386/test-rpm-0.0.1-1.i386.rpm meego@localhost:/home/meego

  源文件rpm包用于归档保存,我们删除~/rpmbuild,然后在本地机器进行rpm -ivh xxxx.src.rpm后,我们看到在~/rpmbuild中相关源代码的恢复。我们通过ssh登录模拟器,在/home/meego下,以sudo的身份对rpm进行安装rpm -ivh test-rpm-0.0.1-1.i386.rpm,删除时只需要rpm -e test-rpm即可。安装之后我们可以看到桌面如下左图,点击图片,如右图:

相关链接:我的MeeGo/Moblin相关文章

你可能感兴趣的:(linux,python,ssh,qt,meego)