diff options
Diffstat (limited to '.github/workflows/mac_release.yml')
| -rw-r--r-- | .github/workflows/mac_release.yml | 159 |
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 |
