Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use almalinux8 for the appimage generation #664

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 27 additions & 27 deletions scripts/appimage/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,32 @@
#
# SPDX-License-Identifier: GPL-2.0-or-later
#
FROM centos/devtoolset-7-toolchain-centos7 as intermediate
FROM almalinux:8 AS intermediate

ARG QT_VERSION=5.15.13
ARG QT_VERSION=5.15.14
ARG KF5_VERSION=v5.115.0
ARG KDDockWidgets_VERSION=2.0
ARG KDDockWidgets_VERSION=2.1
ARG QCustomPlot_VERSION=2.1.1
ARG rust_demangler_VERSION=0.1.23
ARG d_demangler_VERSION=0.0.2
ARG KGraphViewer_VERSION=v2.4.3a
ARG KDiagram_VERSION=2.8

USER root

# install dependencies
RUN sed -i 's#enabled=1#enabled=0#' /etc/yum/pluginconf.d/fastestmirror.conf && \
yum install -y deltarpm && \
yum update -y && yum install -y epel-release centos-release-scl && \
yum install -y \
devtoolset-11 devtoolset-11-elfutils-devel devtoolset-11-elfutils-debuginfod flex bison file \
rh-perl530-perl rh-perl530-perl-IO-Socket-SSL rh-perl530-perl-YAML \
gperf wget cmake3 which rh-git227-git python3 libzstd-devel \
RUN dnf update -y && dnf install -y 'dnf-command(config-manager)' && dnf config-manager --set-enabled powertools && dnf update -y && \
dnf install -y \
gcc-toolset-13 elfutils-devel elfutils-libelf-devel elfutils-debuginfod-client-devel flex bison file \
perl perl-IO-Socket-SSL perl-YAML \
gperf wget cmake3 which git python3 libzstd-devel \
polkit-devel libxslt-devel docbook-style-xsl \
# install Qt build dependencies, see: https://wiki.qt.io/Building_Qt_5_from_Git
# qtbase
libxcb libxcb-devel xcb-util xcb-util-devel mesa-libGL-devel libxkbcommon-devel libudev-devel \
xcb-util-keysyms-devel libxkbcommon-x11-devel libinput-devel xcb-util-image-devel \
mesa-libgbm-devel xcb-util-wm-devel xcb-util-renderutil-devel libSM-devel \
postgresql-devel unixODBC-devel pcre2-devel openssl11-devel openssl11 cups-devel \
postgresql-devel unixODBC-devel pcre2-devel openssl-devel openssl cups-devel \
# gtk widget theme support
gtk3-devel \
# kshimgen
Expand All @@ -44,18 +43,17 @@ RUN sed -i 's#enabled=1#enabled=0#' /etc/yum/pluginconf.d/fastestmirror.conf &&
# kgraphviewer
boost boost-devel graphviz-devel \
# appimages
fuse fuse-libs bzip2 \
fuse fuse-libs bzip2 rsync \
# elfutils
libmicrohttpd-devel libsqlite3x-devel libarchive-devel && \
ln -s /usr/bin/cmake3 /usr/bin/cmake && \
rm -Rf /var/cache/yum
libmicrohttpd-devel sqlite-devel libarchive-devel && \
rm -Rf /var/dnf/yum

FROM intermediate AS builder

ENV LD_LIBRARY_PATH=/opt/rh/devtoolset-11/root/usr/lib64:/opt/rh/devtoolset-11/root/usr/lib:/opt/rh/devtoolset-11/root/usr/lib64/dyninst:/opt/rh/devtoolset-11/root/usr/lib/dyninst:/opt/rh/devtoolset-11/root/usr/lib64:/opt/rh/devtoolset-11/root/usr/lib:/opt/rh/httpd24/root/usr/lib64:/opt/rh/rh-perl530/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
ENV PATH=/opt/rh/devtoolset-11/root/usr/bin:/opt/rh/rh-git227/root/usr/bin:/opt/rh/rh-perl530/root/usr/local/bin:/opt/rh/rh-perl530/root/usr/bin${PATH:+:${PATH}}
ENV LD_LIBRARY_PATH=/opt/rh/gcc-toolset-13/root/usr/lib64:/opt/rh/gcc-toolset-13/root/usr/lib:/opt/rh/gcc-toolset-13/root/usr/lib64/dyninst:/opt/rh/gcc-toolset-13/root/usr/lib/dyninst:/opt/rh/gcc-toolset-13/root/usr/lib64:/opt/rh/gcc-toolset-13/root/usr/lib
ENV PATH=/opt/rh/gcc-toolset-13/root/usr/bin${PATH:+:${PATH}}

