Skip to content

Commit 6f41efc

Browse files
committed
[feat] global: add packaging tests
1 parent 6630ef6 commit 6f41efc

File tree

7 files changed

+172
-44
lines changed

7 files changed

+172
-44
lines changed

.github/workflows/build_linux.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,19 @@ jobs:
5757
with:
5858
name: FastTrack-Cli
5959
path: ./build/bin/fasttrack-cli.run
60+
61+
test_bundle:
62+
runs-on: ubuntu-latest
63+
needs: build_linux
64+
steps:
65+
- name: download artifact
66+
uses: actions/download-artifact@v4
67+
with:
68+
name: FastTrack-Cli
69+
path: FastTrack-Cli
70+
71+
- name: Run FastTrack executable
72+
run: |
73+
cd FastTrack-Cli
74+
chmod +x fasttrack-cli.run
75+
./fasttrack-cli.run -- --help

.github/workflows/build_mac.yml

Lines changed: 113 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
workflow_dispatch:
55

66
env:
7-
QT_VERSION: 6.7.2
7+
QT_VERSION: 6.9.1
88

99
jobs:
1010
build_mac:
@@ -14,14 +14,6 @@ jobs:
1414
- uses: actions/setup-python@v2
1515
with:
1616
python-version: '3.8'
17-
- name: install_qt
18-
run: |
19-
pip install aqtinstall
20-
python3 -m aqt install-qt -m qtcharts -O ${{ github.workspace }}/Qt/ mac desktop ${{ env.QT_VERSION }}
21-
echo ${{ github.workspace }}/Qt/${{ env.QT_VERSION }}/macos/bin/ >> $GITHUB_PATH
22-
rm -r ${{ github.workspace }}/Qt/${{ env.QT_VERSION }}/macos/plugins/sqldrivers/libqsqlmimer.*
23-
rm -r ${{ github.workspace }}/Qt/${{ env.QT_VERSION }}/macos/plugins/sqldrivers/libqsqlodbc.*
24-
rm -r ${{ github.workspace }}/Qt/${{ env.QT_VERSION }}/macos/plugins/sqldrivers/libqsqlpsql.*
2517
- name: Set up Homebrew #https://github.com/Homebrew/homebrew-cask/issues/150323
2618
id: set-up-homebrew
2719
uses: Homebrew/actions/setup-homebrew@master
@@ -38,25 +30,89 @@ jobs:
3830
brew upgrade -q -f
3931
brew install pkg-config
4032
brew install openssl
41-
brew install libiodbc
42-
brew install opencv
33+
brew install ninja cmake jpeg-turbo libpng libtiff webp
34+
git clone https://github.com/opencv/opencv.git
35+
cd opencv
36+
mkdir -p build_cv
37+
cd build_cv
38+
sudo mv /Library/Frameworks/Mono.framework/Headers /Library/Frameworks/Mono.framework/Headers.bak
39+
cmake .. \
40+
-GNinja \
41+
-DCMAKE_BUILD_TYPE=Release \
42+
-DCMAKE_INSTALL_PREFIX=$HOME/opencv-install \
43+
-DWITH_JPEG=ON \
44+
-DWITH_PNG=ON \
45+
-DWITH_TIFF=ON \
46+
-DWITH_WEBP=ON \
47+
-DWITH_ZLIB=ON \
48+
-DWITH_QT=OFF \
49+
-DOPENCV_GENERATE_PKGCONFIG=ON \
50+
-DWITH_GTK=OFF \
51+
-DBUILD_JPEG=OFF \
52+
-DBUILD_PNG=OFF \
53+
-DBUILD_TIFF=OFF \
54+
-DBUILD_WEBP=OFF \
55+
-DBUILD_ZLIB=OFF \
56+
-DBUILD_opencv_python_bindings_generator=OFF \
57+
-DBUILD_opencv_java_bindings_generator=OFF \
58+
ninja
59+
ninja install
60+
- name: install_qt
61+
run: |
62+
brew install aqtinstall
63+
aqt install-qt -O ${{ github.workspace }}/Qt/ mac desktop ${{ env.QT_VERSION }}
64+
echo ${{ github.workspace }}/Qt/${{ env.QT_VERSION }}/macos/bin/ >> $GITHUB_PATH
65+
- name: remove_MimerSQL_plugin
66+
run: |
67+
QT_DIR=${{ github.workspace }}/Qt/${{ env.QT_VERSION }}/macos
68+
rm -f $QT_DIR/plugins/sqldrivers/libqsqlmimer.so
69+
rm -f $QT_DIR/lib/cmake/Qt6Sql/Qt6QMimerSQLDriverPlugin*.cmake
70+
sed -i '/QMimerSQLDriverPlugin/d' $QT_DIR/lib/cmake/Qt6Sql/Qt6SqlPlugins.cmake || true
71+
rm -r ${{ github.workspace }}/Qt/${{ env.QT_VERSION }}/macos/plugins/sqldrivers/libqsqlmimer.*
72+
rm -r ${{ github.workspace }}/Qt/${{ env.QT_VERSION }}/macos/plugins/sqldrivers/libqsqlodbc.*
73+
rm -r ${{ github.workspace }}/Qt/${{ env.QT_VERSION }}/macos/plugins/sqldrivers/libqsqlpsql.*
74+
- name: remove_ODBCSQL_plugin
75+
run: |
76+
QT_DIR=${{ github.workspace }}/Qt/${{ env.QT_VERSION }}/macos
77+
rm -f $QT_DIR/plugins/sqldrivers/libqsqlodbc.so
78+
rm -f $QT_DIR/lib/cmake/Qt6Sql/Qt6QODBCDriverPlugin*.cmake
79+
sed -i '/Qt6QODBCDriverPlugin/d' $QT_DIR/lib/cmake/Qt6Sql/Qt6SqlPlugins.cmake || true
80+
- name: remove_QPSQL_plugin
81+
run: |
82+
QT_DIR=${{ github.workspace }}/Qt/${{ env.QT_VERSION }}/macos
83+
rm -f $QT_DIR/plugins/sqldrivers/libqsqlpsql.so
84+
rm -f $QT_DIR/lib/cmake/Qt6Sql/Qt6QPSQLDriverPlugin*.cmake
85+
sed -i '/Qt6QPSQLDriverPlugin/d' $QT_DIR/lib/cmake/Qt6Sql/Qt6SqlPlugins.cmake || true
86+
- name: build_ft
87+
run: |
88+
export DYLD_LIBRARY_PATH=$HOME/opencv-install/lib:$DYLD_LIBRARY_PATH
89+
export PKG_CONFIG_PATH="$HOME/opencv-install/lib/pkgconfig:$PKG_CONFIG_PATH"
90+
export CMAKE_PREFIX_PATH="$HOME/opencv-install:$CMAKE_PREFIX_PATH"
4391
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
92+
./run.sh ci_clang
4493
- name: build_ft
4594
run: |
46-
./run.sh ci
4795
cd build/bin
48-
mv fasttrack.app FastTrack.app
49-
macdeployqt FastTrack.app -always-overwrite
5096
wget https://raw.githubusercontent.com/arl/macdeployqtfix/refs/heads/master/macdeployqtfix.py
51-
#cp *.qm FastTrack.app/Contents/Resources/
52-
find / -name "libgcc_s.1.1.dylib" -exec cp {} FastTrack.app/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
53-
find / -name "libsharpyuv.0.dylib" -exec cp {} FastTrack.app/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
54-
find / -name "libjxl_cms.0.11.dylib" -exec cp {} FastTrack.app/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
55-
cp -v /opt/homebrew/Cellar/opencv/*/lib/lib*.dylib FastTrack.app/Contents/Frameworks/ || true # Should (and was) be automatically done by macdeployqt!
56-
cp -v /opt/homebrew/opt/little-cms2/lib/lib*.dylib FastTrack.app/Contents/Frameworks/ || true # Should (and was) be automatically done by macdeployqt!
57-
cp -v /opt/homebrew/opt/jpeg-xl/lib/lib*.dylib FastTrack.app/Contents/Frameworks/ || true # Should (and was) be automatically done by macdeployqt!
97+
APP=FastTrack.app
98+
APP_BINARY=$APP/Contents/MacOS/FastTrack
99+
mv fasttrack.app "$APP"
100+
macdeployqt "$APP" \
101+
-always-overwrite \
102+
-verbose=2
103+
find / -name "libutf8_validity.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
104+
find / -name "libgcc_s.1.1.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
105+
find / -name "libsharpyuv.0.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
106+
find / -name "libjxl_cms.0.11.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
107+
find / -name "libvtk*.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
108+
find / -name "libsqlite3*.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
109+
find / -name "libhpdf*.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
110+
cp -v /opt/homebrew/opt/little-cms2/lib/lib*.dylib $APP/Contents/Frameworks/ || true
111+
cp -v /opt/homebrew/opt/jpeg-xl/lib/lib*.dylib $APP/Contents/Frameworks/ || true
112+
find "$APP/Contents/Frameworks" -type f -name "*.dylib" -exec codesign --remove-signature {} \; 2>/dev/null || true
113+
find "$APP/Contents/Frameworks" -type f -name "*.dylib" -exec codesign --force --sign - {} \;
58114
python macdeployqtfix.py fasttrack.app/contents/macos/fasttrack ../../Qt/${{ env.QT_VERSION }}/
59-
hdiutil create -volname FastTrack -srcfolder FastTrack.app -ov -format UDZO FastTrack.dmg
115+
hdiutil create -volname FastTrack -srcfolder $APP -ov -format UDZO FastTrack.dmg
60116
- name: upload_artefact
61117
uses: actions/upload-artifact@v4
62118
with:
@@ -65,19 +121,43 @@ jobs:
65121
- name: build_ft_cli
66122
run: |
67123
cd build/bin
68-
mv fasttrack-cli.app FastTrack-Cli.app
69-
macdeployqt FastTrack-Cli.app -always-overwrite
70-
#cp *.qm FastTrack-Cli.app/Contents/Resources/
71-
find / -name "libgcc_s.1.1.dylib" -exec cp {} FastTrack-Cli.app/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
72-
find / -name "libsharpyuv.0.dylib" -exec cp {} FastTrack-Cli.app/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
73-
find / -name "libjxl_cms.0.11.dylib" -exec cp {} FastTrack-Cli.app/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
74-
cp -v /opt/homebrew/Cellar/opencv/*/lib/lib*.dylib FastTrack-Cli.app/Contents/Frameworks/ || true # Should (and was) be automatically done by macdeployqt!
75-
cp -v /opt/homebrew/opt/little-cms2/lib/lib*.dylib FastTrack-Cli.app/Contents/Frameworks/ || true # Should (and was) be automatically done by macdeployqt!
76-
cp -v /opt/homebrew/opt/jpeg-xl/lib/lib*.dylib FastTrack-Cli.app/Contents/Frameworks/ || true # Should (and was) be automatically done by macdeployqt!
124+
APP=FastTrack-Cli.app
125+
APP_BINARY=$APP/Contents/MacOS/FastTrack-Cli
126+
mv fasttrack-cli.app "$APP"
127+
macdeployqt "$APP" \
128+
-always-overwrite \
129+
-verbose=2
130+
find / -name "libutf8_validity.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
131+
find / -name "libgcc_s.1.1.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
132+
find / -name "libsharpyuv.0.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
133+
find / -name "libjxl_cms.0.11.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
134+
find / -name "libvtk*.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
135+
find / -name "libsqlite3*.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
136+
find / -name "libhpdf*.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
137+
cp -v /opt/homebrew/opt/little-cms2/lib/lib*.dylib $APP/Contents/Frameworks/ || true
138+
cp -v /opt/homebrew/opt/jpeg-xl/lib/lib*.dylib $APP/Contents/Frameworks/ || true
139+
find "$APP/Contents/Frameworks" -type f -name "*.dylib" -exec codesign --remove-signature {} \; 2>/dev/null || true
140+
find "$APP/Contents/Frameworks" -type f -name "*.dylib" -exec codesign --force --sign - {} \;
77141
python macdeployqtfix.py fasttrack-cli.app/contents/macos/fasttrack-cli ../../Qt/${{ env.QT_VERSION }}/
78-
hdiutil create -volname FastTrack-Cli -srcfolder FastTrack-Cli.app -ov -format UDZO FastTrack-Cli.dmg
79-
- name: upload_artefact
142+
hdiutil create -volname FastTrack-Cli -srcfolder $APP -ov -format UDZO FastTrack-Cli.dmg
143+
- name: upload_artefact_cli
80144
uses: actions/upload-artifact@v4
81145
with:
82146
name: FastTrack-Cli.dmg
83147
path: ./build/bin/FastTrack-Cli.dmg
148+
149+
test_bundle:
150+
runs-on: macos-latest
151+
needs: build_mac
152+
steps:
153+
- name: download artifact
154+
uses: actions/download-artifact@v4
155+
with:
156+
name: FastTrack-Cli.dmg
157+
path: FastTrack-Cli
158+
159+
- name: Run FastTrack executable
160+
run: |
161+
cd FastTrack-Cli
162+
hdiutil attach FastTrack-Cli.dmg -mountpoint /Volumes/FastTrackApp
163+
/Volumes/FastTrackApp/FastTrack-Cli.app/Contents/MacOS/FastTrack-Cli --help

