diff --git a/.gitignore b/.gitignore index 8497dbe8c2b5a7271ad351e434d575f5910d8d1b..1316742b3cd061754803991b0233865f78c9b37e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.pro.user +build_*/ lib/qtlib/ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..8b9aeb21e5e7915f53c7edd64193f29561df50b8 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +dist: trusty +sudo: required +services: + - docker + +branches: + only: + - master + +script: + - mntdir='/mnt/ocs-manager' + #- docker run --rm -v $(pwd):${mntdir} ubuntu:16.04 /bin/bash -c "sh ${mntdir}/scripts/build-docker.sh snap" + #- docker run --rm -v $(pwd):${mntdir} ubuntu:16.04 /bin/bash -c "sh ${mntdir}/scripts/build-docker.sh flatpak" + - docker run --rm -v $(pwd):${mntdir} ubuntu:16.04 /bin/bash -c "sh ${mntdir}/scripts/build-docker.sh appimage" + - cat transfer.log diff --git a/ocs-manager.pro b/ocs-manager.pro index 39771319c0595d0332d78a4cfe92d996b22c0f80..abe448f18d9931b1a9d80d4643a97987d6176401 100644 --- a/ocs-manager.pro +++ b/ocs-manager.pro @@ -22,5 +22,6 @@ include($${PWD}/lib/lib.pri) include($${PWD}/app/app.pri) include($${PWD}/desktop/desktop.pri) include($${PWD}/i18n/i18n.pri) +include($${PWD}/pkg/pkg.pri) include($${PWD}/scripts/scripts.pri) include($${PWD}/deployment.pri) diff --git a/pkg/appimage/appimage.sh b/pkg/appimage/appimage.sh new file mode 100644 index 0000000000000000000000000000000000000000..b176ca739dce6d39dac2fca93048cb8f4b72197e --- /dev/null +++ b/pkg/appimage/appimage.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +sh scripts/import.sh + +qmake PREFIX="/usr" +make +make INSTALL_ROOT="ocs-manager.AppDir" install + +curl -L -o linuxdeployqt.AppImage "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" +chmod 755 linuxdeployqt.AppImage + +./linuxdeployqt.AppImage ocs-manager.AppDir/usr/share/applications/ocs-manager.desktop -bundle-non-qt-libs -no-translations +./linuxdeployqt.AppImage ocs-manager.AppDir/usr/share/applications/ocs-manager.desktop -appimage diff --git a/pkg/pkg.pri b/pkg/pkg.pri new file mode 100644 index 0000000000000000000000000000000000000000..285c2e56f6e290a7be6dd4909629d9e5029e7245 --- /dev/null +++ b/pkg/pkg.pri @@ -0,0 +1 @@ +DISTFILES += $${PWD}/appimage/appimage.sh diff --git a/scripts/build-docker.sh b/scripts/build-docker.sh new file mode 100644 index 0000000000000000000000000000000000000000..12573088cc001e0e9d72cf56cfabb26901a32def --- /dev/null +++ b/scripts/build-docker.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +################################################################################ +# This is wrapper script for build.sh use from inside docker container +################################################################################ + +PKGNAME='ocs-manager' + +PKGUSER='pkgbuilder' + +BUILDTYPE='' +if [ "${1}" ]; then + BUILDTYPE="${1}" +fi + +PROJDIR="$(cd "$(dirname "${0}")/../" && pwd)" + +BUILDSCRIPT="${PROJDIR}/scripts/build.sh" + +TRANSFERLOG="${PROJDIR}/transfer.log" + +transfer_file() { + filepath="${1}" + if [ -f "${filepath}" ]; then + filename="$(basename "${filepath}")" + echo "Uploading ${filename}" >> "${TRANSFERLOG}" + curl -T "${filepath}" "https://transfer.sh/${filename}" >> "${TRANSFERLOG}" + echo "" >> "${TRANSFERLOG}" + fi +} + +build_snap() { + echo 'Not implemented yet' +} + +build_flatpak() { + echo 'Not implemented yet' +} + +build_appimage() { + # docker-image: ubuntu:16.04 + apt update -qq + apt -y install build-essential qt5-default libqt5websockets5-dev + apt -y install git + apt -y install curl + + useradd -m ${PKGUSER} + export HOME="/home/${PKGUSER}" + chown -R ${PKGUSER}:${PKGUSER} "${PROJDIR}" + + su -c "sh "${BUILDSCRIPT}" ${BUILDTYPE}" ${PKGUSER} + + transfer_file "$(find "${PROJDIR}/build_"*${BUILDTYPE} -type f -name "${PKGNAME}*.AppImage")" +} + +if [ "${BUILDTYPE}" = 'snap' ]; then + build_snap +elif [ "${BUILDTYPE}" = 'flatpak' ]; then + build_flatpak +elif [ "${BUILDTYPE}" = 'appimage' ]; then + build_appimage +else + echo "sh $(basename "${0}") [snap|flatpak|appimage]" + exit 1 +fi diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100644 index 0000000000000000000000000000000000000000..eabd464009bdc9c03bc25fda651ffead8638a0c8 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +################################################################################ +# This is utility script to build distribution packages +################################################################################ + +PKGNAME='ocs-manager' + +BUILDTYPE='' +if [ "${1}" ]; then + BUILDTYPE="${1}" +fi + +PROJDIR="$(cd "$(dirname "${0}")/../" && pwd)" + +BUILDVER="$(cd "${PROJDIR}" && git describe --always)" + +BUILDDIR="${PROJDIR}/build_${PKGNAME}_${BUILDVER}_${BUILDTYPE}" + +SRCARCHIVE="${BUILDDIR}/${PKGNAME}.tar.gz" + +export_srcarchive() { + filepath="${1}" + $(cd "${PROJDIR}" && git archive --prefix="${PKGNAME}/" --output="${filepath}" HEAD) +} + +build_snap() { + echo 'Not implemented yet' +} + +build_flatpak() { + echo 'Not implemented yet' +} + +build_appimage() { + cd "${PROJDIR}" + mkdir -p "${BUILDDIR}" + export_srcarchive "${SRCARCHIVE}" + + tar -xzvf "${SRCARCHIVE}" -C "${BUILDDIR}" + cp "${PROJDIR}/pkg/appimage/appimage.sh" "${BUILDDIR}/${PKGNAME}" + cd "${BUILDDIR}/${PKGNAME}" + sh appimage.sh +} + +if [ "${BUILDTYPE}" = 'snap' ]; then + build_snap +elif [ "${BUILDTYPE}" = 'flatpak' ]; then + build_flatpak +elif [ "${BUILDTYPE}" = 'appimage' ]; then + build_appimage +else + echo "sh $(basename "${0}") [snap|flatpak|appimage]" + exit 1 +fi diff --git a/scripts/scripts.pri b/scripts/scripts.pri index 47e7b4bf65cbaf037ad2933caa803bbe7b7582d6..a4a1c60eae14a275504996188ce7cff0e6b8853f 100644 --- a/scripts/scripts.pri +++ b/scripts/scripts.pri @@ -1 +1,4 @@ -DISTFILES += $${PWD}/import.sh +DISTFILES += \ + $${PWD}/build-docker.sh \ + $${PWD}/build.sh \ + $${PWD}/import.sh