aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/mac_release.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/mac_release.yml')
-rw-r--r--.github/workflows/mac_release.yml159
1 files changed, 134 insertions, 25 deletions
diff --git a/.github/workflows/mac_release.yml b/.github/workflows/mac_release.yml
index 109b31b..3ba4f25 100644
--- a/.github/workflows/mac_release.yml
+++ b/.github/workflows/mac_release.yml
@@ -1,19 +1,31 @@
env:
QT_VERSION: '5.15.2'
TCL_VERSION: '8.6'
- SQLITE_VERSION: '3350400'
- SQLITE_RELEASE_YEAR: '2021'
+ SQLITE_VERSION: '3410200'
+ SQLITE_RELEASE_YEAR: '2023'
+ PYTHON_VERSION: '3.9'
+ ICU_VERSION: '72.1'
PORTABLE_DIR: ${{ github.workspace }}/output/portable/SQLiteStudio
+ INSTALLBUILDER_DIR: ../ib
+ INSTALLBUILDER_URL: https://releases.bitrock.com/installbuilder/installbuilder-enterprise-23.1.0-osx-installer.dmg
-name: MaxOSX release build
+name: MacOSX release build
on:
+ workflow_dispatch:
+ inputs:
+ use_ccache:
+ description: 'Use ccache (for workflow debugging only!)'
+ required: false
+ type: boolean
+ schedule:
+ - cron: '0 3 * * 1' # run at 3 AM UTC every Monday
repository_dispatch:
types: [mac_release]
jobs:
build:
- runs-on: macos-latest
+ runs-on: macos-11
steps:
# - name: Debug
@@ -24,27 +36,54 @@ jobs:
# ls -l /usr/local/opt/openssl/include/
# ls -l /usr/local/opt/expat/include
- - name: Cache Qt
- id: cache-qt
- uses: actions/cache@v1
- with:
- path: ${{ github.workspace }}/../Qt
- key: ${{ runner.os }}-Qt-${{ env.QT_VERSION }}-Mac-Cache
-
+ - name: Qt installation dir
+ id: qt-installation-dir
+ run: echo "DIR=$(readlink -f ${{ github.workspace }}/..)" >> $GITHUB_OUTPUT
+
- name: Install Qt
- uses: jurplel/install-qt-action@v2
+ uses: jurplel/install-qt-action@v3
with:
- cached: ${{ steps.cache-qt.outputs.cache-hit }}
+ cache: true
version: ${{ env.QT_VERSION }}
host: 'mac'
- dir: '${{ github.workspace }}/..'
- modules: 'qtscript'
-
+ dir: '${{ steps.qt-installation-dir.DIR }}'
+ aqtversion: '==3.0.*'
+ py7zrversion: '==0.20.*'
+ setup-python: 'false'
+ extra: '--external 7z'
+
+ - name: Install the InstalBuilder
+ shell: bash
+ run: |
+ curl -L ${{ env.INSTALLBUILDER_URL }} --output ib.dmg
+ hdiutil attach ib.dmg
+ /Volumes/InstallBuilder\ Enterprise/*.app/Contents/MacOS/installbuilder.sh --mode unattended --prefix ${{ env.INSTALLBUILDER_DIR }}
+ ${{ env.INSTALLBUILDER_DIR }}/bin/builder --version
+ echo "INSTALLER_SRC_PREFIX=$(pwd)" >> $GITHUB_ENV
+ echo "INSTALLER_BIN_PREFIX=/Volumes/SQLiteStudio" >> $GITHUB_ENV
+
+ - uses: actions/setup-python@v4
+ with:
+ python-version: ${{ env.PYTHON_VERSION }}
+ architecture: 'x64'
+
- name: Clone repo
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
with:
ref: ${{ github.event.client_payload.branch }}
+ - name: Prepare ccache
+ if: inputs.use_ccache || false
+ uses: hendrikmuhs/ccache-action@v1.2.8
+ with:
+ key: mac_release
+ max-size: "24M"
+
+ - name: Configure ccache
+ if: inputs.use_ccache || false
+ run: |
+ echo "PATH=/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" >> $GITHUB_ENV
+
- name: Install SQLite3
run: |
wget http://sqlite.org/$SQLITE_RELEASE_YEAR/sqlite-amalgamation-$SQLITE_VERSION.zip
@@ -68,39 +107,109 @@ jobs:
sudo cp *.h /usr/local/include/
echo "DYLD_LIBRARY_PATH=/usr/local/lib" >> $GITHUB_ENV
+ - name: Install extension dependencies
+ run: |
+ brew tap-new $USER/local-tap
+ brew extract --version=$ICU_VERSION icu4c $USER/local-tap
+ brew install icu4c@$ICU_VERSION
+ echo ICU_FLAGS="$(PKG_CONFIG_PATH="/usr/local/opt/icu4c@$ICU_VERSION/lib/pkgconfig" pkg-config --libs --cflags icu-uc icu-io)" \
+ >> $GITHUB_ENV
+
+ - name: Compile additional SQLite3 extensions
+ shell: bash
+ run: |
+ cd ..
+ mkdir ext
+ curl -L http://sqlite.org/$SQLITE_RELEASE_YEAR/sqlite-src-$SQLITE_VERSION.zip --output sqlite-src-$SQLITE_VERSION.zip
+ ls -l
+ unzip sqlite-src-$SQLITE_VERSION.zip
+ ls -l
+ cd sqlite-src-$SQLITE_VERSION/ext
+ ls -l
+ FLAGS="-ldl -Os -fpic -shared -I/usr/local/include -L/usr/local/lib -lsqlite3"
+ for f in compress sqlar; do
+ echo "gcc misc/$f.c -Imisc $FLAGS -lz -o ../../ext/$f.dylib"
+ gcc misc/$f.c -Imisc $FLAGS -lz -o ../../ext/$f.dylib
+ done
+ for f in csv decimal eval ieee754 percentile rot13 series uint uuid zorder; do
+ echo "gcc misc/$f.c -Imisc $FLAGS -o ../../ext/$f.dylib"
+ gcc misc/$f.c -Imisc $FLAGS -o ../../ext/$f.dylib
+ done
+ for f in icu; do
+ echo "gcc icu/$f.c -Iicu $ICU_FLAGS $FLAGS -o ../../ext/$f.dylib"
+ gcc icu/$f.c -Iicu $ICU_FLAGS $FLAGS -o ../../ext/$f.dylib
+ done
+ ls -l ../../ext/
+
+ - name: Install Tcl
+ run: |
+ brew install tcl-tk
+ echo "PATH=/usr/local/opt/tcl-tk/bin:$PATH" >> $GITHUB_ENV
+
- name: Prepare deps
run: |
mkdir ../lib ../include
cp /usr/local/lib/libsqlite3* ../lib
cp /usr/local/include/sqlite3* ../include
-
+
- name: Prepare output dir
run: mkdir output output/build output/build/Plugins
-
+
- name: Compile SQLiteStudio3
working-directory: output/build
run: |
- qmake CONFIG+=portable ../../SQLiteStudio3
+ qmake \
+ $([ ${{ inputs.use_ccache || false }} = false ] || echo "CONFIG+=ccache") \
+ CONFIG+=portable \
+ ../../SQLiteStudio3
make -j 2
-
+
- name: Compile Plugins
working-directory: output/build/Plugins
run: |
- qmake CONFIG+=portable ../../../Plugins
- make -j 2
-
+ qmake \
+ $([ ${{ inputs.use_ccache || false }} = false ] || echo "CONFIG+=ccache") \
+ CONFIG+=portable \
+ "INCLUDEPATH+=$pythonLocation/include/python$PYTHON_VERSION" "LIBS += -L$pythonLocation/lib" \
+ ../../../Plugins
+ make -j 1
+
+ - name: Copy SQLite extensions to output dir
+ shell: bash
+ run: |
+ cp -R ../ext output/SQLiteStudio/SQLiteStudio.app/Contents/extensions
+
- name: Build packages
working-directory: output/build
run: |
make pkg
-
+
- name: Determine SQLiteStudio version
working-directory: output/SQLiteStudio
run: |
echo "SQLITESTUDIO_VERSION=$(SQLiteStudio.app/Contents/MacOS/sqlitestudiocli -v | awk '{print $2}')" >> $GITHUB_ENV
+ - name: Create installer package
+ shell: bash
+ env:
+ IB_LICENSE: ${{ secrets.INSTALLER_LICENSE }}
+ run: |
+ echo "$IB_LICENSE" > lic.xml
+ hdiutil attach output/SQLiteStudio/sqlitestudio-${{ env.SQLITESTUDIO_VERSION }}.dmg
+ ${{ env.INSTALLBUILDER_DIR }}/bin/builder build SQLiteStudio-installer.xml \
+ --license lic.xml \
+ --setvars project.outputDirectory=$(pwd) \
+ --setvars project.version=${{ env.SQLITESTUDIO_VERSION }}
+ ls -l
+
- name: Upload package artifact
uses: actions/upload-artifact@v1
with:
name: sqlitestudio-${{ env.SQLITESTUDIO_VERSION }}.dmg
path: output/SQLiteStudio/sqlitestudio-${{ env.SQLITESTUDIO_VERSION }}.dmg
+
+ - name: Upload installer artifact
+ uses: actions/upload-artifact@v1
+ with:
+ name: SQLiteStudio-${{ env.SQLITESTUDIO_VERSION }}-osx-installer.dmg
+ path: SQLiteStudio-${{ env.SQLITESTUDIO_VERSION }}-osx-installer.dmg