.github/workflows/build_win.yml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,32 @@ jobs:
3535
cd build
3636
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DSKIP_TEST=ON ../
3737
mingw32-make
38-
mv bin FastTrack
3938
mv bin/fasttrack.exe bin/FastTrack.exe
4039
mv bin/fasttrack-cli.exe bin/FastTrack-Cli.exe
40+
mv bin FastTrack
4141
windeployqt FastTrack/FastTrack.exe --no-translations # https://bugreports.qt.io/browse/QTBUG-62103?jql=status%20%3D%20Open%20AND%20text%20~%20%22windeployqt%20platform%22 and https://bugreports.qt.io/browse/QTBUG-112204
4242
cp ${{ github.workspace }}/src/assets/icon.ico FastTrack
4343
cp ${{ github.workspace }}/Qt/Tools/mingw*/bin/lib*.dll FastTrack
4444
cp ${{ github.workspace }}/OpenCV_MinGW_64/bin/opencv_videoio_ffmpeg${{ env.OPENCV_VERSION_ }}_64.dll FastTrack
4545
cp ${{ github.workspace }}/OpenCV_MinGW_64/bin/libopencv_world${{ env.OPENCV_VERSION_ }}.dll FastTrack
46-
cp *.qm FastTrack
46+
#cp *.qm FastTrack
4747
- name: upload_artefact
4848
uses: actions/upload-artifact@v4
4949
with:
5050
name: FastTrack
5151
path: build/FastTrack
52+
53+
test_bundle:
54+
runs-on: windows-latest
55+
needs: build_win
56+
steps:
57+
- name: download artifact
58+
uses: actions/download-artifact@v4
59+
with:
60+
name: FastTrack
61+
path: FastTrack
62+
63+
- name: Run FastTrack executable
64+
run: |
65+
cd FastTrack
66+
./FastTrack-Cli.exe --help

