44 workflow_dispatch :
55
66env :
7- QT_VERSION : 6.7.2
7+ QT_VERSION : 6.9.1
88
99jobs :
1010 build_mac :
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,46 +30,143 @@ jobs:
3830 brew upgrade -q -f
3931 brew install pkg-config
4032 brew install openssl
41- brew install libiodbc
42- brew install opencv
43- export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
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
4486 - name : build_ft
4587 run : |
46- ./run.sh ci
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"
91+ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
92+ ./run.sh ci_clang
4793 cd build/bin
4894 mv fasttrack.app FastTrack.app
4995 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!
58- python macdeployqtfix.py fasttrack.app/contents/macos/fasttrack ../../Qt/${{ env.QT_VERSION }}/
5997 hdiutil create -volname FastTrack -srcfolder FastTrack.app -ov -format UDZO FastTrack.dmg
6098 - name : upload_artefact
6199 uses : actions/upload-artifact@v4
62100 with :
63101 name : FastTrack.dmg
64102 path : ./build/bin/FastTrack.dmg
65- - name : build_ft_cli
103+ - name : build_ft
66104 run : |
67105 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!
106+ APP=FastTrack.app
107+ APP_BINARY=$APP/Contents/MacOS/FastTrack
108+ mv fasttrack.app "$APP"
109+ macdeployqt "$APP" \
110+ -always-overwrite \
111+ -verbose=2
112+ find / -name "libutf8_validity.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
113+ find / -name "libgcc_s.1.1.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
114+ find / -name "libsharpyuv.0.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
115+ find / -name "libjxl_cms.0.11.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
116+ find / -name "libvtk*.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
117+ find / -name "libsqlite3*.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
118+ find / -name "libhpdf*.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
119+ cp -v /opt/homebrew/opt/little-cms2/lib/lib*.dylib $APP/Contents/Frameworks/ || true
120+ cp -v /opt/homebrew/opt/jpeg-xl/lib/lib*.dylib $APP/Contents/Frameworks/ || true
121+ find "$APP/Contents/Frameworks" -type f -name "*.dylib" -exec codesign --remove-signature {} \; 2>/dev/null || true
122+ find "$APP/Contents/Frameworks" -type f -name "*.dylib" -exec codesign --force --sign - {} \;
77123 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
124+ hdiutil create -volname FastTrack -srcfolder $APP -ov -format UDZO FastTrack.dmg
79125 - name : upload_artefact
126+ uses : actions/upload-artifact@v4
127+ with :
128+ name : FastTrack.dmg
129+ path : ./build/bin/FastTrack.dmg
130+ - name : build_ft_cli
131+ run : |
132+ cd build/bin
133+ APP=FastTrack-Cli.app
134+ APP_BINARY=$APP/Contents/MacOS/FastTrack-Cli
135+ mv fasttrack-cli.app "$APP"
136+ macdeployqt "$APP" \
137+ -always-overwrite \
138+ -verbose=2
139+ find / -name "libutf8_validity.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
140+ find / -name "libgcc_s.1.1.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
141+ find / -name "libsharpyuv.0.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
142+ find / -name "libjxl_cms.0.11.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
143+ find / -name "libvtk*.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
144+ find / -name "libsqlite3*.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
145+ find / -name "libhpdf*.dylib" -exec cp {} $APP/Contents/Frameworks/ \; 2> >(tee /dev/stderr) || true
146+ cp -v /opt/homebrew/opt/little-cms2/lib/lib*.dylib $APP/Contents/Frameworks/ || true
147+ cp -v /opt/homebrew/opt/jpeg-xl/lib/lib*.dylib $APP/Contents/Frameworks/ || true
148+ find "$APP/Contents/Frameworks" -type f -name "*.dylib" -exec codesign --remove-signature {} \; 2>/dev/null || true
149+ find "$APP/Contents/Frameworks" -type f -name "*.dylib" -exec codesign --force --sign - {} \;
150+ python macdeployqtfix.py fasttrack-cli.app/contents/macos/fasttrack-cli ../../Qt/${{ env.QT_VERSION }}/
151+ hdiutil create -volname FastTrack-Cli -srcfolder $APP -ov -format UDZO FastTrack-Cli.dmg
152+ - name : upload_artefact_cli
80153 uses : actions/upload-artifact@v4
81154 with :
82155 name : FastTrack-Cli.dmg
83156 path : ./build/bin/FastTrack-Cli.dmg
157+
158+ test_bundle :
159+ runs-on : macos-latest
160+ needs : build_mac
161+ steps :
162+ - name : download artifact
163+ uses : actions/download-artifact@v4
164+ with :
165+ name : FastTrack-Cli.dmg
166+ path : FastTrack-Cli
167+
168+ - name : Run FastTrack executable
169+ run : |
170+ cd FastTrack-Cli
171+ hdiutil attach FastTrack-Cli.dmg -mountpoint /Volumes/FastTrackApp
172+ /Volumes/FastTrackApp/FastTrack-Cli.app/Contents/MacOS/FastTrack-Cli --help
0 commit comments