diff --git a/.gitignore b/.gitignore index 1316742b3cd061754803991b0233865f78c9b37e..f474670489a0948c11b3be725fc8729685fb1cbe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ *.pro.user build_*/ -lib/qtlib/ +lib/qtil/ diff --git a/.travis.yml b/.travis.yml index 5e61be49cddbb7ae96d7e586ea53285179abed00..a4977a181975d5170e7e3f926951f236c5721ffa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,7 @@ services: branches: only: - master + - /^release\-.+/ script: - mntdir='/mnt/ocs-url' @@ -14,5 +15,6 @@ script: - docker run --rm -v $(pwd):${mntdir} opensuse:42.1 /bin/bash -c "sh ${mntdir}/scripts/build-docker.sh opensuse" - docker run --rm -v $(pwd):${mntdir} base/archlinux:latest /bin/bash -c "sh ${mntdir}/scripts/build-docker.sh archlinux" #- 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} --cap-add SYS_ADMIN --device /dev/fuse ubuntu:14.04 /bin/bash -c "sh ${mntdir}/scripts/build-docker.sh appimage" + #- 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:14.04 /bin/bash -c "sh ${mntdir}/scripts/build-docker.sh appimage" - cat transfer.log diff --git a/README.md b/README.md index 2dc932994566d3a8cd6975743db9997e6748e9b2..791cd661d146ca173380935418cf86f3254af887 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ An install helper program for items served on OpenCollaborationServices (OCS). -Copyright: 2016-2017, Opendesktop.org +Copyright: 2016-2018, Opendesktop.org License: GPL-3+ diff --git a/app/configs/install_types.json b/app/configs/install_types.json index 87e9b33e2b5a9a07d4f99c8b91a64a85854b5309..182a98a1c62f870944e8442b37a00667da4073ec 100644 --- a/app/configs/install_types.json +++ b/app/configs/install_types.json @@ -1,6 +1,6 @@ { "bin": { - "name": "Softwares", + "name": "Software", "destination": "$HOME/.local/bin", "generic_destination": "$APP_DATA/bin" }, diff --git a/app/src/handlers/confighandler.cpp b/app/src/handlers/confighandler.cpp index b0c4964651174fda83b733e4eb501cbca9f60078..4463b50179f32c7ceb01f0a0e6bcefc8beaa8a63 100644 --- a/app/src/handlers/confighandler.cpp +++ b/app/src/handlers/confighandler.cpp @@ -3,12 +3,12 @@ #include <QStringList> #include <QStandardPaths> -#include "qtlib_dir.h" +#include "qtil_dir.h" ConfigHandler::ConfigHandler(QObject *parent) : QObject(parent) { - appConfig_ = qtlib::Config(":/configs"); + appConfig_ = qtil::Config(":/configs"); importAppConfigApplication(); importAppConfigInstallTypes(); } @@ -55,7 +55,7 @@ QString ConfigHandler::convertPathString(const QString &path) const { auto newPath = path; if (newPath.contains("$HOME")) { - newPath.replace("$HOME", qtlib::Dir::homePath()); + newPath.replace("$HOME", qtil::Dir::homePath()); } else if (newPath.contains("$XDG_DOCUMENTS_DIR")) { newPath.replace("$XDG_DOCUMENTS_DIR", QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)); @@ -73,13 +73,13 @@ QString ConfigHandler::convertPathString(const QString &path) const newPath.replace("$XDG_VIDEOS_DIR", QStandardPaths::writableLocation(QStandardPaths::MoviesLocation)); } else if (newPath.contains("$XDG_DATA_HOME")) { - newPath.replace("$XDG_DATA_HOME", qtlib::Dir::genericDataPath()); + newPath.replace("$XDG_DATA_HOME", qtil::Dir::genericDataPath()); } else if (newPath.contains("$KDEHOME")) { - newPath.replace("$KDEHOME", qtlib::Dir::kdehomePath()); + newPath.replace("$KDEHOME", qtil::Dir::kdehomePath()); } else if (newPath.contains("$APP_DATA")) { - newPath.replace("$APP_DATA", qtlib::Dir::genericDataPath() + "/" + getAppConfigApplication()["id"].toString()); + newPath.replace("$APP_DATA", qtil::Dir::genericDataPath() + "/" + getAppConfigApplication()["id"].toString()); } return newPath; } diff --git a/app/src/handlers/confighandler.h b/app/src/handlers/confighandler.h index 07c695136172eb52c5ffe7bbdd067cb10cb6ad0e..3e7ab4db9440b855d95fa133b1c6ccd160688b99 100644 --- a/app/src/handlers/confighandler.h +++ b/app/src/handlers/confighandler.h @@ -3,7 +3,7 @@ #include <QObject> #include <QJsonObject> -#include "qtlib_config.h" +#include "qtil_config.h" class ConfigHandler : public QObject { @@ -21,7 +21,7 @@ private: void importAppConfigInstallTypes(); QString convertPathString(const QString &path) const; - qtlib::Config appConfig_; + qtil::Config appConfig_; QJsonObject appConfigApplication_; QJsonObject appConfigInstallTypes_; }; diff --git a/app/src/handlers/ocsurlhandler.cpp b/app/src/handlers/ocsurlhandler.cpp index 29996c0b8c8e35348659876edb8520d8bd897384..f94dc5b09350945e174bcd1d1b57d25fde9a9a4a 100644 --- a/app/src/handlers/ocsurlhandler.cpp +++ b/app/src/handlers/ocsurlhandler.cpp @@ -3,10 +3,10 @@ #include <QUrlQuery> #include <QDesktopServices> -#include "qtlib_file.h" -#include "qtlib_dir.h" -#include "qtlib_networkresource.h" -#include "qtlib_package.h" +#include "qtil_file.h" +#include "qtil_dir.h" +#include "qtil_networkresource.h" +#include "qtil_package.h" #include "handlers/confighandler.h" @@ -40,9 +40,9 @@ void OcsUrlHandler::process() } auto url = metadata_["url"].toString(); - auto *resource = new qtlib::NetworkResource(url, QUrl(url), true, this); - connect(resource, &qtlib::NetworkResource::downloadProgress, this, &OcsUrlHandler::downloadProgress); - connect(resource, &qtlib::NetworkResource::finished, this, &OcsUrlHandler::networkResourceFinished); + auto *resource = new qtil::NetworkResource(url, QUrl(url), true, this); + connect(resource, &qtil::NetworkResource::downloadProgress, this, &OcsUrlHandler::downloadProgress); + connect(resource, &qtil::NetworkResource::finished, this, &OcsUrlHandler::networkResourceFinished); resource->get(); emit started(); } @@ -72,7 +72,7 @@ void OcsUrlHandler::openDestination() const QDesktopServices::openUrl(QUrl("file://" + configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString())); } -void OcsUrlHandler::networkResourceFinished(qtlib::NetworkResource *resource) +void OcsUrlHandler::networkResourceFinished(qtil::NetworkResource *resource) { if (!resource->isFinishedWithNoError()) { QJsonObject result; @@ -127,14 +127,14 @@ void OcsUrlHandler::parse() } } -void OcsUrlHandler::saveDownloadedFile(qtlib::NetworkResource *resource) +void OcsUrlHandler::saveDownloadedFile(qtil::NetworkResource *resource) { QJsonObject result; auto type = metadata_["type"].toString(); - qtlib::Dir destDir(configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString()); + qtil::Dir destDir(configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString()); destDir.make(); - qtlib::File destFile(destDir.path() + "/" + metadata_["filename"].toString()); + qtil::File destFile(destDir.path() + "/" + metadata_["filename"].toString()); if (!resource->saveData(destFile.path())) { result["status"] = QString("error_save"); @@ -151,11 +151,11 @@ void OcsUrlHandler::saveDownloadedFile(qtlib::NetworkResource *resource) resource->deleteLater(); } -void OcsUrlHandler::installDownloadedFile(qtlib::NetworkResource *resource) +void OcsUrlHandler::installDownloadedFile(qtil::NetworkResource *resource) { QJsonObject result; - qtlib::File tempFile(qtlib::Dir::tempPath() + "/" + metadata_["filename"].toString()); + qtil::File tempFile(qtil::Dir::tempPath() + "/" + metadata_["filename"].toString()); if (!resource->saveData(tempFile.path())) { result["status"] = QString("error_save"); @@ -165,11 +165,11 @@ void OcsUrlHandler::installDownloadedFile(qtlib::NetworkResource *resource) return; } - qtlib::Package package(tempFile.path()); + qtil::Package package(tempFile.path()); auto type = metadata_["type"].toString(); - qtlib::Dir destDir(configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString()); + qtil::Dir destDir(configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString()); destDir.make(); - qtlib::File destFile(destDir.path() + "/" + metadata_["filename"].toString()); + qtil::File destFile(destDir.path() + "/" + metadata_["filename"].toString()); if (type == "bin" && package.installAsProgram(destFile.path())) { diff --git a/app/src/handlers/ocsurlhandler.h b/app/src/handlers/ocsurlhandler.h index 38ed279847c1c9791f1025604bc9780203a49bab..f2b9ebd355aeb6ff199e57828c645c3a3787198b 100644 --- a/app/src/handlers/ocsurlhandler.h +++ b/app/src/handlers/ocsurlhandler.h @@ -3,7 +3,7 @@ #include <QObject> #include <QJsonObject> -namespace qtlib { +namespace qtil { class NetworkResource; } @@ -31,12 +31,12 @@ public slots: void openDestination() const; private slots: - void networkResourceFinished(qtlib::NetworkResource *resource); + void networkResourceFinished(qtil::NetworkResource *resource); private: void parse(); - void saveDownloadedFile(qtlib::NetworkResource *resource); - void installDownloadedFile(qtlib::NetworkResource *resource); + void saveDownloadedFile(qtil::NetworkResource *resource); + void installDownloadedFile(qtil::NetworkResource *resource); QString ocsUrl_; ConfigHandler *configHandler_; diff --git a/lib/lib.pri b/lib/lib.pri index 5343ea67e320f54da6851de3969e590c456d432d..935a6b22ae6efe513973b1299a7fbe36a51b92fa 100644 --- a/lib/lib.pri +++ b/lib/lib.pri @@ -1 +1 @@ -include($${PWD}/qtlib/qtlib.pri) +include($${PWD}/qtil/qtil.pri) diff --git a/ocs-url.pro b/ocs-url.pro index 7a803e1ee31d577c9fdebb39d7f4e340b373c223..d2209dd0aa3f3ffbe3228c77958c3f8d0a7fb05a 100644 --- a/ocs-url.pro +++ b/ocs-url.pro @@ -1,5 +1,3 @@ -message("Please execute scripts/import.sh for build dependencies") - TARGET = ocs-url TEMPLATE = app diff --git a/pkg/appimage/appimage-desktopintegration_ocs-url b/pkg/appimage/appimage-desktopintegration_ocs-url deleted file mode 100755 index 7fe9f5e9a07a978c0e64cb9ac7d82daef70c4eba..0000000000000000000000000000000000000000 --- a/pkg/appimage/appimage-desktopintegration_ocs-url +++ /dev/null @@ -1,208 +0,0 @@ -#!/bin/bash - -# The purpose of this script is to provide lightweight desktop integration -# into the host system without special help from the host system. -# If you want to have fuller and automatic desktop integration, you might -# consider to use the optional appimaged daemon instead. - -# Exit on errors -set -e - -# Be verbose if $DEBUG=1 is set -if [ ! -z "$DEBUG" ] ; then - env - set -x -fi - -THIS="$0" -args=("$@") # http://stackoverflow.com/questions/3190818/ -NUMBER_OF_ARGS="$#" - -# Please do not change $VENDORPREFIX as it will allow for desktop files -# belonging to AppImages to be recognized by future AppImageKit components -# such as desktop integration daemons -VENDORPREFIX=appimagekit - -APPDIR="$(dirname "$(readlink -f "${THIS}")")" - -BIN="${APPDIR}/ocs-url" -export PATH="${APPDIR}/usr/bin:$PATH" - -trap atexit EXIT - -# Note that the following handles 0, 1 or more arguments (file paths) -# which can include blanks but uses a bashism; can the same be achieved -# in POSIX-shell? (FIXME) -# http://stackoverflow.com/questions/3190818 -atexit() -{ -if [ $NUMBER_OF_ARGS -eq 0 ] ; then - exec "${BIN}" -else - exec "${BIN}" "${args[@]}" -fi -} - -error() -{ - if [ -x /usr/bin/zenity ] ; then - LD_LIBRARY_PATH="" zenity --error --text "${1}" 2>/dev/null - elif [ -x /usr/bin/kdialog ] ; then - LD_LIBRARY_PATH="" kdialog --msgbox "${1}" 2>/dev/null - elif [ -x /usr/bin/Xdialog ] ; then - LD_LIBRARY_PATH="" Xdialog --msgbox "${1}" 2>/dev/null - else - echo "${1}" - fi - exit 1 -} - -yesno() -{ - TITLE=$1 - TEXT=$2 - if [ -x /usr/bin/zenity ] ; then - LD_LIBRARY_PATH="" zenity --question --title="$TITLE" --text="$TEXT" 2>/dev/null || exit 0 - elif [ -x /usr/bin/kdialog ] ; then - LD_LIBRARY_PATH="" kdialog --caption "" --title "$TITLE" -yesno "$TEXT" || exit 0 - elif [ -x /usr/bin/Xdialog ] ; then - LD_LIBRARY_PATH="" Xdialog --title "$TITLE" --clear --yesno "$TEXT" 10 80 || exit 0 - else - echo "zenity, kdialog, Xdialog missing. Skipping ${THIS}." - exit 0 - fi -} - -check_prevent() -{ - FILE=$1 - if [ -e "$FILE" ] ; then - exit 0 - fi -} - -# Exit immediately of one of these files is present -# (e.g., because the desktop environment wants to handle desktop integration itself) -check_prevent "$HOME/.local/share/$VENDORPREFIX/no_desktopintegration" -check_prevent "/usr/share/$VENDORPREFIX/no_desktopintegration" -check_prevent "/etc/$VENDORPREFIX/no_desktopintegration" - -# Exit immediately if appimaged is running -pidof appimaged 2>/dev/null && exit 0 - -# Exit immediately if $DESKTOPINTEGRATION is not empty -if [ ! -z "$DESKTOPINTEGRATION" ] ; then - exit 0 -fi - -check_dep() -{ - DEP=$1 - if [ -z $(which $DEP) ] ; then - echo "$DEP is missing. Skipping ${THIS}." - exit 0 - fi -} - -DIRNAME="$APPDIR" - -# Check whether dependencies are present in base system (we do not bundle these) -# http://cgit.freedesktop.org/xdg/desktop-file-utils/ -check_dep desktop-file-validate -check_dep update-desktop-database -check_dep desktop-file-install -check_dep xdg-icon-resource -check_dep xdg-mime -check_dep xdg-desktop-menu - -DESKTOPFILE=$(find "$APPDIR" -maxdepth 1 -name "*.desktop" | head -n 1) -# echo "$DESKTOPFILE" -DESKTOPFILE_NAME=$(basename "${DESKTOPFILE}") - -if [ ! -f "$DESKTOPFILE" ] ; then - echo "Desktop file is missing. Please run ${THIS} from within an AppImage." - exit 0 -fi - -if [ -z "$APPIMAGE" ] ; then - APPIMAGE="$APPDIR/AppRun" - # Not running from within an AppImage; hence using the AppRun for Exec= -fi - -ABS_APPIMAGE=$(readlink -e "$APPIMAGE") -ICONFILE="$APPDIR/.DirIcon" - -# $XDG_DATA_DIRS contains the default paths /usr/local/share:/usr/share -# desktop file has to be installed in an applications subdirectory -# of one of the $XDG_DATA_DIRS components -if [ -z "$XDG_DATA_DIRS" ] ; then - XDG_DATA_DIRS=/usr/local/share:/usr/share -fi - -# Determine where the desktop file should be installed -if [[ $EUID -ne 0 ]]; then - DESTINATION_DIR_DESKTOP="$HOME/.local/share/applications" - SYSTEM_WIDE="" -else - # TODO: Check $XDG_DATA_DIRS - DESTINATION_DIR_DESKTOP="/usr/local/share/applications" - SYSTEM_WIDE="--mode system" # for xdg-mime and xdg-icon-resource -fi - -# Check if the desktop file is already there -# and if so, whether it points to the same AppImage -if [ -e "$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME" ] ; then - # echo "$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME already there" - EXEC=$(grep "^Exec=" "$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME" | head -n 1 | cut -d " " -f 1) - # echo $EXEC - if [ "Exec=\"$APPIMAGE\"" == "$EXEC" ] ; then - exit 0 - fi -fi - -# We ask the user only if we have found no reason to skip until here -if [ -z "$SKIP" ] ; then - yesno "Install" "Would you like to integrate $APPIMAGE with your system?\n\nThis will add it to your applications menu and install icons.\nIf you don't do this you can still launch the application by double-clicking on the AppImage." -fi - -APP=$(echo "$DESKTOPFILE_NAME" | sed -e 's/.desktop//g') - -# If the user has agreed, rewrite and install the desktop file, and the MIME information -if [ -z "$SKIP" ] ; then - # desktop-file-install is supposed to install .desktop files to the user's - # applications directory when run as a non-root user, - # and to /usr/share/applications if run as root - # but that does not really work for me... - # - # For Exec we must use quotes - # For TryExec quotes is not supported, so, space must be replaced to \s - # https://askubuntu.com/questions/175404/how-to-add-space-to-exec-path-in-a-thumbnailer-descrption/175567 - desktop-file-install --rebuild-mime-info-cache \ - --vendor=$VENDORPREFIX --set-key=Exec --set-value="\"${APPIMAGE}\" %u" \ - --set-key=X-AppImage-Comment --set-value="Generated by ${THIS}" \ - --set-icon="$ICONFILE" --set-key=TryExec --set-value=${APPIMAGE// /\\s} "$DESKTOPFILE" \ - --dir "$DESTINATION_DIR_DESKTOP" - chmod a+x "$DESTINATION_DIR_DESKTOP/"* - RESOURCE_NAME=$(echo "$VENDORPREFIX-$DESKTOPFILE_NAME" | sed -e 's/.desktop//g') - # echo $RESOURCE_NAME - - # Install the icon files for the application; TODO: scalable - ICONS=$(find "${APPDIR}/usr/share/icons/" -wholename "*/apps/${APP}.png" 2>/dev/null || true) - for ICON in $ICONS ; do - ICON_SIZE=$(echo "${ICON}" | rev | cut -d "/" -f 3 | rev | cut -d "x" -f 1) - xdg-icon-resource install --context apps --size ${ICON_SIZE} "${ICON}" "${RESOURCE_NAME}" - done - - # Install mime type - find "${APPDIR}/usr/share/mime/" -type f -name *xml -exec xdg-mime install $SYSTEM_WIDE --novendor {} \; 2>/dev/null || true - - # Install the icon files for the mime type; TODO: scalable - ICONS=$(find "${APPDIR}/usr/share/icons/" -wholename "*/mimetypes/*.png" 2>/dev/null || true) - for ICON in $ICONS ; do - ICON_SIZE=$(echo "${ICON}" | rev | cut -d "/" -f 3 | rev | cut -d "x" -f 1) - xdg-icon-resource install --context mimetypes --size ${ICON_SIZE} "${ICON}" $(basename $ICON | sed -e 's/.png//g') - done - - xdg-desktop-menu forceupdate - gtk-update-icon-cache # for MIME -fi diff --git a/pkg/archlinux/PKGBUILD b/pkg/archlinux/PKGBUILD index 9a75c025dee6b4dd42c0d0d32241254c68c9a15f..e5ead658a4fb8037d7f8532377bc4cd27cf56a02 100644 --- a/pkg/archlinux/PKGBUILD +++ b/pkg/archlinux/PKGBUILD @@ -16,7 +16,7 @@ md5sums=() #autofill using updpkgsums prepare() { #cd "${pkgname}-release-${pkgver}" cd "${pkgname}" - sh scripts/import.sh + sh scripts/prepare.sh } build() { diff --git a/pkg/fedora/ocs-url.spec b/pkg/fedora/ocs-url.spec index 8203306c7578670a2f823ae4e6435f5b55edf3a5..093bfaa1fe9c316e73108856df676d5995f40adc 100644 --- a/pkg/fedora/ocs-url.spec +++ b/pkg/fedora/ocs-url.spec @@ -18,7 +18,7 @@ An install helper program for items served on OpenCollaborationServices (OCS). %prep #%%autosetup -n %{name}-release-%{version} %autosetup -n %{name} -sh scripts/import.sh +sh scripts/prepare.sh %build %define debug_package %{nil} diff --git a/pkg/opensuse/ocs-url.spec b/pkg/opensuse/ocs-url.spec index 74d89d799bec9274f523a612b67e73a7af0d8e49..22c07c56f76116bb43287a55e29acdb098da94c8 100644 --- a/pkg/opensuse/ocs-url.spec +++ b/pkg/opensuse/ocs-url.spec @@ -18,7 +18,7 @@ An install helper program for items served on OpenCollaborationServices (OCS). %prep #%%autosetup -n %{name}-release-%{version} %autosetup -n %{name} -sh scripts/import.sh +sh scripts/prepare.sh %build %define debug_package %{nil} diff --git a/pkg/pkg.pri b/pkg/pkg.pri index 8cf464f917cbede180ea0ed3b47e0c9cf3af2474..4f03e9851c762173174d92ca4a2d7e91db28533e 100644 --- a/pkg/pkg.pri +++ b/pkg/pkg.pri @@ -7,7 +7,4 @@ DISTFILES += \ $${PWD}/ubuntu/debian/ocs-url.install \ $${PWD}/fedora/ocs-url.spec \ $${PWD}/opensuse/ocs-url.spec \ - $${PWD}/archlinux/PKGBUILD \ - $${PWD}/snap/snapcraft.yaml \ - $${PWD}/snap/snap/gui/ocs-url.desktop \ - $${PWD}/appimage/appimage-desktopintegration_ocs-url + $${PWD}/archlinux/PKGBUILD diff --git a/pkg/snap/snap/gui/ocs-url.desktop b/pkg/snap/snap/gui/ocs-url.desktop deleted file mode 100644 index f0b1b9c5d6b16e05f07a6f01beb76ed3c7b89509..0000000000000000000000000000000000000000 --- a/pkg/snap/snap/gui/ocs-url.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Name=ocs-url -Exec=ocs-url.ocs-url %u -Icon=${SNAP}/usr/share/icons/hicolor/scalable/apps/ocs-url.svg -Type=Application -Terminal=false -NoDisplay=true -Categories=Network;Utility; -MimeType=x-scheme-handler/ocs;x-scheme-handler/ocss;x-scheme-handler/xdg;x-scheme-handler/xdgs; diff --git a/pkg/snap/snapcraft.yaml b/pkg/snap/snapcraft.yaml deleted file mode 100644 index 149514f98279ca9bf3aba8611cb837d8cfe0c175..0000000000000000000000000000000000000000 --- a/pkg/snap/snapcraft.yaml +++ /dev/null @@ -1,42 +0,0 @@ -name: ocs-url -version: '0.0.0' -summary: OCS-URL -description: | - An install helper program for items served on OpenCollaborationServices (OCS). - -grade: devel -confinement: strict - -icon: desktop/ocs-url.svg - -parts: - ocs-url: - prepare: | - sh scripts/import.sh - plugin: qmake - source: ./ - qt-version: qt5 - options: - - PREFIX="/usr" - build-packages: - - build-essential - - qt5-default - - libqt5svg5-dev - - qtdeclarative5-dev - - git - - snapcraft - stage-packages: - - libqt5svg5 - - qml-module-qtquick-controls - after: - - desktop-qt5 - -apps: - ocs-url: - command: usr/bin/ocs-url - plugs: - - home - - network - - opengl - - x11 - - unity7 diff --git a/pkg/ubuntu/debian/rules b/pkg/ubuntu/debian/rules index 33be3a90e2248e692edaeba54bce693fbf795b02..1443dc99deb75afd069d3162bd574f42ea82ac2b 100755 --- a/pkg/ubuntu/debian/rules +++ b/pkg/ubuntu/debian/rules @@ -4,7 +4,7 @@ dh $@ override_dh_auto_configure: - sh scripts/import.sh + sh scripts/prepare.sh qmake PREFIX="/usr" override_dh_auto_install: diff --git a/scripts/build-docker.sh b/scripts/build-docker.sh index e459849541428e4fbdf3e8ec9283d647981864f7..8a6f7c199c4052e3944ffd8a9e1f38d2fdd5bc5f 100644 --- a/scripts/build-docker.sh +++ b/scripts/build-docker.sh @@ -1,9 +1,5 @@ #!/bin/bash -################################################################################ -# This is wrapper script for build.sh use from inside docker container -################################################################################ - PKGNAME='ocs-url' PKGUSER='pkgbuilder' @@ -97,37 +93,15 @@ build_archlinux() { } build_snap() { - # docker-image: ubuntu:16.04 - apt update -qq - apt -y install build-essential qt5-default libqt5svg5-dev qtdeclarative5-dev - apt -y install git snapcraft - apt -y install curl - - useradd -m ${PKGUSER} - export HOME="/home/${PKGUSER}" - chown -R ${PKGUSER}:${PKGUSER} "${PROJDIR}" - - su -c "sh "${BUILDSCRIPT}" ${BUILDTYPE}" ${PKGUSER} + echo 'Not implemented yet' +} - transfer_file "$(find "${PROJDIR}/build_"*${BUILDTYPE} -type f -name "${PKGNAME}*.snap")" +build_flatpak() { + echo 'Not implemented yet' } build_appimage() { - # docker-image: ubuntu:14.04 - apt update -qq - apt -y install build-essential qt5-default libqt5svg5-dev qtdeclarative5-dev - apt -y install git fuse zsync desktop-file-utils - apt -y install curl - - modprobe fuse - - 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")" + echo 'Not implemented yet' } if [ "${BUILDTYPE}" = 'ubuntu' ]; then @@ -140,9 +114,11 @@ elif [ "${BUILDTYPE}" = 'archlinux' ]; then build_archlinux elif [ "${BUILDTYPE}" = 'snap' ]; then build_snap +elif [ "${BUILDTYPE}" = 'flatpak' ]; then + build_flatpak elif [ "${BUILDTYPE}" = 'appimage' ]; then build_appimage else - echo "sh $(basename "${0}") [ubuntu|fedora|archlinux|snap|appimage]" + echo "sh $(basename "${0}") [ubuntu|fedora|archlinux|snap|flatpak|appimage]" exit 1 fi diff --git a/scripts/build.sh b/scripts/build.sh index c14b29473a5979b905336d565510dc54d7c712e9..b51ce138fe0669935f90a3fbf0781c45440b7ff4 100644 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,9 +1,5 @@ #!/bin/bash -################################################################################ -# This is utility script to build distribution packages -################################################################################ - PKGNAME='ocs-url' BUILDTYPE='' @@ -71,48 +67,15 @@ build_archlinux() { } build_snap() { - cd "${PROJDIR}" - mkdir -p "${BUILDDIR}" - export_srcarchive "${SRCARCHIVE}" + echo 'Not implemented yet' +} - tar -xzvf "${SRCARCHIVE}" -C "${BUILDDIR}" - cp "${PROJDIR}/pkg/snap/snapcraft.yaml" "${BUILDDIR}/${PKGNAME}" - cp -r "${PROJDIR}/pkg/snap/snap" "${BUILDDIR}/${PKGNAME}" - cd "${BUILDDIR}/${PKGNAME}" - snapcraft +build_flatpak() { + echo 'Not implemented yet' } build_appimage() { - cd "${PROJDIR}" - mkdir -p "${BUILDDIR}" - export_srcarchive "${SRCARCHIVE}" - - tar -xzvf "${SRCARCHIVE}" -C "${BUILDDIR}" - cd "${BUILDDIR}/${PKGNAME}" - sh scripts/import.sh - qmake - make - strip "${PKGNAME}" - - cd "${BUILDDIR}" - - # 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 - chmod 755 linuxdeployqt - - mkdir -p "${BUILDDIR}/${PKGNAME}.AppDir/usr/bin" - install -m 755 -p "${BUILDDIR}/${PKGNAME}/${PKGNAME}" "${BUILDDIR}/${PKGNAME}.AppDir/${PKGNAME}" - install -m 644 -p "${BUILDDIR}/${PKGNAME}/desktop/${PKGNAME}.desktop" "${BUILDDIR}/${PKGNAME}.AppDir/${PKGNAME}.desktop" - install -m 644 -p "${BUILDDIR}/${PKGNAME}/desktop/${PKGNAME}.svg" "${BUILDDIR}/${PKGNAME}.AppDir/${PKGNAME}.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/${PKGNAME}" -qmldir="${BUILDDIR}/${PKGNAME}/app/qml" -verbose=2 -bundle-non-qt-libs # https://github.com/probonopd/linuxdeployqt/issues/25 - ./linuxdeployqt "${BUILDDIR}/${PKGNAME}.AppDir/${PKGNAME}" -qmldir="${BUILDDIR}/${PKGNAME}/app/qml" -verbose=2 -bundle-non-qt-libs # twice because of #25 - rm "${BUILDDIR}/${PKGNAME}.AppDir/AppRun" - install -m 755 -p "${BUILDDIR}/${PKGNAME}/pkg/appimage/appimage-desktopintegration_${PKGNAME}" "${BUILDDIR}/${PKGNAME}.AppDir/AppRun" - ./linuxdeployqt --appimage-extract - ./squashfs-root/usr/bin/appimagetool "${BUILDDIR}/${PKGNAME}.AppDir" + echo 'Not implemented yet' } if [ "${BUILDTYPE}" = 'ubuntu' ]; then @@ -125,9 +88,11 @@ elif [ "${BUILDTYPE}" = 'archlinux' ]; then build_archlinux elif [ "${BUILDTYPE}" = 'snap' ]; then build_snap +elif [ "${BUILDTYPE}" = 'flatpak' ]; then + build_flatpak elif [ "${BUILDTYPE}" = 'appimage' ]; then build_appimage else - echo "sh $(basename "${0}") [ubuntu|fedora|archlinux|snap|appimage]" + echo "sh $(basename "${0}") [ubuntu|fedora|archlinux|snap|flatpak|appimage]" exit 1 fi diff --git a/scripts/import.sh b/scripts/import.sh deleted file mode 100644 index 8fd990fb00c40f44aa290fc4138b94f14e0a6236..0000000000000000000000000000000000000000 --- a/scripts/import.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -################################################################################ -# This is utility script to import build dependencies -################################################################################ - -PROJDIR="$(cd "$(dirname "${0}")/../" && pwd)" - -if [ ! -d "${PROJDIR}/lib/qtlib" ]; then - git clone https://github.com/akiraohgaki/qtlib.git -b release-0.2.0 --single-branch --depth=1 "${PROJDIR}/lib/qtlib" -fi diff --git a/scripts/prepare.sh b/scripts/prepare.sh new file mode 100644 index 0000000000000000000000000000000000000000..b97eb7a293709ee3e23d12f486cb4d44b6dfebc8 --- /dev/null +++ b/scripts/prepare.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +PROJDIR="$(cd "$(dirname "${0}")/../" && pwd)" + +if [ ! -d "${PROJDIR}/lib/qtil" ]; then + git clone https://github.com/akiraohgaki/qtil.git -b release-0.3.0 --single-branch --depth=1 "${PROJDIR}/lib/qtil" +fi diff --git a/scripts/scripts.pri b/scripts/scripts.pri index a4a1c60eae14a275504996188ce7cff0e6b8853f..cffa148bd008ddfffec2f0f05d1057eb8496d54d 100644 --- a/scripts/scripts.pri +++ b/scripts/scripts.pri @@ -1,4 +1,4 @@ DISTFILES += \ $${PWD}/build-docker.sh \ $${PWD}/build.sh \ - $${PWD}/import.sh + $${PWD}/prepare.sh