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

Fix AppImage not containing all SSL dependencies #4400

Merged
merged 3 commits into from
Feb 21, 2023
Merged
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
39 changes: 29 additions & 10 deletions .CI/CreateAppImage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,18 @@

set -e

# Print all commands as they are run
set -x

if [ ! -f ./bin/chatterino ] || [ ! -x ./bin/chatterino ]; then
echo "ERROR: No chatterino binary file found. This script must be run in the build folder, and chatterino must be built first."
exit 1
fi

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/qt512/lib/"
export PATH="/opt/qt512/bin:$PATH"
echo "Qt5_DIR set to: ${Qt5_DIR}"

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${Qt5_DIR}/lib"
export PATH="${Qt5_DIR}/bin:$PATH"

script_path=$(readlink -f "$0")
script_dir=$(dirname "$script_path")
Expand All @@ -25,20 +30,32 @@ echo ""

cp "$chatterino_dir"/resources/icon.png ./appdir/chatterino.png

linuxdeployqt_path="linuxdeployqt-6-x86_64.AppImage"
linuxdeployqt_url="https://github.com/probonopd/linuxdeployqt/releases/download/6/linuxdeployqt-6-x86_64.AppImage"
linuxdeployqt_path="linuxdeployqt-x86_64.AppImage"
linuxdeployqt_url="https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage"

if [ ! -f "$linuxdeployqt_path" ]; then
wget -nv "$linuxdeployqt_url"
echo "Downloading LinuxDeployQT from $linuxdeployqt_url to $linuxdeployqt_path"
curl --location --fail --silent "$linuxdeployqt_url" -o "$linuxdeployqt_path"
chmod a+x "$linuxdeployqt_path"
fi
if [ ! -f appimagetool-x86_64.AppImage ]; then
wget -nv "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
chmod a+x appimagetool-x86_64.AppImage

appimagetool_path="appimagetool-x86_64.AppImage"
appimagetool_url="https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"

if [ ! -f "$appimagetool_path" ]; then
echo "Downloading AppImageTool from $appimagetool_url to $appimagetool_path"
curl --location --fail --silent "$appimagetool_url" -o "$appimagetool_path"
chmod a+x "$appimagetool_path"
fi

# For some reason, the copyright file for libc was not found. We need to manually copy it from the host system
mkdir -p appdir/usr/share/doc/libc6/
cp /usr/share/doc/libc6/copyright appdir/usr/share/doc/libc6/

