1
0
Fork 0
mirror of https://github.com/kbumsik/VirtScreen.git synced 2025-02-12 11:21:53 +00:00

\#11: Initial AppImage packaging system

This commit is contained in:
Bumsik Kim 2018-06-24 17:30:52 -04:00
parent aba7c949b5
commit a40ea8ec29
No known key found for this signature in database
GPG key ID: E31041C8EC5B01C6
6 changed files with 90 additions and 19 deletions

View file

@ -12,14 +12,15 @@ script:
- echo No test scripts implemented yet. Travis is used only for deploy yet.
before_deploy:
- package/update_version.sh $TRAVIS_TAG
- package/build_all.sh $TRAVIS_TAG
deploy:
- provider: releases
api_key:
secure: zFbsCIKcsvWU/Yc+9k294Qj8QY48VlkV8DSScP5gz6dQegeUSaSHI/YafherkFQ0B03bIY8yc7roMtDo7HAkEnPptjFhdUiOFI11+xDVb3s7Y8Ek2nV3znQzdtR4CR/94l3in6R3DH+eNA6+6Je/NIWLdVcvRX07RBSfBVdPmnsAyAD9KNTsl8Q4c20HgtLNxfWv2s5eCyD+heCTLYrErEZKZ5vYeeANmWomHvT2ED/4QerpBP8wkh59QXD1S79CF7oyq6X173ZJUQVxdBP+OSXt/mDBAoqf+TV6okawRZn48JluvCWAJ7BceX7t9emd1rVI/s8t3wCP+eMcmNn5g/6UJaCPnTJ5YplTuUWRc63UFSkE0AY8WYcRlrz+/OiXYgQ8LMXfN23aWgarHCbS2vHR3Afu9gpLCoKucr36hKhs3zfjJzVLFFW16mnbaTFcBzfDDRpkvOANB1aZwGVRFpTIWIMjkn0+lxWTC/moIJvQlfRPsC4dN5cDAilRQlguHzayebtGE8X0PuIe9A8bkET3V/y+KPnQiSJ7J+5PNoDSdqRAE4IKvVOLEyHtlqBVkvIHKnugUnWPIZ21gm5RemMEj9/YGa8Efwz7PIKtJJ3kFMGDYKVlIKyB+rg/TFWNdo6jjevnWM6y4SfVI3kFyjA+mp31o6nshrQy0zVQpd8=
file:
- "package/debian/build/virtscreen_$TRAVIS_TAG-1_all.deb"
- package/debian/build/virtscreen_$TRAVIS_TAG-1_all.deb
- package/appimage/VirtScreen-x86_64.AppImage
skip_cleanup: true
on:
tags: true

View file

@ -2,11 +2,8 @@
FROM ubuntu:bionic
LABEL author="Bumsik Kim <k.bumsik@gmail.com>"
WORKDIR /app
CMD ["/bin/bash"]
RUN apt-get update && \
apt-get install -y python3-all python3-pip python3-wheel fakeroot debmake debhelper fakeroot wget tar && \
apt-get install -y python3-all python3-pip python3-wheel fakeroot debmake debhelper fakeroot wget tar curl && \
apt-get autoremove -y && \
ln /usr/bin/python3 /usr/bin/python && \
ln /usr/bin/pip3 /usr/bin/pip && \
@ -18,3 +15,15 @@ RUN apt-get update && \
RUN wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \
bash ~/miniconda.sh -b -p ~/miniconda && \
rm ~/miniconda.sh
# AppImageKit
WORKDIR /opt
RUN wget https://github.com/AppImage/AppImageKit/releases/download/10/appimagetool-x86_64.AppImage && \
chmod a+x appimagetool-x86_64.AppImage && \
./appimagetool-x86_64.AppImage --appimage-extract && \
mv squashfs-root appimagetool && \
rm appimagetool-x86_64.AppImage
ENV PATH=/opt/appimagetool/usr/bin:$PATH
WORKDIR /app
CMD ["/bin/bash"]

View file

