mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-12-28 00:39:43 -05:00
a4c6529d60
AppImage recipes are the legacy method for building AppImages, whereas linuxdeploy is meant to replace them. It takes care of finding and deploying all needed libraries and Qt plugins automagically, but it's still under heavy development, so some manual work using appimagetool and a few fixes are required to make it work for KeePassXC. This patch moves building of AppImages directly into the release-tool, both as a separate module (release-tool appimage) as well as a flag (--appimage) for the build module. The release and CI Dockerfiles were updated accordingly to support the new build process. The release Dockerfile also received a Qt update to version 5.10.1. In theory, it is now possible to use release-tool appsign for embedding PGP signatures into AppImages, but it fails in practice due to ELF header size limitations.
92 lines
3.0 KiB
Docker
92 lines
3.0 KiB
Docker
# KeePassXC Linux Release Build Dockerfile
|
|
# Copyright (C) 2017-2018 KeePassXC team <https://keepassxc.org/>
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 2 or (at your option)
|
|
# version 3 of the License.
|
|
#
|
|
# This program 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 General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
FROM ubuntu:14.04
|
|
|
|
ENV REBUILD_COUNTER=8
|
|
|
|
ENV QT5_VERSION=qt510
|
|
ENV QT5_PPA_VERSION=qt-5.10.1
|
|
ENV TERM=xterm-256color
|
|
|
|
RUN set -x \
|
|
&& apt-get update -y \
|
|
&& apt-get -y install software-properties-common
|
|
|
|
RUN set -x \
|
|
&& add-apt-repository ppa:beineri/opt-${QT5_PPA_VERSION}-trusty \
|
|
&& add-apt-repository ppa:phoerious/keepassxc
|
|
|
|
RUN set -x \
|
|
&& apt-get update -y \
|
|
&& apt-get upgrade -y
|
|
|
|
# build and runtime dependencies
|
|
RUN set -x \
|
|
&& apt-get install -y \
|
|
cmake3 \
|
|
curl \
|
|
g++ \
|
|
git \
|
|
libgcrypt20-18-dev \
|
|
libargon2-0-dev \
|
|
libsodium-dev \
|
|
libcurl-no-gcrypt-dev \
|
|
${QT5_VERSION}base \
|
|
${QT5_VERSION}tools \
|
|
${QT5_VERSION}x11extras \
|
|
${QT5_VERSION}translations \
|
|
${QT5_VERSION}imageformats \
|
|
zlib1g-dev \
|
|
libxi-dev \
|
|
libxtst-dev \
|
|
mesa-common-dev \
|
|
libyubikey-dev \
|
|
libykpers-1-dev
|
|
|
|
ENV PATH="/opt/${QT5_VERSION}/bin:${PATH}"
|
|
ENV CMAKE_PREFIX_PATH="/opt/${QT5_VERSION}/lib/cmake"
|
|
ENV CMAKE_INCLUDE_PATH="/opt/keepassxc-libs/include"
|
|
ENV CMAKE_LIBRARY_PATH="/opt/keepassxc-libs/lib/x86_64-linux-gnu"
|
|
ENV CPATH="${CMAKE_INCLUDE_PATH}"
|
|
ENV LD_LIBRARY_PATH="${CMAKE_LIBRARY_PATH}:/opt/${QT5_VERSION}/lib"
|
|
|
|
RUN set -x \
|
|
&& echo "/opt/${QT5_VERSION}/lib" > /etc/ld.so.conf.d/${QT5_VERSION}.conf \
|
|
&& echo "/opt/keepassxc-libs/lib/x86_64-linux-gnu" > /etc/ld.so.conf.d/keepassxc.conf
|
|
|
|
# AppImage dependencies
|
|
RUN set -x \
|
|
&& apt-get install -y \
|
|
curl \
|
|
libfuse2
|
|
|
|
RUN set -x \
|
|
&& curl -L "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" > /usr/bin/linuxdeploy \
|
|
&& curl -L "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage" > /usr/bin/linuxdeploy-plugin-qt \
|
|
&& curl -L "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" > /usr/bin/appimagetool \
|
|
&& chmod +x /usr/bin/linuxdeploy \
|
|
&& chmod +x /usr/bin/linuxdeploy-plugin-qt \
|
|
&& chmod +x /usr/bin/appimagetool
|
|
|
|
RUN set -x \
|
|
&& apt-get autoremove --purge \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
VOLUME /keepassxc/src
|
|
VOLUME /keepassxc/out
|
|
WORKDIR /keepassxc
|