Skip to content

Commit 8455a38

Browse files
Merge branch 'synfig:master' into master
2 parents a218038 + 4fadf28 commit 8455a38

File tree

161 files changed

+5258
-15045
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

161 files changed

+5258
-15045
lines changed

.github/workflows/conventional-commits-style.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@ jobs:
1616
name: Conventional commits style check
1717

1818
steps:
19-
- uses: actions/checkout@v3
19+
- uses: actions/checkout@v4
2020

2121
- name: Install conventional commits linter
2222
run: npm install --save-dev @commitlint/config-conventional @commitlint/cli
2323

2424
- name: Configure commitlint
2525
run: |
26-
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
26+
echo "module.exports = {extends: ['@commitlint/config-conventional'], rules: {'subject-case': [0, 'never']}}" > commitlint.config.js
2727
2828
- name: Lint current pull request title
2929
run: jq --raw-output ".pull_request.title" "$GITHUB_EVENT_PATH" | npx commitlint --verbose
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# This is a basic workflow to help you get started with Actions
2+
3+
name: Synfig CI (Self-Hosted)
4+
5+
# Controls when the action will run.
6+
on:
7+
# Triggers the workflow on push or pull request events but only for the master branch
8+
push:
9+
branches: [ master ]
10+
pull_request:
11+
branches: [ master ]
12+
13+
# Allows you to run this workflow manually from the Actions tab
14+
workflow_dispatch:
15+
16+
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
17+
jobs:
18+
build-osx:
19+
runs-on: osx-10.9
20+
continue-on-error: false
21+
name: "Synfig Studio (OSX package)"
22+
23+
# Steps represent a sequence of tasks that will be executed as part of the job
24+
steps:
25+
- name: "Synfig Studio (OSX package)"
26+
run: |
27+
../../../morevna-builds.osx/build-synfig.sh https://github.com/$GITHUB_REPOSITORY $GITHUB_REF
28+
build-source-tarballs:
29+
runs-on: Linux
30+
continue-on-error: false
31+
name: "Synfig Studio (source tarballs)"
32+
33+
# Steps represent a sequence of tasks that will be executed as part of the job
34+
steps:
35+
- uses: actions/checkout@v4
36+
- name: "Synfig Studio (source tarballs)"
37+
run: |
38+
./autobuild/synfigstudio-release.sh

.github/workflows/synfig-ci.yml

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ jobs:
2424
include:
2525
# includes a new variable of npm with a value of 2
2626
# for the matrix leg matching the os and version
27-
- os: macos-12
28-
name: macOS 12 Monterey (Autotools)
27+
- os: macos-13
28+
name: macOS 13 Ventura (Autotools)
2929
toolchain: autotools
3030
allow_failures: false
3131

32-
- os: macos-12
33-
name: macOS 12 Monterey (CMake+Ninja)
32+
- os: macos-13
33+
name: macOS 13 Ventura (CMake+Ninja)
3434
toolchain: cmake-ninja
3535
allow_failures: true
3636

@@ -47,27 +47,23 @@ jobs:
4747
# Steps represent a sequence of tasks that will be executed as part of the job
4848
steps:
4949
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
50-
- uses: actions/checkout@v3
51-
52-
- name: Prepare ccache timestamp
53-
id: ccache_timestamp
54-
run: echo "::set-output name=timestamp::`date "+%Y%m%d-%H%M%S"`"
50+
- uses: actions/checkout@v4
5551

5652
- name: Download ccache archive
57-
id: ccache-archive
58-
uses: actions/cache@v3
53+
id: ccache-archive-restore
54+
uses: actions/cache/restore@v4
5955
with:
6056
path: .ccache
61-
key: ${{ matrix.os }}-ccache-${{ matrix.toolchain }}-${{ steps.ccache_timestamp.outputs.timestamp }}
57+
key: synfig-ccache-${{ matrix.os }}-${{ matrix.toolchain }}
6258
restore-keys:
63-
${{ matrix.os }}-ccache-${{ matrix.toolchain }}-
59+
synfig-ccache-${{ matrix.os }}-${{ matrix.toolchain }}
6460

