Skip to content

Commit

Permalink
build script
Browse files Browse the repository at this point in the history
  • Loading branch information
mugiseyebrows committed Jul 17, 2024
1 parent e846ead commit ce6d984
Show file tree
Hide file tree
Showing 3 changed files with 493 additions and 56 deletions.
239 changes: 221 additions & 18 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,239 @@ jobs:
main:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
name: checkout
- name: main
- name: checkout
uses: actions/checkout@v4
- name: cache C:\mingw1120_64
uses: actions/cache@v4
with:
path: C:\mingw1120_64
key: mingw1120_64
- name: cache C:\Qt\6.7.1\mingw1120_64
uses: actions/cache@v4
with:
path: C:\Qt\6.7.1\mingw1120_64
key: qtbase671
- name: cache C:\qwt\6.3.0\mingw1120_64
uses: actions/cache@v4
with:
path: C:\qwt\6.3.0\mingw1120_64
key: qwt63
- name: mingw1120
shell: cmd
run: |
set PATH=C:\Program Files\7-Zip;C:\Program Files\Meson;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;C:\Program Files (x86)\Android\android-sdk\cmake\3.22.1\bin;C:\Program Files\CMake\bin;C:\postgresql-14\bin;C:\qt\6.7.1\mingw1120_64\bin;C:\mysql-8.2.0-winx64\lib;C:\mysql-8.2.0-winx64\bin;C:\qwt\6.3.0\mingw1120_64\lib;C:\Program Files\Git\cmd;C:\mingw1120_64\bin;C:\Qt\6.7.1\mingw1120_64\bin;%PATH%
if exist "C:\Program Files\Git\usr\bin\patch.exe" set PATCH=C:\Program Files\Git\usr\bin\patch.exe
if not defined PATCH (
echo PATCH not found
exit /b
)
if exist C:\mingw1120_64\bin\gcc.exe goto mingw1120_end
rmdir /s /q C:\mingw64 || echo 1 > NUL
pushd %GITHUB_WORKSPACE%
if not exist x86_64-11.2.0-release-posix-seh-rt_v9-rev3.7z curl -L -o x86_64-11.2.0-release-posix-seh-rt_v9-rev3.7z https://github.com/cristianadam/mingw-builds/releases/download/v11.2.0-rev3/x86_64-11.2.0-release-posix-seh-rt_v9-rev3.7z
7z x -y -oC:\ x86_64-11.2.0-release-posix-seh-rt_v9-rev3.7z
move C:\mingw64 C:\mingw1120_64
popd
:mingw1120_end
- name: qtbase671
shell: cmd
run: |
set PATH=C:\Program Files\PostgreSQL\14\bin;C:\Qwt-6.2.0\lib;C:\mysql-8.2.0-winx64\bin;C:\mysql-8.2.0-winx64\lib;C:\Miniconda3;C:\Miniconda3\Scripts;%USERPROFILE%\Miniconda3;%USERPROFILE%\Miniconda3\Scripts;C:\Qt\5.15.2\mingw81_64\bin;C:\Qt\Tools\mingw810_64\bin;%PATH%
where aqt || pip install aqtinstall
if not exist "C:\Qt\5.15.2\mingw81_64\bin\qmake.exe" aqt install-qt windows desktop 5.15.2 win64_mingw81 -O C:\Qt
if not exist "C:\Qt\Tools\mingw810_64\bin\gcc.exe" aqt install-tool windows desktop tools_mingw qt.tools.win64_mingw810 -O C:\Qt
where pyfind || pip install mugicli
where mugideploy || pip install mugideploy
if not exist "C:\Qt\5.15.2\mingw81_64\plugins\sqldrivers\qsqlmysql.dll" call install-qsqlmysql
if not exist "C:\Qwt-6.2.0\lib\qwt.dll" call install-qwt
if not exist "C:\mysql-8.2.0-winx64\bin\mysql.exe" call install-mysql
- name: build
set PATH=C:\Program Files\7-Zip;C:\Program Files\Meson;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;C:\Program Files (x86)\Android\android-sdk\cmake\3.22.1\bin;C:\Program Files\CMake\bin;C:\postgresql-14\bin;C:\qt\6.7.1\mingw1120_64\bin;C:\mysql-8.2.0-winx64\lib;C:\mysql-8.2.0-winx64\bin;C:\qwt\6.3.0\mingw1120_64\lib;C:\Program Files\Git\cmd;C:\mingw1120_64\bin;C:\Qt\6.7.1\mingw1120_64\bin;%PATH%
if exist "C:\Program Files\Git\usr\bin\patch.exe" set PATCH=C:\Program Files\Git\usr\bin\patch.exe
if not defined PATCH (
echo PATCH not found
exit /b
)
if exist C:\Qt\6.7.1\mingw1120_64\bin\qmake.exe goto qtbase671_end
move /y "C:\Program Files\PostgreSQL" "C:\Program Files\PostgreSQL_" || echo 1 > NUL
move /y "C:\Program Files\MySQL" "C:\Program Files\MySQL_" || echo 1 > NUL
move /y "C:\Program Files\OpenSSL" "C:\Program Files\OpenSSL_" || echo 1 > NUL
move /y C:\Strawberry C:\Strawberry_ || echo 1 > NUL
move /y C:\tools\php C:\tools\php_ || echo 1 > NUL
pushd %GITHUB_WORKSPACE%
if not exist qtbase-everywhere-src-6.7.1.zip curl -L -o qtbase-everywhere-src-6.7.1.zip https://download.qt.io/official_releases/qt/6.7/6.7.1/submodules/qtbase-everywhere-src-6.7.1.zip
if not exist qtbase-everywhere-src-6.7.1 7z x -y qtbase-everywhere-src-6.7.1.zip
pushd qtbase-everywhere-src-6.7.1
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=C:/Qt/6.7.1/mingw1120_64 -DQT_QMAKE_TARGET_MKSPEC=win32-g++ -DQT_BUILD_TESTS=FALSE -DQT_BUILD_EXAMPLES=FALSE -DFEATURE_system_zlib=OFF .
ninja
ninja install
copy /y "C:\mingw1120_64\bin\libstdc++-6.dll" C:\Qt\6.7.1\mingw1120_64\bin
copy /y C:\mingw1120_64\bin\libgcc_s_seh-1.dll C:\Qt\6.7.1\mingw1120_64\bin
copy /y C:\mingw1120_64\bin\libwinpthread-1.dll C:\Qt\6.7.1\mingw1120_64\bin
popd
popd
:qtbase671_end
- name: qtsvg671
shell: cmd
run: |
set PATH=C:\Program Files\7-Zip;C:\Program Files\Meson;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;C:\Program Files (x86)\Android\android-sdk\cmake\3.22.1\bin;C:\Program Files\CMake\bin;C:\postgresql-14\bin;C:\qt\6.7.1\mingw1120_64\bin;C:\mysql-8.2.0-winx64\lib;C:\mysql-8.2.0-winx64\bin;C:\qwt\6.3.0\mingw1120_64\lib;C:\Program Files\Git\cmd;C:\mingw1120_64\bin;C:\Qt\6.7.1\mingw1120_64\bin;%PATH%
if exist "C:\Program Files\Git\usr\bin\patch.exe" set PATCH=C:\Program Files\Git\usr\bin\patch.exe
if not defined PATCH (
echo PATCH not found
exit /b
)
if exist C:\qt\6.7.1\mingw1120_64\bin\Qt6Svg.dll goto qtsvg671_end
if not exist qtsvg-everywhere-src-6.7.1.zip curl -L -o qtsvg-everywhere-src-6.7.1.zip https://download.qt.io/official_releases/qt/6.7/6.7.1/submodules/qtsvg-everywhere-src-6.7.1.zip
if not exist qtsvg-everywhere-src-6.7.1 7z x -y qtsvg-everywhere-src-6.7.1.zip
pushd qtsvg-everywhere-src-6.7.1
if not exist "build" mkdir "build"
pushd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="C:\Qt\6.7.1\mingw1120_64" -DCMAKE_TOOLCHAIN_FILE=C:\qt\6.7.1\mingw1120_64\lib\cmake\Qt6\qt.toolchain.cmake ..
cmake --build .
cmake --install .
popd
popd
:qtsvg671_end
- name: qwt630
shell: cmd
run: |
set PATH=C:\Program Files\7-Zip;C:\Program Files\Meson;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;C:\Program Files (x86)\Android\android-sdk\cmake\3.22.1\bin;C:\Program Files\CMake\bin;C:\postgresql-14\bin;C:\qt\6.7.1\mingw1120_64\bin;C:\mysql-8.2.0-winx64\lib;C:\mysql-8.2.0-winx64\bin;C:\qwt\6.3.0\mingw1120_64\lib;C:\Program Files\Git\cmd;C:\mingw1120_64\bin;C:\Qt\6.7.1\mingw1120_64\bin;%PATH%
if exist "C:\Program Files\Git\usr\bin\patch.exe" set PATCH=C:\Program Files\Git\usr\bin\patch.exe
if not defined PATCH (
echo PATCH not found
exit /b
)
if exist C:\qwt\6.3.0\mingw1120_64\lib\qwt.dll goto qwt630_end
if not exist qwt (
git clone https://git.code.sf.net/p/qwt/git qwt
pushd qwt
git checkout v6.3.0
popd
)
if not exist 0001-qwt-mingw1120_64.patch curl -L -o 0001-qwt-mingw1120_64.patch https://gist.githubusercontent.com/mugiseyebrows/b9521434ce1b8aa798615a7b0541db58/raw/9464118e04a4cb82e522a0575f2581deff8f94c6/0001-qwt-mingw1120_64.patch
if not exist 0002-qwt-no-examples.patch curl -L -o 0002-qwt-no-examples.patch https://gist.githubusercontent.com/mugiseyebrows/a04100f99b8f1f8c6815c3903aefad96/raw/a3b9e3087d0889a882f6129a3e07d11c06d1101f/0002-qwt-no-examples.patch
if not exist 0003-qwt-release.patch curl -L -o 0003-qwt-release.patch https://gist.githubusercontent.com/mugiseyebrows/885a600fd06902254e224ba757446e25/raw/81ea4ae58764a511c60cdaeb81dbc9e9524220d4/0003-qwt-release.patch
pushd qwt
"%PATCH%" -N -i ..\0001-qwt-mingw1120_64.patch
"%PATCH%" -N -i ..\0002-qwt-no-examples.patch
"%PATCH%" -N -i ..\0003-qwt-release.patch
qmake
mingw32-make -j4
mingw32-make install
popd
:qwt630_end
- name: mysql820
shell: cmd
run: |
set PATH=C:\Program Files\7-Zip;C:\Program Files\Meson;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;C:\Program Files (x86)\Android\android-sdk\cmake\3.22.1\bin;C:\Program Files\CMake\bin;C:\postgresql-14\bin;C:\qt\6.7.1\mingw1120_64\bin;C:\mysql-8.2.0-winx64\lib;C:\mysql-8.2.0-winx64\bin;C:\qwt\6.3.0\mingw1120_64\lib;C:\Program Files\Git\cmd;C:\mingw1120_64\bin;C:\Qt\6.7.1\mingw1120_64\bin;%PATH%
if exist "C:\Program Files\Git\usr\bin\patch.exe" set PATCH=C:\Program Files\Git\usr\bin\patch.exe
if not defined PATCH (
echo PATCH not found
exit /b
)
if exist C:\qt\6.7.1\mingw1120_64\plugins\sqldrivers\qsqlmysql.dll goto mysql820_end
if exist C:\mysql-8.2.0-winx64\bin\mysql.exe goto mysql820_end
pushd %GITHUB_WORKSPACE%
if not exist mysql-8.2.0-winx64.zip curl -L -o mysql-8.2.0-winx64.zip https://cdn.mysql.com/Downloads/MySQL-8.2/mysql-8.2.0-winx64.zip
7z x -y -oC:\ mysql-8.2.0-winx64.zip
popd
:mysql820_end
- name: qsqlmysql671
shell: cmd
run: |
set PATH=C:\Program Files\7-Zip;C:\Program Files\Meson;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;C:\Program Files (x86)\Android\android-sdk\cmake\3.22.1\bin;C:\Program Files\CMake\bin;C:\postgresql-14\bin;C:\qt\6.7.1\mingw1120_64\bin;C:\mysql-8.2.0-winx64\lib;C:\mysql-8.2.0-winx64\bin;C:\qwt\6.3.0\mingw1120_64\lib;C:\Program Files\Git\cmd;C:\mingw1120_64\bin;C:\Qt\6.7.1\mingw1120_64\bin;%PATH%
if exist "C:\Program Files\Git\usr\bin\patch.exe" set PATCH=C:\Program Files\Git\usr\bin\patch.exe
if not defined PATCH (
echo PATCH not found
exit /b
)
if exist C:\qt\6.7.1\mingw1120_64\plugins\sqldrivers\qsqlmysql.dll goto qsqlmysql671_end
if not exist "build-qsqlmysql" mkdir "build-qsqlmysql"
if not exist qtbase-everywhere-src-6.7.1.zip curl -L -o qtbase-everywhere-src-6.7.1.zip https://download.qt.io/official_releases/qt/6.7/6.7.1/submodules/qtbase-everywhere-src-6.7.1.zip
if not exist qtbase-everywhere-src-6.7.1 7z x -y qtbase-everywhere-src-6.7.1.zip
pushd build-qsqlmysql
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="C:\Qt\6.7.1\mingw1120_64" -DCMAKE_TOOLCHAIN_FILE=C:\qt\6.7.1\mingw1120_64\lib\cmake\Qt6\qt.toolchain.cmake -DMySQL_INCLUDE_DIR="C:\mysql-8.2.0-winx64\include" -DMySQL_LIBRARY="C:\mysql-8.2.0-winx64\lib\libmysql.lib" ..\qtbase-everywhere-src-6.7.1\src\plugins\sqldrivers
cmake --build .
cmake --install .
copy /y C:\mysql-8.2.0-winx64\lib\libmysql.dll C:\Qt\6.7.1\mingw1120_64\bin
copy /y C:\mysql-8.2.0-winx64\bin\libssl-3-x64.dll C:\Qt\6.7.1\mingw1120_64\bin
copy /y C:\mysql-8.2.0-winx64\bin\libcrypto-3-x64.dll C:\Qt\6.7.1\mingw1120_64\bin
popd
:qsqlmysql671_end
- name: psql1412
shell: cmd
run: |
set PATH=C:\Program Files\7-Zip;C:\Program Files\Meson;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;C:\Program Files (x86)\Android\android-sdk\cmake\3.22.1\bin;C:\Program Files\CMake\bin;C:\postgresql-14\bin;C:\qt\6.7.1\mingw1120_64\bin;C:\mysql-8.2.0-winx64\lib;C:\mysql-8.2.0-winx64\bin;C:\qwt\6.3.0\mingw1120_64\lib;C:\Program Files\Git\cmd;C:\mingw1120_64\bin;C:\Qt\6.7.1\mingw1120_64\bin;%PATH%
if exist "C:\Program Files\Git\usr\bin\patch.exe" set PATCH=C:\Program Files\Git\usr\bin\patch.exe
if not defined PATCH (
echo PATCH not found
exit /b
)
if exist C:\postgresql-14\bin\psql.exe goto psql1412_end
if exist C:\qt\6.7.1\mingw1120_64\plugins\sqldrivers\qsqlpsql.dll goto psql1412_end
pushd %GITHUB_WORKSPACE%
if not exist postgresql-14.12-2-windows-x64-binaries.zip curl -L -o postgresql-14.12-2-windows-x64-binaries.zip https://get.enterprisedb.com/postgresql/postgresql-14.12-2-windows-x64-binaries.zip
7z x -y -oC:\ postgresql-14.12-2-windows-x64-binaries.zip
move /y C:\pgsql C:\postgresql-14
popd
:psql1412_end
- name: qsqlpsql671
shell: cmd
run: |
set PATH=C:\Program Files\7-Zip;C:\Program Files\Meson;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;C:\Program Files (x86)\Android\android-sdk\cmake\3.22.1\bin;C:\Program Files\CMake\bin;C:\postgresql-14\bin;C:\qt\6.7.1\mingw1120_64\bin;C:\mysql-8.2.0-winx64\lib;C:\mysql-8.2.0-winx64\bin;C:\qwt\6.3.0\mingw1120_64\lib;C:\Program Files\Git\cmd;C:\mingw1120_64\bin;C:\Qt\6.7.1\mingw1120_64\bin;%PATH%
if exist "C:\Program Files\Git\usr\bin\patch.exe" set PATCH=C:\Program Files\Git\usr\bin\patch.exe
if not defined PATCH (
echo PATCH not found
exit /b
)
if exist C:\qt\6.7.1\mingw1120_64\plugins\sqldrivers\qsqlpsql.dll goto qsqlpsql671_end
set PostgreSQL_ROOT=C:\postgresql-14
pushd %GITHUB_WORKSPACE%
if not exist "build-qsqlpsql" mkdir "build-qsqlpsql"
if not exist qtbase-everywhere-src-6.7.1.zip curl -L -o qtbase-everywhere-src-6.7.1.zip https://download.qt.io/official_releases/qt/6.7/6.7.1/submodules/qtbase-everywhere-src-6.7.1.zip
if not exist qtbase-everywhere-src-6.7.1 7z x -y qtbase-everywhere-src-6.7.1.zip
pushd build-qsqlpsql
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="C:\Qt\6.7.1\mingw1120_64" -DCMAKE_TOOLCHAIN_FILE=C:\qt\6.7.1\mingw1120_64\lib\cmake\Qt6\qt.toolchain.cmake ..\qtbase-everywhere-src-6.7.1\src\plugins\sqldrivers
cmake --build .
cmake --install .
copy /y C:\postgresql-14\bin\libpq.dll C:\Qt\6.7.1\mingw1120_64\bin
copy /y C:\postgresql-14\bin\libssl-1_1-x64.dll C:\Qt\6.7.1\mingw1120_64\bin
copy /y C:\postgresql-14\bin\libcrypto-1_1-x64.dll C:\Qt\6.7.1\mingw1120_64\bin
copy /y C:\postgresql-14\bin\libintl-9.dll C:\Qt\6.7.1\mingw1120_64\bin
copy /y C:\postgresql-14\bin\libiconv-2.dll C:\Qt\6.7.1\mingw1120_64\bin
popd
popd
:qsqlpsql671_end
- name: qtactiveqt671
shell: cmd
run: |
set PATH=C:\Program Files\7-Zip;C:\Program Files\Meson;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;C:\Program Files (x86)\Android\android-sdk\cmake\3.22.1\bin;C:\Program Files\CMake\bin;C:\postgresql-14\bin;C:\qt\6.7.1\mingw1120_64\bin;C:\mysql-8.2.0-winx64\lib;C:\mysql-8.2.0-winx64\bin;C:\qwt\6.3.0\mingw1120_64\lib;C:\Program Files\Git\cmd;C:\mingw1120_64\bin;C:\Qt\6.7.1\mingw1120_64\bin;%PATH%
if exist "C:\Program Files\Git\usr\bin\patch.exe" set PATCH=C:\Program Files\Git\usr\bin\patch.exe
if not defined PATCH (
echo PATCH not found
exit /b
)
if exist C:\qt\6.7.1\mingw1120_64\lib\libQt6AxContainer.a goto qtactiveqt671_end
if not exist qtactiveqt-everywhere-src-6.7.1.zip curl -L -o qtactiveqt-everywhere-src-6.7.1.zip https://download.qt.io/official_releases/qt/6.7/6.7.1/submodules/qtactiveqt-everywhere-src-6.7.1.zip
if not exist qtactiveqt-everywhere-src-6.7.1 7z x -y qtactiveqt-everywhere-src-6.7.1.zip
pushd qtactiveqt-everywhere-src-6.7.1
if not exist "build" mkdir "build"
pushd build
cmake -G "Ninja Multi-Config" -DCMAKE_CONFIGURATION_TYPES="Release;Debug" -DCMAKE_INSTALL_PREFIX="C:\Qt\6.7.1\mingw1120_64" -DCMAKE_TOOLCHAIN_FILE=C:\qt\6.7.1\mingw1120_64\lib\cmake\Qt6\qt.toolchain.cmake ..
cmake --build .
ninja install
popd
popd
:qtactiveqt671_end
- name: main
shell: cmd
run: |
set PATH=C:\Program Files\PostgreSQL\14\bin;C:\Qwt-6.2.0\lib;C:\mysql-8.2.0-winx64\bin;C:\mysql-8.2.0-winx64\lib;C:\Miniconda3;C:\Miniconda3\Scripts;%USERPROFILE%\Miniconda3;%USERPROFILE%\Miniconda3\Scripts;C:\Qt\5.15.2\mingw81_64\bin;C:\Qt\Tools\mingw810_64\bin;%PATH%
echo building mugi-query
mugideploy version
set PATH=C:\Program Files\7-Zip;C:\Program Files\Meson;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;C:\Program Files (x86)\Android\android-sdk\cmake\3.22.1\bin;C:\Program Files\CMake\bin;C:\postgresql-14\bin;C:\qt\6.7.1\mingw1120_64\bin;C:\mysql-8.2.0-winx64\lib;C:\mysql-8.2.0-winx64\bin;C:\qwt\6.3.0\mingw1120_64\lib;C:\Program Files\Git\cmd;C:\mingw1120_64\bin;C:\Qt\6.7.1\mingw1120_64\bin;%PATH%
if exist "C:\Program Files\Git\usr\bin\patch.exe" set PATCH=C:\Program Files\Git\usr\bin\patch.exe
if not defined PATCH (
echo PATCH not found
exit /b
)
qmake
mingw32-make release -j4
mugideploy collect --app mugi-query --git-version --bin release\mugi-query.exe --plugins odbc mysql sqlite psql --zip
mugideploy collect --app mugi-query --bin release\mugi-query.exe --plugins odbc mysql sqlite psql --zip
- name: upload
uses: actions/upload-artifact@v4
with:
name: mugi-query-win64
path: mugi-query-*-win64
- name: release
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: mugi-query-*-win64.zip
Loading

0 comments on commit ce6d984

Please sign in to comment.