diff --git a/pkg/build.sh b/pkg/build.sh index 26bf5d0ade649fdea2f309f1934394c3b7acd7d3..f9b866ec3990a64fb4dee6ce7fbd807912face67 100644 --- a/pkg/build.sh +++ b/pkg/build.sh @@ -1,56 +1,67 @@ -#!/bin/sh +#!/bin/bash -TMPDIR=/tmp -PKGDIR=`cd $(dirname $0) && pwd` -BUILDDIR=$PKGDIR/build -PROJDIR=`dirname $PKGDIR` -PROJNAME=`basename $PROJDIR` -PARENTDIR=`dirname $PROJDIR` +PKGNAME='xdgurl' + +PROJDIR="$(cd "$(dirname "${0}")/../" && pwd)" + +BUILDDIR="${PROJDIR}/pkg/build" + +BUILDTYPE='' +if [ "${1}" ]; then + BUILDTYPE="${1}" +fi + +TREEISH='HEAD' +if [ "${2}" ]; then + TREEISH="${2}" +fi + +export_source() { + destdir="${BUILDDIR}" + if [ "${1}" ]; then + destdir="${1}" + fi + $(cd "${PROJDIR}" && git archive --prefix="${PKGNAME}/" --output="${destdir}/${PKGNAME}.tar.gz" "${TREEISH}") +} build_ubuntu() { #sudo apt install build-essential qt5-default libqt5svg5-dev qtdeclarative5-dev devscripts debhelper fakeroot - cd $PARENTDIR - tar -czvf $TMPDIR/$PROJNAME.tar.gz --exclude ".git" $PROJNAME + cd "${PROJDIR}" - mkdir $BUILDDIR + mkdir -p "${BUILDDIR}" + export_source "${BUILDDIR}" + tar -xzvf "${BUILDDIR}/${PKGNAME}.tar.gz" -C "${BUILDDIR}" + cp -r "${PROJDIR}/pkg/ubuntu/debian" "${BUILDDIR}/${PKGNAME}" - mv $TMPDIR/$PROJNAME.tar.gz $BUILDDIR - tar -xzvf $BUILDDIR/$PROJNAME.tar.gz -C $BUILDDIR - cp -r $PKGDIR/ubuntu/debian $BUILDDIR/$PROJNAME - - cd $BUILDDIR/$PROJNAME + cd "${BUILDDIR}/${PKGNAME}" debuild -uc -us -b } build_fedora() { #sudo dnf install make automake gcc gcc-c++ libtool qt5-qtbase-devel qt5-qtsvg-devel qt5-qtdeclarative-devel rpm-build - cd $PARENTDIR - tar -czvf $TMPDIR/$PROJNAME.tar.gz --exclude ".git" $PROJNAME - - mkdir $BUILDDIR - mkdir $BUILDDIR/SOURCES - mkdir $BUILDDIR/SPECS + cd "${PROJDIR}" - mv $TMPDIR/$PROJNAME.tar.gz $BUILDDIR/SOURCES - cp $PKGDIR/fedora/xdgurl.spec $BUILDDIR/SPECS + mkdir -p "${BUILDDIR}" + mkdir "${BUILDDIR}/SOURCES" + mkdir "${BUILDDIR}/SPECS" + export_source "${BUILDDIR}/SOURCES" + cp "${PROJDIR}/pkg/fedora/xdgurl.spec" "${BUILDDIR}/SPECS" - rpmbuild --define "_topdir $BUILDDIR" -bb $BUILDDIR/SPECS/xdgurl.spec + rpmbuild --define "_topdir ${BUILDDIR}" -bb "${BUILDDIR}/SPECS/xdgurl.spec" } build_arch() { #sudo pacman -S base-devel qt5-base qt5-svg qt5-declarative qt5-quickcontrols - cd $PARENTDIR - tar -czvf $TMPDIR/$PROJNAME.tar.gz --exclude ".git" $PROJNAME + cd "${PROJDIR}" - mkdir $BUILDDIR + mkdir -p "${BUILDDIR}" + export_source "${BUILDDIR}" + cp "${PROJDIR}/pkg/arch/PKGBUILD" "${BUILDDIR}" - mv $TMPDIR/$PROJNAME.tar.gz $BUILDDIR - cp $PKGDIR/arch/PKGBUILD $BUILDDIR - - cd $BUILDDIR + cd "${BUILDDIR}" updpkgsums makepkg -s } @@ -58,57 +69,52 @@ build_arch() { build_appimage() { #sudo add-apt-repository ppa:beineri/opt-qt57-xenial #sudo apt update - #sudo apt install build-essential fuse desktop-file-utils + + #sudo apt install build-essential fuse zsync desktop-file-utils #sudo apt install qt57base qt57svg qt57quickcontrols qt57quickcontrols2 - #curl https://transfer.sh/DHN4B/linuxdeployqt-799f704-x86-64.appimage -o linuxdeployqt.appimage - #sudo install -m 755 -p linuxdeployqt.appimage /usr/local/bin/linuxdeployqt.appimage + # Replace linuxdeployqt download URL to official download URL when the stable version released + #curl -L -o linuxdeployqt https://dl.dropboxusercontent.com/u/150776/temp/linuxdeployqt-799f704-x86-64.appimage + #sudo install -m 755 -p linuxdeployqt /usr/local/bin/linuxdeployqt + #sudo modprobe fuse #source /opt/qt57/bin/qt57-env.sh - cd $PROJDIR - export VERSION=$(git describe --always) - - cd $PARENTDIR - tar -czvf $TMPDIR/$PROJNAME.tar.gz --exclude ".git" $PROJNAME - - mkdir $BUILDDIR + cd "${PROJDIR}" - mv $TMPDIR/$PROJNAME.tar.gz $BUILDDIR - tar -xzvf $BUILDDIR/$PROJNAME.tar.gz -C $BUILDDIR + export VERSION="$(git describe --always)" + mkdir -p "${BUILDDIR}" + export_source "${BUILDDIR}" + tar -xzvf "${BUILDDIR}/${PKGNAME}.tar.gz" -C "${BUILDDIR}" - cd $BUILDDIR/$PROJNAME + cd "${BUILDDIR}/${PKGNAME}" /opt/qt57/bin/qmake make - strip xdgurl - - cd $BUILDDIR - - mkdir -p $BUILDDIR/xdgurl.AppDir/usr/bin - install -m 755 -p $BUILDDIR/$PROJNAME/xdgurl $BUILDDIR/xdgurl.AppDir/xdgurl - install -m 644 -p $BUILDDIR/$PROJNAME/src/desktop/xdgurl.desktop $BUILDDIR/xdgurl.AppDir/xdgurl.desktop - install -m 644 -p $BUILDDIR/$PROJNAME/src/desktop/xdgurl.svg $BUILDDIR/xdgurl.AppDir/xdgurl.svg - install -m 755 -p /usr/bin/update-desktop-database $BUILDDIR/xdgurl.AppDir/usr/bin/update-desktop-database - install -m 755 -p /usr/bin/desktop-file-validate $BUILDDIR/xdgurl.AppDir/usr/bin/desktop-file-validate - install -m 755 -p /usr/bin/desktop-file-install $BUILDDIR/xdgurl.AppDir/usr/bin/desktop-file-install - - linuxdeployqt.appimage $BUILDDIR/xdgurl.AppDir/xdgurl -qmldir=$BUILDDIR/$PROJNAME/src/app/qml -verbose=2 -bundle-non-qt-libs # https://github.com/probonopd/linuxdeployqt/issues/25 - linuxdeployqt.appimage $BUILDDIR/xdgurl.AppDir/xdgurl -qmldir=$BUILDDIR/$PROJNAME/src/app/qml -verbose=2 -bundle-non-qt-libs # twice because of #25 - - rm $BUILDDIR/xdgurl.AppDir/AppRun - install -m 755 -p $BUILDDIR/$PROJNAME/src/desktop/appimage-desktopintegration $BUILDDIR/xdgurl.AppDir/AppRun - - linuxdeployqt.appimage --appimage-extract - ./squashfs-root/usr/bin/appimagetool $BUILDDIR/xdgurl.AppDir + strip ./xdgurl + + cd "${BUILDDIR}" + mkdir -p "${BUILDDIR}/${PKGNAME}.AppDir/usr/bin" + install -m 755 -p "${BUILDDIR}/${PKGNAME}/xdgurl" "${BUILDDIR}/${PKGNAME}.AppDir/xdgurl" + install -m 644 -p "${BUILDDIR}/${PKGNAME}/src/desktop/xdgurl.desktop" "${BUILDDIR}/${PKGNAME}.AppDir/xdgurl.desktop" + install -m 644 -p "${BUILDDIR}/${PKGNAME}/src/desktop/xdgurl.svg" "${BUILDDIR}/${PKGNAME}.AppDir/xdgurl.svg" + install -m 755 -p /usr/bin/update-desktop-database "${BUILDDIR}/${PKGNAME}.AppDir/usr/bin/update-desktop-database" + install -m 755 -p /usr/bin/desktop-file-validate "${BUILDDIR}/${PKGNAME}.AppDir/usr/bin/desktop-file-validate" + install -m 755 -p /usr/bin/desktop-file-install "${BUILDDIR}/${PKGNAME}.AppDir/usr/bin/desktop-file-install" + linuxdeployqt "${BUILDDIR}/${PKGNAME}.AppDir/xdgurl" -qmldir="${BUILDDIR}/${PKGNAME}/src/app/qml" -verbose=2 -bundle-non-qt-libs # https://github.com/probonopd/linuxdeployqt/issues/25 + linuxdeployqt "${BUILDDIR}/${PKGNAME}.AppDir/xdgurl" -qmldir="${BUILDDIR}/${PKGNAME}/src/app/qml" -verbose=2 -bundle-non-qt-libs # twice because of #25 + rm "${BUILDDIR}/${PKGNAME}.AppDir/AppRun" + install -m 755 -p "${BUILDDIR}/${PKGNAME}/src/desktop/appimage-desktopintegration" "${BUILDDIR}/${PKGNAME}.AppDir/AppRun" + linuxdeployqt --appimage-extract + ./squashfs-root/usr/bin/appimagetool "${BUILDDIR}/${PKGNAME}.AppDir" } -if [ $1 ] && [ $1 = 'ubuntu' ]; then +if [ "${BUILDTYPE}" = 'ubuntu' ]; then build_ubuntu -elif [ $1 ] && [ $1 = 'fedora' ]; then +elif [ "${BUILDTYPE}" = 'fedora' ]; then build_fedora -elif [ $1 ] && [ $1 = 'arch' ]; then +elif [ "${BUILDTYPE}" = 'arch' ]; then build_arch -elif [ $1 ] && [ $1 = 'appimage' ]; then +elif [ "${BUILDTYPE}" = 'appimage' ]; then build_appimage else - echo 'sh build.sh [ubuntu|fedora|arch|appimage]' + echo "sh $(basename "${0}") [ubuntu|fedora|arch|appimage] [tree_ish]" fi