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

Add macOS, Windows, & Ubuntu 22.04 Qt6 builds #4522

Merged
merged 11 commits into from
Apr 15, 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
16 changes: 13 additions & 3 deletions .CI/CreateAppImage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,20 @@ if [ ! -f ./bin/chatterino ] || [ ! -x ./bin/chatterino ]; then
exit 1
fi

echo "Qt5_DIR set to: ${Qt5_DIR}"
if [ -n "$Qt5_DIR" ]; then
echo "Using Qt DIR from Qt5_DIR: $Qt5_DIR"
_QT_DIR="$Qt5_DIR"
elif [ -n "$Qt6_DIR" ]; then
echo "Using Qt DIR from Qt6_DIR: $Qt6_DIR"
_QT_DIR="$Qt6_DIR"
fi

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${Qt5_DIR}/lib"
export PATH="${Qt5_DIR}/bin:$PATH"
if [ -n "$_QT_DIR" ]; then
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${_QT_DIR}/lib"
export PATH="${_QT_DIR}/bin:$PATH"
else
echo "No Qt environment variable set, assuming system-installed Qt"
fi

script_path=$(readlink -f "$0")
script_dir=$(dirname "$script_path")
Expand Down
18 changes: 16 additions & 2 deletions .CI/CreateDMG.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,28 @@ if [ -d bin/chatterino.app ] && [ ! -d chatterino.app ]; then
mv bin/chatterino.app chatterino.app
fi

if [ -n "$Qt5_DIR" ]; then
echo "Using Qt DIR from Qt5_DIR: $Qt5_DIR"
_QT_DIR="$Qt5_DIR"
elif [ -n "$Qt6_DIR" ]; then
echo "Using Qt DIR from Qt6_DIR: $Qt6_DIR"
_QT_DIR="$Qt6_DIR"
fi

if [ -n "$_QT_DIR" ]; then
export PATH="${_QT_DIR}/bin:$PATH"
else
echo "No Qt environment variable set, assuming system-installed Qt"
fi

echo "Running MACDEPLOYQT"
$Qt5_DIR/bin/macdeployqt chatterino.app
macdeployqt chatterino.app
echo "Creating python3 virtual environment"
python3 -m venv venv
echo "Entering python3 virtual environment"
. venv/bin/activate
echo "Installing dmgbuild"
python3 -m pip install dmgbuild
echo "Running dmgbuild.."
dmgbuild --settings ./../.CI/dmg-settings.py -D app=./chatterino.app Chatterino2 chatterino-osx.dmg
dmgbuild --settings ./../.CI/dmg-settings.py -D app=./chatterino.app Chatterino2 chatterino-osx-Qt-$1.dmg
echo "Done!"
7 changes: 6 additions & 1 deletion .CI/CreateUbuntuDeb.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,12 @@ case "$ubuntu_release" in
dependencies="libc6, libstdc++6, libqt5core5a, libqt5concurrent5, libqt5dbus5, libqt5gui5, libqt5network5, libqt5svg5, libqt5widgets5, qt5-image-formats-plugins, libboost-filesystem1.71.0"
;;
22.04)
dependencies="libc6, libstdc++6, libqt5core5a, libqt5concurrent5, libqt5dbus5, libqt5gui5, libqt5network5, libqt5svg5, libqt5widgets5, qt5-image-formats-plugins, libboost-filesystem1.74.0"
if [ -n "$Qt6_DIR" ]; then
echo "Qt6_DIR set, assuming Qt6"
dependencies="libc6, libstdc++6, libqt6core6, libqt6widgets6, libqt6network6, libqt6core5compat6, libqt6svg6, qt6-qpa-plugins, qt6-image-formats-plugins"
else
dependencies="libc6, libstdc++6, libqt5core5a, libqt5concurrent5, libqt5dbus5, libqt5gui5, libqt5network5, libqt5svg5, libqt5widgets5, qt5-image-formats-plugins, libboost-filesystem1.74.0"
fi
;;
*)
echo "Unsupported Ubuntu release $ubuntu_release"
Expand Down
59 changes: 59 additions & 0 deletions .docker/Dockerfile-ubuntu-22.04-qt6-build
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
ARG UBUNTU_VERSION=22.04

FROM ubuntu:$UBUNTU_VERSION

ARG QT_VERSION=6.2.4
ARG BUILD_WITH_QT6=ON

ENV TZ=UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apt-get update && apt-get -y install --no-install-recommends \
cmake \
virtualenv \
rapidjson-dev \
libfuse2 \
libssl-dev \
libboost-dev \
libxcb-randr0-dev \
libboost-system-dev \
libboost-filesystem-dev \
libpulse-dev \
libxkbcommon-x11-0 \
build-essential \
libgl1-mesa-dev \
libxcb-icccm4 \
libxcb-image0 \
libxcb-keysyms1 \
libxcb-render-util0 \
libxcb-xinerama0 \
libfontconfig1-dev

RUN apt-get -y install \
git \
lsb-release \
python3-pip && \
apt-get clean all

# Install Qt as we do in CI

RUN pip3 install -U pip && \
pip3 install aqtinstall && \
aqt install-qt linux desktop $QT_VERSION -O /opt/qt --modules qt5compat

ADD . /src

RUN mkdir /src/build

# cmake
RUN cd /src/build && \
CXXFLAGS=-fno-sized-deallocation cmake \
-DBUILD_WITH_QT6=$BUILD_WITH_QT6 \
-DCMAKE_INSTALL_PREFIX=appdir/usr/ \
-DCMAKE_PREFIX_PATH=/opt/qt/$QT_VERSION/gcc_64/lib/cmake \
-DBUILD_WITH_QTKEYCHAIN=OFF \
..