docs/user/installation.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ During the installation on Windows and Mac systems, security alerts may be displ
1515

1616
## Download
1717

18-
Stable versions of FastTrack are released for Linux (official AppImage, official AUR for ArchLinux, community Fedora package), Mac (as dmg), and Windows (installer, portable folder).
18+
Stable versions of FastTrack are released for Linux (official makeself, official AUR for ArchLinux), Mac (as app and homebrew), and Windows (installer, portable folder).
1919

2020
## Installation
2121

@@ -26,18 +26,16 @@ Stable versions of FastTrack are released for Linux (official AppImage, official
2626
* Portable:
2727
- Download the FastTrack [folder FastTrack.zip] (https://github.com/FastTrackOrg/FastTrack/releases/latest).
2828
- Unzip the folder and execute FastTrack.exe.
29-
2. For Linux (all distributions) as AppImage:
30-
* Download the AppImage [file FastTrack-x86_64.AppImage](https://github.com/FastTrackOrg/FastTrack/releases/latest).
31-
* Allow FastTrack.AppImage to be executed:
29+
2. For Linux (all distributions) as makeself:
30+
* Download the AppImage [file FastTrack-x86_64.run](https://github.com/FastTrackOrg/FastTrack/releases/latest).
31+
* Allow FastTrack.run to be executed:
3232
- Right-click on the AppImage file.
3333
- Click on Properties.
3434
- Click on Permissions.
3535
- Tick “Allow executing file as program”.
36-
* Check the [AppImage](https://appimage.org/) Launcher to integrate AppImage into the system.
3736
3. For Linux natively:
38-
* Fedora: `sudo dnf install fasttrack fasttrack-cli`
3937
* Arch Linux: `yay -S fasttrack fasttrack-cli`
40-
* From source : `qmake src/FastTrack.pro ; make ; sudo make install ; qmake src/FastTrack-Cli.pro ; make ; sudo make install`
38+
* From source : `mkdir build ; cd build ; cmake ../ ; make ; sudo make install`
4139
4. For Mac (.app):
4240
- Minimal version required based on Qt6 minimal version required.
4341
- Download the FastTrack dmg [FastTrack.dmg](https://github.com/FastTrackOrg/FastTrack/releases/latest).

docs/user/trackingCli.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ The syntax to call FastTrack command line interface differs according to the pla
1414

1515
## Installing fasttrack-cli
1616

17-
The command-line interface is available for macOS, Linux, and Windows. It can be downloaded on [the release page](https://github.com/FastTrackOrg/FastTrack/releases/latest).
17+
The command-line interface is available for macOS, Linux, and Windows. It can be downloaded on [the release page](https://github.com/FastTrackOrg/FastTrack/releases/latest). Since version 6.4.0 the fasttrack-cli is installed in the same folder as fasttrack for Windows.
1818

1919
The full list of parameters can be found by calling ```./fasttrack-cli --help```.
2020
Parameters can be declared individually by calling ```./fasttrack-cli --path path/to/movie.webm --parameter1 value --parameter2 value``` or in batch with a parameters file ```./fasttrack-cli --path path/to/movie.webm --cfg path/cfg.toml```. Note that the path option need to be the first option.

run.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,12 @@ if [ "$1" = "ci" ]; then
4848
cmake -DCMAKE_BUILD_TYPE=Release -DSKIP_TEST=ON ../
4949
make
5050
fi
51+
52+
if [ "$1" = "ci_clang" ]; then
53+
make distclean
54+
set -e
55+
mkdir -p build
56+
cd build
57+
cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DSKIP_TEST=ON ../
58+
make
59+
fi

src/CMakeLists.txt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
cmake_minimum_required(VERSION 3.16)
22
project(FastTrackApp VERSION 6.3.4)
33

4-
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Network Svg Sql)
4+
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Network Svg Sql LinguistTools)
5+
6+
set(TS_FILES
7+
../translations/fasttrack_en.ts
8+
)
59

610
add_executable(fasttrack
711
updater.cpp
@@ -44,7 +48,13 @@ add_executable(fasttrack
4448

4549
resources.qrc
4650
assets/theme.qrc
51+
${TS_FILES}
52+
)
53+
54+
qt_add_lrelease(TS_FILES fasttrack_en.ts
55+
QM_OUTPUT_DIRECTORY translations
4756
)
57+
add_custom_target(translations ALL DEPENDS ${QM_FILES})
4858

4959
target_compile_definitions(fasttrack PRIVATE APP_VERSION="${PROJECT_VERSION}")
5060

0 commit comments

Comments
 (0)