echo "Run LinuxDeployQT"
./"$linuxdeployqt_path" \
appdir/usr/share/applications/*.desktop \
--appimage-extract-and-run \
appdir/usr/share/applications/com.chatterino.chatterino.desktop \
-no-translations \
-bundle-non-qt-libs \
-unsupported-allow-new-glibc
Expand All @@ -56,7 +73,9 @@ cd "$here/usr"
exec "$here/usr/bin/chatterino" "$@"' > appdir/AppRun
chmod a+x appdir/AppRun

./appimagetool-x86_64.AppImage appdir
./"$appimagetool_path" \
--appimage-extract-and-run \
appdir

# TODO: Create appimage in a unique directory instead maybe idk?
rm -rf appdir
18 changes: 13 additions & 5 deletions .docker/Dockerfile-ubuntu-20.04-package
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
FROM chatterino-ubuntu-20.04-build

ADD .CI /src/.CI
# In CI, this is set from the aqtinstall action
ENV Qt5_DIR=/opt/qt512

WORKDIR /src/build

# RUN apt-get install -y wget
ADD .CI /src/.CI

# create appimage
# RUN pwd && ./../.CI/CreateAppImage.sh
# Install dependencies necessary for AppImage packaging
RUN apt-get update && apt-get -y install --no-install-recommends \
curl \
libfontconfig \
libxrender1 \
file

# package deb
RUN pwd && ./../.CI/CreateUbuntuDeb.sh
RUN ./../.CI/CreateUbuntuDeb.sh

# package appimage
RUN ./../.CI/CreateAppImage.sh
15 changes: 14 additions & 1 deletion .docker/Dockerfile-ubuntu-22.04-package
Original file line number Diff line number Diff line change
@@ -1,8 +1,21 @@
FROM chatterino-ubuntu-22.04-build

ADD .CI /src/.CI
# In CI, this is set from the aqtinstall action
ENV Qt5_DIR=/opt/qt515

WORKDIR /src/build

ADD .CI /src/.CI

# Install dependencies necessary for AppImage packaging
RUN apt-get update && apt-get -y install --no-install-recommends \
curl \
libxcb-shape0 \
libfontconfig1 \
file

# package deb
RUN ./../.CI/CreateUbuntuDeb.sh

# package appimage
RUN ./../.CI/CreateAppImage.sh
10 changes: 6 additions & 4 deletions .docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
To build, from the repo root

1. Build a docker image that contains all the build artifacts and source from building Chatterino on Ubuntu 20.04
`docker build -t chatterino-ubuntu-20.04-build -f .docker/Dockerfile-ubuntu-20.04-build .`
`docker buildx build -t chatterino-ubuntu-20.04-build -f .docker/Dockerfile-ubuntu-20.04-build .`
1. Build a docker image that uses the above-built image & packages it into a .deb file
`docker build -t chatterino-ubuntu-20.04-package -f .docker/Dockerfile-ubuntu-20.04-package .`
`docker buildx build -t chatterino-ubuntu-20.04-package -f .docker/Dockerfile-ubuntu-20.04-package .`

To extract the final package, you can run the following command:
`docker run -v $PWD:/opt/mount --rm -it chatterino-ubuntu-20.04-package bash -c "cp /src/build/Chatterino-x86_64.deb /opt/mount/"`
Expand All @@ -21,9 +21,11 @@ To extract the final package, you can run the following command:
To build, from the repo root

1. Build a docker image that contains all the build artifacts and source from building Chatterino on Ubuntu 22.04
`docker build -t chatterino-ubuntu-22.04-build -f .docker/Dockerfile-ubuntu-22.04-build .`
`docker buildx build -t chatterino-ubuntu-22.04-build -f .docker/Dockerfile-ubuntu-22.04-build .`
1. Build a docker image that uses the above-built image & packages it into a .deb file
`docker build -t chatterino-ubuntu-22.04-package -f .docker/Dockerfile-ubuntu-22.04-package .`
`docker buildx build -t chatterino-ubuntu-22.04-package -f .docker/Dockerfile-ubuntu-22.04-package .`

To extract the final package, you can run the following command:
`docker run -v $PWD:/opt/mount --rm -it chatterino-ubuntu-22.04-package bash -c "cp /src/build/Chatterino-x86_64.deb /opt/mount/"`

NOTE: The AppImage from Ubuntu 22.04 is broken. Approach with caution
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ jobs:
clang-tidy-review-metadata.json

- name: Package - AppImage (Ubuntu)
if: startsWith(matrix.os, 'ubuntu') && matrix.skip_artifact != 'yes'
if: startsWith(matrix.os, 'ubuntu-20.04') && matrix.skip_artifact != 'yes'
run: |
cd build
sh ./../.CI/CreateAppImage.sh
Expand All @@ -277,7 +277,7 @@ jobs:
shell: bash

- name: Upload artifact - AppImage (Ubuntu)
if: startsWith(matrix.os, 'ubuntu') && matrix.skip_artifact != 'yes'
if: startsWith(matrix.os, 'ubuntu-20.04') && matrix.skip_artifact != 'yes'
uses: actions/upload-artifact@v3
with:
name: Chatterino-x86_64-${{ matrix.qt-version }}.AppImage
Expand Down Expand Up @@ -351,7 +351,7 @@ jobs:

- uses: actions/download-artifact@v3
with:
name: Chatterino-x86_64-5.15.2.AppImage
name: Chatterino-x86_64-5.12.12.AppImage
path: release-artifacts/

- uses: actions/download-artifact@v3
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
## Unversioned

- Minor: Delete all but the last 5 crashdumps on application start. (#4392)
- Bugfix: Fixed uploaded AppImage not being able most web requests. (#4400)
- Dev: Add capability to build Chatterino with Qt6. (#4393)
- Dev: Fix homebrew update action. (#4394)

Expand Down