RUN . /opt/rh/devtoolset-11/enable && wget https://download.qt.io/official_releases/qt/5.15/${QT_VERSION}/single/qt-everywhere-opensource-src-${QT_VERSION}.tar.xz && \
RUN . /opt/rh/gcc-toolset-13/enable && wget https://download.qt.io/official_releases/qt/5.15/${QT_VERSION}/single/qt-everywhere-opensource-src-${QT_VERSION}.tar.xz && \
tar -xvf qt-everywhere-opensource-src-${QT_VERSION}.tar.xz && \
mkdir build && cd build && \
../qt-everywhere-src-${QT_VERSION}/configure -opensource -confirm-license -force-debug-info -separate-debug-info \
Expand Down Expand Up @@ -106,23 +104,23 @@ RUN ldconfig && \
cd /opt/kdesrc-build && \
sed -i -e "s/FULL_NPROC/$(nproc)/g" \
-e "s/HALF_NPROC/$(($(nproc)/2))/g" -e "s/%VERSION%/${KF5_VERSION}/g" kdesrc-buildrc && \
# workaround for https://bugs.kde.org/show_bug.cgi?id=490168
sed -i "s/ignore-modules|!=/ignore-modules|=/" modules/ksb/Cmdline.pm && \
./kdesrc-build --metadata-only && \
# fix compile error in kwallet
./kdesrc-build --include-dependencies qca && \
./kdesrc-build --ignore-modules=gpgme --include-dependencies threadweaver kconfigwidgets kcoreaddons \
kitemviews kitemmodels solid breeze-icons \
kwindowsystem knotifications kiconthemes karchive syntax-highlighting kio kparts && \
# without extra dependencies
./kdesrc-build --revision ${KGraphViewer_VERSION} --no-include-dependencies kgraphviewer
./kdesrc-build --revision ${KGraphViewer_VERSION} --no-include-dependencies kgraphviewer && \
./kdesrc-build --revision ${KDiagram_VERSION} --no-include-dependencies kdiagram

# kddockwidgets
RUN cd /opt && git clone --recursive https://github.com/KDAB/KDDockWidgets.git -b ${KDDockWidgets_VERSION} && \
cd KDDockWidgets && mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=/usr -DKDDockWidgets_EXAMPLES=0 -DKDDockWidgets_FRONTENDS="qtwidgets" .. && \
make -j$(nproc) && make install

# build new elfutils version
RUN cd /opt && wget https://sourceware.org/elfutils/ftp/0.190/elfutils-0.190.tar.bz2 && bzip2 -d elfutils-0.190.tar.bz2 && tar -xf elfutils-0.190.tar && cd elfutils-0.190 && ./configure --libdir=/usr/local/lib64 && make && make install

FROM builder AS stripped

WORKDIR /
Expand All @@ -140,11 +138,13 @@ RUN cd /opt && wget https://github.com/linuxdeploy/linuxdeploy/releases/download

FROM intermediate AS kdesrc-build

ENV LD_LIBRARY_PATH=/opt/rh/devtoolset-11/root/usr/lib64:/opt/rh/devtoolset-11/root/usr/lib:/opt/rh/devtoolset-11/root/usr/lib64/dyninst:/opt/rh/devtoolset-11/root/usr/lib/dyninst:/opt/rh/devtoolset-11/root/usr/lib64:/opt/rh/devtoolset-11/root/usr/lib:/opt/rh/httpd24/root/usr/lib64:/opt/rh/rh-perl530/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}:/usr/lib
ENV PATH=/opt/rh/devtoolset-11/root/usr/bin:/opt/rh/rh-git227/root/usr/bin:/opt/rh/rh-perl530/root/usr/local/bin:/opt/rh/rh-perl530/root/usr/bin${PATH:+:${PATH}}
ENV LD_LIBRARY_PATH=/opt/rh/gcc-toolset-13/root/usr/lib64:/opt/rh/gcc-toolset-13/root/usr/lib:/opt/rh/gcc-toolset-13/root/usr/lib64/dyninst:/opt/rh/gcc-toolset-13/root/usr/lib/dyninst:/opt/rh/gcc-toolset-13/root/usr/lib64:/opt/rh/gcc-toolset-13/root/usr/lib:/opt/rh/rh-perl530/root/usr/lib64:/usr/lib
ENV PATH=/opt/rh/gcc-toolset-13/root/usr/bin:/opt/rh/rh-git227/root/usr/bin:/opt/rh/rh-perl530/root/usr/local/bin:/opt/rh/rh-perl530/root/usr/bin${PATH:+:${PATH}}