6561
- name: Install dependencies (Brew)
6662
if: runner.os == 'macOS'
6763
env:
6864
HOMEBREW_NO_AUTO_UPDATE: 1
6965
HOMEBREW_NO_ANALYTICS: 1
70-
run: ./1-setup-osx-brew.sh
66+
run: ./1-setup-osx-brew.sh && brew update && brew reinstall libtool
7167

7268
- name: Install dependencies (apt)
7369
if: runner.os == 'Linux'
@@ -105,3 +101,12 @@ jobs:
105101

106102
- name: ccache statistics
107103
run: ccache --show-stats
104+
105+
- name: Save cache (only for master branch)
106+
id: ccache-archive-save
107+
if: github.ref_name == 'master'
108+
uses: actions/cache/save@v4
109+
with:
110+
path: .ccache
111+
key: synfig-ccache-${{ matrix.os }}-${{ matrix.toolchain }}
112+

.github/workflows/synfig-stable.yml

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,16 @@ jobs:
3434
# Steps represent a sequence of tasks that will be executed as part of the job
3535
steps:
3636
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
37-
- uses: actions/checkout@v3
38-
39-
- name: Prepare ccache timestamp
40-
id: ccache_timestamp
41-
run: echo "::set-output name=timestamp::`date "+%Y%m%d-%H%M%S"`"
37+
- uses: actions/checkout@v4
4238

4339
- name: Download ccache archive
44-
id: ccache-archive
45-
uses: actions/cache@v3
40+
id: ccache-archive-restore
41+
uses: actions/cache/restore@v4
4642
with:
4743
path: .ccache
48-
key: ${{ matrix.os }}-ccache-${{ matrix.toolchain }}-${{ steps.ccache_timestamp.outputs.timestamp }}
44+
key: synfig-ccache-${{ matrix.os }}-${{ matrix.toolchain }}
4945
restore-keys:
50-
${{ matrix.os }}-ccache-${{ matrix.toolchain }}-
46+
synfig-ccache-${{ matrix.os }}-${{ matrix.toolchain }}
5147

5248
- name: Install dependencies (Brew)
5349
if: runner.os == 'macOS'
@@ -78,3 +74,12 @@ jobs:
7874
7975
- name: ccache statistics
8076
run: ccache --show-stats
77+
78+
- name: Save cache (only for master branch)
79+
id: ccache-archive-save
80+
if: github.ref_name == 'master'
81+
uses: actions/cache/save@v4
82+
with:
83+
path: .ccache
84+
key: synfig-ccache-${{ matrix.os }}-${{ matrix.toolchain }}
85+

.github/workflows/synfig-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
# Steps represent a sequence of tasks that will be executed as part of the job
3232
steps:
3333
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
34-
- uses: actions/checkout@v3
34+
- uses: actions/checkout@v4
3535

3636
- name: "Synfig Studio (Check appdata.xml)"
3737
run: |

.tx/config

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
[main]
22
host = https://www.transifex.com
33

4-
[synfig.synfig-core]
4+
[o:morevnaproject:p:synfig:r:synfig-core]
55
file_filter = synfig-core/po/<lang>.po
66
source_file = synfig-core/po/synfig.pot
77
source_lang = en
88
type = PO
99

10-
[synfig.synfig-studio]
10+
[o:morevnaproject:p:synfig:r:synfig-studio]
1111
file_filter = synfig-studio/po/<lang>.po
1212
source_file = synfig-studio/po/synfigstudio.pot
1313
source_lang = en

1-install-vcpkg.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
set VCPKG_DEFAULT_TRIPLET=x64-windows
2-
.\vcpkg.exe install fftw3 freetype gettext glibmm gtkmm libjpeg-turbo libpng libxmlpp libsigcpp pango sdl2-mixer zlib
2+
.\vcpkg.exe install fftw3 freetype gettext glibmm gtkmm libjpeg-turbo libpng libxmlpp libsigcpp pango zlib