@ -2,8 +2,9 @@
# for python packaging reference.
DOCKER_NAME=kbumsik/virtscreen
DOCKER_RUN=docker run -v $(shell pwd)/package/debian:/app $(DOCKER_NAME)
DOCKER_RUN_TTY=docker run --interactive --tty -v $(shell pwd)/package/debian:/app $(DOCKER_NAME)
DOCKER_RUN=docker run --interactive --tty -v $(shell pwd):/app $(DOCKER_NAME)
DOCKER_RUN_TTY=docker run --interactive --tty -v $(shell pwd):/app $(DOCKER_NAME)
DOCKER_RUN_DEB=docker run -v $(shell pwd)/package/debian:/app $(DOCKER_NAME)
.PHONY:
@ -41,29 +42,37 @@ docker-push:
docker login
docker push $(DOCKER_NAME)
# For AppImage packaging, https://github.com/AppImage/AppImageKit/wiki/Creating-AppImages
appimage-build:
$(DOCKER_RUN) package/appimage/build.sh
$(DOCKER_RUN) chown -R $(shell id -u):$(shell id -u) package/appimage
appimage-clean:
$(DOCKER_RUN) rm -rf package/appimage/virtscreen.AppDir package/appimage/VirtScreen-x86_64.AppImage
# For Debian packaging, https://www.debian.org/doc/manuals/debmake-doc/ch08.en.html#setup-py
deb-make:
$(DOCKER_RUN) /app/debmake.sh
$(DOCKER_RUN_DEB) /app/debmake.sh
deb-build: deb-make
$(DOCKER_RUN) /app/copy_debian.sh
$(DOCKER_RUN) /app/debuild.sh
$(DOCKER_RUN_DEB) /app/copy_debian.sh
$(DOCKER_RUN_DEB) /app/debuild.sh
deb-contents:
$(DOCKER_RUN) /app/contents.sh
$(DOCKER_RUN_DEB) /app/contents.sh
deb-env-make:
$(DOCKER_RUN) /app/debmake.sh virtualenv
$(DOCKER_RUN_DEB) /app/debmake.sh virtualenv
deb-env-build: deb-env-make
$(DOCKER_RUN) /app/copy_debian.sh virtualenv
$(DOCKER_RUN) /app/debuild.sh virtualenv
$(DOCKER_RUN_DEB) /app/copy_debian.sh virtualenv
$(DOCKER_RUN_DEB) /app/debuild.sh virtualenv
deb-chown:
$(DOCKER_RUN) chown -R $(shell id -u):$(shell id -u) /app/build
$(DOCKER_RUN_DEB) chown -R $(shell id -u):$(shell id -u) /app/build
deb-clean:
$(DOCKER_RUN) rm -rf /app/build
$(DOCKER_RUN_DEB) rm -rf /app/build
# For AUR: https://wiki.archlinux.org/index.php/Python_package_guidelines
# and: https://wiki.archlinux.org/index.php/Creating_packages
@ -95,4 +104,4 @@ arch-clean:
cd package/archlinux
rm -rf pkg src *.tar*
clean: arch-clean deb-clean python-clean
clean: appimage-clean arch-clean deb-clean python-clean

15
package/appimage/AppRun Executable file
View file

@ -0,0 +1,15 @@
#!/bin/sh
# This script is only for isolated miniconda environment
# Used in AppImage package
SCRIPTDIR=$(dirname $0)
ENV=$SCRIPTDIR/usr/share/virtscreen/env
echo $SCRIPTDIR
export PYTHONPATH=$ENV/lib/python3.6
export LD_LIBRARY_PATH=$ENV/lib
export QT_PLUGIN_PATH=$ENV/lib/python3.6/site-packages/PyQt5/Qt/plugins
export QML2_IMPORT_PATH=$ENV/lib/python3.6/site-packages/PyQt5/Qt/qml
# export QT_QPA_FONTDIR=/usr/share/fonts
# export QT_XKB_CONFIG_ROOT=/usr/share/X11/xkb
$ENV/bin/python3 $ENV/bin/virtscreen

32
package/appimage/build.sh Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
# Directory
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
ROOT=$DIR/../..
cd $ROOT/package/appimage
mkdir virtscreen.AppDir
cd virtscreen.AppDir
# Create virtualenv
install -d usr/share/virtscreen
source $HOME/miniconda/bin/activate && \
conda create -y --copy --prefix usr/share/virtscreen/env python=3.6
# Install VirtScreen using pip
source $HOME/miniconda/bin/activate && \
source activate usr/share/virtscreen/env && \
pip install $ROOT
# Delete unnecessary installed files done by setup.py
rm -rf usr/share/virtscreen/env/lib/python3.6/site-packages/usr
# Copy desktop entry, icon, and AppRun
install -m 644 -D $ROOT/virtscreen.desktop \
usr/share/applications/virtscreen.desktop
install -m 644 -D $ROOT/virtscreen.desktop \
.
install -m 644 -D $ROOT/data/virtscreen.png \
usr/share/pixmaps/virtscreen.png
install -m 644 -D $ROOT/data/virtscreen.png \
.
install -m 755 -D $ROOT/package/appimage/AppRun \
.
cd ..
appimagetool virtscreen.AppDir

View file

@ -32,6 +32,10 @@ build_pypi () {
make -C $ROOT python-wheel
}
build_appimage () {
make -C $ROOT appimage-build
}
build_arch () {
wget -q https://github.com/kbumsik/VirtScreen/archive/$VERSION.tar.gz
SHA256=$(sha256sum $VERSION.tar.gz | cut -d' ' -f1)
@ -49,5 +53,6 @@ build_debian () {
override_version
# build_pypi
build_arch
build_appimage
# build_arch
build_debian