美文网首页
如何用rpmbuild打包qmake工程

如何用rpmbuild打包qmake工程

作者: 耕田者 | 来源:发表于2022-10-02 12:34 被阅读0次

    1. 首先得确保工程的qmake编译没有问题

    2. 其次需要产生可以被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的编译环境

    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

    相关文章

      网友评论

          本文标题:如何用rpmbuild打包qmake工程

          本文链接:https://www.haomeiwen.com/subject/csheartx.html