1-setup-linux-native.sh

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# cairo fftw pango (image transformation and rendering functions)
1717
# gtkmm3 (Synfig Studio GUI)
1818
# libsig++ (GUI signals and events)
19-
# sdl2 sdl2_mixer jack (audio output and synchronization)
19+
# sdl2 jack (audio output and synchronization)
2020
#
2121
# 3. Runtime dependencies:
2222
# adwaita-icon-theme (used to render GUI icons and styles)
@@ -65,6 +65,9 @@ echo "Checking dependencies..."
6565
if ([ "$ID_LIKE" == "fedora" ] && [ "$VERSION_ID" > 22 ]); then
6666
PKG_LIST="git \
6767
intltool \
68+
cmake \
69+
ninja-build \
70+
ccache \
6871
libpng-devel \
6972
libjpeg-devel \
7073
fftw-devel \
@@ -93,7 +96,6 @@ if ([ "$ID_LIKE" == "fedora" ] && [ "$VERSION_ID" > 22 ]); then
9396
gtkmm30-devel \
9497
glibmm24-devel \
9598
SDL2-devel \
96-
SDL2_mixer-devel \
9799
libxslt-devel python-devel python3-lxml"
98100
# Fedora 34 and onward uses pipewire
99101
if dnf -C list installed pipewire-jack-audio-connection-kit &> /dev/null; then
@@ -110,6 +112,9 @@ if ([ "$ID_LIKE" == "fedora" ] && [ "$VERSION_ID" > 22 ]); then
110112
elif ( [ "$ID_LIKE" == "fedora" ] && [ "$VERSION_ID" <= 22 ] ) || ( [ "$ID_LIKE" == "rhel centos fedora" ] ); then
111113
PKG_LIST="git \
112114
intltool \
115+
cmake \
116+
ninja-build \
117+
ccache \
113118
libpng-devel \
114119
libjpeg-devel \
115120
fftw-devel \
@@ -139,7 +144,6 @@ elif ( [ "$ID_LIKE" == "fedora" ] && [ "$VERSION_ID" <= 22 ] ) || ( [ "$ID_LIKE"
139144
gtkmm30-devel \
140145
glibmm24-devel \
141146
SDL2-devel \
142-
SDL2_mixer-devel \
143147
libxslt-devel python-devel python3-lxml"
144148

145149
if ! ( rpm -qv $PKG_LIST ); then
@@ -148,7 +152,7 @@ elif ( [ "$ID_LIKE" == "fedora" ] && [ "$VERSION_ID" <= 22 ] ) || ( [ "$ID_LIKE"
148152
fi
149153

150154
elif [ "$ID_LIKE" == "suse opensuse" ]; then
151-
PKG_LIST="git libpng-devel libjpeg-devel freetype-devel fontconfig-devel atk-devel pango-devel cairo-devel gtk3-devel gettext-devel libxml2-devel libxml++-devel gcc-c++ autoconf automake libtool libtool-ltdl-devel shared-mime-info"
155+
PKG_LIST="git cmake ninja ccache libpng-devel libjpeg-devel freetype-devel fontconfig-devel atk-devel pango-devel cairo-devel gtk3-devel gettext-devel libxml2-devel libxml++-devel gcc-c++ autoconf automake libtool libtool-ltdl-devel shared-mime-info"
152156
PKG_LIST="${PKG_LIST} OpenEXR-devel libmng-devel ImageMagick-c++-devel gtkmm3-devel glibmm2-devel"
153157

154158
if ! ( rpm -qv $PKG_LIST ); then
@@ -187,7 +191,8 @@ elif [ "$ID_LIKE" == "arch" ]; then
187191
mlt \
188192
openexr \
189193
shared-mime-info \
190-
cmake make \
194+
cmake make ninja \
195+
ccache \
191196
python-lxml"
192197
echo "Running pacman (root privileges are needed)..."
193198
echo
@@ -198,6 +203,9 @@ elif [ -f /etc/altlinux-release ]; then
198203
gcc-c++ \
199204
git-core \
200205
shared-mime-info \
206+
cmake \
207+
ninja-build \
208+
ccache \
201209
intltool \
202210
gettext \
203211
libjpeg-devel \
@@ -241,6 +249,9 @@ elif [ "$ID_LIKE" == "debian" ] || [ "$ID_LIKE" == "ubuntu" ] || [ "$ID_LIKE" ==
241249
# Debian / Ubuntu
242250
PKG_LIST=" \
243251
build-essential \
252+
cmake \
253+
ninja-build \
254+
ccache \
244255
autoconf automake autopoint \
245256
shared-mime-info \
246257
libltdl3-dev \
@@ -259,7 +270,6 @@ elif [ "$ID_LIKE" == "debian" ] || [ "$ID_LIKE" == "ubuntu" ] || [ "$ID_LIKE" ==
259270
libgl1-mesa-dev \
260271
imagemagick \
261272
libsdl2-dev \
262-
libsdl2-mixer-dev \
263273
bzip2 \
264274
git-core \
265275
libmng-dev \

1-setup-osx-brew.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ mlt \
4545
ninja \
4646
pkg-config \
4747
python \
48-
sdl2 \
49-
sdl2_mixer"
48+
sdl2"
5049

5150
export HOMEBREW_NO_AUTO_UPDATE=1
5251
export HOMEBREW_NO_ANALYTICS=1

2-build-cmake.sh

Lines changed: 31 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,36 @@
11
#!/usr/bin/env bash
2-
#
3-
# = Usage: =
4-
# ./2-build-cmake.sh [OPTIONS]
5-
#
6-
# OPTIONS
7-
# -d = Debug build (standard)
8-
# -r = Release build
9-
# -n = Don't write the run-portable.sh to the out dir
10-
# -j NUMBER = Set parallel make jobs (1 <= NUMBER <= 999) (standard is 1)
11-
# -i = Enable incremental build (disables the clean_build_dir, gen_dir_structure and the build_images steps). Before using this option, you will have to build Synfig Studio on time without this option on the selected build mode (or use the --rerender option)
12-
# --rerender = Rerender the images (even if incremental build is activated)
13-
# -p = Only print out the current active build settings and exit
14-
# --data-prefix = The installed Synfig Studio looks for it's data (icons, sounds, etc) in [DATA_PREFIX]/share/. This option sets a custom DATA_PREFIX. (Standard is the out directory)
15-
#
16-
# = Examples =
17-
# Make a debug build
18-
# ./build-cmake -d
19-
#
20-
# Make a release build
21-
# ./build-cmake -r
22-
#
23-
# Make a release build with two parallel make jobs
24-
# ./build-cmake -r -j 2
25-
26-
#Define dir paths
27-
pwd_dir="$PWD"
28-
absolute_script_path="$(readlink -f "$0")"
29-
absolute_base_dir="$(dirname "$absolute_script_path")"
30-
31-
cd ${absolute_base_dir}
32-
33-
# Include build folder names and build functions
34-
source ./autobuild/build-cmake-common.sh
35-
36-
if [ $? -ne 0 ]
37-
then
38-
echo "Failed to include: ./autobuild/build-cmake-common.sh"
39-
cd "$pwd_dir"
40-
exit
41-
fi
422

43-
# Parse build options
44-
parse_build_arguments "$@"
3+
set -e
4+
5+
WORKDIR=$(dirname "$0")
6+
cd "${WORKDIR}"
7+
WORKDIR=$(pwd)
8+
9+
BUILDDIR=cmake-build
4510

46-
# Print build settings
47-
print_build_settings
11+
if [[ "$(uname -s)" =~ ^MSYS_NT.* ]] || [[ "$(uname -s)" =~ Msys$ ]]
12+
then
13+
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:/opt/mlt-7.28.0/lib/pkgconfig"
14+
fi
15+
16+
mkdir -p "${BUILDDIR}" && cd "${BUILDDIR}"
4817

49-
# Exec build steps
50-
clean_build_dir
51-
gen_dir_structure
52-
build_etl
53-
build_synfig_core
54-
build_synfig_studio
55-
write_portable_run_code
18+
mode="Release"
19+
if [[ -n $1 ]]
20+
then
21+
mode=$1
22+
fi
5623

57-
# Print success, restore the current directory and exit
58-
echo "Build successful to: ${absolute_base_dir}/${cmake_build_dir}/${out_dir}"
59-
cd "$pwd_dir"
24+
cmake -GNinja -DENABLE_TESTS=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_INSTALL_PREFIX=./install -DCMAKE_BUILD_TYPE="${mode}" ..
25+
cmake --build .
26+
cmake --install . >/dev/null
27+
ctest --output-on-failure
28+
29+
echo
30+
echo
31+
echo "Done. Please check your Synfig installation in"
32+
echo " ${WORKDIR}/${BUILDDIR}/output/$mode/"
33+
echo
34+
echo "You can start Synfig by executing"
35+
echo " ${WORKDIR}/${BUILDDIR}/output/$mode/bin/synfigstudio"
36+
echo

0 commit comments

Comments
 (0)