diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..8d0fc6e --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,27 @@ +before-script: + - apt-get update -qq && apt-get install -y -qq wine qtbase5-dev qtquickcontrols2-5-dev libgit2-dev qtbase5-dev libqt5concurrent5 g++-mingw-w64-i686 gcc-mingw-w64-i686 make + +cache: + paths: + - Qt/ + - .wine + - libgit2-0.27.2 + - mingw32 + +build: + stage: build + script: make -f CI.mk build + artifacts: + - paths: build/GitAddonsManager + - name: Linux_x64 + +winbuild: + stage: build + script: make -f CI.mk winbuild + +windeploy: + stage: deploy + script: make -f CI.mk windeploy + artifacts: + paths: build_win32/deploy/* + name: Win32 diff --git a/CI.mk b/CI.mk new file mode 100644 index 0000000..3289876 --- /dev/null +++ b/CI.mk @@ -0,0 +1,66 @@ +# Intended for gitlab CI + +pwd:=$(shell pwd) +wineenv=$(WINEPREFIX) $(WINEPATH) WINEDEBUG=-all +winepath=$(wineenv) winepath +wine=$(wineenv) wine +WINEPREFIX:=WINEPREFIX="$(pwd)/wine" +WINEPATH:=WINEPATH='C:\Program Files (x86)\CMake\bin;$(shell $(winepath) -w "$(pwd)/mingw32/bin");$(shell $(winepath) -w "$(pwd)/git/bin")' +qmake_opts=QTDIR="Z:/$(pwd)/Qt/5.11.1/mingw53_32/bin/" "QMAKE_INCDIR+=Z:/$(pwd)/libgit2-0.27.2/include" "QMAKE_LIBDIR+=Z:/$(pwd)/libgit2-0.27.2/build/" + +build: + qmake-qt5 . -o build/Makefile + make -C build + +cmake-3.12.0-rc3-win32-x86.msi: + wget https://cmake.org/files/v3.12/cmake-3.12.0-rc3-win32-x86.msi + +wine/drive_c/Program\ Files\ (x86)/CMake: cmake-3.12.0-rc3-win32-x86.msi + $(wine) msiexec /quiet /i cmake-3.12.0-rc3-win32-x86.msi + +qt-opensource-windows-x86-5.11.1.exe: + wget http://download.qt.io/official_releases/qt/5.11/5.11.1/qt-opensource-windows-x86-5.11.1.exe + +Qt: qt-opensource-windows-x86-5.11.1.exe + $(wine) qt-opensource-windows-x86-5.11.1.exe --script install-qt.qs "PATH=$$($(winepath) -w "$$PWD/Qt")" +mingw.7z: + wget https://vorboss.dl.sourceforge.net/project/mingw-w64/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-posix/dwarf/i686-8.1.0-release-posix-dwarf-rt_v6-rev0.7z -O mingw.7z + +mingw32/bin/gcc.exe: mingw.7z + 7z x mingw.7z + touch -c mingw32/bin/gcc.exe + +libgit2-v0.27.2.tar.gz: + wget https://github.com/libgit2/libgit2/archive/v0.27.2.tar.gz -O libgit2-v0.27.2.tar.gz + +libgit2-0.27.2/CMakeLists.txt: libgit2-v0.27.2.tar.gz + tar -xf libgit2-v0.27.2.tar.gz + touch -c libgit2-0.27.2/CMakeLists.txt + +libgit2-0.27.2/build/libgit2.dll: wine/drive_c/Program\ Files\ (x86)/CMake libgit2-0.27.2/CMakeLists.txt mingw32/bin/gcc.exe + mkdir -p libgit2-0.27.2/build + cd libgit2-0.27.2/build && $(wine) cmake .. -DCMAKE_BINARY_DIR=libgit2-0.27.2/build -G"MinGW Makefiles" -DBUILD_CLAR=OFF + $(wine) mingw32-make -C libgit2-0.27.2/build -j $(shell nproc) + +PortableGit-2.18.0-32-bit.7z.exe: + wget https://github.com/git-for-windows/git/releases/download/v2.18.0.windows.1/PortableGit-2.18.0-32-bit.7z.exe + +git/bin/git.exe: PortableGit-2.18.0-32-bit.7z.exe + 7z -ogit x PortableGit-2.18.0-32-bit.7z.exe + touch -c git/bin/git.exe + +build_win32/GitAddonsManager.exe: Qt libgit2-0.27.2/build/libgit2.dll mingw32/bin/gcc.exe git/bin/git.exe + mkdir -p build_win32 && cd build_win32 && $(wine) ../Qt/5.11.1/mingw53_32/bin/qmake.exe -spec win32-g++ ../GitAddonsManager.pro $(qmake_opts) + $(wine) mingw32-make -C build_win32 + +winbuild: build_win32/GitAddonsManager.exe + +build_win32/release/GitAddonsManager.exe: winbuild + +windeploy: build_win32/release/GitAddonsManager.exe libgit2-0.27.2/build/libgit2.dll + mkdir -p build_win32/deploy/ + cp libgit2-0.27.2/build/libgit2.dll -f build_win32/deploy/libgit2.dll + cp build_win32/release/GitAddonsManager.exe -f build_win32/deploy/ + mkdir -p tmpqmls && cp -f *.qml tmpqmls/ + $(wine) Qt/5.11.1/mingw53_32/bin/windeployqt.exe --qmldir tmpqmls build_win32/deploy/GitAddonsManager.exe + rm -fr tmpqmls diff --git a/install-qt.qs b/install-qt.qs new file mode 100644 index 0000000..53fe004 --- /dev/null +++ b/install-qt.qs @@ -0,0 +1,57 @@ +function Controller() { + gui.setSilent(true) + installer.autoRejectMessageBoxes(); + installer.installationFinished.connect(function() { + next() + }) + gui.pageWidgetByObjectName("WelcomePage").completeChanged.connect(next) +} + +function next() { + gui.clickButton(buttons.NextButton) +} + +Controller.prototype.CredentialsPageCallback = function() { + gui.clickButton(buttons.NextButton); +} + +Controller.prototype.IntroductionPageCallback = function() { + gui.clickButton(buttons.NextButton); +} + +Controller.prototype.TargetDirectoryPageCallback = function() +{ + gui.currentPageWidget().TargetDirectoryLineEdit.setText(installer.value("PATH")); + gui.clickButton(buttons.NextButton); +} + +Controller.prototype.ComponentSelectionPageCallback = function() { + var widget = gui.currentPageWidget(); + + widget.deselectAll(); + widget.selectComponent("qt.qt5.5111.win32_mingw53"); + + gui.clickButton(buttons.NextButton); +} + +Controller.prototype.LicenseAgreementPageCallback = function() { + gui.currentPageWidget().AcceptLicenseRadioButton.setChecked(true); + gui.clickButton(buttons.NextButton); +} + +Controller.prototype.StartMenuDirectoryPageCallback = function() { + gui.clickButton(buttons.NextButton); +} + +Controller.prototype.ReadyForInstallationPageCallback = function() +{ + gui.clickButton(buttons.NextButton); +} + +Controller.prototype.FinishedPageCallback = function() { +var checkBoxForm = gui.currentPageWidget().LaunchQtCreatorCheckBoxForm +if (checkBoxForm && checkBoxForm.launchQtCreatorCheckBox) { + checkBoxForm.launchQtCreatorCheckBox.checked = false; +} + gui.clickButton(buttons.FinishButton); +}