RUN git config --global --add safe.directory /github/workspace

COPY --from=stripped /usr /usr
COPY --from=stripped /usr/local/lib64 /opt/rh/devtoolset-11/root/lib64
COPY --from=stripped /usr/local/lib64 /opt/rh/gcc-toolset-13/root/lib64

# set the entrypoint to the build script so that the build script will be run by github actions
CMD ["/github/workspace/scripts/appimage/build_appimage.sh", "/github/workspace", "/github/workspace/build"]
Expand All @@ -163,8 +163,8 @@ RUN cd / && wget https://github.com/cli/cli/releases/download/v2.49.2/gh_2.49.2

FROM intermediate AS debuginfo

ENV LD_LIBRARY_PATH=/opt/rh/devtoolset-11/root/usr/lib64:/opt/rh/devtoolset-11/root/usr/lib:/opt/rh/devtoolset-11/root/usr/lib64/dyninst:/opt/rh/devtoolset-11/root/usr/lib/dyninst:/opt/rh/devtoolset-11/root/usr/lib64:/opt/rh/devtoolset-11/root/usr/lib:/opt/rh/httpd24/root/usr/lib64:/opt/rh/rh-perl530/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}:/usr/lib
ENV PATH=/opt/rh/devtoolset-11/root/usr/bin:/opt/rh/rh-git227/root/usr/bin:/opt/rh/rh-perl530/root/usr/local/bin:/opt/rh/rh-perl530/root/usr/bin${PATH:+:${PATH}}
ENV LD_LIBRARY_PATH=/opt/rh/gcc-toolset-13/root/usr/lib64:/opt/rh/gcc-toolset-13/root/usr/lib:/opt/rh/gcc-toolset-13/root/usr/lib64/dyninst:/opt/rh/gcc-toolset-13/root/usr/lib/dyninst:/opt/rh/gcc-toolset-13/root/usr/lib64:/opt/rh/gcc-toolset-13/root/usr/lib:/usr/lib
ENV PATH=/opt/rh/gcc-toolset-13/root/usr/bin${PATH:+:${PATH}}

COPY --from=debugcollector /qt-debuginfo-x86_64.tar.bz2 /
COPY --from=debugcollector /gh_2.49.2_linux_amd64/bin/gh /usr/bin/
Expand Down
7 changes: 4 additions & 3 deletions scripts/appimage/build_appimage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,17 @@ fi

gitversion=$(git -C "$srcdir" describe)

. /opt/rh/devtoolset-11/enable
. /opt/rh/gcc-toolset-13/enable

mkdir -p "$buildir" && cd "$buildir"
# KGraphViewer triggers strange crashes in the AppImage, disable it
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_PREFIX_PATH=/opt/rh/devtoolset-11/root/ \
-DCMAKE_PREFIX_PATH=/opt/rh/gcc-toolset-13/root/ \
-DCMAKE_DISABLE_FIND_PACKAGE_KGraphViewerPart=ON \
-DAPPIMAGE_BUILD=ON "-DCMAKE_INSTALL_PREFIX=/usr" "$srcdir"
-DAPPIMAGE_BUILD=ON -DCMAKE_INSTALL_PREFIX=/usr "$srcdir"

make -j$(nproc)
rm -Rf appdir
DESTDIR=appdir make install

tar -cjvf "/github/workspace/hotspot-debuginfo-$gitversion-x86_64.tar.bz2" \
Expand Down
Loading