correct python3 #115
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright 2024 the Cartero authors | |
# | |
# 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 3 of the License, or | |
# (at your option) any later version. | |
# | |
# 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 <https://www.gnu.org/licenses/>. | |
# | |
# SPDX-License-Identifier: GPL-3.0-or-later | |
on: | |
push: | |
branches: | |
- trunk | |
- "fix/*" | |
- "release/*" | |
name: Nightly build | |
jobs: | |
flatpak: | |
runs-on: ubuntu-latest | |
container: | |
image: bilelmoussaoui/flatpak-github-actions:gnome-46 | |
options: --privileged | |
strategy: | |
matrix: | |
arch: [x86_64, aarch64] | |
fail-fast: false | |
name: "Flatpak (${{ matrix.arch }})" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: (ARM) Install Docker | |
if: ${{ matrix.arch != 'x86_64' }} | |
run: | | |
dnf -y install docker | |
- name: (ARM) Set up QEMU | |
if: ${{ matrix.arch != 'x86_64' }} | |
id: qemu | |
uses: docker/setup-qemu-action@v2 | |
with: | |
platforms: arm64 | |
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6 | |
with: | |
bundle: es.danirod.Cartero.Devel.flatpak | |
manifest-path: build-aux/es.danirod.Cartero.Devel.json | |
cache-key: flatpak-builder-${{ github.sha }} | |
build-bundle: true | |
arch: ${{ matrix.arch }} | |
windows: | |
name: "Windows" | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: msys2/setup-msys2@v2 | |
with: | |
update: true | |
install: >- | |
git | |
msystem: ucrt64 | |
- uses: actions/checkout@v4 | |
- name: Build Windows version | |
run: | | |
export PATH=/c/Users/$USER/.cargo/bin:$PATH | |
rustup toolchain install stable-gnu | |
rustup default stable-gnu | |
build-aux/msys-build.sh devel | |
- uses: Minionguyjpro/Inno-Setup-Action@v1.2.2 | |
name: Create Windows installer | |
with: | |
path: build/win32-installer.iss | |
- uses: actions/upload-artifact@v4 | |
name: Upload Windows version | |
with: | |
name: es.danirod.Cartero-windows-x86_64 | |
path: build/cartero-win32 | |
- uses: actions/upload-artifact@v4 | |
name: Upload Windows version | |
with: | |
name: es.danirod.Cartero-windows-x86_64-installer | |
path: build/Output/cartero.exe | |
macos: | |
strategy: | |
matrix: | |
# macOS 13 for x86_64, macOS 15 for aarch64 | |
os: [macos-13, macos-15] | |
fail-fast: false | |
name: "macOS (${{ matrix.os }})" | |
runs-on: ${{ matrix.os }} | |
env: | |
# The minimum supported macOS version. | |
MACOSX_DEPLOYMENT_TARGET: 11.0 | |
steps: | |
- name: Reload the patched Homebrew environment | |
id: patched-homebrew | |
uses: actions/cache@v4 | |
with: | |
path: homebrew | |
key: ${{ runner.os }}-${{ runner.arch }}-homebrew | |
- name: Install patched Homebrew environment | |
if: steps.patched-homebrew.outputs.cache-hit != 'true' | |
run: | | |
# Manually download Homebrew | |
mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip-components 1 -C homebrew | |
eval "$(homebrew/bin/brew shellenv)" | |
brew update --force --quiet | |
export PATH=$PWD/homebrew/bin:$PATH | |
# Patch Homebrew to support injecting the deployment target | |
sed -i.bak 's/MACOSX_DEPLOYMENT_TARGET//g' $(brew --prefix)/Library/Homebrew/build_environment.rb | |
sed -i.bak 's/MACOSX_DEPLOYMENT_TARGET//g' $(brew --prefix)/Library/Homebrew/extend/ENV/shared.rb | |
rm $(brew --prefix)/Library/Homebrew/build_environment.rb.bak | |
rm $(brew --prefix)/Library/Homebrew/extend/ENV/shared.rb.bak | |
- name: Install dependencies | |
if: steps.patched-homebrew.outputs.cache-hit != 'true' | |
run: | | |
export PATH=$PWD/homebrew/bin:$PATH | |
# These dependencies are a pain in the ass to setup and they don't need to be built from source. | |
brew install python@3.12 python@3.13 svn | |
# Note: the --build-from-source flag does not affect dependencies, so install | |
# each dependency separately. Since this is not a real Homebrew distribution, | |
# it doesn't matter if dependencies are not treated as such. | |
for pkg in meson gtk4 desktop-file-utils pygobject3 adwaita-icon-theme shared-mime-info gtksourceview5 libadwaita; do | |
brew install $(brew deps $pkg) --build-from-source | |
brew install $pkg --build-from-source | |
done | |
- name: Fix PYTHONPATH for blueprint-compiler | |
run: | | |
export PATH=$PWD/homebrew/bin:$PATH | |
echo "PYTHONPATH=$(brew --prefix)/lib/python3.13/site-packages:$PYTHONPATH" >> $GITHUB_ENV | |
- uses: actions/checkout@v4 | |
- name: Build macOS version | |
run: | | |
export PATH=$PWD/homebrew/bin:$PATH | |
build-aux/macos-build.sh devel | |
- name: Build installer | |
run: | | |
export PATH=$PWD/homebrew/bin:$PATH | |
build-aux/macos-installer.sh | |
- uses: actions/upload-artifact@v4 | |
name: Upload macOS version | |
with: | |
name: es.danirod.Cartero-${{ runner.arch }} | |
path: build/Cartero-*.dmg | |
appimage: | |
name: "AppImage (GNU/Linux)" | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Install dependencies | |
run: | | |
sudo apt install --no-install-recommends libfuse2 | |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | |
brew install meson gtk4 gtksourceview5 desktop-file-utils pygobject3 libadwaita adwaita-icon-theme gettext shared-mime-info | |
- uses: actions/checkout@v4 | |
- name: Build | |
run: | | |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | |
export VENDOR_BASE="$(brew --prefix)" | |
export LD_LIBRARY_PATH="$(brew --prefix)/lib" | |
build-aux/appimage-build.sh devel | |
- name: Upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: es.danirod.Cartero.Devel-AppImage | |
path: build/appimagetool/Cartero-x86_64.AppImage |