# build
RUN cd /src/build && \
make -j8
23 changes: 23 additions & 0 deletions .docker/Dockerfile-ubuntu-22.04-qt6-package
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
ARG UBUNTU_VERSION=22.04

FROM chatterino-ubuntu-$UBUNTU_VERSION-qt6-build

# In CI, this is set from the aqtinstall action
ENV Qt6_DIR=/opt/qt/6.2.4/gcc_64

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
52 changes: 39 additions & 13 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
strategy:
matrix:
os: [windows-latest, macos-latest]
qt-version: [5.15.2, 5.12.12]
qt-version: [5.15.2, 6.5.0]
pch: [true]
force-lto: [false]
plugins: [false]
Expand Down Expand Up @@ -190,7 +190,7 @@ jobs:
nmake /S /NOLOGO crashpad_handler
mkdir Chatterino2/crashpad
cp bin/crashpad/crashpad_handler.exe Chatterino2/crashpad/crashpad_handler.exe
7z a bin/chatterino.pdb.7z bin/chatterino.pdb
7z a bin/chatterino-Qt-${{ matrix.qt-version }}.pdb.7z bin/chatterino.pdb

- name: Package (windows)
if: startsWith(matrix.os, 'windows')
Expand All @@ -199,21 +199,21 @@ jobs:
windeployqt bin/chatterino.exe --release --no-compiler-runtime --no-translations --no-opengl-sw --dir Chatterino2/
cp bin/chatterino.exe Chatterino2/
echo nightly > Chatterino2/modes
7z a chatterino-windows-x86-64.zip Chatterino2/
7z a chatterino-windows-x86-64-Qt-${{ matrix.qt-version }}.zip Chatterino2/

- name: Upload artifact (Windows - binary)
if: startsWith(matrix.os, 'windows') && matrix.skip_artifact != 'yes'
uses: actions/upload-artifact@v3
with:
name: chatterino-windows-x86-64-${{ matrix.qt-version }}.zip
path: build/chatterino-windows-x86-64.zip
name: chatterino-windows-x86-64-Qt-${{ matrix.qt-version }}.zip
path: build/chatterino-windows-x86-64-Qt-${{ matrix.qt-version }}.zip

- name: Upload artifact (Windows - symbols)
if: startsWith(matrix.os, 'windows') && matrix.skip_artifact != 'yes'
uses: actions/upload-artifact@v3
with:
name: chatterino-windows-x86-64-${{ matrix.qt-version }}-symbols.pdb.7z
path: build/bin/chatterino.pdb.7z
name: chatterino-windows-x86-64-Qt-${{ matrix.qt-version }}-symbols.pdb.7z
path: build/bin/chatterino-Qt-${{ matrix.qt-version }}.pdb.7z

- name: Clean Conan cache
if: startsWith(matrix.os, 'windows')
Expand Down Expand Up @@ -341,15 +341,15 @@ jobs:
pwd
ls -la build || true
cd build
sh ./../.CI/CreateDMG.sh
sh ./../.CI/CreateDMG.sh ${{ matrix.qt-version }}
shell: bash

- name: Upload artifact (MacOS)
if: startsWith(matrix.os, 'macos')
uses: actions/upload-artifact@v3
with:
name: chatterino-osx-${{ matrix.qt-version }}.dmg
path: build/chatterino-osx.dmg
name: chatterino-osx-Qt-${{ matrix.qt-version }}.dmg
path: build/chatterino-osx-Qt-${{ matrix.qt-version }}.dmg
create-release:
needs: build
runs-on: ubuntu-latest
Expand All @@ -361,12 +361,22 @@ jobs:
fetch-depth: 0 # allows for tags access
- uses: actions/download-artifact@v3
with:
name: chatterino-windows-x86-64-5.15.2.zip
name: chatterino-windows-x86-64-Qt-5.15.2.zip
path: release-artifacts/

- uses: actions/download-artifact@v3
with:
name: chatterino-windows-x86-64-5.15.2-symbols.pdb.7z
name: chatterino-windows-x86-64-Qt-5.15.2-symbols.pdb.7z
path: release-artifacts/

- uses: actions/download-artifact@v3
with:
name: chatterino-windows-x86-Qt-64-6.5.0.zip
path: release-artifacts/

- uses: actions/download-artifact@v3
with:
name: chatterino-windows-x86-64-Qt-6.5.0-symbols.pdb.7z
path: release-artifacts/

- uses: actions/download-artifact@v3
Expand All @@ -386,14 +396,30 @@ jobs:

- uses: actions/download-artifact@v3
with:
name: chatterino-osx-5.15.2.dmg
name: Chatterino-ubuntu-22.04-Qt-6.2.4.deb
path: release-artifacts/

- uses: actions/download-artifact@v3
with:
name: chatterino-osx-Qt-5.15.2.dmg
path: release-artifacts/

- uses: actions/download-artifact@v3
with:
name: chatterino-osx-Qt-6.5.0.dmg
path: release-artifacts/

- name: Copy flatpakref
run: |
cp .CI/chatterino-nightly.flatpakref release-artifacts/
shell: bash

- name: Mark experimental
run: |
for file in *; do mv -n "$file" "$(echo $file | sed 's/\(6\(\.[[:digit:]]\)\{2\}\)/\1-EXPERIMENTAL/g')"; done
working-directory: release-artifacts
shell: bash

- name: Create release
uses: ncipollo/[email protected]
with:
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
- Dev: Add scripting capabilities with Lua (#4341, #4504)
- Dev: Conan 2.0 is now used instead of Conan 1.0. (#4417)
- Dev: Added tests and benchmarks for `LinkParser`. (#4436)
- Dev: Experimental builds with Qt 6 are now provided. (#4522)
- Dev: Removed `CHATTERINO_TEST` definitions. (#4526)

## 2.4.2
Expand Down