如何用rpmbuild打包qmake工程

1. 首先得確保工程的qmake編譯沒有問題

2. 其次需要產(chǎn)生可以被rpmbuild讀取的源碼包:

對于git工程可以用如下命令:

export VERSION_SHORT=1.1.0

git archive --format=tar HEAD | gzip > qt-example-${VERSION_SHORT}-src.tar.gz

對于svn工程,可以用如下命令:

PROJ='yourproj' &&

URL='http://svn.example.com/svn/repo/$PROJ' &&

REV=`svn info $URL | fgrep Revision | cut -d ' ' -f 2` && ?

cd ~/tmp &&

svn export $URL $PROJ &&

tar czv -f $PROJ.r$REV.tar.gz $PROJ &&

rm -r $PROJ.r$REV

3. 建立rpmbuild需要的目錄結構

export WORKSPACE=$(mktemp -d)

mkdir -p $WORKSPACE/{BUILD,RPMS,SOURCES,SPECS,SRPMS,tmp}

echo Working in $WORKSPACE

4. 建立Qt的編譯環(huán)境

export BITS=$(getconf LONG_BIT)

export QMAKESPEC=linux-g++-$BITS

export QTDIR=/opt/Trolltech/5.12.6

export PATH=$QTDIR/bin:$PATH


echo -- QTDIR set to "$QTDIR"

echo -- QMAKESPEC set to "$QMAKESPEC"

echo -- PATH set to "$PATH"

5. 建立rpmbuild需要的版本信息和spec文件、源碼等

export VERSION_MAJOR=1

export VERSION_MINOR=0

export VERSION_REVISION=20

export VERSION_BUILD=$(git log --pretty=format:'%h' -n 1)

export VERSION_SHORT=${VERSION_MAJOR}${VERSION_MINOR}${VERSION_REVISION}${VERSION_BUILD}

export VERSION_LONG=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}.${VERSION_BUILD}


echo -- Major $VERSION_MAJOR

echo -- Minor $VERSION_MINOR

echo -- Revision $VERSION_REVISION

echo -- Build $VERSION_BUILD

將源代碼壓縮包和spec文件分別拷貝到對應的目錄:

ARCHIVE=$(find `pwd` -name 'qt-example-*-src.tar.gz' -type f | head -1)

SPEC=$(find `pwd` -name 'qt-example.spec' -type f | head -1)

cp $ARCHIVE $WORKSPACE/SOURCES

cp $SPEC $WORKSPACE/SPECS

6. 運行rpmbuild生成rpm包:

# Change to workspace

cd $WORKSPACE


# Make RPM

rpmbuild --define "_topdir ${WORKSPACE}" -ba -vv $WORKSPACE/SPECS/qt-example*.spec

7. 附錄.spec文件的寫法

%define VERSION_LONG %(echo $VERSION_LONG)

%define VERSION_SHORT %(echo $VERSION_SHORT)


%define VERSION_MAJOR %(echo $VERSION_MAJOR)

%define VERSION_MINOR %(echo $VERSION_MINOR)

%define VERSION_REVISION %(echo $VERSION_REVISION)

%define VERSION_BUILD %(echo $VERSION_BUILD)


#

# Qt Example

#

Summary: An example application compiled with QMake that was turned into an RPM.

Name: qt-example

Version: %{VERSION_LONG}

Release: %{VERSION_BUILD}

License: MIT

Group: Applications

Source: http://corpration.domain/not/path/to/application/qt-example-%{VERSION_SHORT}-src.tar.gz

URL: http://corpration.domain

Vendor: http://corpration.domain

Packager: Author Name<author.name@copration.com>


%description

Application that exists purely to exemplify how to build an RPM package.


%prep

%setup -n source


%build

qmake -r

make -f Makefile.$QMAKESPEC all


%install

INSTALL_ROOT=%{buildroot}/usr make -f Makefile.$QMAKESPEC install


%post


%postun


%files

%{_bindir}/*

%{_libdir}/*


%changelog

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容