diff --git a/appimage-template/MustBeUsedInMainJobFiles/Gemfile b/appimage-template/MustBeUsedInMainJobFiles/Gemfile new file mode 100644 index 0000000..dce0c35 --- /dev/null +++ b/appimage-template/MustBeUsedInMainJobFiles/Gemfile @@ -0,0 +1,43 @@ +source 'https://rubygems.org' + +gem 'aptly-api', '>= 0.5.0' +gem 'concurrent-ruby' +gem 'deep_merge', '~> 1.0' +gem 'docker-api', '~> 1.24' # Container.refresh! only introduced in 1.23 +gem 'gir_ffi' +gem 'git' +gem 'gitlab', + git: 'https://github.com/NARKOZ/gitlab', + branch: 'master' +gem 'insensitive_hash' +gem 'jenkins_api_client' +gem 'jenkins_junit_builder' +gem 'logger-colors' +gem 'mercurial-ruby' +gem 'net-ping', '< 2.0.0' +gem 'net-sftp' +gem 'net-ssh-gateway' +gem 'nokogiri' +gem 'oauth', '~> 0.4' +gem 'octokit' +gem 'releaseme', + git: 'https://anongit.kde.org/releaseme.git', + branch: 'master' +gem 'rugged' +gem 'rspec' +# Temporarily from git waiting for a release newer than 4.1.0. Once a newer +# version is available this can move up and drop the git paramaters. +# Also undo workaround in deploy_in_container.rake! +gem 'net-ssh', '<= 4.1.0', + git: 'https://github.com/net-ssh/net-ssh', + branch: 'master' + +# Git URI management +gem 'git_clone_url', '~> 2.0' +gem 'uri-ssh_git', '~> 2.0' + +# Test logging as junit (also used at runtime for linting) +gem 'ci_reporter_test_unit', + git: 'https://github.com/apachelogger/ci_reporter_test_unit', + branch: 'test-unit-3' +gem 'test-unit', '~> 3.0' diff --git a/appimage-template/MustBeUsedInMainJobFiles/JenkinsFile b/appimage-template/MustBeUsedInMainJobFiles/JenkinsFile new file mode 100644 index 0000000..622bbe3 --- /dev/null +++ b/appimage-template/MustBeUsedInMainJobFiles/JenkinsFile @@ -0,0 +1,73 @@ +#!groovy + +/* +The MIT License +Copyright (c) 2015-, CloudBees, Inc., and a number of other of contributors +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +node('linux') { + def WORKSPACE = pwd() + currentBuild.result = "SUCCESS" + properties([buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '5')), \ + [$class: 'GithubProjectProperty', displayName: '', projectUrlStr: 'https://github.com/appimage-packages/changeme/'], pipelineTriggers([cron('H H(0-2) * * *'), [$class: 'GitHubPushTrigger'], pollSCM('H/15 * * * *')])]) + withEnv(['PROJECT_NAME=changeme', + 'DOCKER_IMAGE=sgclark/trusty-qt59-kf5', + 'KF5=true']) { + try { + + stage( 'Checkout' ) { + checkout scm + checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: '*/master']], \ + browser: [$class: 'GithubWeb', repoUrl: ''], doGenerateSubmoduleConfigurations: false, \ + extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'tooling']], submoduleCfg: [], \ + userRemoteConfigs: [[url: 'https://github.com/blue-systems/pangea-tooling']]] + checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, \ + extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'changeme']], submoduleCfg: [], userRemoteConfigs: [[url: 'https://anongit.kde.org/changeme']]] + } + stage( 'Setup' ) { + sh 'echo $PATH' + sh 'eval "$(rbenv init -)" && rbenv local 2.3.1 && bundle install' + } + stage( 'Build' ) { + sh 'bundle exec ruby tooling/aci/contain.rb' + } + stage('Copy Artifacts') { + step([$class: 'S3BucketPublisher', consoleLogLevel: 'INFO', dontWaitForConcurrentBuildCompletion: false, entries: [[bucket: "ds9-apps/${JOB_NAME}", excludedFile: '', flatten: false, gzipFiles: false, keepForever: false, \ + managedArtifacts: false, noUploadOnFailure: true, selectedRegion: 'eu-central-1', showDirectlyInBrowser: true, \ + sourceFile: 'appimages/*.AppImage', storageClass: 'STANDARD', uploadFromSlave: true, useServerSideEncryption: false]], pluginFailureResultConstraint: 'UNSTABLE', profileName: 'ds9-apps', userMetadata: []]) + step([$class: 'S3BucketPublisher', consoleLogLevel: 'INFO', dontWaitForConcurrentBuildCompletion: false, entries: [[bucket: "ds9-apps/${JOB_NAME}", excludedFile: '', flatten: false, gzipFiles: false, keepForever: false, \ + managedArtifacts: false, noUploadOnFailure: true, selectedRegion: 'eu-central-1', showDirectlyInBrowser: true, \ + sourceFile: 'appimages/*.zsync', storageClass: 'STANDARD', uploadFromSlave: true, useServerSideEncryption: false]], pluginFailureResultConstraint: 'UNSTABLE', profileName: 'ds9-apps', userMetadata: []]) + } + stage('Tests') { + step([$class: 'LogParserPublisher', failBuildOnError: true, projectRulePath: 'tooling/aci/parser.rules', showGraphs: true, unstableOnWarning: true, useProjectRule: true]) + } + } + + + + + catch (err) { + + currentBuild.result = "FAILURE" + + echo "FAILURE" + throw err + } + } + } diff --git a/appimage-template/MustBeUsedInMainJobFiles/README.md b/appimage-template/MustBeUsedInMainJobFiles/README.md new file mode 100644 index 0000000..1cfd18f --- /dev/null +++ b/appimage-template/MustBeUsedInMainJobFiles/README.md @@ -0,0 +1,13 @@ +# changeme +Master branch: +[![Build Status](http://aci.pangea.pub/job/changeme-master-appimage/badge/icon)](http://aci.pangea.pub/job/changeme-master-appimage/) + +AppImage for KDE changeme + +changeme is a pronunciation trainer that helps improving and perfecting a learner's pronunciation skills for a foreign language. It provides courses with native speaker recordings for several training languages. The learner downloads those courses, selects a category of phrases to train, then starts with recording her/his own voice when speaking the phrases and comparing the results to the native speaker's recordings by listening to both. By adjusting and repeating the own pronunciation, the learner can improve his/her skill. + +https://edu.kde.org/changeme/ + +S3 Download: +master: +https://s3-eu-central-1.amazonaws.com/ds9-apps/index.html#!/changeme-master-appimage%2F diff --git a/appimage-template/MustBeUsedInMainJobFiles/Recipe.erb b/appimage-template/MustBeUsedInMainJobFiles/Recipe.erb new file mode 100644 index 0000000..405134d --- /dev/null +++ b/appimage-template/MustBeUsedInMainJobFiles/Recipe.erb @@ -0,0 +1,177 @@ +#!/bin/bash +# +# Copyright (C) 2016 Scarlett Clark +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) version 3, or any +# later version accepted by the membership of KDE e.V. (or its +# successor approved by the membership of KDE e.V.), which shall +# act as a proxy defined in Section 6 of version 3 of the license. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see . + +cd / +# Get helper functions +wget -q https://github.com/probonopd/AppImages/raw/master/functions.sh -O ./functions.sh +. ./functions.sh +rm -f functions.sh + +cd /app.Dir +if [ ! -d "./etc" ]; then + mkdir ./etc +fi +cp /etc/mime.types ./etc/ + +cp -rfv /usr/share/mime ./usr/share/ +update-mime-database ./usr/share/mime + +# Run appimage once with QT_DEBUG_PLUGINS=1 to add missing ( linuxdeployqt should install correctly) +if [ ! -d "./plugins" ]; then + mkdir ./plugins +fi +cp -r /opt/usr/plugins/{platforms,bearer,generic,wayland*} ./plugins/ +mv /opt/usr/plugins/kf5/* ./plugins/ || true + +#move arch libs into same dir as rest +mv /opt/usr/lib/x86_64-linux-gnu/pkgconfig/* /opt/usr/lib/pkgconfig/ +rmdir /opt/usr/lib/x86_64-linux-gnu/pkgconfig +mv /opt/usr/lib/x86_64-linux-gnu/cmake/* /opt/usr/lib/cmake/ +rmdir /opt/usr/lib/x86_64-linux-gnu/cmake +mv /opt/usr/lib/x86_64-linux-gnu/* /opt/usr/lib/ +if [ ! -d "./lib" ]; then + mkdir ./lib +fi +#Uncomment for sound +cp -rfv /opt/usr/lib/qt5/plugins/phonon4qt5_backend ./plugins/ +cp /opt/usr/bin/gst* ./usr/bin/ +rm -rfv /opt/usr/lib/gstreamer-1.0/include +if [ ! -d "./usr/lib" ]; then + mkdir ./usr/lib +fi +mv /opt/usr/lib/gstreamer-1.0/* ./usr/lib/ +cp /opt/usr/lib/pulseaudio/*.so* ./lib/ +mv /opt/usr/libexec/gstreamer-1.0/* ./usr/bin/ || true + +rsync -aruxv --progress /opt/usr/resources/ ./usr/bin/ +rsync -aruxv --progress /opt/usr/translations/ ./usr/bin/ +mv /app.Dir/lib/* /opt/usr/lib/ || true +mv /app.Dir/usr/lib/x86_64-linux-gnu/plugins/* ./plugins/ || true +rmdir /app.Dir/usr/lib/x86_64-linux-gnu/plugins || true +mv /app.Dir/usr/lib/x86_64-linux-gnu/* /opt/usr/lib/ || true +mv /opt/usr/libexec/Qt* ./usr/bin/ || true + +cd / +/bin/bash -x /in/appstream.sh +wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" +chmod +x linuxdeployqt-continuous-x86_64.AppImage +./linuxdeployqt-continuous-x86_64.AppImage --appimage-extract +mkdir appimagetool ; cd appimagetool +../squashfs-root/usr/bin/appimagetool --appimage-extract +cp -Rf squashfs-root/usr/bin/ ../squashfs-root/usr/ +cd .. +rm -rf appimagetool/squashfs-root/{linuxdeployqt.svg,linuxdeployqt.desktop,AppRun,.DirIcon} +mv squashfs-root/ linuxdeployqt +# Call it with linuxdeployqt/usr/bin/linuxdeployqt ... +unset LD_LIBRARY_PATH +linuxdeployqt/usr/bin/linuxdeployqt /app.Dir/usr/share/applications/org.kde.<%= binary %>.desktop -verbose=3 -bundle-non-qt-libs -qmldir=/opt/usr/qml + +glibc_needed +cd /app.Dir +#Cleanup +# We don't bundle the developer stuff +rm -rf ./usr/include || true +rm -rf ./usr/lib/cmake || true +rm -rf ./lib/cmake || true +rm -rf ./usr/lib/pkgconfig || true +rm -rf ./usr/share/ECM/ || true +rm -rf ./usr/share/gettext || true +rm -rf ./usr/share/pkgconfig || true +rm -rf ./usr/mkspecs/ || true +rm -rf ./usr/gettext-* || true +rm -rf ./usr/autoconf-* || true +rm -rf ./usr/automake-* || true +rm -rf ./usr/libtool-* || true +rm -rf ./libexec || true +rm -rf ./usr/share/cmake-3.8 || true +rm -rf ./usr/share/man || true +rm -rf ./usr/share/doc/ECM || true +rm -rf ./usr/share/doc/libdbusmenu-qt5-doc || true +rm -rf ./usr/share/gtk-doc || true +rm -rf ./usr/share/aclocal || true +rm -rf ./usr/share/bash-completion || true +rm -rf ./usr/share/common-lisp || true +rm -rf ./usr/share/cups || true +rm -rf ./usr/share/doc/{cups,gettext,gnupg,libasprintf,pcre} || true +rm -rf ./usr/share/gir-1.0 || true +rm -rf ./usr/share/gnupg || true +rm -rf ./usr/share/gobject-introspection-1.0 || true +rm -rf ./usr/share/util-macros || true + +# Many assets are not needed... especially not twice (icons are rcc packaged) +rm -rf usr/share/wallpapers +rm -rf usr/share/icons/breeze_cursors +rm -rf usr/share/icons/Breeze_Snow +rm -rf usr/share/icons/breeze/{places,mimetypes,devices,apps,applets,actions,status,emotes,emblems} +rm -rf usr/share/icons/breeze-dark/{places,mimetypes,devices,apps,applets,actions,status,emotes,emblems} +rm -rf usr/share/doc +rm -rf usr/share/emoticons + +find . -name '*.a' -exec rm {} \; +find . -type f -executable -exec strip {} \; +find . -type f -exec file {} \; | grep "not stripped" + +#Add back libkrb5 +cp /usr/lib/x86_64-linux-gnu/libkrb5* ./lib/ + +cd /source/ +rm -rfv appimage-exec-wrapper || true +git clone git://anongit.kde.org/scratch/brauch/appimage-exec-wrapper +cd /source//appimage-exec-wrapper/ +make clean +make +cp -v exec.so /app.Dir//exec_wrapper.so +rm -rfv /app/src/appimage-exec-wrapper + +cd /app.Dir/ +cp /app.Dir/usr/share/icons/hicolor/48x48/apps/<%= binary %>.png . + +rm AppRun +#Create AppRun +cat > AppRun << EOF +#!/bin/bash +DIR="\`dirname \"\$0\"\`" +HERE="\`( cd \"\$DIR\" && pwd )\`" +export LD_PRELOAD=\$HERE/exec_wrapper.so +export QML2_IMPORT_PATH=\$HERE/qml +export QT_PLUGIN_PATH=\$HERE/plugins +export GRANTLEE_PLUGIN_PATH=\$HERE/plugins +export PATH=\$HERE/usr/bin/:\$HERE/usr/sbin/:\$HERE/usr/games/:\$HERE/bin/:\$HERE/sbin/:\$PATH +export LD_LIBRARY_PATH=\$HERE/usr/lib/:\$HERE/usr/lib/x86_64-linux-gnu/:\$HERE/usr/lib64/:\$HERE/lib/:\$HERE/lib/x86_64-linux-gnu/:\$HERE/lib64/:\$LD_LIBRARY_PATH +export XDG_DATA_DIRS=\$HERE/usr/share:\$HOME/.local/share:\$HERE/share:/usr/local/share/:/usr/share:$XDG_DATA_DIRS +export XDG_DATA_HOME=\$HOME/.local/share +export XDG_CONFIG_DIRS=\$HERE/.config:\$HERE/etc/xdg:\$XDG_CONFIG_DIRS +export KDE_FORK_SLAVES=1 +export KF5_LIBEXEC_DIR=\$HERE/usr/bin +export GST_PLUGIN_PATH=\$HERE/usr/lib +export GST_PLUGIN_SCANNER=\$HERE/usr/bin + +<%= binary %> $@ + +EOF +chmod +x AppRun + +cd ~ + +#Appstream support for appimagetool +rm -rfv /source/* + +#Re set LD_LIBRARY_PATH +export LD_LIBRARY_PATH=/opt/usr/lib:/opt/usr/lib/x86_64-linux-gnu:/usr/lib:/usr/lib64:/lib diff --git a/appimage-template/MustBeUsedInMainJobFiles/appstream.sh b/appimage-template/MustBeUsedInMainJobFiles/appstream.sh new file mode 100644 index 0000000..15ce72f --- /dev/null +++ b/appimage-template/MustBeUsedInMainJobFiles/appstream.sh @@ -0,0 +1,5 @@ +#!/bin/bash +apt-get -y install software-properties-common libyaml-dev libstemmer-dev itstool +add-apt-repository -y ppa:jonathonf/gtk3.18 && apt-get update && apt-get -y install libglib2.0-dev && add-apt-repository -y -r ppa:jonathonf/gtk3.18 +git clone https://github.com/ximion/appstream +cd appstream && mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DQT=ON ../ && make && make install && rm -rfv /appstream diff --git a/appimage-template/MustBeUsedInMainJobFiles/data/metadata.yaml b/appimage-template/MustBeUsedInMainJobFiles/data/metadata.yaml new file mode 100644 index 0000000..61d581c --- /dev/null +++ b/appimage-template/MustBeUsedInMainJobFiles/data/metadata.yaml @@ -0,0 +1,13 @@ +name: changeme +binary: changeme +packages: + - zsync + #app specifc +build_kf5: false +frameworks: false +deps_on_kf5: false +type: git +url: http://anongit.kde.org/changeme +buildsystem: cmake +buildoptions: '-DCMAKE_INSTALL_PREFIX:PATH=/app.Dir/usr -DKDE_INSTALL_SYSCONFDIR=/app.Dir/etc -DBUILD_TESTING=OFF' +dependencies: false diff --git a/appimage-template/MustBeUsedInMainJobFiles/setup.sh b/appimage-template/MustBeUsedInMainJobFiles/setup.sh new file mode 100755 index 0000000..130ff3f --- /dev/null +++ b/appimage-template/MustBeUsedInMainJobFiles/setup.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# +# Copyright (C) 2016 Scarlett Clark +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) version 3, or any +# later version accepted by the membership of KDE e.V. (or its +# successor approved by the membership of KDE e.V.), which shall +# act as a proxy defined in Section 6 of version 3 of the license. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License fo-r more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see . +set -e +set -x +export PATH=/opt/usr/bin:/root/.rbenv/bin:/root/.rbenv/shims:$PATH +export CPATH=/opt/usr/include/gstreamer-1.0:/opt/usr/include:/opt/usr/include/python3.5:/usr/include +ln -s /usr/bin/clang++-3.8 /usr/bin/clang++ +ln -s /usr/bin/clang-3.8 /usr/bin/clang +#rm /usr/bin/python && ln -s /opt/usr/bin/python3 /usr/bin/python +# move me to jenkisnfile +rm -rfv /app.Dir/* +rm -rfv /source/* +cd ~ + +rbenv local 2.3.1 +bundle install + +wget https://github.com/probonopd/linuxdeployqt/releases/download/1/linuxdeployqt-1-x86_64.AppImage +chmod a+x linuxdeployqt-1-x86_64.AppImage + +function error_exit +{ + echo "$1" 1>&2 + exit 1 +} + +if rspec /in/tooling/aci/spec/setup_project_rspec.rb --fail-fast; then + echo "Setup Complete" +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi + +if rspec /in/tooling/aci/spec/dependencies_rspec.rb --fail-fast; then + echo "Dependencies Complete" +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi + +if rspec /in/tooling/aci/spec/project_rspec.rb --fail-fast; then + echo "Project Complete" +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi + +if rspec /in/tooling/aci/spec/recipe_rspec.rb --fail-fast; then + echo "Recipe Complete" +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi + +if rspec /in/tooling/aci/spec/create_appimage_rspec.rb --fail-fast; then + echo "Recipe Complete" +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi + + +rm -rfv /source/* diff --git a/appimage-template/README.md b/appimage-template/README.md new file mode 100644 index 0000000..0bf453f --- /dev/null +++ b/appimage-template/README.md @@ -0,0 +1,8 @@ +# appimage-template +Appimage template for creating appimages on aci.pangea.pub + +TO-DO: + +appstream support + +gpg signature support diff --git a/appimage-template/data/applications.yaml b/appimage-template/data/applications.yaml new file mode 100644 index 0000000..5dcbc94 --- /dev/null +++ b/appimage-template/data/applications.yaml @@ -0,0 +1,96 @@ +kate: + repo: https://github.com/appimage-packages/kate + branch: [master] +blinken: + repo: https://github.com/appimage-packages/blinken + branch: [master] +kmymoney: + repo: https://github.com/appimage-packages/kmymoney + branch: [master] +skanlite: + repo: https://github.com/appimage-packages/skanlite-packaging + branch: [master] +changeme: + repo: https://github.com/appimage-packages/changeme + branch: [master] +kstars: + repo: https://github.com/appimage-packages/kstars + branch: [master] +okular: + repo: https://github.com/appimage-packages/okular + branch: [master] +ark: + repo: https://github.com/appimage-packages/ark + branch: [master] +marble: + repo: https://github.com/appimage-packages/marble + branch: [master] +plasmazilla: + repo: https://github.com/appimage-packages/plasmazilla + branch: [master] +kmail: + repo: https://github.com/appimage-packages/kmail + branch: [master] +kexi: + repo: https://github.com/appimage-packages/kexi + branch: [master] +choqok: + repo: https://github.com/appimage-packages/choqok + branch: [master] +akregator: + repo: https://github.com/appimage-packages/akregator + branch: [master] +calligra: + repo: https://github.com/appimage-packages/calligra + branch: [master] +kcalc: + repo: https://github.com/appimage-packages/kcalc + branch: [master] +blogilo: + repo: https://github.com/appimage-packages/blogilo + branch: [master] +bomber: + repo: https://github.com/appimage-packages/bomber + branch: [master] +bovo: + repo: https://github.com/appimage-packages/bovo + branch: [master] +cantor: + repo: https://github.com/appimage-packages/cantor + branch: [master] +cervisia: + repo: https://github.com/appimage-packages/cervisia + branch: [master] +kde-connect: + repo: https://github.com/appimage-packages/kde-connect + branch: [master] +k3b: + repo: https://github.com/appimage-packages/k3b + branch: [master] +dolphin: + repo: https://github.com/appimage-packages/dolphin + branch: [master] +kaffeine: + repo: https://github.com/appimage-packages/kaffeine + branch: [master] +dragon: + repo: https://github.com/appimage-packages/dragon + branch: [master] +kamoso: + repo: https://github.com/appimage-packages/kamoso + branch: [master] +simon: + repo: https://github.com/appimage-packages/simon + branch: [master] +kdenlive: + repo: https://github.com/appimage-packages/kdenlive + branch: [master] +ring-kde-minimal: + repo: https://github.com/appimage-packages/ring-kde-minimal + branch: [master] +rring-kde-full: + repo: https://github.com/appimage-packages/ring-kde-full + branch: [master] +ring-gnome: + repo: https://github.com/appimage-packages/ring-gnome + branch: [master] diff --git a/appimage-template/docker/Dockerfile b/appimage-template/docker/Dockerfile new file mode 100644 index 0000000..dd536d7 --- /dev/null +++ b/appimage-template/docker/Dockerfile @@ -0,0 +1,330 @@ +FROM ubuntu:14.04 +RUN echo "deb-src http://us.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb-src http://ca.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb http://ca.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb-src http://ca.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list +RUN rm /bin/sh && ln -s /bin/bash /bin/sh +RUN ln -s -f /bin/true /usr/bin/chfn +RUN apt-get update && apt-get -y upgrade && apt-get -y install \ + # QT + addons and KF5 stack deps +autogen \ +automake \ +autotools-dev \ +bison \ +build-essential \ +bzr \ +docbook-xml \ +docbook-xsl \ +doxygen \ +firebird-dev \ +flex \ +freetds-dev \ +freeglut3 \ +freeglut3-dev \ +fuse \ +gdb \ +git \ +gperf \ +graphviz \ +gtk-doc-tools \ +gyp \ +hspell \ +itstool \ +libaa1-dev \ +libacl1-dev \ +libasound2-dev \ +libaspell-dev \ +libatspi2.0-dev \ +libatspi2.0-dev \ +libattr1-dev \ +libavc1394-dev \ +libavcodec-dev \ +libavformat-dev \ +libavutil-dev \ +libboost-all-dev \ +libbz2-dev \ +libcaca-dev \ +libcap-dev \ +libcdparanoia-dev \ +libclang-3.8-dev \ +libdbus-1-dev \ +libdc1394-22-dev \ +libdrm-dev \ +libdv4-dev \ +libegl1-mesa-dev \ +libgl1-mesa-dev \ +libepoxy-dev \ +libevent-dev \ +libexiv2-dev \ +libfam-dev \ +libffi-dev \ +libflac++-dev \ +libflac-dev \ +libfontconfig1-dev \ +libfreetype6-dev \ +libfuse-dev \ +libgbm-dev \ +libgif-dev \ +libgirepository1.0-dev \ +libgl1-mesa-dev \ +libgles2-mesa-dev \ +libglu-dev \ +libglu1-mesa-dev \ +libgmp-dev \ +libgtk-3-dev \ +libgtk2.0-dev \ +libharfbuzz-dev \ +libhunspell-dev \ +libicu-dev \ +libidn11-dev \ +libjack-dev \ +libjpeg-dev \ +libjsoncpp-dev \ +llvm-3.8-dev \ +libmagickcore-dev \ +libmagickwand-dev \ +libmtdev-dev \ +libmysqlclient-dev \ +libncurses5-dev \ +libnss3-dev \ +libogg-dev \ +libopenal-dev \ +libopus-dev \ +libp11-kit-dev \ +libpci-dev \ +libpng-dev \ +libpolkit-agent-1-dev \ +libpolkit-backend-1-dev \ +libpolkit-gobject-1-dev \ +libpq-dev \ +libproxy-dev \ +libpulse-dev \ +libraw1394-dev \ +libreadline-dev \ +libshout3-dev \ +libsnappy-dev \ +libsndfile1-dev \ +libsoup2.4-dev \ +libspeechd-dev \ +libspeex-dev \ +libsphinxbase-dev \ +libsqlite3-dev \ +libsrtp0-dev \ +libssl-dev \ +libstemmer-dev \ +libsystemd-journal-dev \ +libtag1-dev \ +libtheora-dev \ +libts-dev \ +libudev-dev \ +libunbound-dev \ +libunistring-dev \ +libutempter-dev \ +libvisual-0.4-dev \ +libvoikko-dev \ +libvorbis-dev \ +libvorbisidec-dev \ +libvpx-dev \ +libwavpack-dev \ +libwayland-dev \ +libwayland-egl1-mesa \ +libwayland-server0 \ +libwayland0 \ +libwebp-dev \ +libx11-dev \ +libx11-xcb-dev \ +libxcb-composite0-dev \ +libxcb-damage0-dev \ +libxcb-icccm4-dev \ +libxcb-image0-dev \ +libxcb-keysyms1-dev \ +libxcb-randr0-dev \ +libxcb-render-util0-dev \ +libxcb-render0-dev \ +libxcb-shape0-dev \ +libxcb-shm0-dev \ +libxcb-sync-dev \ +libxcb-sync-dev \ +libxcb-xfixes0-dev \ +libxcb-xinerama0-dev \ +libxcb-xkb-dev \ +libxcb-xtest0-dev \ +libxcb1-dev \ +libxcomposite-dev \ +libxcursor-dev \ +libxdamage-dev \ +libxext-dev \ +libxi-dev \ +libxkbcommon-dev \ +libxkbcommon-x11-dev \ +libxkbfile-dev \ +libxml2-dev \ +libxrandr-dev \ +libxrender-dev \ +libxslt1-dev \ +libxss-dev \ +libxtst-dev \ +libxv-dev \ +libyaml-dev \ +media-player-info \ +mesa-common-dev \ +ninja-build \ +pkg-config \ +publican \ +publicsuffix \ +python-clang-3.8 \ +python-pip \ +python-setuptools \ +python2.7 \ +python2.7-dev \ +re2c \ +ruby \ +software-properties-common \ +speech-dispatcher-festival \ +sphinxsearch \ +subversion \ +texinfo \ +unixodbc-dev \ +valac \ +wget \ +xmlto \ +xsltproc \ +yasm \ +zlib1g-dev \ +zsync + +RUN sudo add-apt-repository -y ppa:wayland.admin/daily-builds && sudo apt-get update && sudo apt-get -y install libinput-dev +RUN add-apt-repository -y ppa:jonathonf/gtk3.18 && sudo apt-get update && sudo apt-get -y install libglib2.0-dev && add-apt-repository -y -r ppa:jonathonf/gtk3.18 +RUN add-apt-repository -y ppa:jonathonf/mysql && sudo apt-get update && apt-get -y install mysql-server-core-5.7 mysql-client-5.7 +RUN add-apt-repository -y ppa:ubuntu-toolchain-r/test && apt-get update && apt-get -y install gcc-4.9 g++-4.9 #&& update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9 + +RUN DEBIAN_FRONTEND=noninteractive apt-get -y install --reinstall linux-image-4.4.0-59 +RUN groupadd -g 1000 jenkins +RUN useradd -m -u 1000 -g 1000 -d /home/jenkins jenkins +RUN mkdir -p /{appimage,app} +RUN chown jenkins.jenkins /appimage +RUN chown jenkins.jenkins /app +RUN echo 'jenkins:1234' | chpasswd #changeme +RUN adduser jenkins sudo +RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers +RUN modprobe fuse +RUN usermod -a -G fuse jenkins +RUN chgrp fuse /dev/fuse +RUN echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh +ENV LD_LIBRARY_PATH /opt/usr/lib:/opt/usr/lib/x86_64-linux-gnu:/usr/lib:/usr/lib64 +ENV PATH /opt/usr/bin:/home/jenkins/.rbenv/bin:/home/jenkins/.rbenv/shims:$PATH +ENV PKG_CONFIG_PATH /opt/usr/lib/pkgconfig:/opt/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig +ENV CXXFLAGS -std=c++11 + +#Misc deps too old on trusty +RUN wget http://ftp.x.org/pub/individual/util/util-macros-1.19.0.tar.bz2 && tar -jxvf util-macros-1.19.0.tar.bz2 +RUN cd util-macros-1.19.0 && ./configure --prefix /opt/usr && make install && rm /util-macros-1.19.0.tar.bz2 && rm -rfv /util-macros-1.19.0 +RUN wget http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.bz2 && tar -jxvf m4-1.4.18.tar.bz2 +RUN cd m4-1.4.18 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr --disable-static && make -j 8 && make install && rm /m4-1.4.18.tar.bz2 && rm -rfv /m4-1.4.18 +RUN wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.3.tar.gz && tar -xzvf gettext-0.19.3.tar.gz +RUN cd gettext-0.19.3 && ./configure --prefix=/opt/usr --disable-static && make -j 8 && make install && rm /gettext-0.19.3.tar.gz && rm -rfv /gettext-0.19.3 +RUN ln -s /usr/bin/python2.7-config /usr/bin/python-config +RUN wget http://ftp.gnome.org/pub/gnome/sources/gobject-introspection/1.46/gobject-introspection-1.46.0.tar.xz && tar -xvf gobject-introspection-1.46.0.tar.xz +RUN cd gobject-introspection-1.46.0 && ./configure --prefix=/opt/usr --disable-static && make -j 8 && make install && rm /gobject-introspection-1.46.0.tar.xz && rm -rfv /gobject-introspection-1.46.0 +RUN git clone https://github.com/Kitware/CMake +RUN cd CMake && ./configure --prefix=/opt/usr && make && make install && rm -rfv /CMake +#Python3 too old +RUN wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tar.xz && tar -xvf Python-3.5.3.tar.xz +RUN cd Python-3.5.3 && ./configure --prefix=/opt/usr --enable-shared && make -j 8 && make install && rm /Python-3.5.3.tar.xz && rm -rfv /Python-3.5.3 +RUN pip3 install Sphinx clang PyOpenGL PyOpenGL_accelerate +#Build newer gstreamer for sound stack +RUN wget 'https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.10.2.tar.xz' && tar -xvf gstreamer-1.10.2.tar.xz +RUN cd gstreamer-1.10.2 && ./configure --prefix=/opt/usr --disable-static --enable-shared --enable-gst-debug && make && make install && rm /gstreamer-1.10.2.tar.xz && rm -rfv /gstreamer-1.10.2 +RUN wget 'https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.10.2.tar.xz' && tar -xvf gst-plugins-base-1.10.2.tar.xz +RUN cd gst-plugins-base-1.10.2 && ./configure --prefix=/opt/usr --disable-static --enable-shared --enable-gst-debug && make && make install && rm /gst-plugins-base-1.10.2.tar.xz && rm -rfv /gst-plugins-base-1.10.2 +RUN wget 'https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.10.2.tar.xz' && tar -xvf gst-plugins-good-1.10.2.tar.xz +RUN cd gst-plugins-good-1.10.2 && ./configure --prefix=/opt/usr --disable-static --enable-shared --enable-gst-debug && make && make install && rm /gst-plugins-good-1.10.2.tar.xz && rm -rfv /gst-plugins-good-1.10.2 +#GPG stack for appimage signing +RUN wget https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.26.tar.bz2 +RUN tar -jxvf libgpg-error-1.26.tar.bz2 +RUN cd libgpg-error-1.26 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr --enable-static && make -j 8 && make install +RUN rm /libgpg-error-1.26.tar.bz2 && rm -rfv /libgpg-error-1.26 +RUN wget https://www.gnupg.org/ftp/gcrypt/libksba/libksba-1.3.5.tar.bz2 +RUN tar -jxvf libksba-1.3.5.tar.bz2 +RUN cd libksba-1.3.5 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install +RUN rm /libksba-1.3.5.tar.bz2 && rm -rfv /libksba-1.3.5 +RUN wget https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.4.3.tar.bz2 +RUN tar -jxvf libassuan-2.4.3.tar.bz2 +RUN cd libassuan-2.4.3 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install +RUN rm /libassuan-2.4.3.tar.bz2 && rm -rfv /libassuan-2.4.3 +RUN wget https://www.gnupg.org/ftp/gcrypt/npth/npth-1.3.tar.bz2 && tar -jxvf npth-1.3.tar.bz2 +RUN cd npth-1.3 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install +RUN rm /npth-1.3.tar.bz2 && rm -rfv /npth-1.3 +RUN wget https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.7.5.tar.bz2 && tar -jxvf libgcrypt-1.7.5.tar.bz2 +RUN cd libgcrypt-1.7.5 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && rm /libgcrypt-1.7.5.tar.bz2 && rm -rfv /libgcrypt-1.7.5 +RUN wget http://ftp.gnu.org/gnu/libtasn1/libtasn1-4.10.tar.gz && tar -zxvf libtasn1-4.10.tar.gz +RUN cd libtasn1-4.10 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && rm /libtasn1-4.10.tar.gz && rm -rfv /libtasn1-4.10 +RUN wget https://ftp.gnu.org/gnu/nettle/nettle-3.3.tar.gz && tar -zxvf nettle-3.3.tar.gz +RUN cd nettle-3.3 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && rm /nettle-3.3.tar.gz && rm -rfv /nettle-3.3 +RUN wget http://p11-glue.freedesktop.org/releases/p11-kit-0.23.2.tar.gz && tar -zxvf p11-kit-0.23.2.tar.gz +RUN cd p11-kit-0.23.2 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && rm /p11-kit-0.23.2.tar.gz && rm -rfv /p11-kit-0.23.2 +RUN wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-3.5.10.tar.xz && tar -xvf gnutls-3.5.10.tar.xz +RUN cd gnutls-3.5.10 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr --with-included-libtasn1 && make -j 8 && make install && rm /gnutls-3.5.10.tar.xz && rm -rfv /gnutls-3.5.10 +RUN wget http://downloads.sourceforge.net/pcre/pcre-8.35.tar.bz2 && tar -jxvf pcre-8.35.tar.bz2 +RUN cd pcre-8.35 && ./configure --prefix=/opt/usr && make && make install && rm /pcre-8.35.tar.bz2 && rm -rfv /pcre-8.35 +RUN wget http://www.cups.org/software/1.7.5/cups-1.7.5-source.tar.bz2 && tar -jxvf cups-1.7.5-source.tar.bz2 +RUN cd cups-1.7.5 && aclocal -I config-scripts && autoconf -I config-scripts && ./configure --prefix=/opt/usr && make -j 8 && make install && rm -rfv /cups-1.7.5 && rm /cups-1.7.5-source.tar.bz2 +# # Build Qt5.8 and install to /opt/usr +ENV CXXFLAGS -std=c++11 -lpthread -lGL -lglut +RUN wget http://qt.mirrors.tds.net/qt/archive/qt/5.8/5.8.0/single/qt-everywhere-opensource-src-5.8.0.tar.gz && tar -zxvf qt-everywhere-opensource-src-5.8.0.tar.gz +RUN cd qt-everywhere-opensource-src-5.8.0 && ./configure -v -release -opensource -confirm-license -dbus -openssl -rpath -qt-xcb -feature-accessibility -opengl desktop -system-sqlite -nomake examples -nomake tests -prefix /opt/usr && make && make install +RUN rm /qt-everywhere-opensource-src-5.8.0.tar.gz && rm -rfv /qt-everywhere-opensource-src-5.8.0 +RUN wget http://download.qt.io/community_releases/5.8/5.8.0-final/qtwebkit-opensource-src-5.8.0.tar.xz && tar -xvf qtwebkit-opensource-src-5.8.0.tar.xz +RUN cd qtwebkit-opensource-src-5.8.0 && mkdir build && cd build && qmake PREFIX=/opt/usr ../WebKit.pro && make && make install +RUN rm /qtwebkit-opensource-src-5.8.0.tar.xz && rm -rfv /qtwebkit-opensource-src-5.8.0 +# Various external Qt relelated modules addons +RUN git clone http://code.qt.io/qt/qtstyleplugins.git +RUN cd qtstyleplugins && qmake PREFIX=/opt/usr . && make && make install && rm -rfv /qtstyleplugins +RUN git clone https://code.qt.io/cgit/qt/qtquick1.git +RUN cd qtquick1 && qmake PREFIX=/opt/usr . && make && make install && rm -rfv /qtquick1 +RUN git clone https://code.qt.io/qt/qtspeech.git +RUN cd qtspeech && qmake PREFIX=/opt/usr . && make && make install && rm -rfv /qtspeech +RUN git clone https://github.com/flavio/qjson +RUN cd qjson && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr && make && make install && rm -rfv /qjson +RUN wget https://launchpad.net/libdbusmenu-qt/trunk/0.9.2/+download/libdbusmenu-qt-0.9.2.tar.bz2 && tar -jxvf libdbusmenu-qt-0.9.2.tar.bz2 && cd libdbusmenu-qt-0.9.2 && mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr -DCMAKE_INSTALL_LIBDIR=/opt/lib \ +-DCMAKE_BUILD_TYPE=Release -DWITH_DOC=OFF -DUSE_QT5=true -DCMAKE_INCLUDE_CURRENT_DIR=ON -Wno-dev .. && make && make install && rm -rfv /libdbusmenu-qt +RUN wget 'https://gstreamer.freedesktop.org/src/qt-gstreamer/qt-gstreamer-1.2.0.tar.xz' && tar -xvf qt-gstreamer-1.2.0.tar.xz +RUN cd qt-gstreamer-1.2.0 && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr -DQT_VERSION=5 -DCMAKE_REQUIRED_INCLUDES=/opt/usr/include/gstreamer-1.0/ \ +-DQTGSTREAMER_STATIC=OFF -DQTGSTREAMER_EXAMPLES=OFF && make && make install && rm /qt-gstreamer-1.2.0.tar.xz && rm -rfv /qt-gstreamer-1.2.0 +RUN git clone https://github.com/steveire/grantlee +RUN cd grantlee && mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr CMAKE_BUILD_TYPE=Release .. && cmake --build . && cmake --build . --target install && rm -rfv /grantlee +RUN wget https://poppler.freedesktop.org/poppler-0.51.0.tar.xz && tar -xvf poppler-0.51.0.tar.xz +RUN cd poppler-0.51.0 && mkdir build && cd build && ../configure --prefix=/opt/usr -sysconfdir=/opt/etc --disable-static --enable-build-type=release \ +--enable-cmyk --enable-xpdf-headers --enable-poppler-qt5 && make && make install && rm /poppler-0.51.0.tar.xz && rm -rfv /poppler-0.51.0 +RUN wget https://sourceforge.net/projects/pyqt/files/sip/sip-4.19.1/sip-4.19.1.tar.gz && tar -zxvf sip-4.19.1.tar.gz +RUN cd sip-4.19.1 && python3 configure.py --destdir /opt/usr --incdir /opt/usr/include/python3.5 && make && make install +RUN wget https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.8/PyQt5_gpl-5.8.tar.gz && tar -zxvf PyQt5_gpl-5.8.tar.gz +RUN cd /PyQt5_gpl-5.8 && python3 configure.py --confirm-license --verbose --destdir /opt/usr --sip /opt/usr/bin/sip --sip-incdir /opt/usr/include/python3.5/ \ +-q /opt/usr/bin/qmake -c -j 4 LIBDIR_QT=/opt/usr/lib STRIP="" MOC=/usr/bin/moc --qmake="/opt/usr/bin/qmake" \ +LIBS_OPENGL="" LIBS_X11="" LIBS_THREAD="" -m /opt/usr/lib/python3.5/config-3.5m \ +-d /opt/usr/lib/python3.5/dist-packages --dbus /usr/include/dbus-1.0 --no-designer-plugin --no-qml-plugin && make && make install +RUN rm -rfv PyQt5_gpl-5.8 && rm PyQt5_gpl-5.8.tar.gz && rm sip-4.19.1.tar.gz && rm -rfv sip-4.19.1 +RUN wget http://download.kde.org/stable/qca/2.1.1/src/qca-2.1.1.tar.xz && tar -xvf qca-2.1.1.tar.xz +RUN cd qca-2.1.1 && mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr .. && cmake --build . && cmake --build . --target install && rm /qca-2.1.1.tar.xz && rm -rfv /qca-2.1.1 +RUN git clone https://github.com/ayoy/qoauth +RUN cd qoauth && qmake '"PREFIX = /opt/usr" "QT += widgets" "QT += webkitwidgets" "CONFIG += crypto" "DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x000000"' src/src.pro && make && make install && rm -rfv /qoauth +RUN git clone git://git.gnupg.org/gpgme.git +RUN cd gpgme && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install +RUN rm -rfv /gpgme +RUN svn export svn://svn.code.sf.net/p/qwt/code/branches/qwt-6.1 && cd qwt-6.1 && qmake "PREFIX = /opt/usr" qwt.pro && make && make install && rm -rfv /qwt-6.1 +RUN wget https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.1.17.tar.bz2 && tar -jxvf gnupg-2.1.17.tar.bz2 +RUN cd gnupg-2.1.17 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && rm /gnupg-2.1.17.tar.bz2 && rm -rfv /gnupg-2.1.17 +RUN git clone https://github.com/ximion/appstream +RUN cd appstream && mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr -DQT=ON ../ && make && make install && rm -rfv /appstream +RUN echo 'eval "$(rbenv init -)"' >> /etc/profile +ENV PATH /opt/usr/bin:/root/.rbenv/bin:/root/.rbenv/shims:$PATH + # Install rbenv and ruby-build + ADD ./Gemfile /Gemfile +RUN echo 'gem: --no-rdoc --no-ri' >> /home/jenkins/.gemrc +RUN git clone https://github.com/sstephenson/rbenv.git /root/.rbenv +RUN git clone https://github.com/sstephenson/ruby-build.git /root/.rbenv/plugins/ruby-build +RUN rbenv install 2.3.1 +RUN echo 'eval "$(rbenv init -)"' >> /root/.bashrc && rbenv init - +RUN rbenv local 2.3.1 && gem install bundler && gem install logger -v '1.2.8' && bundle install --binstubs && bundle show rspec diff --git a/appimage-template/docker/Gemfile b/appimage-template/docker/Gemfile new file mode 100644 index 0000000..62ab4ea --- /dev/null +++ b/appimage-template/docker/Gemfile @@ -0,0 +1,59 @@ +source 'https://gem.cache.pangea.pub' + +# These are built by our geminabox tech +# https://github.com/blue-systems/pangea-geminabox +# and pushed into our gem cache for consumption. See Gemfile.git for info. +# These are actual gems in our cache, they mustn't have a git: argument. +source 'https://gem.cache.pangea.pub' do + gem 'releaseme' # Not released as gem at all + + # Temporarily from git waiting for a release newer than 4.1.0. Once a newer + # version is available this can move away from git again. + # Also undo workaround in deploy_in_container.rake! + # We want a version from our git builds, so restrict us to 4.1.0.x + gem 'net-ssh', '~> 4.2' +end + +gem 'aptly-api', '>= 0.5.0' +gem 'concurrent-ruby' +gem 'deep_merge', '~> 1.0' +gem 'docker-api', '~> 1.24' # Container.refresh! only introduced in 1.23 +gem 'gir_ffi' +gem 'git' +gem 'gitlab' +gem 'insensitive_hash' +gem 'jenkins_api_client' +gem 'jenkins_junit_builder' +gem 'logger-colors' +gem 'mercurial-ruby' +gem 'net-sftp' +gem 'net-ssh-gateway' +gem 'nokogiri' +gem 'octokit' +gem 'rake', '~> 12.0' +gem 'rugged' +gem 'tty-command' + +# Git URI management +gem 'git_clone_url', '~> 2.0' +gem 'uri-ssh_git', '~> 2.0' + +# Test logging as junit (also used at runtime for linting) +gem 'ci_reporter_test_unit' +gem 'test-unit', '~> 3.0' + +group :development, :test do + gem 'droplet_kit' + gem 'equivalent-xml' + gem 'mocha' + gem 'parallel_tests' + gem 'rake-notes' + gem 'rubocop', '>= 0.38' + gem 'rubocop-checkstyle_formatter' + gem 'ruby-progressbar' + gem 'simplecov' + gem 'simplecov-rcov' + gem 'terminal-table' + gem 'vcr', '>= 3.0.1' + gem 'webmock' +end diff --git a/appimage-template/docker/armhf/kf5/Dockerfile b/appimage-template/docker/armhf/kf5/Dockerfile new file mode 100644 index 0000000..9879ac2 --- /dev/null +++ b/appimage-template/docker/armhf/kf5/Dockerfile @@ -0,0 +1,10 @@ +FROM sgclark/trusty-qt59 + +RUN apt-get -y install libpolkit-gobject-1-dev libpolkit-backend-1-dev libpolkit-agent-1-dev libperl-dev libjpeg-dev libgif-dev libpng12-dev \ +libperl-dev libpcre3-dev libxcb-keysyms1-dev libgit2-dev libacl1-dev libkrb5-dev libxml2-dev libxslt1-dev zlib1g-dev \ +libx11-xcb-dev libcap-dev libxcb1-dev libxcb-keysyms1-dev libxcb-xtest0-dev libepoxy-dev libutempter-dev \ +libaspell-dev libhunspell-dev hspell libvoikko-dev bzip2 liblzma-dev media-player-info libavahi-common-dev libgamin-dev \ +libqrencode-dev libxtables10 libatm1 libdmtx-dev +# KF5 +ADD kf5.sh $SOURCES/ +RUN cd $SOURCES && /bin/bash -x kf5.sh diff --git a/appimage-template/docker/armhf/kf5/kf5.sh b/appimage-template/docker/armhf/kf5/kf5.sh new file mode 100644 index 0000000..9011142 --- /dev/null +++ b/appimage-template/docker/armhf/kf5/kf5.sh @@ -0,0 +1,65 @@ +#!/bin/bassh + +for package in extra-cmake-modules attica kconfig kwidgetsaddons karchive kcompletion kcoreaddons kcodecs kauth kwindowsystem kcrash \ +ki18n kdoctools kdbusaddons kglobalaccel kguiaddons kidletime kimageformats kitemmodels kjs kplotting syntax-highlighting \ +kconfigwidgets kitemviews kiconthemes sonnet kwayland prison threadweaver kcrash kdnssd kpty \ +kservice ktextwidgets kxmlgui kbookmarks solid kjobwidgets kio kinit kded phonon phonon-gstreamer knotifications kparts \ +kactivities kdesignerplugin kunitconversion kpackage kdeclarative kcmutils kdesu kwallet kdewebkit kemoticons kjsembed kmediaplayer \ +kde4libsupport knewstuff knotifications knotifyconfig kross ktexteditor framework-integration kapidox \ +khtml plasma-framework krunner libkdegames kirigmi libbluedevil libkpeople libqapt libqgit2 networkmanager-qt purpose \ +libgravatar libkcddb libkcompactdisc libkdcraw libkdepim libkeduvocdocument libkexiv2 libkface libkgapi libkgeomap libkipi \ +libkleo libmahjongg libkomparediff2 libksane akonadi-calendar akonadi-calendar-tools akonadi-contacts akonadi-import-wizard \ +akonadi-mime akonadi-notes akonadi-search akonadiconsole akonadi pimcommon libksieve +do + git clone http://anongit.kde.org/$package + cd $package + case $package in + 'breeze' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DBINARY_ICONS_RESOURCE=ON ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + 'breeze-icons' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DBINARY_ICONS_RESOURCE=ON \ + -DWITH_DECORATIONS=OFF ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + 'phonon-gstreamer' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DPHONON_LIBRARY_PATH=/opt/usr/plugins \ + -DBUILD_TESTING=OFF -DPHONON_BUILD_PHONON4QT5=ON \ + -DPHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT=TRUE ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + 'phonon' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DPHONON_LIBRARY_PATH=/opt/usr/plugins \ + -DBUILD_TESTING=OFF -DPHONON_BUILD_PHONON4QT5=ON \ + -DPHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT=TRUE ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + * ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + esac + cd ../.. + rm -rf $package +done diff --git a/appimage-template/docker/armhf/qt59/Dockerfile b/appimage-template/docker/armhf/qt59/Dockerfile new file mode 100644 index 0000000..e1d4029 --- /dev/null +++ b/appimage-template/docker/armhf/qt59/Dockerfile @@ -0,0 +1,333 @@ +FROM armhf/ubuntu:14.04 +#RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse" >> /etc/apt/sources.list +#RUN echo "deb-src http://ca.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse" >> /etc/apt/sources.list +#RUN echo "deb http://ca.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list +#RUN echo "deb-src http://ca.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list +#RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list +#RUN echo "deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list +#RUN echo "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.8 main" >> /etc/apt/sources.list +#RUN echo "deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.8 main" >> /etc/apt/sources.list +#RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main" >> /etc/apt/sources.list + + +#link to bash +RUN rm /bin/sh && ln -s /bin/bash /bin/sh +RUN ln -s -f /bin/true /usr/bin/chfn +RUN apt-get update && apt-get -y install wget +RUN wget -q -O- https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - +RUN apt-get update && apt-get -y upgrade && apt-get -y build-dep libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev python3-dev +RUN apt-get update && apt-get -y --force-yes install \ +'^libxcb.*-dev' \ +bison \ +bzr \ +chrpath \ +clang-3.8 \ +festival \ +festival-dev \ +firebird-dev \ +flex \ +freeglut3-dev \ +freetds-dev \ +gdb \ +git \ +gperf \ +guile-2.0-dev \ +intltool \ +libasound2-dev \ +libatkmm-1.6-dev \ +libatomic-ops-dev \ +libatspi2.0-dev \ +libboost-all-dev \ +libcap-dev \ +libclang-3.8-dev \ +libdouble-conversion-dev \ +libfontconfig1-dev \ +libfreetype6-dev \ +libgbm-dev \ +libgit2-dev \ +libgl1-mesa-dev \ +libgles2-mesa-dev \ +libglew-dev \ +libglib2.0-dev \ +libglm-dev \ +libglu1-mesa-dev \ +libgtk-3-dev \ +libharfbuzz-dev \ +libicu-dev \ +libjpeg-dev \ +libmtdev-dev \ +libmysqlclient-dev \ +libopus-dev \ +libpcre3-dev \ +libpng-dev \ +libpq-dev \ +libproxy-dev \ +libreadline-dev \ +libsndfile1-dev \ +libsqlite3-dev \ +libssl-dev \ +libsystemd-journal-dev \ +libudev-dev \ +libunistring-dev \ +libunwind8-dev \ +libvorbis-dev \ +libwayland-client0 \ +libwayland-dev \ +libwayland-egl1-mesa \ +libwayland-server0 \ +libwebp-dev \ +libx11-xcb-dev \ +libxcomposite-dev \ +libxext-dev \ +libxi-dev \ +libxkbcommon-dev \ +libxkbcommon-x11-dev \ +libxml2-dev \ +libxrender-dev \ +libxslt1-dev \ +lldb-3.8 \ +llvm-3.8 \ +llvm-3.8-dev \ +mesa-common-dev \ +pkg-config \ +postgresql \ +postgresql-contrib \ +publicsuffix \ +python-dev \ +software-properties-common \ +subversion \ +texinfo \ +unixodbc-dev \ +wget \ +x11proto-dri3-dev \ +x11proto-present-dev \ +yasm \ +zlib1g-dev \ +zsync + +## Rebuild pam to allow su +# Rebuild pam with --disable-audit flag +# Fixes: https://github.com/docker/docker/issues/5899 +## +RUN apt-get -y build-dep pam \ + && cd /tmp/ \ + && export CONFIGURE_OPTS=--disable-audit \ + && apt-get -b source pam \ + && dpkg -i libpam-doc*.deb libpam-modules*.deb libpam-runtime*.deb libpam0g*.deb \ + && rm -rf /tmp/* \ +&& unset CONFIGURE_OPTS + +#Oddballs from ppas +RUN add-apt-repository -y ppa:wayland.admin/daily-builds && sudo apt-get update && sudo apt-get -y install libinput-dev libwayland-dev \ +libwayland-server0 libwayland0 && add-apt-repository -y -r ppa:wayland.admin/daily-builds +#RUN add-apt-repository -y ppa:jonathonf/mysql && sudo apt-get update && apt-get -y install mysql-server-core-5.7 mysql-client-5.7 && add-apt-repository -y -r ppa:jonathonf/mysql +RUN add-apt-repository -y ppa:george-edison55/cmake-3.x && sudo apt-get update && apt-get -y install cmake + +# Set up for GCC options ( try gcc6 ) +RUN add-apt-repository -y ppa:ubuntu-toolchain-r/test && apt-get update && apt-get -y install gcc-4.9 g++-4.9 gcc-5 g++-5 gcc-6 g++-6 && \ +update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 10 && \ +update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 20 && \ +update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 30 && \ +update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 10 && \ +update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 20 && \ +update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 30 && \ +update-alternatives --set gcc "/usr/bin/gcc-5" && \ +update-alternatives --set g++ "/usr/bin/g++-5" && \ +update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 40 && \ +update-alternatives --set cc /usr/bin/gcc && \ +update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 40 && \ +update-alternatives --set c++ /usr/bin/g++ && \ +gcc --version && \ +cc --version && \ +g++ --version && apt-get -y upgrade + + #Set ENV +ENV LD_LIBRARY_PATH /opt/usr/lib:/opt/usr/lib/gstreamer-1.0:/opt/usr/lib/x86_64-linux-gnu:/usr/lib:/usr/lib64:/lib +ENV PATH /opt/usr/bin:/home/jenkins/.rbenv/bin:/home/jenkins/.rbenv/shims:$PATH +ENV PKG_CONFIG_PATH /opt/usr/lib/pkgconfig:/opt/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig +ENV CXXFLAGS -std=c++11 +ENV CPATH /opt/usr/include/gstreamer-1.0:/opt/usr/include:/opt/usr/include/dbus-1.0:$CPATH +ENV SOURCES / +ENV ACLOCAL_PATH = /opt/usr/share/aclocal:/usr/share/aclocal + +#Newer toolchain +RUN cd $SOURCES && wget http://ftp.x.org/pub/individual/util/util-macros-1.19.0.tar.bz2 && tar -jxvf util-macros-1.19.0.tar.bz2 && \ +cd $SOURCES/util-macros-1.19.0 && ./configure --prefix /opt/usr && make install && rm $SOURCES/util-macros-1.19.0.tar.bz2 && rm -rfv $SOURCES/util-macros-1.19.0 +RUN cd $SOURCES && wget http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.bz2 && tar -jxvf m4-1.4.18.tar.bz2 && \ +cd $SOURCES/m4-1.4.18 && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr --enable-shared && make -j 8 && make install \ +&& rm $SOURCES/m4-1.4.18.tar.bz2 && rm -rfv $SOURCES/m4-1.4.18 +RUN cd $SOURCES && wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz && tar -xvf autoconf-2.69.tar.xz && \ +cd $SOURCES/autoconf-2.69 && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/autoconf-2.69.tar.xz && rm -rfv $SOURCES/autoconf-2.69 +RUN cd $SOURCES && wget https://ftp.gnu.org/gnu/automake/automake-1.15.tar.xz && tar -xvf automake-1.15.tar.xz && \ +cd $SOURCES/automake-1.15 && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/automake-1.15.tar.xz && rm -rfv $SOURCES/automake-1.15 +RUN cd $SOURCES && wget https://ftp.gnu.org/gnu/autogen/rel5.18.12/autogen-5.18.12.tar.xz && tar -xvf autogen-5.18.12.tar.xz && \ +cd $SOURCES/autogen-5.18.12 && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/autogen-5.18.12.tar.xz && rm -rfv $SOURCES/autogen-5.18.12 +RUN cd $SOURCES && wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.3.tar.gz && tar -xzvf gettext-0.19.3.tar.gz && \ +cd $SOURCES/gettext-0.19.3 && ./configure --prefix=/opt/usr && make -j 8 && make install && rm $SOURCES/gettext-0.19.3.tar.gz && rm -rfv $SOURCES/gettext-0.19.3 +#New dbus +RUN sudo apt-get -y remove 'libdbus-1-dev' +RUN cd $SOURCES && wget http://dbus.freedesktop.org/releases/dbus/dbus-1.10.16.tar.gz && tar -xvf dbus-1.10.16.tar.gz +RUN cd $SOURCES/dbus-1.10.16 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 4 && make install && \ +rm $SOURCES/dbus-1.10.16.tar.gz && rm -rfv $SOURCES/dbus-1.10.16 +RUN cd $SOURCES && wget http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.108.tar.gz && tar -xvf dbus-glib-0.108.tar.gz +RUN cd $SOURCES/dbus-glib-0.108 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/dbus-glib-0.108.tar.gz && rm -rfv $SOURCES/dbus-glib-0.108 +# New cups +RUN cd $SOURCES && wget http://www.cups.org/software/1.7.5/cups-1.7.5-source.tar.bz2 && tar -jxvf cups-1.7.5-source.tar.bz2 && \ +cd $SOURCES/cups-1.7.5 && aclocal -I config-scripts && autoconf -I config-scripts && ./configure --prefix=/opt/usr && make -j 8 && make install && \ +rm -rfv $SOURCES/cups-1.7.5 && rm $SOURCES/cups-1.7.5-source.tar.bz2 + +# Newer xlibs +ADD Xlibs.sh $SOURCES/ +RUN cd $SOURCES && /bin/bash -x Xlibs.sh + +#New pulseaudio +RUN cd $SOURCES && wget http://freedesktop.org/software/pulseaudio/releases/pulseaudio-10.0.tar.xz && tar -xvf pulseaudio-10.0.tar.xz +RUN cd $SOURCES/pulseaudio-10.0 && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/pulseaudio-10.0.tar.xz && rm -rfv $SOURCES/pulseaudio-10.0 + +# Create jenkins user +RUN groupadd -g 1000 jenkins +RUN useradd -m -u 1000 -g 1000 -d /home/jenkins jenkins +RUN mkdir -p /{appimages,app.Dir,source} +RUN chown jenkins.jenkins /appimages && chown jenkins.jenkins /app.Dir && chown jenkins.jenkins /source && chown jenkins.jenkins /opt +RUN echo 'jenkins:1234' | chpasswd #changeme +RUN adduser jenkins sudo +RUN echo 'jenkins ALL=NOPASSWD: ALL' >> /etc/sudoers +RUN echo 'bundler ALL=NOPASSWD: /home/jenkins/.rbenv/bin/bundler' >> /etc/sudoers +RUN echo 'eval "$(rbenv init -)"' >> /etc/profile +# Cpan perl lib needed by kf5 +RUN cd $SOURCES && cpan URI::Escape +# Everythin else as jenkins user ( NOT WORKING, disabled for now.) +#USER jenkins + + #Set ENV +ENV LD_LIBRARY_PATH /opt/usr/lib:/opt/usr/lib/gstreamer-1.0:/opt/usr/lib/x86_64-linux-gnu:/usr/lib:/usr/lib64:/lib +ENV PATH /opt/usr/bin:/root/.rbenv/bin:/root/.rbenv/shims:$PATH +ENV PKG_CONFIG_PATH /opt/usr/lib/pkgconfig:/opt/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig +ENV CXXFLAGS -std=c++11 -fPIC +ENV CFLAGS -libgcrypt +ENV CPATH /opt/usr/include/gstreamer-1.0:/opt/usr/include:/opt/usr/include/python3.5:$CPATH +ENV SOURCES /source +ENV QMAKE_CFLAGS_ISYSTEM '' + +#GPG stack for gpgme +RUN cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.26.tar.bz2 && tar -jxvf libgpg-error-1.26.tar.bz2 && \ +cd $SOURCES/libgpg-error-1.26 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/libgpg-error-1.26.tar.bz2 && rm -rfv $SOURCES/libgpg-error-1.26 +RUN cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/libksba/libksba-1.3.5.tar.bz2 && tar -jxvf libksba-1.3.5.tar.bz2 && \ +cd $SOURCES/libksba-1.3.5 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/libksba-1.3.5.tar.bz2 && rm -rfv $SOURCES/libksba-1.3.5 +RUN cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.4.3.tar.bz2 && tar -jxvf libassuan-2.4.3.tar.bz2 && \ +cd $SOURCES/libassuan-2.4.3 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/libassuan-2.4.3.tar.bz2 && rm -rfv $SOURCES/libassuan-2.4.3 +RUN cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/npth/npth-1.3.tar.bz2 && tar -jxvf npth-1.3.tar.bz2 && \ +cd $SOURCES/npth-1.3 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/npth-1.3.tar.bz2 && rm -rfv $SOURCES/npth-1.3 +RUN cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.7.5.tar.bz2 && tar -jxvf libgcrypt-1.7.5.tar.bz2 && \ +cd $SOURCES/libgcrypt-1.7.5 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/libgcrypt-1.7.5.tar.bz2 && rm -rfv $SOURCES/libgcrypt-1.7.5 +RUN cd $SOURCES && wget http://ftp.gnu.org/gnu/libtasn1/libtasn1-4.10.tar.gz && tar -zxvf libtasn1-4.10.tar.gz && \ +cd $SOURCES/libtasn1-4.10 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install &&\ + rm $SOURCES/libtasn1-4.10.tar.gz && rm -rfv $SOURCES/libtasn1-4.10 +RUN cd $SOURCES && wget https://ftp.gnu.org/gnu/nettle/nettle-3.3.tar.gz && tar -zxvf nettle-3.3.tar.gz && \ +cd $SOURCES/nettle-3.3 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/nettle-3.3.tar.gz && rm -rfv $SOURCES/nettle-3.3 +RUN cd $SOURCES && wget http://p11-glue.freedesktop.org/releases/p11-kit-0.23.2.tar.gz && tar -zxvf p11-kit-0.23.2.tar.gz && \ +cd $SOURCES/p11-kit-0.23.2 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/p11-kit-0.23.2.tar.gz && rm -rfv $SOURCES/p11-kit-0.23.2 +RUN cd $SOURCES && wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-3.5.10.tar.xz && tar -xvf gnutls-3.5.10.tar.xz && \ +cd $SOURCES/gnutls-3.5.10 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr --with-included-libtasn1 && make -j 8 && make install && \ +rm $SOURCES/gnutls-3.5.10.tar.xz && rm -rfv $SOURCES/gnutls-3.5.10 +RUN cd $SOURCES && wget http://downloads.sourceforge.net/pcre/pcre-8.35.tar.bz2 && tar -jxvf pcre-8.35.tar.bz2 && \ +cd $SOURCES/pcre-8.35 && ./configure --prefix=/opt/usr && make && make install && \ +rm $SOURCES/pcre-8.35.tar.bz2 && rm -rfv $SOURCES/pcre-8.35 +RUN cd $SOURCES && git clone git://git.gnupg.org/gpgme.git && \ +cd $SOURCES/gpgme && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && rm -rfv $SOURCES/gpgme + + # Install rbenv and ruby-build +ADD ./Gemfile /Gemfile +RUN echo 'gem: --no-rdoc --no-ri' >> ~/.gemrc +RUN git clone https://github.com/sstephenson/rbenv.git ~/.rbenv +RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build +RUN rbenv install 2.3.1 +RUN echo 'eval "$(rbenv init -)"' >> ~/.bashrc && rbenv init - +ADD Gemfile /home/jenkins/ +RUN cd ~ && rbenv local 2.3.1 && gem install bundler && bundle install --binstubs && bundle show rspec + +#New python3 +RUN sudo apt-get -y remove 'python3.*' 'sip.*' +RUN cd $SOURCES && wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tar.xz && tar -xvf Python-3.5.3.tar.xz +RUN cd $SOURCES/Python-3.5.3 && ./configure --prefix=/opt/usr --enable-shared --enable-static && make -j 8 && make install && rm $SOURCES/Python-3.5.3.tar.xz && rm -rfv $SOURCES/Python-3.5.3 +RUN cd $SOURCES && wget https://sourceforge.net/projects/pyqt/files/sip/sip-4.19.1/sip-4.19.1.tar.gz && tar -zxvf sip-4.19.1.tar.gz +RUN cd $SOURCES/sip-4.19.1 && python3 configure.py --destdir /opt/usr --incdir /opt/usr/include/python3.5 && make && make install +RUN pip3 install Sphinx clang PyOpenGL PyOpenGL_accelerate +ENV PYTHONPATH /opt/usr/lib/python3.5/site-packages:$PYTHONPATH + +#FFMPEG deps +ADD x264.sh $SOURCES/ +RUN cd $SOURCES && /bin/bash -x x264.sh +ADD x265.sh $SOURCES/ +RUN cd $SOURCES && /bin/bash -x x265.sh + +#FFMPEG non existant in trusty +ADD ffmpeg.sh $SOURCES/ +RUN cd $SOURCES && /bin/bash -x ffmpeg.sh + +# #Build newer gstreamer for sound stack +RUN sudo apt-get -y remove 'gstreamer.*' +RUN cd $SOURCES && wget 'https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.10.4.tar.xz' && tar -xvf gstreamer-1.10.4.tar.xz && \ +cd $SOURCES/gstreamer-1.10.4 && ./configure --prefix=/opt/usr --enable-shared --enable-gst-debug && make && make install && rm $SOURCES/gstreamer-1.10.4.tar.xz && rm -rfv $SOURCES/gstreamer-1.10.4 +RUN cd $SOURCES && wget 'https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.10.4.tar.xz' && tar -xvf gst-plugins-base-1.10.4.tar.xz && \ +cd $SOURCES/gst-plugins-base-1.10.4 && ./configure --prefix=/opt/usr --enable-shared --enable-gst-debug && make && make install && rm $SOURCES/gst-plugins-base-1.10.4.tar.xz && rm -rfv $SOURCES/gst-plugins-base-1.10.4 +RUN cd $SOURCES && wget 'https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.10.4.tar.xz' && tar -xvf gst-plugins-good-1.10.4.tar.xz && \ +cd $SOURCES/gst-plugins-good-1.10.4 && ./configure --prefix=/opt/usr --enable-shared --enable-gst-debug && make && make install && rm $SOURCES/gst-plugins-good-1.10.4.tar.xz && rm -rfv $SOURCES/gst-plugins-good-1.10.4 + +# # Build Qt5 from git and install to /opt/usr ( developer buid ) +RUN sudo apt-get -y remove 'qt.*' +ADD qt5.sh $SOURCES/ +RUN cd $SOURCES && /bin/bash -x qt5.sh +RUN git clone http://code.qt.io/qt/qtwebkit.git && cd qtwebkit && git checkout 5.9 && \ +rbenv local 2.3.1 && echo "CONFIG -= precompile_header" >> .qmake.conf && echo "QMAKE_CFLAGS_ISYSTEM=''" >> .qmake.conf && qmake "PREFIX = /opt/usr" WebKit.pro && \ +make && make install && rm -rfv /source/qtwebkit + +# # Various external Qt relelated modules addons +RUN cd $SOURCES && git clone git://code.qt.io/qt/qtdeclarative.git && cd $SOURCES/qtdeclarative && git checkout 5.9 && \ +cd $SOURCES/qtdeclarative && qmake PREFIX=/opt/usr . && make && make install && rm -rfv $SOURCES/qtdeclarative +RUN cd $SOURCES && git clone http://code.qt.io/qt/qtstyleplugins.git && \ +cd $SOURCES/qtstyleplugins && qmake PREFIX=/opt/usr . && make && make install && rm -rfv $SOURCES/qtstyleplugins +RUN cd $SOURCES && git clone https://code.qt.io/cgit/qt/qtquick1.git && \ +cd $SOURCES/qtquick1 && qmake PREFIX=/opt/usr . && make && make install && rm -rfv $SOURCES/qtquick1 +RUN cd $SOURCES && git clone https://github.com/flavio/qjson && \ +cd $SOURCES/qjson && cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr && make && make install && rm -rfv $SOURCES/qjson +RUN cd $SOURCES && wget 'https://gstreamer.freedesktop.org/src/qt-gstreamer/qt-gstreamer-1.2.0.tar.xz' && tar -xvf qt-gstreamer-1.2.0.tar.xz && \ +cd $SOURCES/qt-gstreamer-1.2.0 && cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr -DQT_VERSION=5 -DCMAKE_REQUIRED_INCLUDES=/opt/usr/include/gstreamer-1.0/ \ +-DQTGSTREAMER_STATIC=OFF -DQTGSTREAMER_EXAMPLES=OFF && make && make install && rm $SOURCES/qt-gstreamer-1.2.0.tar.xz && rm -rfv $SOURCES/qt-gstreamer-1.2.0 +# RUN cd $SOURCES && wget https://www.riverbankcomputing.com/static/Downloads/PyQt5/PyQt5_gpl-5.8.3.dev1704051437.tar.gz && tar -zxvf PyQt5_gpl-5.8.3.dev1704051437.tar.gz && \ +# cd $SOURCES/PyQt5_gpl-5.8.3.dev1704051437 && /opt/usr/bin/python3 configure.py --confirm-license --verbose --destdir /opt/usr --sip /opt/usr/bin/sip --sip-incdir /opt/usr/include/python3.5/ \ +# -q /opt/usr/bin/qmake -c -j 4 LIBDIR_QT=/opt/usr/lib STRIP="" MOC=/usr/bin/moc --qmake="/opt/usr/bin/qmake" \ +# LIBS_OPENGL="" LIBS_X11="" LIBS_THREAD="" -m /opt/usr/lib/python3.5/config-3.5m \ +# -d /opt/usr/lib/python3.5/dist-packages --dbus /usr/include/dbus-1.0 --no-designer-plugin --no-qml-plugin && make -j8 && make install && \ +# rm -rfv $SOURCES/PyQt5_gpl-5.8.3.dev1704051437 && rm $SOURCES/PyQt5_gpl-5.8.3.dev1704051437.tar.gz && rm $SOURCES/sip-4.19.1.tar.gz && rm -rfv $SOURCES/sip-4.19.1 +RUN cd $SOURCES && wget http://download.kde.org/stable/qca/2.1.1/src/qca-2.1.1.tar.xz && tar -xvf qca-2.1.1.tar.xz && \ +cd $SOURCES/qca-2.1.1 && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr .. && cmake --build . && cmake --build . --target install && \ +rm $SOURCES/qca-2.1.1.tar.xz && rm -rfv $SOURCES/qca-2.1.1 +RUN cd $SOURCES && git clone https://github.com/ayoy/qoauth && \ +cd $SOURCES/qoauth && sed s#/usr#/opt/usr# -i src/src.pro && sed s#/lib64#/lib# -i src/src.pro&& qmake ' "QT += widgets" "QT += webkitwidgets" "CONFIG += crypto" "DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x000000"' src/src.pro \ +&& make -j8 && make install && rm -rfv $SOURCES/qoauth +RUN cd $SOURCES && svn export svn://svn.code.sf.net/p/qwt/code/branches/qwt-6.1 && cd $SOURCES/qwt-6.1 && qmake -set prefix '/opt' && qmake qwt.pro && \ +make -j8 && INSTALL_ROOT=/opt make install && rm -rfv $SOURCES/qwt-6.1 && \ +mv /opt/usr/local/qwt-6.1.4-svn/include/* /opt/usr/include/ && \ +mv /opt/usr/local/qwt-6.1.4-svn/lib/* /opt/usr/lib/ && \ +mv /opt/usr/local/qwt-6.1.4-svn/plugins/designer/* /opt/usr/plugins/designer/ && rmdir /opt/usr/local/qwt-6.1.4-svn/plugins/designer +RUN cd $SOURCES && git clone https://github.com/steveire/grantlee && \ +cd $SOURCES/grantlee && mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr CMAKE_BUILD_TYPE=Release .. && cmake --build . && cmake --build . --target install \ +&& rm -rfv $SOURCES/grantlee +RUN cd $SOURCES && wget https://poppler.freedesktop.org/poppler-0.51.0.tar.xz && tar -xvf poppler-0.51.0.tar.xz && \ +cd $SOURCES/poppler-0.51.0 && mkdir build && cd build && ../configure --prefix=/opt/usr -sysconfdir=/opt/etc --disable-static --enable-build-type=release \ +--enable-cmyk --enable-xpdf-headers --enable-poppler-qt5 && make && make install && rm $SOURCES/poppler-0.51.0.tar.xz && rm -rfv $SOURCES/poppler-0.51.0 +RUN wget https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.1.17.tar.bz2 && tar -jxvf gnupg-2.1.17.tar.bz2 +RUN cd gnupg-2.1.17 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && rm /gnupg-2.1.17.tar.bz2 && rm -rfv /gnupg-2.1.17 diff --git a/appimage-template/docker/armhf/qt59/Gemfile b/appimage-template/docker/armhf/qt59/Gemfile new file mode 100644 index 0000000..dce0c35 --- /dev/null +++ b/appimage-template/docker/armhf/qt59/Gemfile @@ -0,0 +1,43 @@ +source 'https://rubygems.org' + +gem 'aptly-api', '>= 0.5.0' +gem 'concurrent-ruby' +gem 'deep_merge', '~> 1.0' +gem 'docker-api', '~> 1.24' # Container.refresh! only introduced in 1.23 +gem 'gir_ffi' +gem 'git' +gem 'gitlab', + git: 'https://github.com/NARKOZ/gitlab', + branch: 'master' +gem 'insensitive_hash' +gem 'jenkins_api_client' +gem 'jenkins_junit_builder' +gem 'logger-colors' +gem 'mercurial-ruby' +gem 'net-ping', '< 2.0.0' +gem 'net-sftp' +gem 'net-ssh-gateway' +gem 'nokogiri' +gem 'oauth', '~> 0.4' +gem 'octokit' +gem 'releaseme', + git: 'https://anongit.kde.org/releaseme.git', + branch: 'master' +gem 'rugged' +gem 'rspec' +# Temporarily from git waiting for a release newer than 4.1.0. Once a newer +# version is available this can move up and drop the git paramaters. +# Also undo workaround in deploy_in_container.rake! +gem 'net-ssh', '<= 4.1.0', + git: 'https://github.com/net-ssh/net-ssh', + branch: 'master' + +# Git URI management +gem 'git_clone_url', '~> 2.0' +gem 'uri-ssh_git', '~> 2.0' + +# Test logging as junit (also used at runtime for linting) +gem 'ci_reporter_test_unit', + git: 'https://github.com/apachelogger/ci_reporter_test_unit', + branch: 'test-unit-3' +gem 'test-unit', '~> 3.0' diff --git a/appimage-template/docker/armhf/qt59/Xlibs.sh b/appimage-template/docker/armhf/qt59/Xlibs.sh new file mode 100644 index 0000000..2c77bc2 --- /dev/null +++ b/appimage-template/docker/armhf/qt59/Xlibs.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +cat > lib-7.7.md5 << EOF +a615e17d9fee6f097fc3b716eacb3dca xtrans-1.3.4.tar.bz2 +c35d6ad95b06635a524579e88622fdb5 libX11-1.6.2.tar.bz2 +0d9f6dd9c23bf4bcbfb00504b566baf5 libXfont2-2.0.1.tar.bz2 +52df7c4c1f0badd9f82ab124fb32eb97 libXext-1.3.3.tar.bz2 +a8a0dbd2299b2568d8c919883f5c8501 libFS-1.0.6.tar.bz2 +addfb1e897ca8079531669c7c7711726 libICE-1.0.9.tar.bz2 +499a7773c65aba513609fe651853c5f3 libSM-1.2.2.tar.bz2 +7a773b16165e39e938650bcc9027c1d5 libXScrnSaver-1.2.2.tar.bz2 +03149823ae57bb02d0cec90d5b97d56c libXt-1.1.4.tar.bz2 +41d92ab627dfa06568076043f3e089e4 libXmu-1.1.2.tar.bz2 +769ee12a43611cdebd38094eaf83f3f0 libXpm-3.5.11.tar.bz2 +7446f5fba888672aad068b29c0928ba3 libXaw-1.0.12.tar.bz2 +b985b85f8b9386c85ddcfe1073906b4d libXfixes-5.0.1.tar.bz2 +f7a218dcbf6f0848599c6c36fc65c51a libXcomposite-0.4.4.tar.bz2 +2bd9a15fcf64d216e63b8d129e4f1f1c libXrender-0.9.8.tar.bz2 +1e7c17afbbce83e2215917047c57d1b3 libXcursor-1.1.14.tar.bz2 +0cf292de2a9fa2e9a939aefde68fd34f libXdamage-1.1.4.tar.bz2 +ad2919764933e075bb0361ad5caa3d19 libfontenc-1.1.2.tar.bz2 +664629bfa7cdf8b984155019fd395dcb libXfont-1.5.0.tar.bz2 +331b3a2a3a1a78b5b44cfbd43f86fcfe libXft-2.3.2.tar.bz2 +9c4a69c34b19ec1e4212e849549544cb libXi-1.7.4.tar.bz2 +9336dc46ae3bf5f81c247f7131461efd libXinerama-1.1.3.tar.bz2 +210ed9499a3d9c96e3a221629b7d39b0 libXrandr-1.4.2.tar.bz2 +45ef29206a6b58254c81bea28ec6c95f libXres-1.0.7.tar.bz2 +25c6b366ac3dc7a12c5d79816ce96a59 libXtst-1.2.2.tar.bz2 +e0af49d7d758b990e6fef629722d4aca libXv-1.0.10.tar.bz2 +2e4014e9d55c430e307999a6b3dd256d libXvMC-1.0.8.tar.bz2 +d7dd9b9df336b7dd4028b6b56542ff2c libXxf86dga-1.1.4.tar.bz2 +e46f6ee4f4567349a3189044fe1bb712 libXxf86vm-1.1.3.tar.bz2 +ba983eba5a9f05d152a0725b8e863151 libdmx-1.1.3.tar.bz2 +b7c0d3afce14eedca57312a3141ec13a libpciaccess-0.13.2.tar.bz2 +19e6533ae64abba0773816a23f2b9507 libxkbfile-1.0.8.tar.bz2 +2dd10448c1166e71a176206a8dfabe6d libxshmfence-1.1.tar.bz2 +EOF +grep -v '^#' lib-7.7.md5 | awk '{print $2}' | wget -i- -c \ + -B http://xorg.freedesktop.org/releases/individual/lib/ && +md5sum -c lib-7.7.md5 + +for package in $(grep -v '^#' lib-7.7.md5 | awk '{print $2}') +do + packagedir=${package%.tar.bz2} + tar -xf $package + pushd $packagedir + case $packagedir in + libXfont-[0-9]* ) + ./configure --prefix=/opt/usr \ + --disable-devel-docs + ;; + libXt-[0-9]* ) + ./configure --prefix=/opt/usr \ + --with-appdefaultdir=/etc/X11/app-defaults + ;; + * ) + ./configure --prefix=/opt/usr + ;; + esac + make -j8 + make install + popd + rm -rf $packagedir +done diff --git a/appimage-template/docker/armhf/qt59/dbusmenu-qt5.sh b/appimage-template/docker/armhf/qt59/dbusmenu-qt5.sh new file mode 100644 index 0000000..ef2ea1e --- /dev/null +++ b/appimage-template/docker/armhf/qt59/dbusmenu-qt5.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +cd $SOURCES && bzr branch lp:libdbusmenu-qt && cd $SOURCES/libdbusmenu-qt && \ +cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr -DCMAKE_BUILD_TYPE=Debug -DWITH_DOC=OFF -DUSE_QT5=ON && make VERBOSE=1 && make install && rm -rfv $SOURCES/libdbusmenu-qt diff --git a/appimage-template/docker/armhf/qt59/ffmpeg.sh b/appimage-template/docker/armhf/qt59/ffmpeg.sh new file mode 100644 index 0000000..45c1722 --- /dev/null +++ b/appimage-template/docker/armhf/qt59/ffmpeg.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -e +set -x + +function error_exit +{ + echo "$1" 1>&2 + exit 1 +} + + +if wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2; then + tar xjvf ffmpeg-snapshot.tar.bz2 +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi + +if cd ffmpeg; then + ./configure --prefix="/opt/usr" --extra-ldflags="-L/opt/usr//lib -lstdc++ -lm -lrt -ldl" --extra-cflags="-I/opt/usr/include" --pkg-config-flags="--static" --enable-static --enable-avfilter \ + --enable-gpl --enable-avresample --enable-avutil --enable-libx265 --enable-libvpx --enable-libx264 --disable-doc && \ + make -j4 && make install +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi diff --git a/appimage-template/docker/armhf/qt59/kf5/Dockerfile b/appimage-template/docker/armhf/qt59/kf5/Dockerfile new file mode 100644 index 0000000..9879ac2 --- /dev/null +++ b/appimage-template/docker/armhf/qt59/kf5/Dockerfile @@ -0,0 +1,10 @@ +FROM sgclark/trusty-qt59 + +RUN apt-get -y install libpolkit-gobject-1-dev libpolkit-backend-1-dev libpolkit-agent-1-dev libperl-dev libjpeg-dev libgif-dev libpng12-dev \ +libperl-dev libpcre3-dev libxcb-keysyms1-dev libgit2-dev libacl1-dev libkrb5-dev libxml2-dev libxslt1-dev zlib1g-dev \ +libx11-xcb-dev libcap-dev libxcb1-dev libxcb-keysyms1-dev libxcb-xtest0-dev libepoxy-dev libutempter-dev \ +libaspell-dev libhunspell-dev hspell libvoikko-dev bzip2 liblzma-dev media-player-info libavahi-common-dev libgamin-dev \ +libqrencode-dev libxtables10 libatm1 libdmtx-dev +# KF5 +ADD kf5.sh $SOURCES/ +RUN cd $SOURCES && /bin/bash -x kf5.sh diff --git a/appimage-template/docker/armhf/qt59/kf5/kf5.sh b/appimage-template/docker/armhf/qt59/kf5/kf5.sh new file mode 100644 index 0000000..9011142 --- /dev/null +++ b/appimage-template/docker/armhf/qt59/kf5/kf5.sh @@ -0,0 +1,65 @@ +#!/bin/bassh + +for package in extra-cmake-modules attica kconfig kwidgetsaddons karchive kcompletion kcoreaddons kcodecs kauth kwindowsystem kcrash \ +ki18n kdoctools kdbusaddons kglobalaccel kguiaddons kidletime kimageformats kitemmodels kjs kplotting syntax-highlighting \ +kconfigwidgets kitemviews kiconthemes sonnet kwayland prison threadweaver kcrash kdnssd kpty \ +kservice ktextwidgets kxmlgui kbookmarks solid kjobwidgets kio kinit kded phonon phonon-gstreamer knotifications kparts \ +kactivities kdesignerplugin kunitconversion kpackage kdeclarative kcmutils kdesu kwallet kdewebkit kemoticons kjsembed kmediaplayer \ +kde4libsupport knewstuff knotifications knotifyconfig kross ktexteditor framework-integration kapidox \ +khtml plasma-framework krunner libkdegames kirigmi libbluedevil libkpeople libqapt libqgit2 networkmanager-qt purpose \ +libgravatar libkcddb libkcompactdisc libkdcraw libkdepim libkeduvocdocument libkexiv2 libkface libkgapi libkgeomap libkipi \ +libkleo libmahjongg libkomparediff2 libksane akonadi-calendar akonadi-calendar-tools akonadi-contacts akonadi-import-wizard \ +akonadi-mime akonadi-notes akonadi-search akonadiconsole akonadi pimcommon libksieve +do + git clone http://anongit.kde.org/$package + cd $package + case $package in + 'breeze' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DBINARY_ICONS_RESOURCE=ON ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + 'breeze-icons' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DBINARY_ICONS_RESOURCE=ON \ + -DWITH_DECORATIONS=OFF ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + 'phonon-gstreamer' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DPHONON_LIBRARY_PATH=/opt/usr/plugins \ + -DBUILD_TESTING=OFF -DPHONON_BUILD_PHONON4QT5=ON \ + -DPHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT=TRUE ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + 'phonon' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DPHONON_LIBRARY_PATH=/opt/usr/plugins \ + -DBUILD_TESTING=OFF -DPHONON_BUILD_PHONON4QT5=ON \ + -DPHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT=TRUE ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + * ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + esac + cd ../.. + rm -rf $package +done diff --git a/appimage-template/docker/armhf/qt59/qt5.sh b/appimage-template/docker/armhf/qt59/qt5.sh new file mode 100644 index 0000000..2518203 --- /dev/null +++ b/appimage-template/docker/armhf/qt59/qt5.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +export CFLAGS=$(pkg-config --cflags gstreamer-1.0) $CFLAGS +export LDFLAGS=$(pkg-config --libs gstreamer-1.0) $LDFLAGS + +cd /source && git clone git://code.qt.io/qt/qt5.git && cd qt5 && git checkout 5.9 +git fetch https://codereview.qt-project.org/qt/qt5 refs/changes/44/189744/2 && git format-patch -1 --stdout FETCH_HEAD > init.patch +patch -p1 < init.patch +perl init-repository --module-subset=default,-qtmacextras,-qtwinextras,-qtwebkit-examples,-qtandroidextras +cd /source/qt5 && ./configure -v -developer-build -opensource -nomake examples -nomake tests -confirm-license -opengl desktop -reduce-exports -prefix /opt/usr && make -j8 && make install && rm -rfv $SOURCES/qt5 +rm -rfv /source/qt5 diff --git a/appimage-template/docker/armhf/qt59/x264.sh b/appimage-template/docker/armhf/qt59/x264.sh new file mode 100644 index 0000000..7da0929 --- /dev/null +++ b/appimage-template/docker/armhf/qt59/x264.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -e +set -x + + +function error_exit +{ + echo "$1" 1>&2 + exit 1 +} + +if wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2; then + mkdir x264 && tar xjvf last_x264.tar.bz2 -C x264 --strip-components 1 + +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi +if cd x264; then + ./configure --enable-static --enable-shared --prefix=/opt/usr + make -j4 && make install +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi diff --git a/appimage-template/docker/armhf/qt59/x265.sh b/appimage-template/docker/armhf/qt59/x265.sh new file mode 100644 index 0000000..ab2ba60 --- /dev/null +++ b/appimage-template/docker/armhf/qt59/x265.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -e +set -x + +function error_exit +{ + echo "$1" 1>&2 + exit 1 +} + +if wget http://ftp.videolan.org/pub/videolan/x265/x265_2.3.tar.gz; then + tar xvf x265_2.3.tar.gz +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi + +if cd x265_2.3/build/linux; then + cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/opt/usr" -DENABLE_PIC=ON -DENABLE_SHARED=ON ../../source + make -j4 && make install +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi diff --git a/appimage-template/docker/qt58/Dockerfile b/appimage-template/docker/qt58/Dockerfile new file mode 100644 index 0000000..e870a2e --- /dev/null +++ b/appimage-template/docker/qt58/Dockerfile @@ -0,0 +1,326 @@ +FROM ubuntu:14.04 +RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb-src http://ca.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb http://ca.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb-src http://ca.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.8 main" >> /etc/apt/sources.list +RUN echo "deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.8 main" >> /etc/apt/sources.list + +#link to bash +RUN rm /bin/sh && ln -s /bin/bash /bin/sh +RUN ln -s -f /bin/true /usr/bin/chfn +RUN apt-get update && apt-get -y upgrade && apt-get -y build-dep libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev python3-dev +RUN apt-get -y --force-yes install \ +'^libxcb.*-dev' \ +bzr \ +clang-3.8 \ +festival \ +festival-dev \ +firebird-dev \ +freeglut3-dev \ +freetds-dev \ +fuse \ +gdb \ +git \ +gperf \ +guile-2.0-dev \ +intltool \ +libasound2-dev \ +libatkmm-1.6-dev \ +libatomic-ops-dev \ +libatspi2.0-dev \ +libboost-all-dev \ +libcap-dev \ +libclang-3.8-dev \ +libcups2-dev \ +libdbus-1-dev \ +libdouble-conversion-dev \ +libfontconfig1-dev \ +libfreetype6-dev \ +libgbm-dev \ +libgl1-mesa-dev \ +libgles2-mesa-dev \ +libglew-dev \ +libglew1.5-dev \ +libglib2.0-dev \ +libglm-dev \ +libglu1-mesa-dev \ +libgtk-3-dev \ +libharfbuzz-dev \ +libicu-dev \ +libjpeg-dev \ +libmtdev-dev \ +libmysqlclient-dev \ +libopus-dev \ +libpcre3-dev \ +libpng-dev \ +libpq-dev \ +libproxy-dev \ +libreadline-dev \ +libsndfile1-dev \ +libsqlite3-dev \ +libssl-dev \ +libsystemd-journal-dev \ +libudev-dev \ +libunistring-dev \ +libunwind8-dev \ +libvorbis-dev \ +libx11-xcb-dev \ +libxext-dev \ +libxi-dev \ +libxi-dev \ +libxkbcommon-dev \ +libxkbcommon-x11-dev \ +libxrender-dev \ +libxrender-dev \ +libxslt-dev \ +lldb-3.8 \ +llvm-3.8-dev \ +llvm-3.8 \ +ml-lex \ +publicsuffix \ +python-dev \ +ruby \ +software-properties-common \ +subversion \ +texinfo \ +unixodbc-dev \ +wget \ +x11proto-dri3-dev \ +x11proto-present-dev \ +yasm \ +zlib1g-dev \ +zsync +# # Rebuild kernel, needed for fuse. +RUN DEBIAN_FRONTEND=noninteractive apt-get -y install --reinstall linux-image-4.4.0-72 + +## Rebuild pam to allow su +# Rebuild pam with --disable-audit flag +# Fixes: https://github.com/docker/docker/issues/5899 +## +RUN apt-get -y build-dep pam \ + && cd /tmp/ \ + && export CONFIGURE_OPTS=--disable-audit \ + && apt-get -b source pam \ + && dpkg -i libpam-doc*.deb libpam-modules*.deb libpam-runtime*.deb libpam0g*.deb \ + && rm -rf /tmp/* \ +&& unset CONFIGURE_OPTS + +#Oddballs from ppas +RUN add-apt-repository -y ppa:wayland.admin/daily-builds && sudo apt-get update && sudo apt-get -y install libinput-dev libwayland-dev \ + libwayland-server0 libwayland0 && add-apt-repository -y -r ppa:wayland.admin/daily-builds +RUN add-apt-repository -y ppa:jonathonf/mysql && sudo apt-get update && apt-get -y install mysql-server-core-5.7 mysql-client-5.7 && add-apt-repository -y -r ppa:jonathonf/mysql +RUN add-apt-repository -y ppa:george-edison55/cmake-3.x && sudo apt-get update && apt-get -y install cmake +RUN add-apt-repository -y ppa:jonathonf/gtk3.18 && sudo apt-get update && sudo apt-get -y install libglib2.0-dev && add-apt-repository -y -r ppa:jonathonf/gtk3.18 + +# Set up for GCC options ( try gcc6 ) +RUN add-apt-repository -y ppa:ubuntu-toolchain-r/test && apt-get update && apt-get -y install gcc-4.9 g++-4.9 gcc-5 g++-5 gcc-6 g++-6 && \ +update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 10 && \ +update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 20 && \ +update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 30 && \ +update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 10 && \ +update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 20 && \ +update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 30 && \ +update-alternatives --set gcc "/usr/bin/gcc-6" && \ +update-alternatives --set g++ "/usr/bin/g++-6" && \ +update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 40 && \ +update-alternatives --set cc /usr/bin/gcc && \ +update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 40 && \ +update-alternatives --set c++ /usr/bin/g++ && \ +gcc --version && \ +cc --version && \ +g++ --version && apt-get -y upgrade + + #Set ENV +ENV LD_LIBRARY_PATH /opt/usr/lib:/opt/usr/lib/gstreamer-1.0:/opt/usr/lib/x86_64-linux-gnu:/usr/lib:/usr/lib64:/lib +ENV PATH /opt/usr/bin:/home/jenkins/.rbenv/bin:/home/jenkins/.rbenv/shims:$PATH +ENV PKG_CONFIG_PATH /opt/usr/lib/pkgconfig:/opt/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig +ENV CXXFLAGS -std=c++11 +ENV CPATH /opt/usr/include/gstreamer-1.0:/opt/usr/include:$CPATH +ENV SOURCES / + +#Newer toolchain +RUN cd $SOURCES && wget http://ftp.x.org/pub/individual/util/util-macros-1.19.0.tar.bz2 && tar -jxvf util-macros-1.19.0.tar.bz2 && \ +cd $SOURCES/util-macros-1.19.0 && ./configure --prefix /usr && make install && rm $SOURCES/util-macros-1.19.0.tar.bz2 && rm -rfv $SOURCES/util-macros-1.19.0 +RUN cd $SOURCES && wget http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.bz2 && tar -jxvf m4-1.4.18.tar.bz2 && \ +cd $SOURCES/m4-1.4.18 && mkdir builddir && cd builddir && ../configure --prefix=/usr --enable-shared && make -j 8 && make install \ +&& rm $SOURCES/m4-1.4.18.tar.bz2 && rm -rfv $SOURCES/m4-1.4.18 +RUN cd $SOURCES && wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz && tar -xvf autoconf-2.69.tar.xz && \ +cd $SOURCES/autoconf-2.69 && mkdir builddir && cd builddir && ../configure --prefix=/usr && make -j 8 && make install && \ +rm $SOURCES/autoconf-2.69.tar.xz && rm -rfv $SOURCES/autoconf-2.69 +RUN cd $SOURCES && wget https://ftp.gnu.org/gnu/automake/automake-1.15.tar.xz && tar -xvf automake-1.15.tar.xz && \ +cd $SOURCES/automake-1.15 && mkdir builddir && cd builddir && ../configure --prefix=/usr && make -j 8 && make install && \ +rm $SOURCES/automake-1.15.tar.xz && rm -rfv $SOURCES/automake-1.15 +RUN cd $SOURCES && wget https://ftp.gnu.org/gnu/autogen/rel5.18.12/autogen-5.18.12.tar.xz && tar -xvf autogen-5.18.12.tar.xz && \ +cd $SOURCES/autogen-5.18.12 && mkdir builddir && cd builddir && ../configure --prefix=/usr && make -j 8 && make install && \ +rm $SOURCES/autogen-5.18.12.tar.xz && rm -rfv $SOURCES/autogen-5.18.12 +RUN cd $SOURCES && wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.3.tar.gz && tar -xzvf gettext-0.19.3.tar.gz && \ +cd $SOURCES/gettext-0.19.3 && ./configure --prefix=/usr && make -j 8 && make install && rm $SOURCES/gettext-0.19.3.tar.gz && rm -rfv $SOURCES/gettext-0.19.3 +RUN cd $SOURCES && wget http://www.cups.org/software/1.7.5/cups-1.7.5-source.tar.bz2 && tar -jxvf cups-1.7.5-source.tar.bz2 && \ +cd $SOURCES/cups-1.7.5 && aclocal -I config-scripts && autoconf -I config-scripts && ./configure --prefix=/usr && make -j 8 && make install && \ +rm -rfv $SOURCES/cups-1.7.5 && rm $SOURCES/cups-1.7.5-source.tar.bz2 + +# Newer xlibs +ADD Xlibs.sh $SOURCES/ +RUN cd $SOURCES && /bin/bash -x Xlibs.sh +#New dbus +RUN sudo apt-get -y remove 'libdbus-1-dev' +RUN cd $SOURCES && wget http://dbus.freedesktop.org/releases/dbus/dbus-1.10.16.tar.gz && tar -xvf dbus-1.10.16.tar.gz +RUN cd $SOURCES/dbus-1.10.16 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/usr && make -j 8 && make install && \ +rm $SOURCES/dbus-1.10.16.tar.gz && rm -rfv $SOURCES/dbus-1.10.16 +RUN cd $SOURCES && wget http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.108.tar.gz && tar -xvf dbus-glib-0.108.tar.gz +RUN cd $SOURCES/dbus-glib-0.108 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/usr && make -j 8 && make install && \ +rm $SOURCES/dbus-glib-0.108.tar.gz && rm -rfv $SOURCES/dbus-glib-0.108 +#New pulseaudio +RUN cd $SOURCES && wget http://freedesktop.org/software/pulseaudio/releases/pulseaudio-10.0.tar.xz && tar -xvf pulseaudio-10.0.tar.xz +RUN cd $SOURCES/pulseaudio-10.0 && mkdir builddir && cd builddir && ../configure --prefix=/usr && make -j 8 && make install && \ +rm $SOURCES/pulseaudio-10.0.tar.xz && rm -rfv $SOURCES/pulseaudio-10.0 + +# Create jenkins user +RUN groupadd -g 1000 jenkins +RUN useradd -m -u 1000 -g 1000 -d /home/jenkins jenkins +RUN modprobe fuse +RUN usermod -a -G fuse jenkins +RUN chgrp fuse /dev/fuse +RUN mkdir -p /{appimages,app.Dir,source} +RUN chown jenkins.jenkins /appimages && chown jenkins.jenkins /app.Dir && chown jenkins.jenkins /source && chown jenkins.jenkins /opt +RUN echo 'jenkins:1234' | chpasswd #changeme +RUN adduser jenkins sudo +RUN echo 'jenkins ALL=NOPASSWD: ALL' >> /etc/sudoers +RUN echo 'bundler ALL=NOPASSWD: /home/jenkins/.rbenv/bin/bundler' >> /etc/sudoers +RUN echo 'eval "$(rbenv init -)"' >> /etc/profile +# Cpan perl lib needed by kf5 +RUN cd $SOURCES && cpan URI::Escape +# Everythin else as jenkins user ( NOT WORKING, disabled for now.) +#USER jenkins + + #Set ENV +ENV LD_LIBRARY_PATH /opt/usr/lib:/opt/usr/lib/gstreamer-1.0:/opt/usr/lib/x86_64-linux-gnu:/usr/lib:/usr/lib64:/lib +ENV PATH /opt/usr/bin:/root/.rbenv/bin:/root/.rbenv/shims:$PATH +ENV PKG_CONFIG_PATH /opt/usr/lib/pkgconfig:/opt/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig +ENV CXXFLAGS -std=c++11 -fPIC +ENV CPATH /opt/usr/include/gstreamer-1.0:/opt/usr/include:$CPATH +ENV SOURCES /source + +#GPG stack for gpgme +RUN cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.26.tar.bz2 && tar -jxvf libgpg-error-1.26.tar.bz2 && \ +cd $SOURCES/libgpg-error-1.26 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/libgpg-error-1.26.tar.bz2 && rm -rfv $SOURCES/libgpg-error-1.26 +RUN cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/libksba/libksba-1.3.5.tar.bz2 && tar -jxvf libksba-1.3.5.tar.bz2 && \ +cd $SOURCES/libksba-1.3.5 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/libksba-1.3.5.tar.bz2 && rm -rfv $SOURCES/libksba-1.3.5 +RUN cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.4.3.tar.bz2 && tar -jxvf libassuan-2.4.3.tar.bz2 && \ +cd $SOURCES/libassuan-2.4.3 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/libassuan-2.4.3.tar.bz2 && rm -rfv $SOURCES/libassuan-2.4.3 +RUN cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/npth/npth-1.3.tar.bz2 && tar -jxvf npth-1.3.tar.bz2 && \ +cd $SOURCES/npth-1.3 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/npth-1.3.tar.bz2 && rm -rfv $SOURCES/npth-1.3 +RUN cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.7.5.tar.bz2 && tar -jxvf libgcrypt-1.7.5.tar.bz2 && \ +cd $SOURCES/libgcrypt-1.7.5 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/libgcrypt-1.7.5.tar.bz2 && rm -rfv $SOURCES/libgcrypt-1.7.5 +RUN cd $SOURCES && wget http://ftp.gnu.org/gnu/libtasn1/libtasn1-4.10.tar.gz && tar -zxvf libtasn1-4.10.tar.gz && \ +cd $SOURCES/libtasn1-4.10 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install &&\ + rm $SOURCES/libtasn1-4.10.tar.gz && rm -rfv $SOURCES/libtasn1-4.10 +RUN cd $SOURCES && wget https://ftp.gnu.org/gnu/nettle/nettle-3.3.tar.gz && tar -zxvf nettle-3.3.tar.gz && \ +cd $SOURCES/nettle-3.3 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/nettle-3.3.tar.gz && rm -rfv $SOURCES/nettle-3.3 +RUN cd $SOURCES && wget http://p11-glue.freedesktop.org/releases/p11-kit-0.23.2.tar.gz && tar -zxvf p11-kit-0.23.2.tar.gz && \ +cd $SOURCES/p11-kit-0.23.2 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/p11-kit-0.23.2.tar.gz && rm -rfv $SOURCES/p11-kit-0.23.2 +RUN cd $SOURCES && wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-3.5.10.tar.xz && tar -xvf gnutls-3.5.10.tar.xz && \ +cd $SOURCES/gnutls-3.5.10 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr --with-included-libtasn1 && make -j 8 && make install && \ +rm $SOURCES/gnutls-3.5.10.tar.xz && rm -rfv $SOURCES/gnutls-3.5.10 +RUN cd $SOURCES && wget http://downloads.sourceforge.net/pcre/pcre-8.35.tar.bz2 && tar -jxvf pcre-8.35.tar.bz2 && \ +cd $SOURCES/pcre-8.35 && ./configure --prefix=/opt/usr && make && make install && \ +rm $SOURCES/pcre-8.35.tar.bz2 && rm -rfv $SOURCES/pcre-8.35 +RUN cd $SOURCES && git clone git://git.gnupg.org/gpgme.git && \ +cd $SOURCES/gpgme && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && rm -rfv $SOURCES/gpgme + + # Install rbenv and ruby-build +ADD ./Gemfile /Gemfile +RUN echo 'gem: --no-rdoc --no-ri' >> ~/.gemrc +RUN git clone https://github.com/sstephenson/rbenv.git ~/.rbenv +RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build +RUN rbenv install 2.3.1 +RUN echo 'eval "$(rbenv init -)"' >> ~/.bashrc && rbenv init - +ADD Gemfile /home/jenkins/ +RUN cd ~ && rbenv local 2.3.1 && gem install bundler && bundle install --binstubs && bundle show rspec + +#New python3 +RUN sudo apt-get -y remove 'python3.*' 'sip.*' +RUN cd $SOURCES && wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tar.xz && tar -xvf Python-3.5.3.tar.xz +RUN cd $SOURCES/Python-3.5.3 && ./configure --prefix=/opt/usr --enable-shared --enable-static && make -j 8 && make install && rm $SOURCES/Python-3.5.3.tar.xz && rm -rfv $SOURCES/Python-3.5.3 +RUN cd $SOURCES && wget https://sourceforge.net/projects/pyqt/files/sip/sip-4.19.1/sip-4.19.1.tar.gz && tar -zxvf sip-4.19.1.tar.gz +RUN cd $SOURCES/sip-4.19.1 && python3 configure.py --destdir /opt/usr --incdir /opt/usr/include/python3.5 && make && make install +RUN pip3 install Sphinx clang PyOpenGL PyOpenGL_accelerate +ENV PYTHONPATH /opt/usr/lib/python3.5/site-packages:$PYTHONPATH + +#FFMPEG deps +ADD x264.sh $SOURCES/ +RUN cd $SOURCES && /bin/bash -x x264.sh +ADD x265.sh $SOURCES/ +RUN cd $SOURCES && /bin/bash -x x265.sh + +#FFMPEG non existant in trusty +ADD ffmpeg.sh $SOURCES/ +RUN cd $SOURCES && /bin/bash -x ffmpeg.sh + +# #Build newer gstreamer for sound stack +RUN sudo apt-get -y remove 'gstreamer.*' +RUN cd $SOURCES && wget 'https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.10.4.tar.xz' && tar -xvf gstreamer-1.10.4.tar.xz && \ +cd $SOURCES/gstreamer-1.10.4 && ./configure --prefix=/opt/usr --enable-shared --enable-gst-debug && make && make install && rm $SOURCES/gstreamer-1.10.4.tar.xz && rm -rfv $SOURCES/gstreamer-1.10.4 +RUN cd $SOURCES && wget 'https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.10.4.tar.xz' && tar -xvf gst-plugins-base-1.10.4.tar.xz && \ +cd $SOURCES/gst-plugins-base-1.10.4 && ./configure --prefix=/opt/usr --enable-shared --enable-gst-debug && make && make install && rm $SOURCES/gst-plugins-base-1.10.4.tar.xz && rm -rfv $SOURCES/gst-plugins-base-1.10.4 +RUN cd $SOURCES && wget 'https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.10.4.tar.xz' && tar -xvf gst-plugins-good-1.10.4.tar.xz && \ +cd $SOURCES/gst-plugins-good-1.10.4 && ./configure --prefix=/opt/usr --enable-shared --enable-gst-debug && make && make install && rm $SOURCES/gst-plugins-good-1.10.4.tar.xz && rm -rfv $SOURCES/gst-plugins-good-1.10.4 + +# # Build Qt5 from git and install to /opt/usr ( developer buid ) +RUN sudo apt-get -y remove 'qt.*' +RUN wget http://qt.mirrors.tds.net/qt/archive/qt/5.8/5.8.0/single/qt-everywhere-opensource-src-5.8.0.tar.gz && tar -zxvf qt-everywhere-opensource-src-5.8.0.tar.gz +RUN cd qt-everywhere-opensource-src-5.8.0 && ./configure -v -release -opensource -confirm-license -dbus -openssl -rpath -qt-xcb -feature-accessibility -opengl desktop -system-sqlite -nomake examples -nomake tests -prefix /opt/usr && make && make install +RUN rm /qt-everywhere-opensource-src-5.8.0.tar.gz && rm -rfv /qt-everywhere-opensource-src-5.8.0 +RUN wget http://download.qt.io/community_releases/5.8/5.8.0-final/qtwebkit-opensource-src-5.8.0.tar.xz && tar -xvf qtwebkit-opensource-src-5.8.0.tar.xz +RUN cd qtwebkit-opensource-src-5.8.0 && mkdir build && cd build && qmake PREFIX=/opt/usr ../WebKit.pro && make && make install +RUN rm /qtwebkit-opensource-src-5.8.0.tar.xz && rm -rfv /qtwebkit-opensource-src-5.8.0 + +# # Various external Qt relelated modules addons +RUN cd $SOURCES && git clone git://code.qt.io/qt/qtdeclarative.git && cd $SOURCES/qtdeclarative && git checkout 5.9 && \ +cd $SOURCES/qtdeclarative && qmake PREFIX=/opt/usr . && make && make install && rm -rfv $SOURCES/qtdeclarative +RUN cd $SOURCES && git clone http://code.qt.io/qt/qtstyleplugins.git && \ +cd $SOURCES/qtstyleplugins && qmake PREFIX=/opt/usr . && make && make install && rm -rfv $SOURCES/qtstyleplugins +RUN cd $SOURCES && git clone https://code.qt.io/cgit/qt/qtquick1.git && \ +cd $SOURCES/qtquick1 && qmake PREFIX=/opt/usr . && make && make install && rm -rfv $SOURCES/qtquick1 +RUN cd $SOURCES && git clone https://github.com/flavio/qjson && \ +cd $SOURCES/qjson && cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr && make && make install && rm -rfv $SOURCES/qjson +RUN cd $SOURCES && wget 'https://gstreamer.freedesktop.org/src/qt-gstreamer/qt-gstreamer-1.2.0.tar.xz' && tar -xvf qt-gstreamer-1.2.0.tar.xz && \ +cd $SOURCES/qt-gstreamer-1.2.0 && cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr -DQT_VERSION=5 -DCMAKE_REQUIRED_INCLUDES=/opt/usr/include/gstreamer-1.0/ \ +-DQTGSTREAMER_STATIC=OFF -DQTGSTREAMER_EXAMPLES=OFF && make && make install && rm $SOURCES/qt-gstreamer-1.2.0.tar.xz && rm -rfv $SOURCES/qt-gstreamer-1.2.0 +# RUN cd $SOURCES && wget https://www.riverbankcomputing.com/static/Downloads/PyQt5/PyQt5_gpl-5.8.3.dev1704051437.tar.gz && tar -zxvf PyQt5_gpl-5.8.3.dev1704051437.tar.gz && \ +# cd $SOURCES/PyQt5_gpl-5.8.3.dev1704051437 && /opt/usr/bin/python3 configure.py --confirm-license --verbose --destdir /opt/usr --sip /opt/usr/bin/sip --sip-incdir /opt/usr/include/python3.5/ \ +# -q /opt/usr/bin/qmake -c -j 4 LIBDIR_QT=/opt/usr/lib STRIP="" MOC=/usr/bin/moc --qmake="/opt/usr/bin/qmake" \ +# LIBS_OPENGL="" LIBS_X11="" LIBS_THREAD="" -m /opt/usr/lib/python3.5/config-3.5m \ +# -d /opt/usr/lib/python3.5/dist-packages --dbus /usr/include/dbus-1.0 --no-designer-plugin --no-qml-plugin && make -j8 && make install && \ +# rm -rfv $SOURCES/PyQt5_gpl-5.8.3.dev1704051437 && rm $SOURCES/PyQt5_gpl-5.8.3.dev1704051437.tar.gz && rm $SOURCES/sip-4.19.1.tar.gz && rm -rfv $SOURCES/sip-4.19.1 +RUN cd $SOURCES && wget http://download.kde.org/stable/qca/2.1.1/src/qca-2.1.1.tar.xz && tar -xvf qca-2.1.1.tar.xz && \ +cd $SOURCES/qca-2.1.1 && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr .. && cmake --build . && cmake --build . --target install && \ +rm $SOURCES/qca-2.1.1.tar.xz && rm -rfv $SOURCES/qca-2.1.1 +RUN cd $SOURCES && git clone https://github.com/ayoy/qoauth && \ +cd $SOURCES/qoauth && sed s#/usr#/opt/usr# -i src/src.pro && sed s#/lib64#/lib# -i src/src.pro&& qmake ' "QT += widgets" "QT += webkitwidgets" "CONFIG += crypto" "DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x000000"' src/src.pro \ +&& make -j8 && make install && rm -rfv $SOURCES/qoauth +RUN cd $SOURCES && svn export svn://svn.code.sf.net/p/qwt/code/branches/qwt-6.1 && cd $SOURCES/qwt-6.1 && qmake -set prefix '/opt' && qmake qwt.pro && \ +make -j8 && INSTALL_ROOT=/opt make install && rm -rfv $SOURCES/qwt-6.1 && \ +mv /opt/usr/local/qwt-6.1.4-svn/include/* /opt/usr/include/ && \ +mv /opt/usr/local/qwt-6.1.4-svn/lib/* /opt/usr/lib/ && \ +mv /opt/usr/local/qwt-6.1.4-svn/plugins/designer/* /opt/usr/plugins/designer/ && rmdir /opt/usr/local/qwt-6.1.4-svn/plugins/designer +RUN cd $SOURCES && git clone https://github.com/steveire/grantlee && \ +cd $SOURCES/grantlee && mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr CMAKE_BUILD_TYPE=Release .. && cmake --build . && cmake --build . --target install \ +&& rm -rfv $SOURCES/grantlee +RUN cd $SOURCES && wget https://poppler.freedesktop.org/poppler-0.51.0.tar.xz && tar -xvf poppler-0.51.0.tar.xz && \ +cd $SOURCES/poppler-0.51.0 && mkdir build && cd build && ../configure --prefix=/opt/usr -sysconfdir=/opt/etc --disable-static --enable-build-type=release \ +--enable-cmyk --enable-xpdf-headers --enable-poppler-qt5 && make && make install && rm $SOURCES/poppler-0.51.0.tar.xz && rm -rfv $SOURCES/poppler-0.51.0 +RUN wget https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.1.17.tar.bz2 && tar -jxvf gnupg-2.1.17.tar.bz2 +RUN cd gnupg-2.1.17 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && rm /gnupg-2.1.17.tar.bz2 && rm -rfv /gnupg-2.1.17 +# RUN git clone http://code.qt.io/qt/qtwebkit.git && cd qtwebkit && git checkout 5.9 && \ +# mkdir build && cd build && qmake ' "CONFIG += shared" ' ../WebKit.pro && make && make install && rm -rfv /source/qtwebkit diff --git a/appimage-template/docker/qt58/Gemfile b/appimage-template/docker/qt58/Gemfile new file mode 100644 index 0000000..dce0c35 --- /dev/null +++ b/appimage-template/docker/qt58/Gemfile @@ -0,0 +1,43 @@ +source 'https://rubygems.org' + +gem 'aptly-api', '>= 0.5.0' +gem 'concurrent-ruby' +gem 'deep_merge', '~> 1.0' +gem 'docker-api', '~> 1.24' # Container.refresh! only introduced in 1.23 +gem 'gir_ffi' +gem 'git' +gem 'gitlab', + git: 'https://github.com/NARKOZ/gitlab', + branch: 'master' +gem 'insensitive_hash' +gem 'jenkins_api_client' +gem 'jenkins_junit_builder' +gem 'logger-colors' +gem 'mercurial-ruby' +gem 'net-ping', '< 2.0.0' +gem 'net-sftp' +gem 'net-ssh-gateway' +gem 'nokogiri' +gem 'oauth', '~> 0.4' +gem 'octokit' +gem 'releaseme', + git: 'https://anongit.kde.org/releaseme.git', + branch: 'master' +gem 'rugged' +gem 'rspec' +# Temporarily from git waiting for a release newer than 4.1.0. Once a newer +# version is available this can move up and drop the git paramaters. +# Also undo workaround in deploy_in_container.rake! +gem 'net-ssh', '<= 4.1.0', + git: 'https://github.com/net-ssh/net-ssh', + branch: 'master' + +# Git URI management +gem 'git_clone_url', '~> 2.0' +gem 'uri-ssh_git', '~> 2.0' + +# Test logging as junit (also used at runtime for linting) +gem 'ci_reporter_test_unit', + git: 'https://github.com/apachelogger/ci_reporter_test_unit', + branch: 'test-unit-3' +gem 'test-unit', '~> 3.0' diff --git a/appimage-template/docker/qt58/Xlibs.sh b/appimage-template/docker/qt58/Xlibs.sh new file mode 100644 index 0000000..028d6c4 --- /dev/null +++ b/appimage-template/docker/qt58/Xlibs.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +cat > lib-7.7.md5 << EOF +a615e17d9fee6f097fc3b716eacb3dca xtrans-1.3.4.tar.bz2 +c35d6ad95b06635a524579e88622fdb5 libX11-1.6.2.tar.bz2 +0d9f6dd9c23bf4bcbfb00504b566baf5 libXfont2-2.0.1.tar.bz2 +52df7c4c1f0badd9f82ab124fb32eb97 libXext-1.3.3.tar.bz2 +a8a0dbd2299b2568d8c919883f5c8501 libFS-1.0.6.tar.bz2 +addfb1e897ca8079531669c7c7711726 libICE-1.0.9.tar.bz2 +499a7773c65aba513609fe651853c5f3 libSM-1.2.2.tar.bz2 +7a773b16165e39e938650bcc9027c1d5 libXScrnSaver-1.2.2.tar.bz2 +03149823ae57bb02d0cec90d5b97d56c libXt-1.1.4.tar.bz2 +41d92ab627dfa06568076043f3e089e4 libXmu-1.1.2.tar.bz2 +769ee12a43611cdebd38094eaf83f3f0 libXpm-3.5.11.tar.bz2 +7446f5fba888672aad068b29c0928ba3 libXaw-1.0.12.tar.bz2 +b985b85f8b9386c85ddcfe1073906b4d libXfixes-5.0.1.tar.bz2 +f7a218dcbf6f0848599c6c36fc65c51a libXcomposite-0.4.4.tar.bz2 +2bd9a15fcf64d216e63b8d129e4f1f1c libXrender-0.9.8.tar.bz2 +1e7c17afbbce83e2215917047c57d1b3 libXcursor-1.1.14.tar.bz2 +0cf292de2a9fa2e9a939aefde68fd34f libXdamage-1.1.4.tar.bz2 +ad2919764933e075bb0361ad5caa3d19 libfontenc-1.1.2.tar.bz2 +664629bfa7cdf8b984155019fd395dcb libXfont-1.5.0.tar.bz2 +331b3a2a3a1a78b5b44cfbd43f86fcfe libXft-2.3.2.tar.bz2 +9c4a69c34b19ec1e4212e849549544cb libXi-1.7.4.tar.bz2 +9336dc46ae3bf5f81c247f7131461efd libXinerama-1.1.3.tar.bz2 +210ed9499a3d9c96e3a221629b7d39b0 libXrandr-1.4.2.tar.bz2 +45ef29206a6b58254c81bea28ec6c95f libXres-1.0.7.tar.bz2 +25c6b366ac3dc7a12c5d79816ce96a59 libXtst-1.2.2.tar.bz2 +e0af49d7d758b990e6fef629722d4aca libXv-1.0.10.tar.bz2 +2e4014e9d55c430e307999a6b3dd256d libXvMC-1.0.8.tar.bz2 +d7dd9b9df336b7dd4028b6b56542ff2c libXxf86dga-1.1.4.tar.bz2 +e46f6ee4f4567349a3189044fe1bb712 libXxf86vm-1.1.3.tar.bz2 +ba983eba5a9f05d152a0725b8e863151 libdmx-1.1.3.tar.bz2 +b7c0d3afce14eedca57312a3141ec13a libpciaccess-0.13.2.tar.bz2 +19e6533ae64abba0773816a23f2b9507 libxkbfile-1.0.8.tar.bz2 +2dd10448c1166e71a176206a8dfabe6d libxshmfence-1.1.tar.bz2 +EOF +grep -v '^#' lib-7.7.md5 | awk '{print $2}' | wget -i- -c \ + -B http://xorg.freedesktop.org/releases/individual/lib/ && +md5sum -c lib-7.7.md5 + +for package in $(grep -v '^#' lib-7.7.md5 | awk '{print $2}') +do + packagedir=${package%.tar.bz2} + tar -xf $package + pushd $packagedir + case $packagedir in + libXfont-[0-9]* ) + ./configure --prefix=/usr \ + --disable-devel-docs + ;; + libXt-[0-9]* ) + ./configure --prefix=/usr \ + --with-appdefaultdir=/etc/X11/app-defaults + ;; + * ) + ./configure --prefix=/usr + ;; + esac + make -j8 + make install + popd + rm -rf $packagedir +done diff --git a/appimage-template/docker/qt58/dbusmenu-qt5.sh b/appimage-template/docker/qt58/dbusmenu-qt5.sh new file mode 100644 index 0000000..ef2ea1e --- /dev/null +++ b/appimage-template/docker/qt58/dbusmenu-qt5.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +cd $SOURCES && bzr branch lp:libdbusmenu-qt && cd $SOURCES/libdbusmenu-qt && \ +cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr -DCMAKE_BUILD_TYPE=Debug -DWITH_DOC=OFF -DUSE_QT5=ON && make VERBOSE=1 && make install && rm -rfv $SOURCES/libdbusmenu-qt diff --git a/appimage-template/docker/qt58/ffmpeg.sh b/appimage-template/docker/qt58/ffmpeg.sh new file mode 100644 index 0000000..45c1722 --- /dev/null +++ b/appimage-template/docker/qt58/ffmpeg.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -e +set -x + +function error_exit +{ + echo "$1" 1>&2 + exit 1 +} + + +if wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2; then + tar xjvf ffmpeg-snapshot.tar.bz2 +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi + +if cd ffmpeg; then + ./configure --prefix="/opt/usr" --extra-ldflags="-L/opt/usr//lib -lstdc++ -lm -lrt -ldl" --extra-cflags="-I/opt/usr/include" --pkg-config-flags="--static" --enable-static --enable-avfilter \ + --enable-gpl --enable-avresample --enable-avutil --enable-libx265 --enable-libvpx --enable-libx264 --disable-doc && \ + make -j4 && make install +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi diff --git a/appimage-template/docker/qt58/qt5.sh b/appimage-template/docker/qt58/qt5.sh new file mode 100644 index 0000000..12cee19 --- /dev/null +++ b/appimage-template/docker/qt58/qt5.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +export CFLAGS=$(pkg-config --cflags gstreamer-1.0) $CFLAGS +export LDFLAGS=$(pkg-config --libs gstreamer-1.0) $LDFLAGS +cd /source && git clone git://code.qt.io/qt/qt5.git && cd qt5 && git checkout 5.8 +#git fetch https://codereview.qt-project.org/qt/qt5 refs/changes/44/189744/2 && git format-patch -1 --stdout FETCH_HEAD > init.patch +patch -p1 < init.patch +perl init-repository --module-subset=default,-qtmacextras,-qtwinextras,-qtwebkit-examples,-qtandroidextras +cd /source/qt5 && ./configure -v -developer-build -opensource -nomake examples -nomake tests -confirm-license -prefix /opt/usr && make -j8 && make install && rm -rfv $SOURCES/qt5 +rm -rfv /source/qt5 diff --git a/appimage-template/docker/qt58/x264.sh b/appimage-template/docker/qt58/x264.sh new file mode 100644 index 0000000..d8cbb12 --- /dev/null +++ b/appimage-template/docker/qt58/x264.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -e +set -x + + +function error_exit +{ + echo "$1" 1>&2 + exit 1 +} + +if wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2; then + mkdir x264 && tar xjvf last_x264.tar.bz2 -C x264 --strip-components 1 + +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi +if cd x264; then + ls -l + ./configure --enable-static --enable-shared --prefix=/opt/usr + make -j4 && make install +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi diff --git a/appimage-template/docker/qt58/x265.sh b/appimage-template/docker/qt58/x265.sh new file mode 100644 index 0000000..ab2ba60 --- /dev/null +++ b/appimage-template/docker/qt58/x265.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -e +set -x + +function error_exit +{ + echo "$1" 1>&2 + exit 1 +} + +if wget http://ftp.videolan.org/pub/videolan/x265/x265_2.3.tar.gz; then + tar xvf x265_2.3.tar.gz +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi + +if cd x265_2.3/build/linux; then + cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/opt/usr" -DENABLE_PIC=ON -DENABLE_SHARED=ON ../../source + make -j4 && make install +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi diff --git a/appimage-template/docker/qt59/Dockerfile b/appimage-template/docker/qt59/Dockerfile new file mode 100644 index 0000000..1cb76d3 --- /dev/null +++ b/appimage-template/docker/qt59/Dockerfile @@ -0,0 +1,226 @@ +FROM ubuntu:14.04 +RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb-src http://ca.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb http://ca.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb-src http://ca.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list +RUN echo "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.8 main" >> /etc/apt/sources.list +RUN echo "deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.8 main" >> /etc/apt/sources.list +RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main" >> /etc/apt/sources.list + + +#link to bash +RUN rm /bin/sh && ln -s /bin/bash /bin/sh +RUN ln -s -f /bin/true /usr/bin/chfn +RUN apt-get update && apt-get -y install wget +RUN wget -q -O- https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - +RUN apt-get update && apt-get -y upgrade && apt-get -y build-dep libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev python3-dev +RUN apt-get update && apt-get -y --force-yes install \ +'^libxcb.*-dev' \ +bison \ +bzr \ +chrpath \ +clang-3.8 \ +festival \ +festival-dev \ +firebird-dev \ +flex \ +freeglut3-dev \ +freetds-dev \ +gdb \ +git \ +gperf \ +guile-2.0-dev \ +intltool \ +libasound2-dev \ +libatkmm-1.6-dev \ +libatomic-ops-dev \ +libatspi2.0-dev \ +libboost-all-dev \ +libcap-dev \ +libclang-3.8-dev \ +libdouble-conversion-dev \ +libfontconfig1-dev \ +libfreetype6-dev \ +libgbm-dev \ +libgit2-dev \ +libgl1-mesa-dev \ +libgles2-mesa-dev \ +libglew-dev \ +libglib2.0-dev \ +libglm-dev \ +libglu1-mesa-dev \ +libgtk-3-dev \ +libharfbuzz-dev \ +libicu-dev \ +libjpeg-dev \ +libmtdev-dev \ +libmysqlclient-dev \ +libopus-dev \ +libpcre3-dev \ +libpng-dev \ +libpq-dev \ +libproxy-dev \ +libreadline-dev \ +libsndfile1-dev \ +libsqlite3-dev \ +libssl-dev \ +libsystemd-journal-dev \ +libudev-dev \ +libunistring-dev \ +libunwind8-dev \ +libvorbis-dev \ +libwayland-client0 \ +libwayland-dev \ +libwayland-egl1-mesa \ +libwayland-server0 \ +libwebp-dev \ +libx11-xcb-dev \ +libxcomposite-dev \ +libxext-dev \ +libxi-dev \ +libxkbcommon-dev \ +libxkbcommon-x11-dev \ +libxml2-dev \ +libxrender-dev \ +libxslt1-dev \ +lldb-3.8 \ +llvm-3.8 \ +llvm-3.8-dev \ +nasm \ +mesa-common-dev \ +ml-lex \ +openssh-server \ +pkg-config \ +postgresql-9.4 \ +postgresql-contrib-9.4 \ +postgresql-server-dev-9.4 \ +publicsuffix \ +python-dev \ +software-properties-common \ +subversion \ +texinfo \ +unixodbc-dev \ +wget \ +x11proto-dri3-dev \ +x11proto-present-dev \ +yasm \ +zlib1g-dev \ +zsync + +## Rebuild pam to allow su +# Rebuild pam with --disable-audit flag +# Fixes: https://github.com/docker/docker/issues/5899 +## +RUN apt-get -y build-dep pam \ + && cd /tmp/ \ + && export CONFIGURE_OPTS=--disable-audit \ + && apt-get -b source pam \ + && dpkg -i libpam-doc*.deb libpam-modules*.deb libpam-runtime*.deb libpam0g*.deb \ + && rm -rf /tmp/* \ +&& unset CONFIGURE_OPTS + +#Oddballs from ppas +RUN add-apt-repository -y ppa:wayland.admin/daily-builds && sudo apt-get update && sudo apt-get -y install libinput-dev libwayland-dev \ + libwayland-server0 libwayland0 && add-apt-repository -y -r ppa:wayland.admin/daily-builds +RUN add-apt-repository -y ppa:jonathonf/mysql && sudo apt-get update && apt-get -y install mysql-server-core-5.7 mysql-client-5.7 && add-apt-repository -y -r ppa:jonathonf/mysql +RUN add-apt-repository -y ppa:george-edison55/cmake-3.x && sudo apt-get update && apt-get -y install cmake + +# Set up for GCC options ( try gcc6 ) +RUN add-apt-repository -y ppa:ubuntu-toolchain-r/test && apt-get update && apt-get -y install gcc-4.9 g++-4.9 gcc-5 g++-5 gcc-6 g++-6 && \ +update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 10 && \ +update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 20 && \ +update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 30 && \ +update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 10 && \ +update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 20 && \ +update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 30 && \ +update-alternatives --set gcc "/usr/bin/gcc-5" && \ +update-alternatives --set g++ "/usr/bin/g++-5" && \ +update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 40 && \ +update-alternatives --set cc /usr/bin/gcc && \ +update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 40 && \ +update-alternatives --set c++ /usr/bin/g++ && \ +gcc --version && \ +cc --version && \ +g++ --version && apt-get -y upgrade + + #Set ENV +ENV LD_LIBRARY_PATH /opt/usr/lib:/opt/usr/lib/gstreamer-1.0:/opt/usr/lib/x86_64-linux-gnu:/usr/lib:/usr/lib64:/lib +ENV PATH /opt/usr/bin:/home/jenkins/.rbenv/bin:/home/jenkins/.rbenv/shims:$PATH +ENV PKG_CONFIG_PATH /opt/usr/lib/pkgconfig:/opt/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig +ENV CXXFLAGS -std=c++11 +ENV CPATH /opt/usr/include/gstreamer-1.0:/opt/usr/include:/opt/usr/include/dbus-1.0:$CPATH +ENV SOURCES / +ENV ACLOCAL_PATH = /opt/usr/share/aclocal:/usr/share/aclocal + +# Create jenkins user +RUN groupadd -g 1000 jenkins +RUN useradd -m -u 1000 -g 1000 -d /home/jenkins jenkins +RUN mkdir -p /{appimages,app.Dir,source} +RUN chown jenkins.jenkins /appimages && chown jenkins.jenkins /app.Dir && chown jenkins.jenkins /source && chown jenkins.jenkins /opt +RUN echo 'jenkins:1234' | chpasswd #changeme +RUN adduser jenkins sudo +RUN echo 'jenkins ALL=NOPASSWD: ALL' >> /etc/sudoers +RUN echo 'bundler ALL=NOPASSWD: /home/jenkins/.rbenv/bin/bundler' >> /etc/sudoers +RUN echo 'eval "$(rbenv init -)"' >> /etc/profile +# Cpan perl lib needed by kf5 +RUN cd $SOURCES && cpan URI::Escape +# Everythin else as jenkins user ( NOT WORKING, disabled for now.) +#USER jenkins + + #Set ENV +ENV LD_LIBRARY_PATH /opt/usr/lib:/opt/usr/lib/gstreamer-1.0:/opt/usr/lib/x86_64-linux-gnu:/usr/lib:/usr/lib64:/lib +ENV PATH /opt/usr/bin:/root/.rbenv/bin:/root/.rbenv/shims:$PATH +ENV PKG_CONFIG_PATH /opt/usr/lib/pkgconfig:/opt/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig +ENV CXXFLAGS -std=c++11 -fPIC +ENV CPATH /opt/usr/include/gstreamer-1.0:/opt/usr/include:/opt/usr/include/python3.5:$CPATH +ENV SOURCES /source +ENV QMAKE_CFLAGS_ISYSTEM '' +ENV PYTHONPATH /opt/usr/lib/python3.5/site-packages:$PYTHONPATH + + # Install rbenv and ruby-build +ADD Gemfile / +RUN chown -R root:root Gemfile +RUN echo 'gem: --no-rdoc --no-ri' >> ~/.gemrc +RUN git clone https://github.com/sstephenson/rbenv.git ~/.rbenv +RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build +RUN rbenv install 2.4.1 +RUN echo 'eval "$(rbenv init -)"' >> ~/.bashrc && rbenv init - +RUN cd ~ && rbenv local 2.4.1 && gem install bundler && bundle install --binstubs && bundle show rspec + +ADD deps.sh / +RUN chown -R root:root deps.sh +RUN /bin/bash -x deps.sh + +# # Build Qt5 from git and install to /opt/usr ( developer buid ) +RUN sudo apt-get -y remove 'qt.*' +ADD qt5.sh / +RUN chown -R root:root qt5.sh +RUN /bin/bash -x qt5.sh && rm qt5.sh +ADD webkit.sh / +RUN chown -R root:root webkit.sh +RUN /bin/bash -x webkit.sh && rm webkit.sh +# # Various external Qt relelated modules addons +#RUN cd /source && git clone git://code.qt.io/qt/qtdeclarative.git && cd /source/qtdeclarative && git checkout 5.9 && \ +#cd /source/qtdeclarative && qmake PREFIX=/opt/usr . && make && make install && rm -rfv /source/qtdeclarative +#RUN cd /source && wget https://download.qt.io/official_releases/qt/5.9/5.9.1/submodules/qtscript-opensource-src-5.9.1.tar.xz && \ +#tar -xvf qtscript-opensource-src-5.9.1.tar.xz && cd qtscript-opensource-src-5.9.1 && qmake PREFIX=/opt/usr . && make && make install && rm -rfv /source/* +#RUN cd /source && wget https://download.qt.io/archive/qt/5.9/5.9.1/submodules/qtx11extras-opensource-src-5.9.1.tar.xz && \ +#tar -xvf qtx11extras-opensource-src-5.9.1.tar.xz && cd qtx11extras-opensource-src-5.9.1 && qmake PREFIX=/opt/usr . && make && make install && rm -rfv /source/* +RUN cd $SOURCES && git clone https://code.qt.io/cgit/qt/qtquick1.git && \ +cd $SOURCES/qtquick1 && qmake PREFIX=/opt/usr . && make && make install && rm -rfv $SOURCES/qtquick1 +RUN cd /source && git clone git://code.qt.io/qt/qtwebchannel.git && cd /source/qtwebchannel && git checkout 5.9 && \ +cd /source/qtwebchannel && git submodule update --init && qmake PREFIX=/opt/usr . && make && make install && rm -rfv /source/qtwebchannel +RUN cd /source && git clone git://code.qt.io/qt/qtwebengine.git && cd /source/qtwebengine && git checkout 5.9 && \ +cd /source/qtwebengine && git submodule update --init && qmake PREFIX=/opt/usr . && make && make install && rm -rfv /source/qtwebengine +RUN cd $SOURCES && git clone http://code.qt.io/qt/qtstyleplugins.git && \ +cd $SOURCES/qtstyleplugins && qmake PREFIX=/opt/usr . && make && make install && rm -rfv $SOURCES/qtstyleplugins +RUN cd $SOURCES && git clone https://github.com/flavio/qjson && \ +cd $SOURCES/qjson && cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr && make && make install && rm -rfv $SOURCES/qjson +ADD qt5deps.sh / +RUN chown -R root:root qt5deps.sh +RUN /bin/bash -x qt5deps.sh && rm qt5deps.sh +RUN strip -g $(find . -type f -executable) || true +EXPOSE 22 +CMD ["/usr/sbin/sshd", "-D"] diff --git a/appimage-template/docker/qt59/Gemfile b/appimage-template/docker/qt59/Gemfile new file mode 100644 index 0000000..df5e9d4 --- /dev/null +++ b/appimage-template/docker/qt59/Gemfile @@ -0,0 +1,60 @@ +source 'https://gem.cache.pangea.pub' + +# These are built by our geminabox tech +# https://github.com/blue-systems/pangea-geminabox +# and pushed into our gem cache for consumption. See Gemfile.git for info. +# These are actual gems in our cache, they mustn't have a git: argument. +source 'https://gem.cache.pangea.pub' do + gem 'releaseme' # Not released as gem at all + + # Temporarily from git waiting for a release newer than 4.1.0. Once a newer + # version is available this can move away from git again. + # Also undo workaround in deploy_in_container.rake! + # We want a version from our git builds, so restrict us to 4.1.0.x + gem 'net-ssh', '~> 4.1.0' +end + +gem 'aptly-api', '>= 0.5.0' +gem 'concurrent-ruby' +gem 'deep_merge', '~> 1.0' +gem 'docker-api', '~> 1.24' # Container.refresh! only introduced in 1.23 +gem 'gir_ffi' +gem 'git' +gem 'gitlab' +gem 'insensitive_hash' +gem 'jenkins_api_client' +gem 'jenkins_junit_builder' +gem 'logger-colors' +gem 'mercurial-ruby' +gem 'net-sftp' +gem 'net-ssh-gateway' +gem 'nokogiri' +gem 'octokit' +gem 'rake', '~> 12.0' +gem 'rugged' +gem 'tty-command' +gem 'respec' + +# Git URI management +gem 'git_clone_url', '~> 2.0' +gem 'uri-ssh_git', '~> 2.0' + +# Test logging as junit (also used at runtime for linting) +gem 'ci_reporter_test_unit' +gem 'test-unit', '~> 3.0' + +group :development, :test do + gem 'droplet_kit' + gem 'equivalent-xml' + gem 'mocha' + gem 'parallel_tests' + gem 'rake-notes' + gem 'rubocop', '>= 0.38' + gem 'rubocop-checkstyle_formatter' + gem 'ruby-progressbar' + gem 'simplecov' + gem 'simplecov-rcov' + gem 'terminal-table' + gem 'vcr', '>= 3.0.1' + gem 'webmock' +end diff --git a/appimage-template/docker/qt59/deps.sh b/appimage-template/docker/qt59/deps.sh new file mode 100644 index 0000000..dd7528d --- /dev/null +++ b/appimage-template/docker/qt59/deps.sh @@ -0,0 +1,184 @@ +#!/bin/bash +set -e +set -x + +function error_exit +{ + echo "$1" 1>&2 + exit 1 +} + +#Newer toolchain +cd $SOURCES && wget http://ftp.x.org/pub/individual/util/util-macros-1.19.0.tar.bz2 && tar -jxvf util-macros-1.19.0.tar.bz2 && \ +cd $SOURCES/util-macros-1.19.0 && ./configure --prefix /usr && make install && rm $SOURCES/util-macros-1.19.0.tar.bz2 && rm -rfv $SOURCES/util-macros-1.19.0 +cd $SOURCES && wget http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.bz2 && tar -jxvf m4-1.4.18.tar.bz2 && \ +cd $SOURCES/m4-1.4.18 && mkdir builddir && cd builddir && ../configure --prefix=/usr --enable-shared && make -j 8 && make install \ +&& rm $SOURCES/m4-1.4.18.tar.bz2 && rm -rfv $SOURCES/m4-1.4.18 +cd $SOURCES && wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz && tar -xvf autoconf-2.69.tar.xz && \ +cd $SOURCES/autoconf-2.69 && mkdir builddir && cd builddir && ../configure --prefix=/usr && make -j 8 && make install && \ +rm $SOURCES/autoconf-2.69.tar.xz && rm -rfv $SOURCES/autoconf-2.69 +cd $SOURCES && wget https://ftp.gnu.org/gnu/automake/automake-1.15.tar.xz && tar -xvf automake-1.15.tar.xz && \ +cd $SOURCES/automake-1.15 && mkdir builddir && cd builddir && ../configure --prefix=/usr && make -j 8 && make install && \ +rm $SOURCES/automake-1.15.tar.xz && rm -rfv $SOURCES/automake-1.15 +cd $SOURCES && wget https://ftp.gnu.org/gnu/autogen/rel5.18.12/autogen-5.18.12.tar.xz && tar -xvf autogen-5.18.12.tar.xz && \ +cd $SOURCES/autogen-5.18.12 && mkdir builddir && cd builddir && ../configure --prefix=/usr && make -j 8 && make install && \ +rm $SOURCES/autogen-5.18.12.tar.xz && rm -rfv $SOURCES/autogen-5.18.12 +cd $SOURCES && wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.3.tar.gz && tar -xzvf gettext-0.19.3.tar.gz && \ +cd $SOURCES/gettext-0.19.3 && ./configure --prefix=/usr && make -j 8 && make install && rm $SOURCES/gettext-0.19.3.tar.gz && rm -rfv $SOURCES/gettext-0.19.3 +cd $SOURCES && wget http://www.cups.org/software/1.7.5/cups-1.7.5-source.tar.bz2 && tar -jxvf cups-1.7.5-source.tar.bz2 && \ +cd $SOURCES/cups-1.7.5 && aclocal -I config-scripts && autoconf -I config-scripts && ./configure --prefix=/usr && make -j 8 && make install && \ +rm -rfv $SOURCES/cups-1.7.5 && rm $SOURCES/cups-1.7.5-source.tar.bz2 + +#New pulseaudio +cd $SOURCES && wget http://freedesktop.org/software/pulseaudio/releases/pulseaudio-10.0.tar.xz && tar -xvf pulseaudio-10.0.tar.xz +cd $SOURCES/pulseaudio-10.0 && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/pulseaudio-10.0.tar.xz && rm -rfv $SOURCES/pulseaudio-10.0 + + +#GPG stack for gpgme +cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.26.tar.bz2 && tar -jxvf libgpg-error-1.26.tar.bz2 && \ +cd $SOURCES/libgpg-error-1.26 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/libgpg-error-1.26.tar.bz2 && rm -rfv $SOURCES/libgpg-error-1.26 +cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/libksba/libksba-1.3.5.tar.bz2 && tar -jxvf libksba-1.3.5.tar.bz2 && \ +cd $SOURCES/libksba-1.3.5 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/libksba-1.3.5.tar.bz2 && rm -rfv $SOURCES/libksba-1.3.5 +cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.4.3.tar.bz2 && tar -jxvf libassuan-2.4.3.tar.bz2 && \ +cd $SOURCES/libassuan-2.4.3 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/libassuan-2.4.3.tar.bz2 && rm -rfv $SOURCES/libassuan-2.4.3 +cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/npth/npth-1.3.tar.bz2 && tar -jxvf npth-1.3.tar.bz2 && \ +cd $SOURCES/npth-1.3 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/npth-1.3.tar.bz2 && rm -rfv $SOURCES/npth-1.3 +cd $SOURCES && wget https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.7.5.tar.bz2 && tar -jxvf libgcrypt-1.7.5.tar.bz2 && \ +cd $SOURCES/libgcrypt-1.7.5 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/libgcrypt-1.7.5.tar.bz2 && rm -rfv $SOURCES/libgcrypt-1.7.5 +cd $SOURCES && wget http://ftp.gnu.org/gnu/libtasn1/libtasn1-4.10.tar.gz && tar -zxvf libtasn1-4.10.tar.gz && \ +cd $SOURCES/libtasn1-4.10 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install &&\ +rm $SOURCES/libtasn1-4.10.tar.gz && rm -rfv $SOURCES/libtasn1-4.10 +cd $SOURCES && wget https://ftp.gnu.org/gnu/nettle/nettle-3.3.tar.gz && tar -zxvf nettle-3.3.tar.gz && \ +cd $SOURCES/nettle-3.3 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/nettle-3.3.tar.gz && rm -rfv $SOURCES/nettle-3.3 +cd $SOURCES && wget http://p11-glue.freedesktop.org/releases/p11-kit-0.23.2.tar.gz && tar -zxvf p11-kit-0.23.2.tar.gz && \ +cd $SOURCES/p11-kit-0.23.2 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && \ +rm $SOURCES/p11-kit-0.23.2.tar.gz && rm -rfv $SOURCES/p11-kit-0.23.2 +cd $SOURCES && wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-3.5.10.tar.xz && tar -xvf gnutls-3.5.10.tar.xz && \ +cd $SOURCES/gnutls-3.5.10 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr --with-included-libtasn1 && make -j 8 && make install && \ +rm $SOURCES/gnutls-3.5.10.tar.xz && rm -rfv $SOURCES/gnutls-3.5.10 +cd $SOURCES && wget http://downloads.sourceforge.net/pcre/pcre-8.35.tar.bz2 && tar -jxvf pcre-8.35.tar.bz2 && \ +cd $SOURCES/pcre-8.35 && ./configure --prefix=/opt/usr && make && make install && \ +rm $SOURCES/pcre-8.35.tar.bz2 && rm -rfv $SOURCES/pcre-8.35 +cd $SOURCES && git clone git://git.gnupg.org/gpgme.git && \ +cd $SOURCES/gpgme && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && rm -rfv $SOURCES/gpgme +#New python3 +apt-get -y remove 'python3.*' 'sip.*' +cd $SOURCES && wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tar.xz && tar -xvf Python-3.5.3.tar.xz +cd $SOURCES/Python-3.5.3 && ./configure --prefix=/opt/usr --enable-shared --enable-static && make -j 8 && make install && rm $SOURCES/Python-3.5.3.tar.xz && rm -rfv $SOURCES/Python-3.5.3 +cd $SOURCES && wget https://sourceforge.net/projects/pyqt/files/sip/sip-4.19.1/sip-4.19.1.tar.gz && tar -zxvf sip-4.19.1.tar.gz +cd $SOURCES/sip-4.19.1 && python3 configure.py --destdir /opt/usr --incdir /opt/usr/include/python3.5 && make && make install +pip3 install Sphinx clang PyOpenGL PyOpenGL_accelerate + +# #Build newer gstreamer for sound stack +sudo apt-get -y remove 'gstreamer.*' +cd $SOURCES && wget 'https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.10.4.tar.xz' && tar -xvf gstreamer-1.10.4.tar.xz && \ +cd $SOURCES/gstreamer-1.10.4 && ./configure --prefix=/opt/usr --enable-shared --enable-gst-debug && make && make install && rm $SOURCES/gstreamer-1.10.4.tar.xz && rm -rfv $SOURCES/gstreamer-1.10.4 +cd $SOURCES && wget 'https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.10.4.tar.xz' && tar -xvf gst-plugins-base-1.10.4.tar.xz && \ +cd $SOURCES/gst-plugins-base-1.10.4 && ./configure --prefix=/opt/usr --enable-shared --enable-gst-debug && make && make install && rm $SOURCES/gst-plugins-base-1.10.4.tar.xz && rm -rfv $SOURCES/gst-plugins-base-1.10.4 +cd $SOURCES && wget 'https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.10.4.tar.xz' && tar -xvf gst-plugins-good-1.10.4.tar.xz && \ +cd $SOURCES/gst-plugins-good-1.10.4 && ./configure --prefix=/opt/usr --enable-shared --enable-gst-debug && make && make install && rm $SOURCES/gst-plugins-good-1.10.4.tar.xz && rm -rfv $SOURCES/gst-plugins-good-1.10.4 + +# cat > lib-7.7.md5 << EOF +# a615e17d9fee6f097fc3b716eacb3dca xtrans-1.3.4.tar.bz2 +# c35d6ad95b06635a524579e88622fdb5 libX11-1.6.2.tar.bz2 +# 0d9f6dd9c23bf4bcbfb00504b566baf5 libXfont2-2.0.1.tar.bz2 +# 52df7c4c1f0badd9f82ab124fb32eb97 libXext-1.3.3.tar.bz2 +# a8a0dbd2299b2568d8c919883f5c8501 libFS-1.0.6.tar.bz2 +# addfb1e897ca8079531669c7c7711726 libICE-1.0.9.tar.bz2 +# 499a7773c65aba513609fe651853c5f3 libSM-1.2.2.tar.bz2 +# 7a773b16165e39e938650bcc9027c1d5 libXScrnSaver-1.2.2.tar.bz2 +# 03149823ae57bb02d0cec90d5b97d56c libXt-1.1.4.tar.bz2 +# 41d92ab627dfa06568076043f3e089e4 libXmu-1.1.2.tar.bz2 +# 769ee12a43611cdebd38094eaf83f3f0 libXpm-3.5.11.tar.bz2 +# 7446f5fba888672aad068b29c0928ba3 libXaw-1.0.12.tar.bz2 +# b985b85f8b9386c85ddcfe1073906b4d libXfixes-5.0.1.tar.bz2 +# f7a218dcbf6f0848599c6c36fc65c51a libXcomposite-0.4.4.tar.bz2 +# 2bd9a15fcf64d216e63b8d129e4f1f1c libXrender-0.9.8.tar.bz2 +# 1e7c17afbbce83e2215917047c57d1b3 libXcursor-1.1.14.tar.bz2 +# 0cf292de2a9fa2e9a939aefde68fd34f libXdamage-1.1.4.tar.bz2 +# ad2919764933e075bb0361ad5caa3d19 libfontenc-1.1.2.tar.bz2 +# 664629bfa7cdf8b984155019fd395dcb libXfont-1.5.0.tar.bz2 +# 331b3a2a3a1a78b5b44cfbd43f86fcfe libXft-2.3.2.tar.bz2 +# 9c4a69c34b19ec1e4212e849549544cb libXi-1.7.4.tar.bz2 +# 9336dc46ae3bf5f81c247f7131461efd libXinerama-1.1.3.tar.bz2 +# 210ed9499a3d9c96e3a221629b7d39b0 libXrandr-1.4.2.tar.bz2 +# 45ef29206a6b58254c81bea28ec6c95f libXres-1.0.7.tar.bz2 +# 25c6b366ac3dc7a12c5d79816ce96a59 libXtst-1.2.2.tar.bz2 +# e0af49d7d758b990e6fef629722d4aca libXv-1.0.10.tar.bz2 +# 2e4014e9d55c430e307999a6b3dd256d libXvMC-1.0.8.tar.bz2 +# d7dd9b9df336b7dd4028b6b56542ff2c libXxf86dga-1.1.4.tar.bz2 +# e46f6ee4f4567349a3189044fe1bb712 libXxf86vm-1.1.3.tar.bz2 +# ba983eba5a9f05d152a0725b8e863151 libdmx-1.1.3.tar.bz2 +# b7c0d3afce14eedca57312a3141ec13a libpciaccess-0.13.2.tar.bz2 +# 19e6533ae64abba0773816a23f2b9507 libxkbfile-1.0.8.tar.bz2 +# 2dd10448c1166e71a176206a8dfabe6d libxshmfence-1.1.tar.bz2 +# EOF +# grep -v '^#' lib-7.7.md5 | awk '{print $2}' | wget -i- -c \ +# -B http://xorg.freedesktop.org/releases/individual/lib/ && +# md5sum -c lib-7.7.md5 +# +# for package in $(grep -v '^#' lib-7.7.md5 | awk '{print $2}') +# do +# packagedir=${package%.tar.bz2} +# tar -xf $package +# pushd $packagedir +# case $packagedir in +# libXfont-[0-9]* ) +# ./configure --prefix=/opt/usr \ +# --disable-devel-docs +# ;; +# libXt-[0-9]* ) +# ./configure --prefix=/opt/usr \ +# --with-appdefaultdir=/etc/X11/app-defaults +# ;; +# * ) +# ./configure --prefix=/opt/usr +# ;; +# esac +# make -j8 +# make install +# popd +# rm -rf $packagedir +# done + +cd $SOURCES && wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 && tar xjvf last_x264.tar.bz2 + +if cd x264-snapshot-20170826-2245; then + ./configure --enable-static --enable-shared --disable-asm --prefix=/opt/usr + make -j4 && make install +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi + +if wget http://ftp.videolan.org/pub/videolan/x265/x265_2.3.tar.gz; then + tar xvf x265_2.3.tar.gz +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi + +if cd x265_2.3/build/linux; then + cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/opt/usr" -DENABLE_PIC=ON -DENABLE_SHARED=ON ../../source + make -j4 && make install +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi +if wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2; then + tar xjvf ffmpeg-snapshot.tar.bz2 +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi + +if cd ffmpeg; then + ./configure --prefix="/opt/usr" --extra-ldflags="-L/opt/usr//lib -lstdc++ -lm -lrt -ldl" --extra-cflags="-I/opt/usr/include" --pkg-config-flags="--static" --enable-static --enable-avfilter \ + --enable-gpl --enable-avresample --enable-avutil --enable-libx265 --enable-libvpx --enable-libx264 --disable-doc && \ + make -j4 && make install +else + error_exit "$LINENO: An error has occurred.. Aborting." +fi diff --git a/appimage-template/docker/qt59/kf5-kdelibs/Dockerfile b/appimage-template/docker/qt59/kf5-kdelibs/Dockerfile new file mode 100644 index 0000000..92070e1 --- /dev/null +++ b/appimage-template/docker/qt59/kf5-kdelibs/Dockerfile @@ -0,0 +1,14 @@ +FROM sgclark/trusty-qt59-kf5 + +RUN apt-get -y install libpolkit-gobject-1-dev libpolkit-backend-1-dev libpolkit-agent-1-dev libperl-dev libjpeg-dev libgif-dev libpng12-dev \ +libperl-dev libpcre3-dev libxcb-keysyms1-dev libgit2-dev libacl1-dev libkrb5-dev libxml2-dev libxslt1-dev zlib1g-dev \ +libx11-xcb-dev libcap-dev libxcb1-dev libxcb-keysyms1-dev libxcb-xtest0-dev libepoxy-dev libutempter-dev \ +libaspell-dev libhunspell-dev hspell libvoikko-dev bzip2 liblzma-dev media-player-info libavahi-common-dev libgamin-dev \ +libqrencode-dev libxtables10 libatm1 libdmtx-dev libopenal-dev +# KF5 +ADD kf5.sh / +RUN chown -R root:root kf5.sh +RUN /bin/bash -x kf5.sh +RUN rm kf5.sh +EXPOSE 22 +CMD ["/usr/sbin/sshd", "-D"] diff --git a/appimage-template/docker/qt59/kf5-kdelibs/kf5.sh b/appimage-template/docker/qt59/kf5-kdelibs/kf5.sh new file mode 100644 index 0000000..da9e94f --- /dev/null +++ b/appimage-template/docker/qt59/kf5-kdelibs/kf5.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +for package in libkdegames kirigmi libbluedevil libkpeople libqapt libqgit2 networkmanager-qt purpose \ +libgravatar libkcddb libkcompactdisc libkdcraw libkdepim libkeduvocdocument libkexiv2 libkface libkgapi libkgeomap libkipi \ +libkleo libmahjongg libkomparediff2 libksane akonadi-calendar akonadi-calendar-tools akonadi-contacts akonadi-import-wizard \ +akonadi-mime akonadi-notes akonadi-search akonadiconsole akonadi pimcommon libksieve +do + git clone http://anongit.kde.org/$package + cd $package + case $package in + 'breeze' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DBINARY_ICONS_RESOURCE=ON ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + 'breeze-icons' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DBINARY_ICONS_RESOURCE=ON \ + -DWITH_DECORATIONS=OFF ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + 'phonon-gstreamer' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DPHONON_LIBRARY_PATH=/opt/usr/plugins \ + -DBUILD_TESTING=OFF -DPHONON_BUILD_PHONON4QT5=ON \ + -DPHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT=TRUE ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + 'phonon' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DPHONON_LIBRARY_PATH=/opt/usr/plugins \ + -DBUILD_TESTING=OFF -DPHONON_BUILD_PHONON4QT5=ON \ + -DPHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT=TRUE ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + * ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + esac + cd ../.. + rm -rf $package +done diff --git a/appimage-template/docker/qt59/kf5/Dockerfile b/appimage-template/docker/qt59/kf5/Dockerfile new file mode 100644 index 0000000..1b16b66 --- /dev/null +++ b/appimage-template/docker/qt59/kf5/Dockerfile @@ -0,0 +1,14 @@ +FROM sgclark/trusty-qt59 +# KF5 +RUN apt-get update && apt-get -y install liblzma-dev libhttp-parser-dev libssh2-1-dev libcurl4-openssl-dev libfam-dev libopenexr-dev libaspell-dev hspell libhunspell-dev \ +libvoikko-dev libqrencode-dev libdmtx-dev libutempter-dev media-player-info libgssapi3-heimdal libacl1-dev libepoxy-dev libgif-dev libpolkit-agent-1-dev libpolkit-gobject-1-dev \ +libgpgme11-dev +RUN wget http://archive.ubuntu.com/ubuntu/pool/main/libd/libdbusmenu-qt/libdbusmenu-qt_0.9.3+16.04.20160218.orig.tar.gz && tar -zxvf libdbusmenu-qt_0.9.3+16.04.20160218.orig.tar.gz && cd libdbusmenu-qt-0.9.3+16.04.20160218/ && \ +mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr -DCMAKE_INSTALL_LIBDIR=/opt/usr/lib \ +-DCMAKE_BUILD_TYPE=Release -DWITH_DOC=OFF -DUSE_QT5=ON -DCMAKE_INCLUDE_CURRENT_DIR=ON -Wno-dev .. && make && make install && rm -rfv /libdbusmenu-qt +ADD kf5.sh / +RUN chown -R root:root kf5.sh +RUN /bin/bash -x kf5.sh +RUN rm kf5.sh +EXPOSE 22 +CMD ["/usr/sbin/sshd", "-D"] diff --git a/appimage-template/docker/qt59/kf5/kf5.sh b/appimage-template/docker/qt59/kf5/kf5.sh new file mode 100755 index 0000000..c972374 --- /dev/null +++ b/appimage-template/docker/qt59/kf5/kf5.sh @@ -0,0 +1,68 @@ +#!/bin/bash +git clone https://github.com/libgit2/libgit2 +cd libgit2 && mkdir build && cd build && \ +cmake .. -DCMAKE_INSTALL_PREFIX=/opt/usr +cmake --build . --target install + +for package in extra-cmake-modules attica kconfig kwidgetsaddons karchive kcompletion kcoreaddons kcodecs polkit-qt-1 polkit-kde-agent-1 kauth kwindowsystem kcrash \ +ki18n kdoctools kdbusaddons kglobalaccel kguiaddons kidletime kimageformats kitemmodels kjs kplotting syntax-highlighting \ +kconfigwidgets kitemviews kiconthemes sonnet kwayland prison threadweaver kcrash kdnssd kpty \ +kservice ktextwidgets kxmlgui kbookmarks solid kjobwidgets phonon phonon-gstreamer knotifications gpgmepp kwallet kio kinit kded kparts \ +kactivities kdewebkit kdesignerplugin kunitconversion kpackage kdeclarative kcmutils kdesu kdewebkit kemoticons kjsembed kmediaplayer \ +kdelib4support knewstuff knotifications knotifyconfig kross ktexteditor framework-integration kapidox \ +khtml plasma-framework kdecoration krunner +do + git clone http://anongit.kde.org/$package + cd $package + case $package in + 'breeze' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DBINARY_ICONS_RESOURCE=ON ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + 'breeze-icons' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DBINARY_ICONS_RESOURCE=ON \ + -DWITH_DECORATIONS=OFF ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + 'phonon-gstreamer' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DPHONON_LIBRARY_PATH=/opt/usr/plugins \ + -DBUILD_TESTING=OFF -DPHONON_BUILD_PHONON4QT5=ON \ + -DPHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT=TRUE ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + 'phonon' ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE -DPHONON_LIBRARY_PATH=/opt/usr/plugins \ + -DBUILD_TESTING=OFF -DPHONON_BUILD_PHONON4QT5=ON \ + -DPHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT=TRUE ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + * ) + if mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE ../; then + make -j8 + make install + else + error_exit "$LINENO: An error has occurred.. Aborting." + fi + ;; + esac + cd ../.. + rm -rf $package +done + +find . -type f -executable -exec strip {} \; || true diff --git a/appimage-template/docker/qt59/qt5.sh b/appimage-template/docker/qt59/qt5.sh new file mode 100644 index 0000000..4cbe06d --- /dev/null +++ b/appimage-template/docker/qt59/qt5.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +export CFLAGS=$(pkg-config --cflags gstreamer-1.0) $CFLAGS +export LDFLAGS=$(pkg-config --libs gstreamer-1.0) $LDFLAGS + +export SOURCES='/source' +cd /source && wget https://download.qt.io/archive/qt/5.9/5.9.1/single/qt-everywhere-opensource-src-5.9.1.tar.xz && tar xvf qt-everywhere-opensource-src-5.9.1.tar.xz +mv qt-everywhere-opensource-src-5.9.1 qt5 + +cd /source/qt5 && ./configure -v -release -opensource -nomake examples -nomake tests -confirm-license -opengl desktop -reduce-exports -prefix /opt/usr && make -j8 && make install && rm -rfv /source/qt5 diff --git a/appimage-template/docker/qt59/qt5deps.sh b/appimage-template/docker/qt59/qt5deps.sh new file mode 100644 index 0000000..c9603e6 --- /dev/null +++ b/appimage-template/docker/qt59/qt5deps.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +cd $SOURCES && wget 'https://gstreamer.freedesktop.org/src/qt-gstreamer/qt-gstreamer-1.2.0.tar.xz' && tar -xvf qt-gstreamer-1.2.0.tar.xz && \ +cd $SOURCES/qt-gstreamer-1.2.0 && cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr -DQT_VERSION=5 -DCMAKE_REQUIRED_INCLUDES=/opt/usr/include/gstreamer-1.0/ \ +-DQTGSTREAMER_STATIC=OFF -DQTGSTREAMER_EXAMPLES=OFF && make && make install && rm $SOURCES/qt-gstreamer-1.2.0.tar.xz && rm -rfv $SOURCES/qt-gstreamer-1.2.0 +# RUN cd $SOURCES && wget https://www.riverbankcomputing.com/static/Downloads/PyQt5/PyQt5_gpl-5.8.3.dev1704051437.tar.gz && tar -zxvf PyQt5_gpl-5.8.3.dev1704051437.tar.gz && \ +# cd $SOURCES/PyQt5_gpl-5.8.3.dev1704051437 && /opt/usr/bin/python3 configure.py --confirm-license --verbose --destdir /opt/usr --sip /opt/usr/bin/sip --sip-incdir /opt/usr/include/python3.5/ \ +# -q /opt/usr/bin/qmake -c -j 4 LIBDIR_QT=/opt/usr/lib STRIP="" MOC=/usr/bin/moc --qmake="/opt/usr/bin/qmake" \ +# LIBS_OPENGL="" LIBS_X11="" LIBS_THREAD="" -m /opt/usr/lib/python3.5/config-3.5m \ +# -d /opt/usr/lib/python3.5/dist-packages --dbus /usr/include/dbus-1.0 --no-designer-plugin --no-qml-plugin && make -j8 && make install && \ +# rm -rfv $SOURCES/PyQt5_gpl-5.8.3.dev1704051437 && rm $SOURCES/PyQt5_gpl-5.8.3.dev1704051437.tar.gz && rm $SOURCES/sip-4.19.1.tar.gz && rm -rfv $SOURCES/sip-4.19.1 +cd $SOURCES && wget http://download.kde.org/stable/qca/2.1.1/src/qca-2.1.1.tar.xz && tar -xvf qca-2.1.1.tar.xz && \ +cd $SOURCES/qca-2.1.1 && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr .. && cmake --build . && cmake --build . --target install && \ +rm $SOURCES/qca-2.1.1.tar.xz && rm -rfv $SOURCES/qca-2.1.1 +RUN cd $SOURCES && git clone https://github.com/ayoy/qoauth && \ +cd $SOURCES/qoauth && sed s#/usr#/opt/usr# -i src/src.pro && sed s#/lib64#/lib# -i src/src.pro&& qmake ' "QT += widgets" "QT += webkitwidgets" "CONFIG += crypto" "DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x000000"' src/src.pro \ +&& make -j8 && make install && rm -rfv $SOURCES/qoauth +cd $SOURCES && svn export svn://svn.code.sf.net/p/qwt/code/branches/qwt-6.1 && cd $SOURCES/qwt-6.1 && qmake -set prefix '/opt' && qmake qwt.pro && \ +make -j8 && INSTALL_ROOT=/opt make install && rm -rfv $SOURCES/qwt-6.1 && \ +mv /opt/usr/local/qwt-6.1.4-svn/include/* /opt/usr/include/ && \ +mv /opt/usr/local/qwt-6.1.4-svn/lib/* /opt/usr/lib/ && \ +mv /opt/usr/local/qwt-6.1.4-svn/plugins/designer/* /opt/usr/plugins/designer/ && rmdir /opt/usr/local/qwt-6.1.4-svn/plugins/designer +cd $SOURCES && git clone https://github.com/steveire/grantlee && \ +cd $SOURCES/grantlee && mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr CMAKE_BUILD_TYPE=Release .. && cmake --build . && cmake --build . --target install \ +&& rm -rfv $SOURCES/grantlee +cd $SOURCES && wget https://poppler.freedesktop.org/poppler-0.51.0.tar.xz && tar -xvf poppler-0.51.0.tar.xz && \ +cd $SOURCES/poppler-0.51.0 && mkdir build && cd build && ../configure --prefix=/opt/usr -sysconfdir=/opt/etc --disable-static --enable-build-type=release \ +--enable-cmyk --enable-xpdf-headers --enable-poppler-qt5 && make && make install && rm $SOURCES/poppler-0.51.0.tar.xz && rm -rfv $SOURCES/poppler-0.51.0 +cd $SOURCES && wget https://fossies.org/linux/misc/gnupg-2.2.0.tar.bz2 && tar -jxvf gnupg-2.2.0.tar.bz2 +cd $SOURCES/gnupg-2.2.0 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && rm $SOURCES/gnupg-2.2.0.tar.bz2 && rm -rfv $SOURCES/gnupg-2.2.0 diff --git a/appimage-template/docker/qt59/webkit.sh b/appimage-template/docker/qt59/webkit.sh new file mode 100644 index 0000000..33e3ec8 --- /dev/null +++ b/appimage-template/docker/qt59/webkit.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +export CFLAGS=$(pkg-config --cflags gstreamer-1.0) $CFLAGS +export LDFLAGS=$(pkg-config --libs gstreamer-1.0) $LDFLAGS + +cd /source && git clone https://github.com/qt/qtwebkit && cd qtwebkit && git checkout 5.9 && \ +rbenv local 2.4.1 && echo "CONFIG -= precompile_header" >> .qmake.conf && echo "QMAKE_CFLAGS_ISYSTEM=''" >> .qmake.conf && qmake "PREFIX = /opt/usr" WebKit.pro && \ +make && make install && rm -rfv /source/qtwebkit diff --git a/appimage-template/docker/versions.txt b/appimage-template/docker/versions.txt new file mode 100644 index 0000000..713a50e --- /dev/null +++ b/appimage-template/docker/versions.txt @@ -0,0 +1 @@ +2.3.1 diff --git a/appimage-template/libs/appimagetool_deps.sh b/appimage-template/libs/appimagetool_deps.sh new file mode 100644 index 0000000..5365b15 --- /dev/null +++ b/appimage-template/libs/appimagetool_deps.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +#Appstream support for appimagetool +wget http://ftp.gnome.org/pub/gnome/sources/gobject-introspection/1.46/gobject-introspection-1.46.0.tar.xz && tar -xvf gobject-introspection-1.46.0.tar.xz +cd gobject-introspection-1.46.0 && ./configure --prefix=/opt/usr --enable-shared --enable-static && make -j 8 && make install && rm /gobject-introspection-1.46.0.tar.xz && rm -rfv /gobject-introspection-1.46.0 + +sudo add-apt-repository -y ppa:jonathonf/gtk3.18 && sudo apt-get update && sudo apt-get -y install libglib2.0-dev && add-apt-repository -y -r ppa:jonathonf/gtk3.18 + +git clone https://github.com/ximion/appstream +cd appstream && mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/usr -DQT=ON ../ && make && make install && rm -rfv /appstream + +wget https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.1.17.tar.bz2 && tar -jxvf gnupg-2.1.17.tar.bz2 +cd gnupg-2.1.17 && autoreconf --force --install && mkdir builddir && cd builddir && ../configure --prefix=/opt/usr && make -j 8 && make install && rm /gnupg-2.1.17.tar.bz2 && rm -rfv /gnupg-2.1.17 diff --git a/appimage-template/libs/builddocker.rb b/appimage-template/libs/builddocker.rb new file mode 100755 index 0000000..4ab2932 --- /dev/null +++ b/appimage-template/libs/builddocker.rb @@ -0,0 +1,98 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true +# +# Copyright (C) 2016 Scarlett Clark +# Copyright (C) 2015-2016 Harald Sitter +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) version 3, or any +# later version accepted by the membership of KDE e.V. (or its +# successor approved by the membership of KDE e.V.), which shall +# act as a proxy defined in Section 6 of version 3 of the license. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see . + +require 'docker' +require 'logger' +require 'logger/colors' +require 'fileutils' + +# Create and run a container on the CI build node. +class CI + # Container creation and run + class Build + def initialize(name) + @image = '' + @c = '' + @binds = '' + @name = name + @home = '' + end + end + def init_logging + @log = Logger.new(STDERR) + raise 'Could not initialize logger' if @log.nil? + Thread.new do + # :nocov: + Docker::Event.stream { |event| @log.debug event } + # :nocov: + end + end + attr_accessor :run + attr_accessor :cmd + Docker.options[:read_timeout] = 2 * 60 * 60 # 2 hours + Docker.options[:write_timeout] = 2 * 60 * 60 # 2 hours + + def create_container(name, home='/home/jenkins/workspace') + init_logging + workspace = system('pwd') + p workspace + @c = Docker::Container.create( + 'Image' => 'sgclark/trusty-qt580', + 'Cmd' => @cmd, + 'Volumes' => { + '/in' => {}, + '/app' => {}, + '/appimage' => {}, + '/root/.gnupg' => {}, + '/lib/modules' => {}, + '/tmp' => {} + }, + 'HostConfig' => { + 'Binds' => [ + Dir.pwd + ":/in", + Dir.pwd + "/app:/app", + Dir.pwd + "/appimage:/appimage", + '/root/.gnupg:/root/.gnupg' + ], + 'UsernsMode' => 'host', + 'Privileged' => true, + 'Devices' => [ + 'PathOnHost' => '/dev/fuse', + 'PathInContainer' => '/dev/fuse', + 'CgroupPermissions' => 'mrw' + ] + } + ) + @log.info 'creating debug thread' + Thread.new do + @c.attach do |_stream, chunk| + puts chunk + STDOUT.flush + end + end + @c.start() + ret = @c.wait + status_code = ret.fetch('StatusCode', 1) + raise "Bad return #{ret}" if status_code.nonzero? + @c.stop + end +end diff --git a/appimage-template/libs/recipe.rb b/appimage-template/libs/recipe.rb new file mode 100644 index 0000000..4868f1d --- /dev/null +++ b/appimage-template/libs/recipe.rb @@ -0,0 +1,78 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true +# +# Copyright (C) 2016 Scarlett Clark +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) version 3, or any +# later version accepted by the membership of KDE e.V. (or its +# successor approved by the membership of KDE e.V.), which shall +# act as a proxy defined in Section 6 of version 3 of the license. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see . +require 'erb' +require 'fileutils' +require 'yaml' + +class Recipe + attr_accessor :name + attr_accessor :arch + attr_accessor :desktop + attr_accessor :icon + attr_accessor :iconpath + attr_accessor :install_path + attr_accessor :packages + attr_accessor :dep_path + attr_accessor :repo + attr_accessor :type + attr_accessor :archives + attr_accessor :md5sum + attr_accessor :version + attr_accessor :app_dir + attr_accessor :configure_options + attr_accessor :binary + + def initialize(args = {}) + Dir.chdir('/') + self.name = args[:name] + self.binary = args[:binary] + self.arch = `arch` + self.install_path = '/app/usr' + end + + def clean_workspace(args = {}) + self.name = args[:name] + return if Dir['/app/'].empty? + FileUtils.rm_rf("/app/.", secure: true) + return if Dir['/appimage/'].empty? + FileUtils.rm_rf("/appimage/.", secure: true) + return if Dir["/in/#{name}"].empty? + FileUtils.rm_rf("/in/#{name}/#{name}-builddir", secure: true) + end + + def install_packages(args = {}) + self.packages = args[:packages].to_s.gsub(/\,|\[|\]/, '') + system('apt-get update && apt-get -y upgrade') + system("DEBIAN_FRONTEND=noninteractive apt-get -y install git wget #{packages}") + $?.exitstatus + end + + def render + ERB.new(File.read('/in/Recipe.erb')).result(binding) + end + + def generate_appimage(args = {}) + system('/bin/bash -xe /in/Recipe') + $?.exitstatus + end + + +end diff --git a/appimage-template/libs/sources.rb b/appimage-template/libs/sources.rb new file mode 100644 index 0000000..a6aac9c --- /dev/null +++ b/appimage-template/libs/sources.rb @@ -0,0 +1,211 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true +# +# Copyright (C) 2016 Scarlett Clark +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) version 3, or any +# later version accepted by the membership of KDE e.V. (or its +# successor approved by the membership of KDE e.V.), which shall +# act as a proxy defined in Section 6 of version 3 of the license. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see . +require 'yaml' + +class Sources + attr_accessor :name + + def initialize() + Dir.chdir('/') + unless Dir.exist?("/app/src") + Dir.mkdir("/app/src") + end + Dir.chdir('/app/src/') + end + + def get_source(name, type, url, branch='master') + case "#{type}" + when 'git' + Dir.chdir('/app/src/') + unless Dir.exist?("/app/src/#{name}") + system( "git clone #{url}") + unless branch == 'master' + Dir.chdir("/app/src/#{name}") + system("git checkout #{branch}") + end + end + when 'xz' + Dir.chdir('/app/src/') + unless Dir.exist?("/app/src/#{name}") + system("wget #{url}") + system("tar -xvf #{name}*.tar.xz") + end + when 'gz' + Dir.chdir('/app/src/') + unless Dir.exist?("/app/src/#{name}") + system("wget #{url}") + system("tar -zxvf #{name}*.tar.gz") + end + when 'bz2' + Dir.chdir('/app/src/') + unless Dir.exist?("/app/src/#{name}") + system("wget #{url}") + system("tar -jxvf #{name}.tar.bz2") + end + when 'mercurial' + Dir.chdir('/app/src') + unless Dir.exist?("/app/src/#{name}") + system("hg clone #{url}") + end + when 'bzr' + Dir.chdir('/app/src') + unless Dir.exist?("/app/src/#{name}") + system("bzr branch #{url}") + end + when 'zip' + Dir.chdir('/app/src') + unless Dir.exist?("/app/src/#{name}") + system("wget #{url}") + system("unzip #{name}.zip") + end + when 'svn' + Dir.chdir('/app/src') + unless Dir.exist?("/app/src/#{name}") + system("svn export #{url}") + end + when 'none' + Dir.chdir('/app/src') + unless Dir.exist?("/app/src/#{name}") + Dir.mkdir "#{name}" + p "No sources configured" + end + else + "You gave me #{type} -- I have no idea what to do with that." + end + $?.exitstatus + end + + def run_build(name, buildsystem, options, path, autoreconf=false, insource=false) + ENV['PATH']='/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' + ENV['LD_LIBRARY_PATH']='/opt/usr/lib:/opt/usr/lib/x86_64-linux-gnu:/usr/lib:/usr/lib/x86_64-linux-gnu:/usr/lib64:/usr/lib:/lib:/lib64' + ENV['CPLUS_INCLUDE_PATH']='/opt/usr:/opt/usr/include:/usr/include' + ENV['CFLAGS']="-g -O2 -fPIC" + ENV['CXXFLAGS']='-std=c++11' + ENV['PKG_CONFIG_PATH']='/opt/usr/lib/pkgconfig:/opt/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig' + ENV['ACLOCAL_PATH']='/opt/usr/share/aclocal:/usr/share/aclocal' + ENV['XDG_DATA_DIRS']='/opt/usr/share:/opt/share:/usr/local/share/:/usr/share:/share' + ENV.fetch('PATH') + ENV.fetch('LD_LIBRARY_PATH') + ENV.fetch('CFLAGS') + ENV.fetch('CXXFLAGS') + ENV.fetch('PKG_CONFIG_PATH') + ENV.fetch('ACLOCAL_PATH') + ENV.fetch('CPLUS_INCLUDE_PATH') + ENV.fetch('XDG_DATA_DIRS') + system( "echo $PATH" ) + system( "echo $LD_LIBRARY_PATH" ) + system( "echo $CFLAGS" ) + system( "echo $CXXFLAGS" ) + system( "echo $PKG_CONFIG_PATH" ) + system( "echo $ACLOCAL_PATH" ) + system( "echo $CPLUS_INCLUDE_PATH" ) + system( "echo $XDG_DATA_DIRS" ) + case "#{buildsystem}" + when 'make' + Dir.chdir("#{path}") do + unless "#{autoreconf}" == true + unless "#{insource}" == true + cmd = "mkdir #{name}-builddir && cd #{name}-builddir && ../configure --prefix=/opt/usr #{options} && make VERBOSE=1 -j 8 && make install" + end + if "#{insource}" == true + cmd = "cd #{name} && ../configure --prefix=/opt/usr #{options} && make VERBOSE=1 -j 8 && make install" + end + p "Running " + cmd + system(cmd) + system("rm -rfv #{name}-builddir") + end + if "#{autoreconf}" == true + p "Running " + cmd + unless "#{insource}" == true + cmd = "autoreconf --force --install && mkdir #{name}-builddir && cd #{name}-builddir && ../configure --prefix=/opt/usr #{options} && make VERBOSE=1 -j 8 && make install prefix=/opt/usr" + end + if "#{insource}" == true + cmd = "autoreconf --force --install && cd #{name} && ../configure --prefix=/opt/usr #{options} && make VERBOSE=1 -j 8 && make install prefix=/opt/usr" + end + system(cmd) + system("rm -rfv #{name}-builddir") + end + end + $?.exitstatus + when 'autogen' + Dir.chdir("#{path}") do + unless "#{autoreconf}" == true + unless "#{insource}" == true + cmd = "mkdir #{name}-builddir && cd #{name}-builddir && ../autogen && ../configure --prefix=/opt/usr #{options} && make VERBOSE=1 -j 8 && make install" + end + if "#{insource}" == true + cmd = "cd #{name} && ./autogen && ./configure --prefix=/opt/usr #{options} && make VERBOSE=1 -j 8 && make install" + end + p "Running " + cmd + system(cmd) + system("rm -rfv #{name}-builddir") + end + if "#{autoreconf}" == true + p "Running " + cmd + unless "#{insource}" == true + cmd = "autoreconf --force --install && mkdir #{name}-builddir && cd #{name}-builddir && ../configure --prefix=/opt/usr #{options} && make VERBOSE=1 -j 8 && make install prefix=/opt/usr" + end + if "#{insource}" == true + cmd = "autoreconf --force --install && cd #{name} && ../configure --prefix=/opt/usr #{options} && make VERBOSE=1 -j 8 && make install prefix=/opt/usr" + end + system(cmd) + system("rm -rfv #{name}-builddir") + end + end + $?.exitstatus + when 'cmake' + Dir.chdir(path) do + p "running cmake #{options}" + system("mkdir #{name}-builddir && cd #{name}-builddir && cmake #{options} ../ && make VERBOSE=1 -j 8 && make install") + end + $?.exitstatus + when 'custom' + unless "#{name}" == 'cpan' + Dir.chdir("#{path}") do + p "running #{options}" + system("#{options}") + end + end + if "#{name}" == 'cpan' + p "running #{options}" + system("#{options}") + end + $?.exitstatus + when 'qmake' + Dir.chdir("#{path}") do + p "running qmake #{options}" + system('echo $PATH') + system("#{options}") + system('make VERBOSE=1 -j 8 && make install') + end + $?.exitstatus + when 'bootstrap' + Dir.chdir(path) do + p "running ./bootstrap #{options}" + system("./bootstrap #{options}") + system('make VERBOSE=1 -j 8 && make install') + end + $?.exitstatus + else + "You gave me #{buildsystem} -- I have no idea what to do with that." + end + end +end diff --git a/appimage-template/parser.rules b/appimage-template/parser.rules new file mode 100644 index 0000000..1e6a2ad --- /dev/null +++ b/appimage-template/parser.rules @@ -0,0 +1,15 @@ +# match line starting with 'error ', case-insensitive +error /(?i)^error / +error /ERROR: ldd outputLine/ +warning /Could [Nn][Oo][Tt] find/ +warning /have not been found/ +# list of warnings here... +#warning /[Ww]arning/ +#warning /WARNING/ + +# create a quick access link to lines in the report containing 'INFO' +#info /INFO/ + +# each line containing 'BUILD' represents the start of a section for grouping errors and warnings found after the line. +# also creates a quick access link. +start /BUILD/ diff --git a/appimage-template/seed/seed.groovy b/appimage-template/seed/seed.groovy new file mode 100644 index 0000000..80e7573 --- /dev/null +++ b/appimage-template/seed/seed.groovy @@ -0,0 +1,26 @@ +#!/usr/bin/env groovy + +import org.yaml.snakeyaml.Yaml +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.security.Provider.Service +import com.google.common.io.ByteStreams + +def apps = new Yaml().load(new FileReader(new File("${WORKSPACE}/data/applications.yaml"))) + +apps.each { name, config -> + config.branch.each { branch -> + pipelineJob("${name}-${branch}-appimage") { + definition { + cpsScm { + scm { + github("appimage-packages/${name}", "${branch}") + } + } + } + } + } + +} diff --git a/appimage-template/spec/recipe_rspec.rb b/appimage-template/spec/recipe_rspec.rb new file mode 100644 index 0000000..aa33e63 --- /dev/null +++ b/appimage-template/spec/recipe_rspec.rb @@ -0,0 +1,171 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true +# +# Copyright (C) 2016 Scarlett Clark +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) version 3, or any +# later version accepted by the membership of KDE e.V. (or its +# successor approved by the membership of KDE e.V.), which shall +# act as a proxy defined in Section 6 of version 3 of the license. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see . +require_relative '../libs/recipe' +require_relative '../libs/sources' +require 'yaml' +require 'erb' + +metadata = YAML.load_file("/in/data/metadata.yml") +deps = metadata['dependencies'] +puts metadata + +describe Recipe do + app = Recipe.new(name: metadata['name'], binary: metadata['binary']) + describe "#initialize" do + it "Sets the application name" do + expect(app.name).to eq metadata['name'] + expect(app.binary).to eq metadata['binary'] + end + end + + describe 'clean_workspace' do + it "Cleans the environment" do + unless Dir["/in/#{app.name}"].empty? && Dir["/app/*"].empty? + Dir.chdir('/') + app.clean_workspace(name: app.name) + end + expect(Dir["/app/*"].empty?).to be(true), "Please clean up from last build" + end + end + + describe 'install_packages' do + it 'Installs distribution packages' do + expect(app.install_packages(packages: metadata['packages'])).to be(0), " Expected 0 exit Status" + end + end + + describe 'build_non_kf5_dep_sources' do + it 'Builds source dependencies that do not depend on kf5' do + sources = Sources.new + deps = metadata['dependencies'] + deps.each do |dep| + name = dep.values[0]['depname'] + type = dep.values[0]['source'].values_at('type').to_s.gsub(/\,|\[|\]|\"/, '') + url = dep.values[0]['source'].values_at('url').to_s.gsub(/\,|\[|\]|\"/, '') + branch = dep.values[0]['source'].values_at('branch').to_s.gsub(/\,|\[|\]|\"/, '') + buildsystem = dep.values[0]['build'].values_at('buildsystem').to_s.gsub(/\,|\[|\]|\"/, '') + options = dep.values[0]['build'].values_at('buildoptions').to_s.gsub(/\,|\[|\]|\"/, '') + autoreconf = dep.values[0]['build'].values_at('autoreconf').to_s.gsub(/\,|\[|\]|\"/, '') + insource = dep.values[0]['build'].values_at('insource').to_s.gsub(/\,|\[|\]|\"/, '') + path = "/app/src/#{name}" + expect(sources.get_source(name, type, url, branch)).to be(0), " Expected 0 exit Status" + unless name == 'cpan' + expect(Dir.exist?("/app/src/#{name}")).to be(true), "#{name} directory does not exist, something went wrong with source retrieval" + end + unless buildsystem == 'make' + expect(sources.run_build(name, buildsystem, options, path)).to be(0), " Expected 0 exit Status" + end + if buildsystem == 'make' + expect(sources.run_build(name, buildsystem, options, path, autoreconf, insource)).to be(0), " Expected 0 exit Status" + end + end + end + end + + describe 'build_kf5' do + it 'Builds KDE Frameworks from source' do + sources = Sources.new + system('pwd && ls') + kf5 = metadata['frameworks'] + need = kf5['build_kf5'] + frameworks = kf5['frameworks'] + if need == true + frameworks.each do |framework| + path = "/app/src/#{framework}" + if framework == 'phonon' || framework == 'phonon-gstreamer' + options = '-DCMAKE_INSTALL_PREFIX:PATH=/opt/usr -DKDE_INSTALL_SYSCONFDIR=/opt/etc -DPHONON_LIBRARY_PATH=/opt/usr/plugins -DBUILD_TESTING=OFF -DPHONON_BUILD_PHONON4QT5=ON -DPHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT=TRUE' + expect(sources.get_source(framework, 'git', "https://anongit.kde.org/#{framework}")).to be(0), "Expected 0 exit status" + expect(Dir.exist?("/app/src/#{framework}")).to be(true), "#{framework} directory does not exist, something went wrong with source retrieval" + expect(sources.run_build(framework, 'cmake', options, path)).to be(0), " Expected 0 exit Status" + elsif framework == 'breeze-icons' + options = '-DCMAKE_INSTALL_PREFIX:PATH=/opt/usr -DKDE_INSTALL_SYSCONFDIR=/opt/etc -DBUILD_TESTING=OFF -DBINARY_ICONS_RESOURCE=ON' + expect(sources.get_source(framework, 'git', "https://anongit.kde.org/#{framework}")).to be(0), "Expected 0 exit status" + expect(Dir.exist?("/app/src/#{framework}")).to be(true), "#{framework} directory does not exist, something went wrong with source retrieval" + expect(sources.run_build(framework, 'cmake', options, path)).to be(0), " Expected 0 exit Status" + elsif framework == 'akonadi' + options = '-DCMAKE_INSTALL_PREFIX:PATH=/opt/usr -DKDE_INSTALL_SYSCONFDIR=/opt/etc -DBUILD_TESTING=OFF -DMYSQLD_EXECUTABLE:STRING=/usr/sbin/mysqld-akonadi' + expect(sources.get_source(framework, 'git', "https://anongit.kde.org/#{framework}")).to be(0), "Expected 0 exit status" + expect(Dir.exist?("/app/src/#{framework}")).to be(true), "#{framework} directory does not exist, something went wrong with source retrieval" + expect(sources.run_build(framework, 'cmake', options, path)).to be(0), " Expected 0 exit Status" + else + options = '-DCMAKE_INSTALL_PREFIX:PATH=/opt/usr -DKDE_INSTALL_SYSCONFDIR=/opt/etc -DBUILD_TESTING=OFF' + expect(sources.get_source(framework, 'git', "https://anongit.kde.org/#{framework}")).to be(0), "Expected 0 exit status" + expect(Dir.exist?("/app/src/#{framework}")).to be(true), "#{framework} directory does not exist, something went wrong with source retrieval" + expect(sources.run_build(framework, 'cmake', options, path)).to be(0), " Expected 0 exit Status" + end + end + end + end + end + + describe 'build_kf5_dep_sources' do + it 'Builds source dependencies that depend on kf5' do + sources = Sources.new + kf5 = metadata['frameworks'] + need = kf5['build_kf5'] + frameworks = kf5['frameworks'] + if need == true + deps = metadata['kf5_deps'] + if deps + deps.each do |dep| + name = dep.values[0]['depname'] + type = dep.values[0]['source'].values_at('type').to_s.gsub(/\,|\[|\]|\"/, '') + url = dep.values[0]['source'].values_at('url').to_s.gsub(/\,|\[|\]|\"/, '') + branch = dep.values[0]['source'].values_at('branch').to_s.gsub(/\,|\[|\]|\"/, '') + buildsystem = dep.values[0]['build'].values_at('buildsystem').to_s.gsub(/\,|\[|\]|\"/, '') + options = dep.values[0]['build'].values_at('buildoptions').to_s.gsub(/\,|\[|\]|\"/, '') + path = "/app/src/#{name}" + expect(sources.get_source(name, type, url, branch)).to be(0), " Expected 0 exit Status" + expect(Dir.exist?("/app/src/#{name}")).to be(true), "#{name} directory does not exist, something went wrong with source retrieval" + expect(sources.run_build(name, buildsystem, options, path)).to be(0), " Expected 0 exit Status" + end + end + end + end + end + + + describe 'build_project' do + it 'Retrieves sources that need to be built from source' do + #Main project + sources = Sources.new + name = metadata['name'] + path = "/in/#{name}" + buildsystem = metadata['buildsystem'] + options = metadata['buildoptions'] + expect(Dir.exist?("/in/#{name}")).to be(true), "#{name} directory does not exist, things will fail" + expect(sources.run_build(name, buildsystem, options, path)).to be(0), " Expected 0 exit Status" + p system("qmlimportscanner -rootPath /in/#{name}") + end + end + + describe 'generate_appimage' do + it 'Generate the appimage' do + arch = `arch` + File.write('/in/Recipe', app.render) + expect(app.generate_appimage()).to eq 0 + expect(Dir["/appimage/*"].empty?).to be(false), "No Appimage" + `rm -rfv /app/*` + `rm -f functions.sh` + expect(Dir["/app/*"].empty?).to be(true), "Please clean up" + end + end +end diff --git a/appimage-template/tests/missing_deps.rb b/appimage-template/tests/missing_deps.rb new file mode 100644 index 0000000..810c553 --- /dev/null +++ b/appimage-template/tests/missing_deps.rb @@ -0,0 +1,21 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true +# +# Copyright (C) 2016 Scarlett Clark +# Copyright (C) 2015-2016 Harald Sitter +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) version 3, or any +# later version accepted by the membership of KDE e.V. (or its +# successor approved by the membership of KDE e.V.), which shall +# act as a proxy defined in Section 6 of version 3 of the license. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License fo-r more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see . diff --git a/appimage-template/tooling/prepare_job.rb b/appimage-template/tooling/prepare_job.rb new file mode 100644 index 0000000..a60a1d7 --- /dev/null +++ b/appimage-template/tooling/prepare_job.rb @@ -0,0 +1,26 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true +# +# Copyright (C) 2016 Scarlett Clark +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) version 3, or any +# later version accepted by the membership of KDE e.V. (or its +# successor approved by the membership of KDE e.V.), which shall +# act as a proxy defined in Section 6 of version 3 of the license. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see . + +name = ARGV[0] + +p "Updating #{name}" + +system("git clone ") diff --git a/appimage-template/tools/Gemfile b/appimage-template/tools/Gemfile new file mode 100644 index 0000000..5cf2eb0 --- /dev/null +++ b/appimage-template/tools/Gemfile @@ -0,0 +1,8 @@ +source 'http://rubygems.org' +gem 'bundler' +gem 'docker-api', git: 'https://github.com/swipely/docker-api' +gem 'logger' +gem 'logger-colors' +gem 'fileutils' +gem 'rspec' +gem 'rugged', git: 'https://github.com/libgit2/rugged.git', submodules: true diff --git a/appimage-template/tools/Gemfile.lock b/appimage-template/tools/Gemfile.lock new file mode 100644 index 0000000..5b2ebac --- /dev/null +++ b/appimage-template/tools/Gemfile.lock @@ -0,0 +1,54 @@ +GIT + remote: https://github.com/libgit2/rugged.git + revision: 57b46ebe7d32db16681c848c1d9388207fa2666c + submodules: true + specs: + rugged (0.26.0b5) + +GIT + remote: https://github.com/swipely/docker-api + revision: b6651b7dcb5bc786362b3dcec5425d7fb6f9938f + specs: + docker-api (1.33.3) + excon (>= 0.38.0) + json + +GEM + remote: http://rubygems.org/ + specs: + diff-lcs (1.3) + excon (0.55.0) + fileutils (0.7) + rmagick (>= 2.13.1) + json (2.0.3) + logger (1.2.8) + logger-colors (1.0.0) + rmagick (2.16.0) + rspec (3.5.0) + rspec-core (~> 3.5.0) + rspec-expectations (~> 3.5.0) + rspec-mocks (~> 3.5.0) + rspec-core (3.5.4) + rspec-support (~> 3.5.0) + rspec-expectations (3.5.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.5.0) + rspec-mocks (3.5.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.5.0) + rspec-support (3.5.0) + +PLATFORMS + ruby + +DEPENDENCIES + bundler + docker-api! + fileutils + logger + logger-colors + rspec + rugged! + +BUNDLED WITH + 1.14.6 diff --git a/appimage-template/tools/builddocker.rb b/appimage-template/tools/builddocker.rb new file mode 100644 index 0000000..0772682 --- /dev/null +++ b/appimage-template/tools/builddocker.rb @@ -0,0 +1,83 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true +# +# Copyright (C) 2016 Scarlett Clark +# Copyright (C) 2015-2016 Harald Sitter +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) version 3, or any +# later version accepted by the membership of KDE e.V. (or its +# successor approved by the membership of KDE e.V.), which shall +# act as a proxy defined in Section 6 of version 3 of the license. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see . + +require 'docker' +require 'logger' +require 'logger/colors' +require 'fileutils' + +# Create and run a container on the CI build node. +class CI + # Container creation and run + class Build + def initialize(name) + @image = '' + @c = '' + @binds = '' + @name = name + @home = '' + end + end + def init_logging + @log = Logger.new(STDERR) + raise 'Could not initialize logger' if @log.nil? + Thread.new do + # :nocov: + Docker::Event.stream { |event| @log.debug event } + # :nocov: + end + end + attr_accessor :run + attr_accessor :cmd + Docker.options[:read_timeout] = 2 * 60 * 60 # 2 hours + Docker.options[:write_timeout] = 2 * 60 * 60 # 2 hours + + def create_container + init_logging + @c = Docker::Container.create( + 'Image' => 'sgclark/neon-packaging', + 'Cmd' => @cmd, + 'Volumes' => { + '/in' => {} + }, + 'HostConfig' => { + 'Binds' => [ + Dir.pwd + ':/in' + ], + 'UsernsMode' => 'host', + 'Privileged' => true + } + ) + @log.info 'creating debug thread' + Thread.new do + @c.attach do |_stream, chunk| + puts chunk + STDOUT.flush + end + end + @c.start() + ret = @c.wait + status_code = ret.fetch('StatusCode', 1) + raise "Bad return #{ret}" if status_code.nonzero? + @c.stop + end +end diff --git a/appimage-template/tools/cmake-dependencies.py b/appimage-template/tools/cmake-dependencies.py new file mode 100755 index 0000000..e438a1f --- /dev/null +++ b/appimage-template/tools/cmake-dependencies.py @@ -0,0 +1,139 @@ +#!/usr/bin/python3 + +# Outputs dependencies information from a build directory +# +# Copyright (c) 2014 Aleix Pol Gonzalez +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# cmake . --trace |& grep ^/ | grep -v CMakeLists.txt | cut -d '(' -f 1 | sort -u + +import subprocess +import os +import re +import json +import argparse +import sys + +def readCache(varName): + f = open("CMakeCache.txt", "r") + for line in f: + m = re.match('(.*?)=(.*)', line) + if m is not None and m.group(1)==varName: + return m.group(2) + +def checkPackageVersion(frameworkName): + value = readCache("FIND_PACKAGE_MESSAGE_DETAILS_%s:INTERNAL" % frameworkName) + if value is None: + return None + m = re.match('.*\\]\\[v(.*?)\\((.*?)\\)\\]', value) + if m: + return { 'used': m.group(1), 'requested': m.group(2) } + else: + return None + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Figures out the dependencies of the build directory in the cwd.') + + try: + projectDir = readCache("CMAKE_HOME_DIRECTORY:INTERNAL") + except: + print("Run in a build directory.") + parser.print_help() + sys.exit(1) + + proc = subprocess.Popen(['cmake', '.', '--trace'], stdout=open(os.devnull, "w"), stderr=subprocess.PIPE) + processedFiles = {} + lookedUpPackages = {} + + lastFile = "" + callingFile = "" + for line in proc.stderr: + theLine = line.decode("utf-8") + + m = re.match('.*?:\s*find_package\((.*?) (.*?)\).*', theLine) + if m is not None: + if "$" not in m.group(2): + lookedUpPackages[m.group(1)] = m.group(2) + + # match file names + # e.g./usr/share/cmake-3.0/Modules/FindPackageMessage.cmake(46): set(... + m = re.match("(^/.*?)\\(.*", theLine) + if m is not None: + currentFile = m.group(1) + if lastFile != currentFile: + callingFile = lastFile + lastFile = currentFile + filePath, fileName = os.path.split(currentFile) + + if fileName == "CMakeLists.txt": + continue + + m = re.match("(.*)Config(Version)?.cmake", fileName) + m2 = re.match("Find(.*).cmake", fileName) + if m2: + moduleName = m2.group(1) + elif m: + moduleName = m.group(1) + else: + continue + + if not moduleName in processedFiles: + processedFiles[moduleName] = { 'files': set(), 'explicit': False } + + if not 'version' in processedFiles[moduleName]: + processedFiles[moduleName]['version'] = checkPackageVersion(moduleName) + + processedFiles[moduleName]['files'].add(currentFile) + processedFiles[moduleName]['explicit'] |= (callingFile.endswith("CMakeLists.txt") or callingFile.endswith("Qt5/Qt5Config.cmake") or callingFile.endswith("FindKF5.cmake")) + + print("[") + first = True + for v, value in processedFiles.items(): + if not first: + print(',\n', end='') + first = False + + value['files'] = list(value['files']) + value['project'] = v + if v in lookedUpPackages: + if value['version'] is None: + line = lookedUpPackages[v] + isVersion = line[:line.find(' ')] + + if len(isVersion)>0 and isVersion[0].isdigit(): + value['version'] = { 'used': None, 'requested': isVersion } + + del lookedUpPackages[v] + + print("\t%s" % (json.dumps(value)), end='') + + # display missing packages + for v in lookedUpPackages: + if not first: + print(',\n', end='') + + print("\t{ \"project\": \"%s\", \"missing\": true, \"files\": [], \"arguments\": \"%s\", \"explicit\": true }" % (v, lookedUpPackages[v])) + + + print("\n]\n") + proc.wait() diff --git a/appimage-template/tools/generate_cmakedeps.rb b/appimage-template/tools/generate_cmakedeps.rb new file mode 100644 index 0000000..e6305e7 --- /dev/null +++ b/appimage-template/tools/generate_cmakedeps.rb @@ -0,0 +1,165 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true +# +# Copyright (C) 2016 Scarlett Clark +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) version 3, or any +# later version accepted by the membership of KDE e.V. (or its +# successor approved by the membership of KDE e.V.), which shall +# act as a proxy defined in Section 6 of version 3 of the license. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License fo-r more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see . +require 'fileutils' +require 'yaml' +require 'fileutils' +require 'yaml' +require 'set' + +@name = 'changeme' +@url = 'http://anongit.kde.org/' + @name +@base_dir = Dir.pwd + '/' +@kf5 = [] +KF5 = YAML.load_file(File.join(__dir__, 'kf5.yaml')) + +def clone_project + system('git clone ' + @url) +end + +def install_packages + # Get deps + system("export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get -y build-dep #{@name}") +end + +def run_cmakedependencies + all = [] + all_deps = [] + # Run the cmake-dependencies.py tool from kde-dev-tools + FileUtils.cp('/in/cmake-dependencies.py', @base_dir + @name) + Dir.chdir(@base_dir + @name) do + `cmake -DCMAKE_INSTALL_PREFIX:PATH=/app/usr/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=FALSE` + system('pwd') + system('ls -l') + system("make -j8") + all = `python3 /in/cmake-dependencies.py | grep '\"project\": '`.sub('\\', '').split(',') + + all.each do |dep| + parts = dep.sub('{', '').sub('}', '').split(',') + parts.each do |project| + a = project.split.each_slice(3).map{ |x| x.join(' ')}.to_s + if a.to_s.include? "project" + name = a.gsub((/[^0-9a-z ]/i), '').downcase + name.slice! "project " + all_deps.push name + end + end + end + end + all_deps +end + +def sub_chars(all_deps) + kf5_base = [] + oddballs = %w(ksolid,kthreadweaver,ksonnet,kattica,kplasma) + all_deps.each do |dep| + dep = 'extra-cmake-modules' if dep == 'ecm' + dep = 'phonon' if dep == 'phonon4qt5experimental' || dep == 'phonon4qt5' + if dep =~ /kf5/ + dep = dep.sub('kf5', 'k') + end + if dep =~ /qt5/ + next + end + dep = dep.sub('knewstuffcore', 'knewstuff') + dep = dep.sub('kk', 'k') if dep =~ /kk/ + dep = dep.sub('k', '') if oddballs.include? dep + kf5_base.push dep + end + kf5_base +end + +def extract_kf5 + kf5_base = [] + others = [] + all_deps = run_cmakedependencies + kf5_base = sub_chars(all_deps) + kf5_base.each do |f| + p f + if f =~ /qt5/ + kf5_base.delete(f) + end + kf5_base.delete 'k' + kf5_base.delete 'kf5' + kf5_base.delete 'packagehandlestandardargs' + kf5_base.delete 'packagemessage' + kf5 = KF5[f] + p kf5 + if kf5.nil? + kf5_base.delete(f) + others.push f + end + end + p others + p kf5_base + kf5_base +end + +def extract_others + kf5_base = [] + others = [] + all_deps = run_cmakedependencies + kf5_base = sub_chars(all_deps) + kf5_base.each do |f| + kf5 = KF5[f] + if kf5.nil? + kf5_base.delete(f) + others.push f + end + end + p others + others +end + +def self.generatekf5_buildorder(frameworks) + buildorder = Set.new + # get list of frameworks required in CMakeLists.txt + list = get_kf5deps(frameworks) + # Take that list and repeat for deps of those. + deps_ofdeps = get_kf5deps(list) + # Merge deps of deps into buildorder set. + buildorder.merge(deps_ofdeps) if deps_ofdeps + # Merge list and their deps into buildorder set if it is not nil. + buildorder.merge(list) if list + # return buildorder. + buildorder +end + +def self.get_kf5deps(frameworks) + list = Set.new + frameworks.each do |f| + current = KF5[f] + deps = current['kf5_deps'] + list.merge(deps) if deps + list.delete(f) if deps + list.add(f) if deps + end + list +end + +clone_project +install_packages +@kf5 = extract_kf5 +orderedkf5 = generatekf5_buildorder(@kf5) +others = extract_others +system('rm -rfv ' + @name) +File.open('/in/generated_deps.yaml', 'w') { |f| f.write orderedkf5.to_yaml } +p orderedkf5.to_yaml +p others diff --git a/appimage-template/tools/generated_deps.yaml b/appimage-template/tools/generated_deps.yaml new file mode 100644 index 0000000..00da3f5 --- /dev/null +++ b/appimage-template/tools/generated_deps.yaml @@ -0,0 +1,31 @@ +--- !ruby/object:Set +hash: + extra-cmake-modules: true + attica: true + karchive: true + kiconthemes: true + kbookmarks: true + kjobwidgets: true + solid: true + kio: true + kitemviews: true + sonnet: true + ktextwidgets: true + kcompletion: true + kguiaddons: true + kconfigwidgets: true + kcodecs: true + kconfig: true + knewstuff: true + kdoctools: true + kwindowsystem: true + kcrash: true + polkit-qt-1: true + kauth: true + ki18n: true + kwidgetsaddons: true + kdbusaddons: true + kglobalaccel: true + kxmlgui: true + kservice: true + kcoreaddons: true diff --git a/appimage-template/tools/kf5.yaml b/appimage-template/tools/kf5.yaml new file mode 100644 index 0000000..4f63af1 --- /dev/null +++ b/appimage-template/tools/kf5.yaml @@ -0,0 +1,571 @@ +extra-cmake-modules: + external: + distro_packages: + kf5_deps: +kcoreaddons: + external: + distro_packages: + - libgamin-dev + kf5_deps: + - extra-cmake-modules +attica: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +dbusaddons: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +kdnssd: + external: + distro_packages: + - libavahi-common-dev + kf5_deps: + - extra-cmake-modules +phonon: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +phonon-gstreamer: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +karchive: + external: + - cmake + distro_packages: + - bzip2 + - liblzma-dev + - media-player-info + kf5_deps: + - extra-cmake-modules +kconfig: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +breeze-icons: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +kcodecs: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +kguiaddons: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +ki18n: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +kitemmodels: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +kitemviews: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +kwidgetsaddons: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +oxygen-icons5: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +sonnet: + external: + distro_packages: + - libaspell-dev + - libhunspell-dev + - hspell + - libvoikko-dev + kf5_deps: + - extra-cmake-modules +solid: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +threadweaver: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +kactivities: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +kauth: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - polkit-qt-1 + - kcoreaddons +kcompletion: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kconfig + - kwidgetsaddons +kcrash: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kwindowsystem +kdoctools: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - karchive + - ki18n +kjobwidgets: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +knotifications: + external: + distro_packages: + kf5_deps: + - phonon + - extra-cmake-modules +kpty: + external: + distro_packages: + - libutempter-dev + kf5_deps: + - extra-cmake-modules + - kcoreaddons + - ki18n +kunitconversion: + external: + distro_packages: + - libutempter-dev + kf5_deps: + - extra-cmake-modules + - ki18n +kded: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kconfig + - kcoreaddons + - kcrash + - kdbusaddons + - kdoctools + - kinit + - kservice + - ki18n +kplotting: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +kdewebkit: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kconfig + - kcoreaddons + - kio + - kjobwidgets + - kparts + - kservice + - kwallet +kpackage: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kdoctools + - karchive + - kconfig + - kcoreaddons + - ki18n +kcmutils: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +kbookmarks: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kcodecs + - kconfig + - kcoreaddons + - kconfigwidgets + - kiconthemes + - kwidgetsaddons + - kxmlgui +kconfigwidgets: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kauth + - kcoreaddons + - kcodecs + - kconfig + - kdoctools + - kguiaddons + - ki18n + - kwidgetsaddons +kdeclarative: + external: + distro_packages: + - libepoxy-dev + kf5_deps: + - extra-cmake-modules + - kconfig + - ki18n + - kiconthemes + - kio + - kpackage +kdesignerplugin: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kcoreaddons + - kconfig + - kdewebkit + - kdoctools + - kcompletion + - kconfigwidgets + - kiconthemes + - kio + - kitemviews + - ktextwidgets + - kwidgetsaddons + - kxmlgui + - sonnet +kglobalaccel: + external: + distro_packages: + - libxcb1-dev + - libxcb-keysyms1-dev + - libxcb-xtest0-dev + kf5_deps: + - extra-cmake-modules + - kconfig + - kcoreaddons + - kcrash + - kdbusaddons + - kservice + - kwindowsystem +kiconthemes: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - ki18n + - kconfigwidgets + - kwidgetsaddons + - kitemviews +kinit: + external: + distro_packages: + - libx11-xcb-dev + - libcap-dev + kf5_deps: + - extra-cmake-modules + - kservice + - kio + - ki18n + - kwindowsystem + - kcrash + - kconfig + - kdoctools +kio: + external: + distro_packages: + - libacl1-dev + - libkrb5-dev + - libxml2-dev + - libxslt1-dev + - zlib1g-dev + kf5_deps: + - karchive + - kbookmarks + - kcompletion + - kconfig + - kconfigwidgets + - kcoreaddons + - kdbusaddons + - kdoctools + - ki18n + - kiconthemes + - kitemviews + - kjobwidgets + - kservice + - solid + - kwidgetsaddons + - kwindowsystem +knewstuff: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - attica + - karchive + - kcompletion + - kconfig + - kcoreaddons + - ki18n + - kiconthemes + - kio + - kitemviews + - kservice + - ktextwidgets + - kwidgetsaddons + - kxmlgui +knotifyconfig: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kcompletion + - kconfig + - ki18n + - kio + - phonon +kparts: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kconfig + - kcoreaddons + - ki18n + - kiconthemes + - kio + - kjobwidgets + - kservice + - ktextwidgets + - kwidgetsaddons + - kxmlgui +kservice: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kconfig + - kcoreaddons + - kcrash + - kdbusaddons + - kdoctools + - ki18n +ktexteditor: + external: + distro_packages: + - libgit2-dev + kf5_deps: + - extra-cmake-modules + - karchive + - kconfig + - kguiaddons + - ki18n + - kiconthemes + - kio + - kparts + - sonnet +ktextwidgets: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kcompletion + - kconfig + - kconfigwidgets + - ki18n + - kiconthemes + - kservice + - kwidgetsaddons + - kwindowsystem + - sonnet +kwallet: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kcoreaddons + - kconfig + - kwindowsystem + - ki18n + - kdoctools +kxmlgui: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - attica + - kcoreaddons + - kconfig + - kconfigwidgets + - kglobalaccel + - kitemviews + - ki18n + - kiconthemes + - ktextwidgets + - kwidgetsaddons + - kwindowsystem +kwindowsystem: + external: + distro_packages: + - libxcb-keysyms1-dev + kf5_deps: + - extra-cmake-modules +kdelibs4support: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kcompletion + - kconfig + - kconfigwidgets + - kcrash + - kdbusaddons + - kded + - kdesignerplugin + - kdoctools + - kglobalaccel + - kguiaddons + - ki18n + - kiconthemes + - kio + - knotifications + - kparts + - kservice + - ktextwidgets + - kunitconversion + - kwidgetsaddons + - kwindowsystem + - kxmlgui +kjs: + external: + distro_packages: + - libperl-dev + - libpcre3-dev + kf5_deps: + - extra-cmake-modules +khtml: + external: + distro_packages: + - libperl-dev + - libjpeg-dev + - libgif-dev + - libpng12-dev + kf5_deps: + - extra-cmake-modules + - karchive + - kcodecs + - kglobalaccel + - ki18n + - kiconthemes + - kio + - kjs + - knotifications + - kparts + - ktextwidgets + - kwallet + - kwidgetsaddons + - kwindowsystem + - kxmlgui + - sonnet +polkit-qt-1: + external: + distro_packages: + - libpolkit-gobject-1-dev + - libpolkit-backend-1-dev + - libpolkit-agent-1-dev + kf5_deps: + - extra-cmake-modules + - kcoreaddons + - ki18n + - kitemviews + - kconfig +kdbusaddons: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +gpgmepp: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +kemoticons: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +kwayland: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +kirigami: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +plasma-framework: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kactivities + - karchive + - kconfig + - kconfigwidgets + - kcoreaddons + - kdbusaddons + - kdeclarative + - kglobalaccel + - kguiaddons + - ki18n + - kiconthemes + - kio + - kservice + - kwindowsystem + - kxmlgui + - knotifications + - kpackage +kdecoration: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules +breeze: + external: + distro_packages: + kf5_deps: + - extra-cmake-modules + - kconfig + - ki18n + - kpackage diff --git a/appimage-template/tools/run.rb b/appimage-template/tools/run.rb new file mode 100644 index 0000000..626177c --- /dev/null +++ b/appimage-template/tools/run.rb @@ -0,0 +1,26 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true +# +# Copyright (C) 2016 Scarlett Clark +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) version 3, or any +# later version accepted by the membership of KDE e.V. (or its +# successor approved by the membership of KDE e.V.), which shall +# act as a proxy defined in Section 6 of version 3 of the license. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License fo-r more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see . +require_relative 'builddocker' + +builder = CI.new +builder.run = [CI::Build.new(@name)] +builder.cmd = %w(ruby /in/generate_cmakedeps.rb) +builder.create_container