From 660d3a494ff07617510579203642deb2d12358b8 Mon Sep 17 00:00:00 2001 From: "Juergen E. Fischer" Date: Tue, 30 Apr 2024 09:23:49 +0200 Subject: [PATCH 1/4] add osgeo4w workflow --- .github/workflows/osgeo4w.yml | 118 ++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 .github/workflows/osgeo4w.yml diff --git a/.github/workflows/osgeo4w.yml b/.github/workflows/osgeo4w.yml new file mode 100644 index 000000000000..deccc879a0c6 --- /dev/null +++ b/.github/workflows/osgeo4w.yml @@ -0,0 +1,118 @@ +name: OSGeo4W Windows Build + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +on: + push: + branches: + - master + - release-** + - queued_ltr_backports + paths: + - 'src/**' + - 'external/**' + - 'python/**' + - 'tests/**' + - 'ms-windows/**' + - 'CMakeLists.txt' + - '.github/workflows/osgeo4w.yml' + pull_request: + workflow_dispatch: + +permissions: + contents: read + +env: + REPO: ${{ github.server_url }}/${{ github.repository }} + +jobs: + osgeo4w-packages: + runs-on: ubuntu-latest + + outputs: + matrix: ${{ steps.osgeo4w-packages.outputs.matrix }} + + steps: + - name: Determine package names + id: osgeo4w-packages + run: | + RELBRANCH=$(git ls-remote --heads $REPO "refs/heads/release-*_*" | sed -e '/\^{}$/d' -ne 's#^.*refs/heads/release-#release-#p' | sort -V | tail -1) + LTRBRANCH=$(git ls-remote --tags $REPO | sed -e '/\^{}$/d' -ne 's#^.*refs/tags/ltr-#release-#p' | sort -V | fgrep -vx $RELBRANCH | tail -1) + + if [ -n "$GITHUB_BASE_REF" ]; then + branch=$GITHUB_BASE_REF + else + branch=${GITHUB_REF##*/} + fi + + case "$branch" in + $LTRBRANCH|queued_ltr_backports) + p=qgis-ltr-dev + ;; + $RELBRANCH) + p=qgis-rel-dev + ;; + master) + p="qgis-dev qgis-qt6-dev" + ;; + *) + echo "Could not determine package name" + exit 1 + ;; + esac + + echo "matrix={\"pkg\":[\"${p// /\",\"}\"]}">>$GITHUB_OUTPUT + + osgeo4w-build: + name: OSGeo4W Windows Build + needs: osgeo4w-packages + runs-on: windows-latest + env: + O4W_REPO: jef-n/OSGeo4W + + strategy: + matrix: ${{ fromJson(needs.osgeo4w-packages.outputs.matrix) }} + + steps: + - name: Restore build cache + uses: actions/cache/restore@v4 + with: + path: ccache + key: build-ccache-osgeo4w-${{ matrix.pkg }}-${{ github.event.pull_request.base.ref || github.ref_name }} + restore-keys: | + build-ccache-osgeo4w-${{ matrix.pkg }} + + - name: Build QGIS + shell: cmd + env: + PKG: ${{ matrix.pkg }} + GITHUB_EVENT_NUMBER: ${{ github.event.number }} + REF: ${{ github.ref }} + PKGDESC: "QGIS build of ${{ github.ref }}" + OSGEO4W_BUILD_RDEPS: 0 + PATH: C:\WINDOWS\system32;C:\Windows + CCACHE_DIR: ${{ github.workspace }}/ccache + SITE: github.com + run: | + curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/%O4W_REPO%/master/bootstrap.cmd>bootstrap.cmd + curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/%O4W_REPO%/master/bootstrap.sh>bootstrap.sh + + set O4W_GIT_REPO=%GITHUB_SERVER_URL%/%O4W_REPO% + call bootstrap.cmd %PKG% + + %GITHUB_WORKSPACE%\scripts\ccache -sv + + - uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.pkg }} + path: x86_64/ + retention-days: 1 + + - name: Save build cache for push only + uses: actions/cache/save@v4 + if: ${{ github.event_name == 'push' }} + with: + path: ccache + key: build-ccache-osgeo4w-${{ matrix.pkg }}-${{ github.ref_name }}-${{ github.run_id }} From 421afe64ce0366bae43c53f08991379198031892 Mon Sep 17 00:00:00 2001 From: "Juergen E. Fischer" Date: Tue, 14 May 2024 01:24:26 +0200 Subject: [PATCH 2/4] apply osgeo4w patches --- .ci/azure-pipelines/azure-pipelines.yml | 221 ------- .gitignore | 14 - CMakeLists.txt | 24 +- external/mdal/frmts/mdal_h2i.cpp | 2 +- external/mdal/mdal_utils.cpp | 14 +- external/qspatialite/CMakeLists.txt | 14 +- external/qspatialite/qsql_spatialite.cpp | 2 +- external/untwine/api/QgisUntwine_win.cpp | 2 +- .../Installer-Files/InstallHeaderImage.bmp | Bin 9354 -> 0 bytes ms-windows/Installer-Files/Install_QGIS.ico | Bin 9262 -> 0 bytes ms-windows/Installer-Files/LICENSE.txt | 28 - ms-windows/Installer-Files/QGIS-WebSite.URL | 2 - ms-windows/Installer-Files/QGIS.ico | Bin 17542 -> 0 bytes ms-windows/Installer-Files/QGIS_Web.ico | Bin 17542 -> 0 bytes .../Installer-Files/UnInstallHeaderImage.bmp | Bin 9354 -> 0 bytes ms-windows/Installer-Files/Uninstall_QGIS.ico | Bin 9662 -> 0 bytes .../Installer-Files/WelcomeFinishPage.bmp | Bin 154542 -> 0 bytes .../Installer-Files/WelcomeFinishPage_old.bmp | Bin 154542 -> 0 bytes ms-windows/Installer-Files/sidelogomaster.svg | 1 - .../Installer-Files/sidelogomaster.xcf.bz2 | Bin 199014 -> 0 bytes ms-windows/QGIS-Installer.nsi | 569 ------------------ ms-windows/osgeo4w/configonly.bat | 46 -- ms-windows/osgeo4w/creatensis.pl | 567 ----------------- ms-windows/osgeo4w/designer.bat.tmpl | 9 - ms-windows/osgeo4w/httpd.conf.tmpl | 28 - ms-windows/osgeo4w/msvc-env.bat | 91 --- ms-windows/osgeo4w/ninja/ninja.bat | 7 - ms-windows/osgeo4w/ninja/ninja.sln | 22 - ms-windows/osgeo4w/ninja/ninja.vcxproj | 108 ---- ms-windows/osgeo4w/package-nightly.cmd | 325 ---------- ms-windows/osgeo4w/package.cmd | 482 --------------- ms-windows/osgeo4w/postinstall-common.bat | 5 - ms-windows/osgeo4w/postinstall-desktop.bat | 25 - ms-windows/osgeo4w/postinstall-dev.bat | 55 -- .../postinstall-grass-plugin-common.bat | 2 - ms-windows/osgeo4w/postinstall-grass.bat | 13 - ms-windows/osgeo4w/postinstall-server.bat | 5 - ms-windows/osgeo4w/preremove-desktop.bat | 15 - ms-windows/osgeo4w/preremove-dev.bat | 30 - .../osgeo4w/preremove-grass-plugin-common.bat | 1 - ms-windows/osgeo4w/preremove-grass.bat | 10 - ms-windows/osgeo4w/preremove-server.bat | 1 - ms-windows/osgeo4w/process.bat.tmpl | 14 - ms-windows/osgeo4w/python.bat.tmpl | 14 - ms-windows/osgeo4w/qgis-grass.bat.tmpl | 15 - ms-windows/osgeo4w/qgis.bat.tmpl | 13 - ms-windows/osgeo4w/qgis.reg.tmpl | 48 -- ms-windows/osgeo4w/qgis.vars | 30 - ms-windows/osgeo4w/runasadmin.ps1 | 4 - ms-windows/plugins.nsh | 14 - ms-windows/python_plugins.nsh | 14 - ms-windows/quickpackage.sh | 40 -- ms-windows/x64.nsh | 54 -- python/PyQt6/gui/gui_auto.sip | 2 + python/gui/gui_auto.sip | 2 + src/app/CMakeLists.txt | 4 + src/app/main.cpp | 10 +- src/app/qgisapp.cpp | 4 + src/core/layout/qgslayoutitemlegend.cpp | 2 +- src/core/mesh/qgstopologicalmesh.cpp | 2 +- src/core/pal/labelposition.cpp | 2 +- src/core/pointcloud/qgslazdecoder.cpp | 2 + .../pointcloud/qgspointcloudlayerrenderer.cpp | 2 +- src/core/qgsattributetableconfig.h | 2 +- src/core/qgsexpressioncontext.cpp | 4 + src/core/qgsopenclutils.cpp | 26 +- src/gui/CMakeLists.txt | 9 +- src/native/CMakeLists.txt | 2 +- src/native/win/qgswinnative.cpp | 24 +- src/native/win/qgswinnative.h | 14 +- src/providers/grass/qgsgrass.cpp | 4 +- src/server/qgis_mapserver.cpp | 4 +- 72 files changed, 126 insertions(+), 2995 deletions(-) delete mode 100644 .ci/azure-pipelines/azure-pipelines.yml delete mode 100644 ms-windows/Installer-Files/InstallHeaderImage.bmp delete mode 100644 ms-windows/Installer-Files/Install_QGIS.ico delete mode 100644 ms-windows/Installer-Files/LICENSE.txt delete mode 100644 ms-windows/Installer-Files/QGIS-WebSite.URL delete mode 100644 ms-windows/Installer-Files/QGIS.ico delete mode 100644 ms-windows/Installer-Files/QGIS_Web.ico delete mode 100644 ms-windows/Installer-Files/UnInstallHeaderImage.bmp delete mode 100644 ms-windows/Installer-Files/Uninstall_QGIS.ico delete mode 100644 ms-windows/Installer-Files/WelcomeFinishPage.bmp delete mode 100644 ms-windows/Installer-Files/WelcomeFinishPage_old.bmp delete mode 100644 ms-windows/Installer-Files/sidelogomaster.svg delete mode 100644 ms-windows/Installer-Files/sidelogomaster.xcf.bz2 delete mode 100644 ms-windows/QGIS-Installer.nsi delete mode 100644 ms-windows/osgeo4w/configonly.bat delete mode 100755 ms-windows/osgeo4w/creatensis.pl delete mode 100644 ms-windows/osgeo4w/designer.bat.tmpl delete mode 100644 ms-windows/osgeo4w/httpd.conf.tmpl delete mode 100644 ms-windows/osgeo4w/msvc-env.bat delete mode 100644 ms-windows/osgeo4w/ninja/ninja.bat delete mode 100644 ms-windows/osgeo4w/ninja/ninja.sln delete mode 100644 ms-windows/osgeo4w/ninja/ninja.vcxproj delete mode 100644 ms-windows/osgeo4w/package-nightly.cmd delete mode 100644 ms-windows/osgeo4w/package.cmd delete mode 100644 ms-windows/osgeo4w/postinstall-common.bat delete mode 100644 ms-windows/osgeo4w/postinstall-desktop.bat delete mode 100644 ms-windows/osgeo4w/postinstall-dev.bat delete mode 100644 ms-windows/osgeo4w/postinstall-grass-plugin-common.bat delete mode 100644 ms-windows/osgeo4w/postinstall-grass.bat delete mode 100644 ms-windows/osgeo4w/postinstall-server.bat delete mode 100644 ms-windows/osgeo4w/preremove-desktop.bat delete mode 100644 ms-windows/osgeo4w/preremove-dev.bat delete mode 100644 ms-windows/osgeo4w/preremove-grass-plugin-common.bat delete mode 100644 ms-windows/osgeo4w/preremove-grass.bat delete mode 100644 ms-windows/osgeo4w/preremove-server.bat delete mode 100644 ms-windows/osgeo4w/process.bat.tmpl delete mode 100644 ms-windows/osgeo4w/python.bat.tmpl delete mode 100644 ms-windows/osgeo4w/qgis-grass.bat.tmpl delete mode 100644 ms-windows/osgeo4w/qgis.bat.tmpl delete mode 100644 ms-windows/osgeo4w/qgis.reg.tmpl delete mode 100644 ms-windows/osgeo4w/qgis.vars delete mode 100644 ms-windows/osgeo4w/runasadmin.ps1 delete mode 100644 ms-windows/plugins.nsh delete mode 100644 ms-windows/python_plugins.nsh delete mode 100755 ms-windows/quickpackage.sh delete mode 100644 ms-windows/x64.nsh diff --git a/.ci/azure-pipelines/azure-pipelines.yml b/.ci/azure-pipelines/azure-pipelines.yml deleted file mode 100644 index 73406cb0724c..000000000000 --- a/.ci/azure-pipelines/azure-pipelines.yml +++ /dev/null @@ -1,221 +0,0 @@ -variables: - LR: release-3_12 - LTR: release-3_10 - CTEST_CUSTOM_TESTS_IGNORE: "ProcessingGdalAlgorithmsRasterTest;ProcessingGdalAlgorithmsVectorTest;ProcessingGrass7AlgorithmsImageryTest;ProcessingGrass7AlgorithmsRasterTest;ProcessingGrass7AlgorithmsVectorTest;ProcessingGuiTest;ProcessingOtbAlgorithmsTest;ProcessingQgisAlgorithmsTestPt1;ProcessingQgisAlgorithmsTestPt2;ProcessingQgisAlgorithmsTestPt3;ProcessingQgisAlgorithmsTestPt4;ProcessingScriptUtilsTest;PyQgsAnnotation;PyQgsAppStartup;PyQgsAuthManagerOAuth2OWSTest;PyQgsAuthManagerPasswordOWSTest;PyQgsAuthManagerPKIOWSTest;PyQgsAuthManagerProxy;PyQgsAuthSettingsWidget;PyQgsAuxiliaryStorage;PyQgsBlockingNetworkRequest;PyQgsExifTools;PyQgsFileDownloader;PyQgsFileUtils;PyQgsGeometryTest;PyQgsImageCache;PyQgsImportIntoPostGIS;PyQgsLayoutAtlas;PyQgsLayoutLegend;PyQgsLayoutMap;PyQgsLayoutMapGrid;PyQgsMapLayer;PyQgsOfflineEditingWFS;PyQgsOGRProvider;PyQgsOGRProviderGpkg;PyQgsOGRProviderSqlite;PyQgsPalLabelingCanvas;PyQgsPalLabelingLayout;PyQgsPalLabelingPlacement;PyQgsPointDisplacementRenderer;PyQgsProject;PyQgsProviderConnectionGpkg;PyQgsProviderConnectionPostgres;PyQgsPythonProvider;PyQgsRasterFileWriter;PyQgsRasterLayer;PyQgsSelectiveMasking;PyQgsServerAccessControlWMSGetlegendgraphic;PyQgsServerApi;PyQgsServerCacheManager;PyQgsServerLocaleOverride;PyQgsServerSecurity;PyQgsServerSettings;PyQgsServerWMS;PyQgsServerWMSDimension;PyQgsServerWMSGetFeatureInfo;PyQgsServerWMSGetLegendGraphic;PyQgsServerWMSGetMap;PyQgsServerWMSGetPrint;PyQgsServerWMSGetPrintExtra;PyQgsServerWMSGetPrintOutputs;PyQgsServerWMSGetPrintAtlas;PyQgsServerWMTS;PyQgsSettings;PyQgsShapefileProvider;PyQgsSpatialiteProvider;PyQgsSvgCache;PyQgsSymbolLayer;PyQgsTaskManager;PyQgsTextRenderer;PyQgsVectorFileWriter;PyQgsVectorLayer;PyQgsVectorLayerUtils;PyQgsVirtualLayerProvider;PyQgsWFSProviderGUI;PyQgsZipUtils;qgis_3drenderingtest;qgis_alignrastertest;qgis_arcgisrestutilstest;qgis_banned_keywords;qgis_browsermodeltest;qgis_callouttest;qgis_compositionconvertertest;qgis_coordinatereferencesystemtest;qgis_datadefinedsizelegendtest;qgis_datumtransformdialog;qgis_diagramtest;qgis_doxygen_order;qgis_dxfexporttest;qgis_expressiontest;qgis_filedownloader;qgis_geometrycheckstest;qgis_geometrytest;qgis_grassprovidertest7;qgis_imagecachetest;qgis_invertedpolygonrenderertest;qgis_labelingenginetest;qgis_layerdefinitiontest;qgis_layout3dmaptest;qgis_layouthtmltest;qgis_layoutlabeltest;qgis_layoutmapgridtest;qgis_layoutmaptest;qgis_layoutpicturetest;qgis_layoutscalebartest;qgis_layouttabletest;qgis_legendrenderertest;qgis_licenses;qgis_defwindowtitle;qgis_maprendererjobtest;qgis_maprotationtest;qgis_mapsettingsutilstest;qgis_maptooladdfeatureline;qgis_mimedatautilstest;qgis_networkaccessmanagertest;qgis_openclutilstest;qgis_painteffecttest;qgis_pallabelingtest;qgis_processingtest;qgis_projecttest;qgis_qgisappclipboard;qgis_rasterlayersaveasdialog;qgis_shellcheck;qgis_sipify;qgis_sip_include;qgis_sip_uptodate;qgis_spelling;qgis_styletest;qgis_svgcachetest;qgis_taskmanagertest;qgis_transformdialog;qgis_vectorfilewritertest;qgis_wcsprovidertest;qgis_ziplayertest;qgis_meshcalculator;qgis_pointlocatortest;PyQgsExpressionBuilderWidget;PyQgsDatumTransform;qgis_vertextool;PyQgsCoordinateOperationWidget;PyQgsProviderConnectionSpatialite;qgis_maptoolsplitpartstest;qgis_vectortilelayertest;qgis_ogrproviderguitest" - Agent.Source.Git.ShallowFetchDepth: 120 - -trigger: - branches: - include: -# - master - - $(LR) - - $(LTR) - - azure-pipelines - -pr: -#- master -- $(LR) -- $(LTR) - -jobs: -- job: OSGeo4W - pool: - vmImage: vs2017-win2016 - timeoutInMinutes: 360 - strategy: - maxParallel: 4 - matrix: - x86: - OSGEO4W_ROOT: C:\OSGeo4W - OSGEO4W_ARCH: x86 - CLCACHE_DIR: c:\clcache-x86 - PLATFORM: x86 - CC: C:\OSGeo4W\bin\clcache.bat - CXX: C:\OSGeo4W\bin\clcache.bat - - x86_64: - OSGEO4W_ROOT: C:\OSGeo4W64 - OSGEO4W_ARCH: x86_64 - CLCACHE_DIR: c:\clcache-x86_64 - PLATFORM: x64 - CC: C:\OSGeo4W64\bin\clcache.bat - CXX: C:\OSGeo4W64\bin\clcache.bat - - steps: - - bash: | - if [ "$BUILD_REASON" = "PullRequest" ]; then - branch=$SYSTEM_PULLREQUEST_TARGETBRANCH - pr=$SYSTEM_PULLREQUEST_PULLREQUESTNUMBER - else - branch=$BUILD_SOURCEBRANCHNAME - fi - - echo "BRANCH: ${branch}" - echo "PR: ${pr}" - echo "LR: ${LR}" - echo "LTR: ${LTR}" - - case "${branch}" in - "${LTR}") - OSGEO4W_PKG=qgis-ltr-dev - OSGEO4W_DEPS=qgis-ltr-dev-deps - ;; - "${LR}") - OSGEO4W_PKG=qgis-rel-dev - OSGEO4W_DEPS=qgis-rel-dev-deps - ;; - *) - OSGEO4W_PKG=qgis-dev - OSGEO4W_DEPS=qgis-dev-deps - ;; - esac - - target=Experimental - major=$(sed -ne 's/^SET(CPACK_PACKAGE_VERSION_MAJOR "\([0-9]*\)")\s*$/\1/ip' CMakeLists.txt) - minor=$(sed -ne 's/^SET(CPACK_PACKAGE_VERSION_MINOR "\([0-9]*\)")\s*$/\1/ip' CMakeLists.txt) - patch=$(sed -ne 's/^SET(CPACK_PACKAGE_VERSION_PATCH "\([0-9]*\)")\s*$/\1/ip' CMakeLists.txt) - binary=$(curl --location-trusted http://ftp.osuosl.org/pub/osgeo/download/osgeo4w/$OSGEO4W_ARCH/release/qgis/$OSGEO4W_PKG/LATEST.sha | sed -e "s/:.*$//") - (( binary++ )) || true - - version=$major.$minor.$patch - sha="${BUILD_SOURCEVERSION:0:10}" - - if [ "$BUILD_REASON" = "PullRequest" ]; then - buildname="PR $pr / $branch ($BUILD_BUILDID) ($sha) ($OSGEO4W_PKG $target $OSGEO4W_ARCH)" # no colons allowed here - else - buildname="$OSGEO4W_PKG-$version-$sha-$target-VC14-$OSGEO4W_ARCH" - fi - - url=$buildname - url=${url//(/%28} - url=${url//)/%29} - url=${url// /+} - url="https://cdash.orfeo-toolbox.org/index.php?project=QGIS&filtercombine=and&filtercombine=and&filtercombine=and&filtercombine=and&filtercombine=and&filtercombine=and&filtercombine=and&filtercombine=and&filtercombine=and&filtercombine=and&filtercombine=and&filtercombine=and&filtercombine=and&filtercombine=and&filtercombine=and&filtercombine=and&filtercount=4&showfilters=0&filtercombine=and&field1=buildname&compare1=61&value1=$url&field2=site&compare2=65&value2=azure-pipelines&field3=buildstarttime&compare3=83&value3=$(date +%Y-%m-%d --date=yesterday)&field4=buildstarttime&compare4=84&value4=$(date +%Y-%m-%d --date=tomorrow)" - - echo "##vso[task.setvariable variable=TARGET]$target" - echo "##vso[task.setvariable variable=OSGEO4W_PKG]$OSGEO4W_PKG" - echo "##vso[task.setvariable variable=OSGEO4W_DEPS]$OSGEO4W_DEPS" - echo "##vso[task.setvariable variable=MAJOR]$major" - echo "##vso[task.setvariable variable=MINOR]$minor" - echo "##vso[task.setvariable variable=PATCH]$patch" - echo "##vso[task.setvariable variable=BINARY]$binary" - echo "##vso[task.setvariable variable=VERSION]$version" - echo "##vso[task.setvariable variable=BUILDNAME]$buildname" - echo "##vso[task.setvariable variable=DASHURL]${url//&/^&}" - - displayName: 'Setup build variables' - - - script: curl --output c:\setup-x86.exe https://cygwin.com/setup-x86.exe - displayName: 'Download cygwin Installer' - - - script: curl --output c:\osgeo4w-setup.exe http://ftp.osuosl.org/pub/osgeo/download/osgeo4w/osgeo4w-setup-%OSGEO4W_ARCH%.exe - displayName: 'Download OSGeo4W Installer' - - - script: curl --location-trusted --output c:\ninja.zip https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-win.zip - displayName: 'Download Ninja' - -# - script: curl --location-trusted --output c:\depends.zip http://www.dependencywalker.com/depends22_%PLATFORM%.zip -# displayName: 'Download Dependency walker' - -# Too large… -# - task: Cache@2 -# inputs: -# key: 'cygwin | $(Date:yyyyMMdd)' -# path: 'c:\cygwin' -# restoreKeys: | -# cygwin | $(Date:yyyyMM) -# cygwin | $(Date:yyyy) -# cygwin -# displayName: Cache cygwin - - - powershell: ms-windows/osgeo4w/runasadmin.ps1 c:\setup-x86.exe -qnNdO -R C:/cygwin -s http://cygwin.mirror.constant.com -l C:/temp/cygwin -P "bison,flex,git,poppler,doxygen,unzip" - displayName: 'Installing cygwin' - -# Too large… -# - task: Cache@2 -# inputs: -# key: 'osgeo4w | $(OSGEO4W_ARCH) | $(Date:yyyyMMdd)' -# path: '$(OSGEO4W_ROOT)' -# restoreKeys: | -# osgeo4w | $(OSGEO4W_ARCH) | $(Date:yyyyMMdd) -# osgeo4w | $(OSGEO4W_ARCH) | $(Date:yyyyMM) -# osgeo4w | $(OSGEO4W_ARCH) | $(Date:yyyy) -# osgeo4w | $(OSGEO4W_ARCH) -# displayName: Cache OSGeo4W - - - powershell: ms-windows/osgeo4w/runasadmin.ps1 c:\osgeo4w-setup.exe --autoaccept --advanced --arch $env:OSGEO4W_ARCH --quiet-mode --upgrade-also --root $env:OSGEO4W_ROOT --only-site -s http://ftp.osuosl.org/pub/osgeo/download/osgeo4w -l c:\temp\osgeo4w -P $env:OSGEO4W_DEPS -P python3-clcache - displayName: 'Installing OSGeo4W' - - - script: | - rmdir /s /q c:\temp\cygwin - rmdir /s /q c:\temp\osgeo4w - displayName: 'Clear package caches' - - - script: c:\cygwin\bin\unzip -o c:\ninja.zip -d %OSGEO4W_ROOT%\bin - displayName: 'Extracting Ninja' - -# - script: c:\cygwin\bin\unzip -o c:\depends.zip -d %OSGEO4W_ROOT%\bin -# displayName: 'Extracting Dependency Walker' - - - script: | - PATH %OSGEO4W_ROOT%\bin;%ProgramFiles%\CMake\bin;%PATH% - cmake --version - ctest --version - ninja --version - displayName: 'Display tool versions' - -# Too large… -# - task: Cache@2 -# inputs: -# key: 'clcache | $(OSGEO4W_ARCH) | $(OSGEO4W_PKG) | $(Date:yyyyMMdd) | $(Hours)' -# path: '$(CLCACHE_DIR)' -# restoreKeys: | -# clcache | $(OSGEO4W_ARCH) | $(OSGEO4W_PKG) | $(Date:yyyyMMdd) | $(Hours) -# clcache | $(OSGEO4W_ARCH) | $(OSGEO4W_PKG) | $(Date:yyyyMMdd) -# clcache | $(OSGEO4W_ARCH) | $(OSGEO4W_PKG) | $(Date:yyyyMM) -# clcache | $(OSGEO4W_ARCH) | $(OSGEO4W_PKG) | $(Date:yyyy) -# clcache | $(OSGEO4W_ARCH) | $(OSGEO4W_PKG) -# displayName: Cache clcache - - - script: | - echo on - PATH c:\cygwin\bin;%OSGEO4W_ROOT%\bin;%PATH% - cd ms-windows\osgeo4w - touch skippackage - set OSGEO4W_CXXFLAGS=/MD /MP /Od /D NDEBUG - @echo ##[section]%OSGEO4W_ARCH% results available at %DASHURL% - package-nightly.cmd %VERSION% %BINARY% %OSGEO4W_PKG% %OSGEO4W_ARCH% %BUILD_SOURCEVERSION:~0,10% azure-pipelines - displayName: 'Building QGIS' - -# - script: | -# echo on -# PATH %OSGEO4W_ROOT%\bin;%PATH% -# cd ms-windows\osgeo4w\build-%OSGEO4W_PKG%-%OSGEO4W_ARCH% -# set /P tag= #ifdef _MSC_VER +#ifndef UNICODE #define UNICODE +#endif #include #include #include @@ -1113,12 +1115,12 @@ std::vector MDAL::Library::libraryFilesInDir( const std::string &di { std::vector filesList; #ifdef _WIN32 - WIN32_FIND_DATA data; + WIN32_FIND_DATAA data; HANDLE hFind; std::string pattern = dirPath; pattern.push_back( '*' ); - hFind = FindFirstFile( pattern.c_str(), &data ); + hFind = FindFirstFileA( pattern.c_str(), &data ); if ( hFind == INVALID_HANDLE_VALUE ) return filesList; @@ -1129,7 +1131,7 @@ std::vector MDAL::Library::libraryFilesInDir( const std::string &di if ( !fileName.empty() && fileExtension( fileName ) == ".dll" ) filesList.push_back( fileName ); } - while ( FindNextFile( hFind, &data ) != 0 ); + while ( FindNextFileA( hFind, &data ) != 0 ); FindClose( hFind ); #else @@ -1140,8 +1142,8 @@ std::vector MDAL::Library::libraryFilesInDir( const std::string &di std::string fileName( de->d_name ); if ( !fileName.empty() ) { - std::string extentsion = fileExtension( fileName ); - if ( extentsion == ".so" || extentsion == ".dylib" ) + std::string extension = fileExtension( fileName ); + if ( extension == ".so" || extension == ".dylib" ) filesList.push_back( fileName ); } de = readdir( dir ); @@ -1160,7 +1162,7 @@ bool MDAL::Library::loadLibrary() #ifdef _WIN32 UINT uOldErrorMode = SetErrorMode( SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS ); - d->mLibrary = LoadLibrary( d->mLibraryFile.c_str() ); + d->mLibrary = LoadLibraryA( d->mLibraryFile.c_str() ); SetErrorMode( uOldErrorMode ); #else d->mLibrary = dlopen( d->mLibraryFile.c_str(), RTLD_LAZY ); diff --git a/external/qspatialite/CMakeLists.txt b/external/qspatialite/CMakeLists.txt index 33536dafe913..527f383303c7 100644 --- a/external/qspatialite/CMakeLists.txt +++ b/external/qspatialite/CMakeLists.txt @@ -7,18 +7,18 @@ add_definitions(-DQT_SHARED) include_directories(SYSTEM ${SQLITE3_INCLUDE_DIR} - ${Qt5Sql_PRIVATE_INCLUDE_DIRS} + ${${QT_VERSION_BASE}Sql_PRIVATE_INCLUDE_DIRS} ) -set(QSQLSPATIALITE_SRC qsql_spatialite.cpp smain.cpp) -QT5_WRAP_CPP(QSQLSPATIALITE_SRC qsql_spatialite.h smain.h) +set(QSQLSPATIALITE_SRC qsql_spatialite.cpp smain.cpp qsql_spatialite.h smain.h) add_library(qsqlspatialite SHARED ${QSQLSPATIALITE_SRC}) + target_link_libraries(qsqlspatialite - ${Qt5Core_LIBRARIES} - ${Qt5Sql_LIBRARIES} - spatialite::spatialite - qgis_core + ${QT_VERSION_BASE}::Core + ${QT_VERSION_BASE}::Sql + spatialite::spatialite + qgis_core ) install(TARGETS qsqlspatialite diff --git a/external/qspatialite/qsql_spatialite.cpp b/external/qspatialite/qsql_spatialite.cpp index 0e8f15a25f76..5a75a04748b3 100644 --- a/external/qspatialite/qsql_spatialite.cpp +++ b/external/qspatialite/qsql_spatialite.cpp @@ -632,7 +632,7 @@ bool QSpatiaLiteDriver::open( const QString &db, const QString &, const QString bool openReadOnlyOption = false; bool openUriOption = false; - const auto opts = conOpts.splitRef( QLatin1Char( ';' ) ); + const auto opts = conOpts.split( QLatin1Char( ';' ) ); for ( auto option : opts ) { option = option.trimmed(); diff --git a/external/untwine/api/QgisUntwine_win.cpp b/external/untwine/api/QgisUntwine_win.cpp index 7469655df8f8..47d355ce3675 100644 --- a/external/untwine/api/QgisUntwine_win.cpp +++ b/external/untwine/api/QgisUntwine_win.cpp @@ -28,7 +28,7 @@ bool QgisUntwine::start(Options& options) cmdline += "--" + op.first + " \"" + op.second + "\" "; PROCESS_INFORMATION processInfo; - STARTUPINFO startupInfo; + STARTUPINFOA startupInfo; ZeroMemory(&processInfo, sizeof(PROCESS_INFORMATION)); ZeroMemory(&startupInfo, sizeof(STARTUPINFO)); diff --git a/ms-windows/Installer-Files/InstallHeaderImage.bmp b/ms-windows/Installer-Files/InstallHeaderImage.bmp deleted file mode 100644 index 2332341daa04f184dbeb4f15a896e8ac8c4b3253..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9354 zcmd^^dr(x@9mk=X#K}Y_HHl7Z8r$-IEG(wADm9%kljd0-#xX65;sXJL79T+Y6(uU5 zqM)X{RuB-7HzrOy(`NEVC!Nf6tPM43O~$l38UiFmF@}c`PCs|?Y%Z6(d+&nuk9Nn8 z=iGbG{rx`Y%dWV)i+*vy+r$1iz~4K-dKXWR?|V#Au5dm3d&4M)!w=!%G5kk46pNl+ zyyfl%)5Et+ul)aA_~dV5Ji`i?PYWwrK7;YGu)<|ifAmI-r@M*FDU5k$PT{XUfh$_( z6|cAwQJwNjcWY|bhdy0J%o>uo~Z_h$6XfqJ=O5ay(`}=HADpJM-trq*pJOdA7A8n#^CWPg7&)Z!K9p!&CDqz`iGXTv4)nez5>Ed3FEy1_toG1#(mWbWYedY z&-}6k5nYdK!wwxXUXeAlV`%Bxg>W5kSF?uWaq$oCcepcuk!<=M8Of{|=a(npo*@?F zu0ugYZL03S$)UFRxo{K27`e@!ufYXqgUi(EWBfaOM`p$RCBR*s&+vRf`KuyY@owA& zJGC5+Xxy#q9%5Vf1ayFKlP^MT>k9Dvxz)CAYOpPSM19Ub01r9bZSgO0+z+ENT5vL1 zL@VA+nWJgkbuh9aeMD_p(_%}U9C9M@-H;Or!VSJ)Z3=sRP}VUTLu?5Vtnb&$XFkeS0ZU3aBtNLf;9$cZG}&60SQ{mwM&kgx<@E^MZ-cP=t8)73sn>ActH%)MmA4l52l)m= z2jH083y;Zb!6!Fv17U(r_BTV`XJ&jPt$Xq8L)~8~?%((iXSA?7RYbMygZ&!z4RJnA z*0+>z#C-$qBeLBpuLqy}^C+ z9X~xPQXUVg*!&6zBiN_%R@c-6=cUqJ>%a8!wL2@`f3I()4olyuPL>Vmhx?{ZAX}#_ z4XWId55fdLmbG1tT6eX7Oh=DM>iSZTp~S8)9qzcy2&&xN33$2WNKn<*vmhK)G9OJZ z=N@q7tz3IFt$P~21B$a6<@w{neGvB~b#45o(eG;=53SqTz^c@9AY2htmHJn8eP?t0 zr{g`Sc30-12W|{Tymj-A4g)dgZpQ1?3#xkUGLWlF&IO*@b_s+5Z|U{Wp40OW-hV@c z=lAGwXF-0C)At|b`6pMI-o1wV_N#!uOX{_*ddFISi);5)dNt%Z@_gGMQzi4O0o7^$ z1R)7zu7lh8hh#g=eURK^rKhto@KoBnfTK%338>CE5BR&}yt6*)^Gg0O80y^pPWX|Y zW$JsJ%>$~_{{?uthm&OrUukx zd<}TH1oxe9_}Aj>av$TI)h z-Cq8ucMB6-^*_DG@OPMW80(176tZkLk*AXR50pN5eE{siki@ZinY|B(1QS^*dAG@$ zesx*9K$xJ@ukLln`v!Ucy&CC1-S2c(I|vhG$i6tu@~hiB0PMk#Gl4Z(ZoU7KeT+st zY5@mB`dQ=n97(C`SHG_egh}#zS`OXQJj_w#MY$pB$YHft1e-htWb8t%-wcRF?IhHJ^1hNI)X zrM8!Eea?Npjk)guZl<}#`YbU0x@PTzumS%rFp-yI%^%sT{p(GwyFB)3JTMzNK)6XS z>l+{r0(}~CCo$SzBfgC}p3IfHOP~n;4KC{Ea%~i!vS;1rjdYizPvgP4K1~OEK#YR{ z?){uvoxt9xHFmDE-!SQCX7p(~6zFM*g? z@~E#vQ{F|g^V52{bL`!GG#9#>_J)U-I5;(m%LjF#4!1c z6T(F@dfr_>GwZ!t3hsvlua=`9fpAU%*WBhqa#;iSnQnvA5v^!0p%#xDM@b0sa7`5D%f=EyrE{ LE>idTU!DI4WR^=H diff --git a/ms-windows/Installer-Files/Install_QGIS.ico b/ms-windows/Installer-Files/Install_QGIS.ico deleted file mode 100644 index 752cb9e25f09de8e2b04261c51da9871ee83a496..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9262 zcmchd3s6+o8Gz3gqfRDjY8y>!8k+KcFWOp_8aqkT<~2ML$FwMl4-}1BUqJztm8gh{ zikd30f~bfrAecDqOq^t_w>8F-gWnKclR!8*7^L; zIrrTE|IW|y*aaa>{4*yC{{NwPG+c-gLWpQE!!%IVzsbj#-({MT_e>j_ym#6N;v>m> zrVjb>8=0nH9Y*iTd}j2X-+Th+w2Z5melE3c$*+UWsojs`!|(!>!f`kQJs>r7Gyf2d zK?yvYyf81dGGYW)Sd>v2VApo?H8OW z>rHstvp#406?B2N2Xb6hHts8MU#Sq3zqw+@Lr`F@nBD>MZb>Ewd^~z@)(=#FdZTrQ_GAY0e)BQ+KBl@eewLne>Gfrtb&kxS z=P%pxJqhS^aXd%-nho&_vPTOco%w5z_`G#e^S+K zb5hl;b0D2m67LPT&-(ry_nFVrn;Uxl8DBk5X4r6TT&+XlD{2mHOsbkQ5v~C4p3G)` zSNxm%-R_KEpf}y_9;v+|j<1=Id!c*@cOA-8>+^KKCMQ{Q#=w})T{EZW>^HSO0t=FFkwToqXQ<2PQw&+l_iEFy~-W{@?x`@DIoW!{Thj{bjg`zq9vF|I?=&N}nbkUM168 z@$L)m8}rhdi=Cx#N`Q8q-u_KkEF!*k>ErRWOQZolWzS$k{uZgYPgdMPYW<(AFTlG* z4@X*S$uhMD^%4Mg{Pd_@@>pE$vR6O`f^%+G^9G7IPf^{q{!{E1dZ)kt-i;YLOnIkn zp_-d|xG!x7dh3%ZaR-*~0BL}qsJZ<`t-Ggx=B2B0e#e)3IC49_bi3m+BJRMlcEHOo z+v5(dI1bXy0mgmlVr`H=Z{^x|^Dhs@w?}dIM0x)BaleK8e9zqY52fDMIv!fL;gIank0_Td8kd>(!wr^Tf5B*&SEBQYv3l;tsxM2m0!l z6S0R@o&_0zx4a7YnCSV(Z|syQJFe={J7LGwIb(NU)6GUd|LU)&x3A&8>OA1@7n^Po z&7#&n!N2=V&Fx-O`uTQ%o+>>*A5)kAACM}sjCBaQ|A{3&`+keQXL-r$Okxk^zY93} z<&&7Y!jpi%Ury?j=(D8sA8sZ2cJEEuesyY}8+8_9>I(h~c=_dI%;D9402zRsaFT-U>%;CbX0WZJczUGbS!)v4pbMDb)jF;?voKXKs z9}Zf#-O=?$Ss)EiavznwQb*UX-3~YfWNLK1B`o@gMH=9I^pSM|zlV8=^kah0V0wAc zKtGk9KM`lM2)sT3&Jd8?ekcWX3l8%P^it{fsin!RPM%n0{5gOLJUJ!dUB+|Aq6uLkfq&%{*WPnGCehnjRr6%eX zfWu(j>zvj7p0#Ju$i_{DAOlmv9)(TsK&WSqV8+}#oIDM#Tx!mMG0#_xNZY0dBAZIz z1KbRAo&CjN`16{*55gk+JHSA{+?p2K5w+=iD=p~HllgURgiZ<5BGjfu6E#TFSl3x;}sfqlrB+F-D`zFa@T8M6e~`!Gc)ezwi0~`G=vHWS`x;&%Muc=XqYfQ@`__GsAzr z_7h@5hLAC12Dk87?UnVIKjqssOjsmk%40E~CZ@g2UjGLfjVS5b@s=DOspe)hTI zpeJ}1%DlBinY-3rnd|?&GIvd;GRN->@L#~kzzMYZ0ppc9zQ+O6v&F$}%PKzAXPt;i3!Kd)>D<5eBkv%Dt0(x)c&ae47pds)%uJXzr; z#*7QH!j1m&!r(D!3`3T*-W}^wopc=a`|~uRj8~1i$H$PUd#*BEO56x>F4?}oxp><( zfC1W_i?@19^0t!45`G{fg0797^NH!G`WZE}xK-5#xLd1!!B@wOVwo#Ip) zau8t5sF0QK95#8+pUJq$Yh%Yn81q!Gw|98`^_@GfzN5SQ%9-3!S54R&r_!AlfKJR= zAuSJk6JX5PBq<9cu)XzyRHVFF>A%ZzqpM8@D^|X=gkRnC{O$Xe#!|GL4^=#t?}nG6!H-Xe0NEE8^+_ zhDBvutXLC6l$mWrm~3=0pFyKDG zh;&JR7U`281Nfg6ONF{U1pNg4?x0siRcZ!k6<4X}iu8LN9rb(80SwUXs82oQShIJu zV|5xkS6Y`!1iCbW`c(9vcGRa}9E)nPKINgu4f~0(W?vw13t)h|!kY9G0z<|Mfgw`{ zD20af4QT&RSiQFgV1NsNyP$e65!PlBVO{2MjEfK$_O}C!8FvJ=`&&@H2Hfjy&-@m= zJsIXaJC_P6s5=NA2ZuV;9bDv4cjyGr0^9=_Gwz`82O!U(?toledw`w8ZqWQk(0H6U zG#mkrjso0g)F0UhsDW6(&!PT^6c{R~KWsgXbm1Y@Jemj|KbSiWfAPUH>erq#+`xbCuSd2Y5$Ac4nK>)%Tys_q zQ)T~QnCP(QQ1?P#D)yisRqh(%lDlSzD%Wq4D#ve@GTYY&&mTWL*H!_G&?Zsl`aR-W zyv|0Ivl`F0)suiMJmXHPa#o$3Ulf?XtYX)b*34(+_!IiPQ{`EncX+1xeE}GOE}$E@ z58MPUnoqeK(%b%-qtgjF&!|SzaAW(db%+QiJ&hB01-B*v#UnenboI<=@e&e^$mOE7pk0z_6C@+hA7 z@0srjdRH*cCEKo|?FHNg=-*C8Z~caSc0aVSb&{;Xl)v!&Pj^&$b=MqiIK4X<@47t{ zuP-vFB~B&V)!=a(^P{8%n~8H-$V<2nI&d$T?-ELPX3MoZhd7(%9v9Vyd!hC5ap7%M z!eW#0rRJaSzHlnL)92*D?&Yr^?(uF+f9)khqC{G{GZAxdJC(3J-jbDtjCLvujg^*# zb_2LOSlo6h4}BS6&jj}s85hwyc6?Nu7WY=SV{yB2^I;7gY~gD?Kv71-QdyY{oU zpOlvF3X+!X>T)XG#h?rscQregg*r<$;YE`2aNJ`Q^gau}h&D06@*f}BMgUjbZP#$G zF|xz$H@#1HwE3L5Ze01{4NY)M=TmcD%O{u{X>}h`Uf03vdE9GN5)JM-7WDp#`iE2- zH4U)v9~aT)HZj_GO~l=M%Z-p`6FyKnD^tKz-U#_|^>8;OJ3IAUg|Q9LWl=sYW{-RYUE_Hnbo zn|{PPHIY;&4aIn^<-X?loR?I_OGLWF7jU;4*?XAY#q^HVC6-AHDZ|CpeeYwIVZT3O z+|OcNqBG|GAgW~VXU0t5kmwRe;jSGg(j~v;s7q$7&@R%a_)LdvPI~UX?#Gs`;@-yn zoobJH*^as-%(tKiI>9antS!WSFVd&3$Nk?W)Tc5+=mQj}{~dS#0!95{8;K!f0DC&m zu_o;y@Q=d0TV_4NJa^BR&@ZOb^+h%Nh`46o80Y~t!fNOVoF2f@n!P`vJw|BA5D4q` z55qb(;@V7GM??BZ=nk`lHG4}i{#KtkTz$jj(qtm3O=sm2)@Bg!5JNxsGXOopj2f19 zqkbNGMkA076aa6btwlilYtpT82kY*I9%GMo%bo>w`w8?A0=+~AoN=hl>UOBz&v3}< zNBMS2`98MI1Rjadc^;;^PydhXjeLUfL{NWl67&@{a31Iepv(LsZlk{mx{w!ip z_@xhY95SQfxE*vJG4z^U&~Z)x-vC#Ejv4ib+kuO~rw;Xp3xE|f>JE<|awLH`oyz$o z)_wW}C$fp~bRKa$kv#%yPRCl$%&0&5?2Lw^^8kfI4?V+!YaLM(x2Zp)jthQZU zyNWE<`dMUgJHCo2p~Jakub%9Zz3LU0oK>r#!>vMj_57j$_m#EL&{`k-nRR##?&0;s zHE*pQ^v3DX*Sw&w#X(mq0ZsyML58!S)j$^d0)Sbne1BNr1iGUyfvx-$^hX157r3v? zUUhG7VL;DPZAj58x=8y6t***nOI!-pQTzEh=!?0^oHc&~Z>mc&6bdut>t@=6_Ny2l z`kY2>19_*Sy%w^u`Xwkcr!WvYW*Dk9~&@;Vti3BnbdGQut6R=qXUHbEWdNi+B_n`eVdC^9HMe)Xo@}e!a3e2OQmo9aY z>2VIkMV~Mg^4CND9sp|xGjqy!GRtb>scy~VW1m{J%kt_Z;$5G>&UY=@PFzcO4293- zC;&aX7v_2oXrruTi+CbY5k=)Tb{_q+;M@iB^0iK~E^8C|nBg+pD+hhBBb3Q5Vfr@`k9 z$az?$*)>E_zJs__M%X%+>_~Ge-VXhLJHu19T(a#)^v#wQZXt8t?0dIT{d)AS*6B|l zHV4u(bPj&A4DodF`O4_$vg^#3bV_XlNd07{+8cC|Q{ z?V1hrU7NF6X27mEIX=?JJc;#RJm1mv`yVgeUHkQ?H`br~^wzqsKkZ!emp`5HIdx1T zE!j04yiQyB)UZF+zm~1g?j9yB-yI0wSEt1XX7PpX{z#?`8|SPIv#dWh{3;n6c4Y+C zE`i;_jKlgGukk+?zE0{;!LkM3F7NvypD z`{^y`^03jcXJTQG^zgP0PtjH-)kfI!_6`+deE2nr@mTvEx;|_ZM!c`R>!qrW)+IF^ zEiYGhw0gbPVetQ^!*SKg+r$a>3Fa>YuNwd(fgMF*wx_;w(nL;#y|c&4cH#VZ)Sst~ z%9m=Rhw=81)%xRb?(fjGsa*uyh1x~bFUY_)YMQyXT{1uW29d|L5vewk;sw}AMgY9~ z;2+Y8=*MBpBv{!t7CT3xjn+sjVuz#Oa{hGxW5ceEe>B?oj>RTBi1h)i{}%jAx0O+2qan7kSW}>7bb}MYME`a(Vt?`beD*h31Rh)(21gt+M^xDIsl=h5S zS*9}{2TiB3-WxzMUEBR&hh^-{Z;D|b#t`ri5Ld+9v$6xRN7#iGG4Dz$W5qtdL`!L16 zYnHWXfwS+Dhk(y<3t#Z3>u|o=_!8Fts!N&z8}BQ#50$g?IDcw4?7ip(t&IdWUmxDT zr9$mL*m(l*{hO#V0ek^U*|M5}uXe|DZ5)y4lZU}(%VBM}DvKRww&{|;hCL|l@BjU^ z^~JEyBsKf&z&8_D!Po01QhI-F4c2(Dz#NPppBOA!WPYi zz4^GXI`tQ2fZa+QYtw9D-!8XOr@F z?LD-gaje<*qNpxor0R4UQJ(6xokg{KiMVc`t*|!z3GmpBu|L3$##|oMM^4MEzx;rt zE@POquJ=9@S05rW{ZSj(sKKyLulKWEEp{yI*EZP0^{{id1B--)Ob=i#upDz!(Elm* z*9+jcr$CvdR`oXo)#*ly`VNT8oX}+u(uxw*xs2Pz*V3XxD5;( z&)Vs#2yab0v>Fu*P8oy+B>!f^S%YbgtZ683u^nGcmKUx*BxHZBQp#K z2<+-Hu+#ql)WcT41l#>Sz@W_V)Pa^+90H{{e8Zvs&|eTINd%QjPG#FVo;YgF{x_E$ z5JQ<e84EJFkhM-bCFG8X=Z@sMd8FdBXb`x%WnHoyaB58lksk7=};K@g`0L#+G} zHq8Vf9=oRD>Zxiw^?bMy;(=Iz9fS~zi3WX!bAcbzRM2^ZB=p#jg!?w?`M^{YolnC= z!@+AbZsw_&Iv?vKFz{etU4{lC6u?@*;-_%3 z42v9&x)*FA%A8}42fJVK7xHTq`4m-Z*@k@c(5z4HDw5BT<$R_=y>EsBK?D}N;9j~ql| zu4yLxeekux#~C;hK0kl>%036~QJ>jwg`6Er{cL8?*fdu*D)QHcDf0d4_ldJv=Zf|w z0J8VpyGKzl;|bp&;?oxR=%fGYRTZuB(nUW|ewXw$L|GUx34XRTilOD*O;$(+kvfAvQ1ck5iBK(7EeBMkN;&W2nM}8UN<4X8Tfyd?fL3y(Lz%J@* zWPOhLl=693)KAKnDWyJ1whjKtz}uMfEqs^n0H;x=`C6X=-@&iB%S97pugni5%7Q>Q z%y}E~b3RSp9}7Mn@T^2H$eTZvXads;nPfppYk^6 zuMA@PQ_lBF+o|k9JwT_tFz6G^iB}W^Jr94YL{S(#O<5E)8SPV07jSJsBV>j6zbXtu z?nB_)K#$Dqk3|{00-4$H%X;FsV&#|R%NM;239CGHv36e7y|zCuzp`WtajV#A3!m+3 z$Zs6zuMOsXwj6~YR)$T* zOV7j_^h{!Rb|70;y4gWhy2VCm_B&hiv@S;>NALNsK6g`;hn~gRz;Df;M=%5bG-Tfi z*{M&O=6v+Q1^9?pde^D#um@|Fma-RoK`&?{h9LhV3w~{g78R%$~Y zmgWYKWf$MD@akWXAIT-JK=wtK+GoAke5pyLQybZHv7Er%FT41DE&uBF=_aV!e%vy8lG8@^Zgx{J1a$N9O}EXad7FLW zTwV;#VM)G#T$UAEU(d6VmG2nsT(UJ4^DfDYwytm~?)Cl7h93}?3Vu5~_94%uo0Ff- zv4p&oQop^We&4xxd$C*-GDgwQcirbeP=P;}5Zk}oOiFE0dVJJ=^5x4W2J&~S^hvDz z@YOT3k#FN^u;km|ypeaq`q=k;=T*PQXY(nwjWa9z_Eh-SZ?STeY0*2@o|Iuh#TyZSA-1dA2+ZTexzqEnV7-Q93c<*(cg#s*Im!{ z%I{K>Vw_VM1=(@dG?rkFDX``Gv~Rr{(w1d0HS{+##;Gg>vhTQMi7(JNL+OtDh%qEj zF4{=Eb@60QZNd=565=`EKaDe3a%{PBnYmsT@|CPS6mf%{#G|&?_iQcu*j?wzq+^gh zvUL{x@b9y}_&DQDUj9WtUhV$fspH0FC-!$QKY5_rhvGFBJzk9&e_vXc>Y4OjE`Bp% z$fJVnr8{qNaTmxy&$9PC>*VFT#>x-_k(KX$3^4<}b&RA>*&IK?n8VKHp(6onku7EV zdw+Ptf7#&N-68h}RCcrcH>mte@cVi7im4~)Qj2NRrK{~$=s@1qN9(@%d?EcmbSmBb zFxE;%Yz4B1^f^!djFHRr8O~Ax5U29pLc~};;^H7Q-`J8j)>|&$ea~65d%dt|H}R++ z+-8`R%;5KaRREda<7KCGLY(o2+aFCASGII8!7bOBO|4cyePhe@b3rXPmJrk1M22UH zQ`v3>WVq5R2aP|OW#V(u%0e&W9ABbm>7)r$A#U=MC6}y>kE8UV7o9ZW3#?-{mV-AJ z#)MqPZ~mGmWWH`K|D$onuDNxl3+w-Jy*c3T{c!&Jdx4ib76spIXSql@7l;>TP>{ExK>5vB*e4o*_f8qnGRClCd%Cc`J?9`{&crr z49XIZ64N|HZPdroiWn!v#Vl*}FIda}Xbg?PS;=mWg_+}FU(DKXdU0hPL*yyn_hCb0 zdQRHtNjOi)Z_eF+0L9oXg3?gLv0`Qc9pVa09-<{y$Hnj1T*t35#?3lr*Joi=#_hO5 z#)V(=gzVSFsSlPNd5|wCQv1fVcwXkX-cz7&irJW6G|rC76~%%-W45m%dIMx8h_xvZ zi~9j_x84|^md5+cbv7m!dj&DT#Q?w5K)Ui0c`T}JktDVKC;VniIBRQkASU>UTW0(3 zgyBEhxbAHmI3F#DYf^}CPT%y63(`H%bL44Er=&9G4*)^j&H-_|54c=UDmV9zg*o@r zQb){kvnUt;?a+-7FBxm%Dy%SI2^Oyg8((hs)sw9A9emo}yn zacLA{dkM%vjqBv);Ao%tDLv;OC6#e6NGfQYFKHrTof;a8q%lbAm?T@Kd91XrDxp}U zOBf3by8ge~h`1vW>yh_bl@JX%daUK(<+7q5VV_cfENwh!gP3N-fH*15ZM8;~`bV)o z(N(C4BhDw%{#9`Y%okL|BUYC5DE9H8C7#O1RjnzFw^k)oDQc1*a@Ny0C;Pt462v}R zX)F|!jfo;g%27)_u}7p&+9x&a87}$_dA;-jEloOMVhL!)F1=+&5Otwy}A@G}fAQSzMj+oXcy6enpyp zuA9b{foV9i4@7i*_8ciSm)Wzlw0|$rCAm?#=||O=O`d@5ig9m79+} zv*ojh4bMPq_@5K<0izKECIWrh!-!{RVJ)mr*GNWAH%GY~YQCI|-#|*0OJmk>x0AhR zDAuJQuOLN)SojxwUbHps&9P?Ry}FCO5^;6flK>H!-@kf*cn@qA*6yS6d3x^lh-vQx z&o(ZPo36pWw*^XbyZJIp+c0N=!kkCVGhc#yZ;zUNwvdJ9cAN9UQyK8J#N27D+^T*X zv2=~7Cf#93`U^zbFJ{d1{Uz#vSTo}Ck0AaX3cgqS#p2m@E$eY|;GMG6633eKQP|S} z*3*y|?_}8b7~W|+i@ch2}2y;Z!OjkWXjd%~Ku_YvP;0*nC$@EoiG@pR;dXADDZ z-x>1fLjD_E44;qb4@Oy8&WQ~BR8ur+qBt=y<}0e+Po62Q#+hXN4)OW#_!vD;tzz|T z{GM+|j{P;n_j4T$8A}~&(b4N9|ayLbN>#<*A5WiA>>Si;T;6XfcFvT`<8fz!BS@1s674J z&0{R%9x#XHHwa(89rI0C?}%eV*2Ec=1AmYGW$s@W)?p8I2Zjpj4)`HI;|uFt57e=j ze=hgKdd_c{`yIyM}!6V@Me!~3XZ$oaVGz~+M-K<)|! z%@G0RVaXM-ZZnUiW9S@yEKmFJICvNRr-Zc!7dh4+u&1*BJ3h!WA;1LWkkFiyw?S`$ zcK7C&(0y=uCLHDJTz-t@-CTAI?WgTC*nAkajC`0ww^9FGP=9EPpyAMzr;+dT@BTQP zNF~!7%59J%G6DEK@7v#9?0P-RGS>Q_m z`9Mdm19yNP;4XkY9=QUX1Dde+GUVe#B4=m5)9X2-klSQ~@4&Lgf3hHM$R^^3oT0+T z<4j0W+>SH`V5UvO z?;{0?xlc$WrAREAMrkv)K&cw!H zuTO!_Zz5CayI4#UZEvD4TVb5q4jd>Q4h~k7j0Pw0Bcq$i7)qz|w23I#dK1}crg*Ij z{Y`fL=x}p=G)qV0%`iI7Ox42~riopjqfK@UP1T}uF;ou7*~7^{zl)Q9coU_prw#jn mbjY}3_l>M8_8izlVbE-YKiDO)qqLbW35p5xDa9(*=l$O#rCjv@ diff --git a/ms-windows/Installer-Files/QGIS_Web.ico b/ms-windows/Installer-Files/QGIS_Web.ico deleted file mode 100644 index e07ad44c0b52781cc12867d99711cd60549d6526..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17542 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 diff --git a/ms-windows/Installer-Files/WelcomeFinishPage_old.bmp b/ms-windows/Installer-Files/WelcomeFinishPage_old.bmp deleted file mode 100644 index 72e3579bc255d790181519e957cfbcb66a32b5a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154542 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 \ No newline at end of file diff --git a/ms-windows/Installer-Files/sidelogomaster.xcf.bz2 b/ms-windows/Installer-Files/sidelogomaster.xcf.bz2 deleted file mode 100644 index 16b6b71e66a8d8b82d5d2eae06feb520cbc405a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199014 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�Ms}<+GZj+mJME?57`fZ#! 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 diff --git a/ms-windows/QGIS-Installer.nsi b/ms-windows/QGIS-Installer.nsi deleted file mode 100644 index 892a7083aa93..000000000000 --- a/ms-windows/QGIS-Installer.nsi +++ /dev/null @@ -1,569 +0,0 @@ -;-------------------------------------------------------------------------- -; QGIS-Installer.nsi - QGIS Installer for Windows -; --------------------- -; Date : September 2008 -; Copyright : (C) 2008 by Marco Pasetti -; Email : marco dot pasetti at alice dot it -;-------------------------------------------------------------------------- -; # -; This program is free software; you can redistribute it and/or modify # -; it under the terms of the GNU General Public License as published by # -; the Free Software Foundation; either version 2 of the License, or # -; (at your option) any later version. # -; # -;-------------------------------------------------------------------------- - -;Extended for creatensis.pl by Jürgen E. Fischer - -;---------------------------------------------------------------------------------------------------------------------------- - -; Added by Tim to get optimal compression -SetCompressor /SOLID lzma - -; Added by Tim to allow privilege elevation in vista -RequestExecutionLevel admin - -;---------------------------------------------------------------------------------------------------------------------------- - -;NSIS Includes - -!include "x64.nsh" -!include "MUI.nsh" -!include "LogicLib.nsh" - -;---------------------------------------------------------------------------------------------------------------------------- - -;Set the installer variables, depending on the selected version to build - -!addplugindir osgeo4w/untgz -!addplugindir osgeo4w/nsis -!addplugindir osgeo4w/inetc - -;---------------------------------------------------------------------------------------------------------------------------- - -;Publisher variables - -!define PUBLISHER "QGIS Development Team" -!define WEB_SITE "https://qgis.org" -!define WIKI_PAGE "https://qgis.org/en/docs/" - -;---------------------------------------------------------------------------------------------------------------------------- - -;General Definitions - -;Name of the application shown during install -Name "${DISPLAYED_NAME}" - -;Name of the output file (installer executable) -OutFile "${INSTALLER_NAME}" - -;Tell the installer to show Install and Uninstall details as default -ShowInstDetails hide -ShowUnInstDetails hide - -;---------------------------------------------------------------------------------------------------------------------------- - -; .onInit Function (called when the installer is nearly finished initializing) - -; Check if QGIS is already installed on the system and, if yes, what version and binary release; -; depending on that, select the install procedure: - -; 1. first installation = if QGIS is not already installed -; install QGIS asking for the install PATH - -; 2. upgrade installation = if an older release of QGIS is already installed -; call the uninstaller of the currently installed QGIS release -; if the uninstall procedure succeeded, call the current installer without asking for the install PATH -; QGIS will be installed in the same PATH of the previous installation - -; 3. downgrade installation = if a newer release of QGIS is already installed -; call the uninstaller of the currently installed QGIS release -; if the uninstall procedure succeeded, call the current installer without asking for the install PATH -; QGIS will be installed in the same PATH of the previous installation - -; 4. repair installation = if the same release of QGIS is already installed -; call the uninstaller of the currently installed QGIS release -; if the uninstall procedure succeeded, call the current installer asking for the install PATH - -Function .onInit -!ifdef INNER - WriteUninstaller "${UNINSTALLERDEST}\uninstall.exe" - Quit -!endif - ${If} ${ARCH} == "x86_64" - ${If} ${RunningX64} - DetailPrint "Installer running on 64-bit host" - ; disable registry redirection (enable access to 64-bit portion of registry) - SetRegView 64 - ; change install dir - ${If} $INSTDIR == "" - StrCpy $INSTDIR "$PROGRAMFILES64\${QGIS_BASE}" - ${EndIf} - ${EndIf} - ${EndIf} - - ${If} $INSTDIR == "" - StrCpy $INSTDIR "$PROGRAMFILES\${QGIS_BASE}" - ${EndIf} - - Var /GLOBAL ASK_FOR_PATH - StrCpy $ASK_FOR_PATH "YES" - - Var /GLOBAL UNINSTALL_STRING - Var /GLOBAL INSTALL_PATH - - Var /GLOBAL INSTALLED_VERSION_NUMBER - Var /GLOBAL INSTALLED_SVN_REVISION - Var /GLOBAL INSTALLED_BINARY_REVISION - - Var /GLOBAL INSTALLED_VERSION_INT - - Var /GLOBAL DISPLAYED_INSTALLED_VERSION - - Var /GLOBAL MESSAGE_0_ - Var /GLOBAL MESSAGE_1_ - Var /GLOBAL MESSAGE_2_ - Var /GLOBAL MESSAGE_3_ - - ReadRegStr $UNINSTALL_STRING HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${QGIS_BASE}" "UninstallString" - ReadRegStr $INSTALL_PATH HKLM "Software\${QGIS_BASE}" "InstallPath" - ReadRegStr $INSTALLED_VERSION_NUMBER HKLM "Software\${QGIS_BASE}" "VersionNumber" - ReadRegStr $INSTALLED_BINARY_REVISION HKLM "Software\${QGIS_BASE}" "BinaryRevision" - - ReadRegStr $INSTALLED_VERSION_INT HKLM "Software\${QGIS_BASE}" "VersionInt" - ${If} $INSTALLED_VERSION_INT == "" - # First using new scheme: 1080001 - # Previous: SvnRevision 14615 + BinaryRevision 0 - ReadRegStr $INSTALLED_SVN_REVISION HKLM "Software\${QGIS_BASE}" "SvnRevision" - IntOp $INSTALLED_VERSION_INT $INSTALLED_SVN_REVISION + $INSTALLED_BINARY_REVISION - ${EndIf} - - StrCpy $MESSAGE_0_ "${QGIS_BASE} is already installed on your system.$\r$\n" - StrCpy $MESSAGE_0_ "$MESSAGE_0_$\r$\n" - - ${If} $INSTALLED_BINARY_REVISION == "" - StrCpy $DISPLAYED_INSTALLED_VERSION "$INSTALLED_VERSION_NUMBER" - ${Else} - StrCpy $DISPLAYED_INSTALLED_VERSION "$INSTALLED_VERSION_NUMBER-$INSTALLED_BINARY_REVISION" - ${EndIf} - - StrCpy $MESSAGE_0_ "$MESSAGE_0_The installed release is $DISPLAYED_INSTALLED_VERSION$\r$\n" - - StrCpy $MESSAGE_1_ "$MESSAGE_0_$\r$\n" - StrCpy $MESSAGE_1_ "$MESSAGE_1_You are going to install a newer release of ${QGIS_BASE}$\r$\n" - StrCpy $MESSAGE_1_ "$MESSAGE_1_$\r$\n" - StrCpy $MESSAGE_1_ "$MESSAGE_1_Press OK to uninstall QGIS $DISPLAYED_INSTALLED_VERSION" - StrCpy $MESSAGE_1_ "$MESSAGE_1_ and install ${DISPLAYED_NAME} or Cancel to quit." - - StrCpy $MESSAGE_2_ "$MESSAGE_0_$\r$\n" - StrCpy $MESSAGE_2_ "$MESSAGE_2_You are going to install an older release of ${QGIS_BASE}$\r$\n" - StrCpy $MESSAGE_2_ "$MESSAGE_2_$\r$\n" - StrCpy $MESSAGE_2_ "$MESSAGE_2_Press OK to uninstall QGIS $DISPLAYED_INSTALLED_VERSION" - StrCpy $MESSAGE_2_ "$MESSAGE_2_ and install ${DISPLAYED_NAME} or Cancel to quit." - - StrCpy $MESSAGE_3_ "$MESSAGE_0_$\r$\n" - StrCpy $MESSAGE_3_ "$MESSAGE_3_This is the latest release available.$\r$\n" - StrCpy $MESSAGE_3_ "$MESSAGE_3_$\r$\n" - StrCpy $MESSAGE_3_ "$MESSAGE_3_Press OK to reinstall ${DISPLAYED_NAME} or Cancel to quit." - - ${If} $INSTALLED_VERSION_INT = 0 - ${Else} - ${If} $INSTALLED_VERSION_INT < ${VERSION_INT} - MessageBox MB_OKCANCEL "$MESSAGE_1_" IDOK upgrade IDCANCEL quit_upgrade - upgrade: - StrCpy $ASK_FOR_PATH "NO" - ExecWait '"$UNINSTALL_STRING" _?=$INSTALL_PATH' $0 - Goto continue_upgrade - quit_upgrade: - Abort - continue_upgrade: - ${ElseIf} $INSTALLED_VERSION_INT > ${VERSION_INT} - MessageBox MB_OKCANCEL "$MESSAGE_2_" IDOK downgrade IDCANCEL quit_downgrade - downgrade: - StrCpy $ASK_FOR_PATH "NO" - ExecWait '"$UNINSTALL_STRING" _?=$INSTALL_PATH' $0 - Goto continue_downgrade - quit_downgrade: - Abort - continue_downgrade: - ${ElseIf} $INSTALLED_VERSION_INT = ${VERSION_INT} - MessageBox MB_OKCANCEL "$MESSAGE_3_" IDOK reinstall IDCANCEL quit_reinstall - reinstall: - ExecWait '"$UNINSTALL_STRING" _?=$INSTALL_PATH' $0 - Goto continue_reinstall - quit_reinstall: - Abort - continue_reinstall: - ${EndIf} - - ${If} $0 = 0 - ${Else} - Abort - ${EndIf} - ${EndIf} -FunctionEnd - -;---------------------------------------------------------------------------------------------------------------------------- - -;CheckUpdate Function -;Check if to show the MUI_PAGE_DIRECTORY during the installation (to ask for the install PATH) - -Function CheckUpdate - - ${If} $ASK_FOR_PATH == "NO" - Abort - ${EndIf} - -FunctionEnd - -;---------------------------------------------------------------------------------------------------------------------------- - -;Interface Settings - -!define MUI_ABORTWARNING -!define MUI_ICON ".\Installer-Files\Install_QGIS.ico" -!define MUI_UNICON ".\Installer-Files\Uninstall_QGIS.ico" -!define MUI_HEADERIMAGE_BITMAP_NOSTETCH ".\Installer-Files\InstallHeaderImage.bmp" -!define MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH ".\Installer-Files\UnInstallHeaderImage.bmp" -!define MUI_WELCOMEFINISHPAGE_BITMAP ".\Installer-Files\WelcomeFinishPage.bmp" -!define MUI_UNWELCOMEFINISHPAGE_BITMAP ".\Installer-Files\WelcomeFinishPage.bmp" - -;---------------------------------------------------------------------------------------------------------------------------- - -;Installer Pages - -!define MUI_WELCOMEPAGE_TITLE_3LINES -!insertmacro MUI_PAGE_WELCOME -!insertmacro MUI_PAGE_LICENSE ${LICENSE_FILE} - -!define MUI_PAGE_CUSTOMFUNCTION_PRE CheckUpdate -!insertmacro MUI_PAGE_DIRECTORY - -!insertmacro MUI_PAGE_COMPONENTS -!insertmacro MUI_PAGE_INSTFILES -!define MUI_FINISHPAGE_TITLE_3LINES -!insertmacro MUI_PAGE_FINISH - -!insertmacro MUI_UNPAGE_WELCOME -!insertmacro MUI_UNPAGE_CONFIRM -!insertmacro MUI_UNPAGE_INSTFILES -!insertmacro MUI_UNPAGE_FINISH - -;---------------------------------------------------------------------------------------------------------------------------- - -; Language files -!insertmacro MUI_LANGUAGE "English" -!insertmacro MUI_LANGUAGE "German" -!insertmacro MUI_LANGUAGE "French" -!insertmacro MUI_LANGUAGE "Russian" -!insertmacro MUI_LANGUAGE "Japanese" -!insertmacro MUI_LANGUAGE "Italian" -!insertmacro MUI_LANGUAGE "Polish" -!insertmacro MUI_LANGUAGE "Spanish" -!insertmacro MUI_LANGUAGE "PortugueseBR" -!insertmacro MUI_LANGUAGE "Portuguese" -!insertmacro MUI_LANGUAGE "Czech" -!insertmacro MUI_LANGUAGE "Croatian" -!insertmacro MUI_LANGUAGE "Thai" -!insertmacro MUI_LANGUAGE "Dutch" - -;---------------------------------------------------------------------------------------------------------------------------- - -;Installer Sections - -;Declares the variables for optional Sample Data Sections -Var /GLOBAL HTTP_PATH -Var /GLOBAL ARCHIVE_NAME -Var /GLOBAL EXTENDED_ARCHIVE_NAME -Var /GLOBAL ORIGINAL_UNTAR_FOLDER -Var /GLOBAL CUSTOM_UNTAR_FOLDER -Var /GLOBAL ARCHIVE_SIZE_KB -Var /GLOBAL ARCHIVE_SIZE_MB -Var /GLOBAL DOWNLOAD_MESSAGE_ - -!ifndef INNER -Section "QGIS" SecQGIS - SectionIn RO - - ;Added by Tim to set the reg key so we get default plugin loading - !include plugins.nsh - ;Added by Tim to set the reg key so we get default python & py plugins - !include python_plugins.nsh - - ;Set the INSTALL_DIR variable - Var /GLOBAL INSTALL_DIR - - ${If} $ASK_FOR_PATH == "NO" - StrCpy $INSTALL_DIR "$INSTALL_PATH" - ${Else} - StrCpy $INSTALL_DIR "$INSTDIR" - ${EndIf} - - ;Set to try to overwrite existing files - SetOverwrite try - - ;Set the GIS_DATABASE directory - SetShellVarContext current - Var /GLOBAL GIS_DATABASE - StrCpy $GIS_DATABASE "$DOCUMENTS\GIS DataBase" - - ;Create the GIS_DATABASE directory - CreateDirectory "$GIS_DATABASE" - - ;add Installer files - SetOutPath "$INSTALL_DIR\icons" - File .\Installer-Files\QGIS.ico - File .\Installer-Files\QGIS_Web.ico - SetOutPath "$INSTALL_DIR" - File .\Installer-Files\postinstall.bat - File .\Installer-Files\preremove.bat - - ;add QGIS files - SetOutPath "$INSTALL_DIR" - File /r ${PACKAGE_FOLDER}\*.* - -!ifndef INNER - SetOutPath $INSTDIR - File uninstall.exe -!endif - - ;Registry Key Entries - - ;HKEY_LOCAL_MACHINE Install entries - ;Set the Name, Version and Revision of QGIS+ PublisherInfo + InstallPath - WriteRegStr HKLM "Software\${QGIS_BASE}" "Name" "${QGIS_BASE}" - WriteRegStr HKLM "Software\${QGIS_BASE}" "VersionNumber" "${VERSION_NUMBER}" - WriteRegStr HKLM "Software\${QGIS_BASE}" "VersionName" "${VERSION_NAME}" - WriteRegStr HKLM "Software\${QGIS_BASE}" "VersionInt" "${VERSION_INT}" - WriteRegStr HKLM "Software\${QGIS_BASE}" "BinaryRevision" "${BINARY_REVISION}" - WriteRegStr HKLM "Software\${QGIS_BASE}" "Publisher" "${PUBLISHER}" - WriteRegStr HKLM "Software\${QGIS_BASE}" "WebSite" "${WEB_SITE}" - WriteRegStr HKLM "Software\${QGIS_BASE}" "InstallPath" "$INSTALL_DIR" - - ;HKEY_LOCAL_MACHINE Uninstall entries - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${QGIS_BASE}" "DisplayName" "${DISPLAYED_NAME}" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${QGIS_BASE}" "DisplayVersion" "${VERSION_NUMBER}" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${QGIS_BASE}" "UninstallString" "$INSTALL_DIR\uninstall.exe" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${QGIS_BASE}" "DisplayIcon" "$INSTALL_DIR\icons\QGIS.ico" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${QGIS_BASE}" "EstimatedSize" 1 - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${QGIS_BASE}" "HelpLink" "${WIKI_PAGE}" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${QGIS_BASE}" "URLInfoAbout" "${WEB_SITE}" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${QGIS_BASE}" "Publisher" "${PUBLISHER}" - - ;Create the Desktop Shortcut - SetShellVarContext current - - ;Create the Windows Start Menu Shortcuts - SetShellVarContext all - - CreateDirectory "$SMPROGRAMS\${QGIS_BASE}" - - GetFullPathName /SHORT $0 $INSTALL_DIR - System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("OSGEO4W_ROOT", "$0").r0' - System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("OSGEO4W_STARTMENU", "$SMPROGRAMS\${QGIS_BASE}").r0' - System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("OSGEO4W_DESKTOP", "$DESKTOP\${QGIS_BASE}").r0' - System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("OSGEO4W_MENU_LINKS", "1").r0' - System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("OSGEO4W_DESKTOP_LINKS", "1").r0' - - ReadEnvStr $0 COMSPEC - nsExec::ExecToLog '"$0" /c "$INSTALL_DIR\postinstall.bat"' - - IfFileExists "$INSTALL_DIR\etc\reboot" RebootNecessary NoRebootNecessary - -RebootNecessary: - IfSilent FlagRebootNecessary - SetRebootFlag true - Return - -FlagRebootNecessary: - SetErrorLevel 3010 ; ERROR_SUCCESS_REBOOT_REQUIRED - Return - -NoRebootNecessary: - Return - -SectionEnd -!endif - -Function DownloadDataSet - - IntOp $ARCHIVE_SIZE_MB $ARCHIVE_SIZE_KB / 1024 - - StrCpy $DOWNLOAD_MESSAGE_ "The installer will download the $EXTENDED_ARCHIVE_NAME sample data set.$\r$\n" - StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_$\r$\n" - StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_The archive is about $ARCHIVE_SIZE_MB MB and may take" - StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_ several minutes to be downloaded.$\r$\n" - StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_$\r$\n" - StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_The $EXTENDED_ARCHIVE_NAME will be copied to:$\r$\n" - StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_$GIS_DATABASE\$CUSTOM_UNTAR_FOLDER.$\r$\n" - StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_$\r$\n" - StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_Press OK to continue or Cancel to skip the download and complete the ${QGIS_BASE}" - StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_ installation without the $EXTENDED_ARCHIVE_NAME data set.$\r$\n" - - MessageBox MB_OKCANCEL "$DOWNLOAD_MESSAGE_" IDOK download IDCANCEL cancel_download - - download: - SetShellVarContext current - InitPluginsDir - inetc::get /caption "$ARCHIVE_NAME" /canceltext "Cancel" "$HTTP_PATH/$ARCHIVE_NAME" "$TEMP\$ARCHIVE_NAME" /end - Pop $0 # return value = exit code, "OK" means OK - StrCmp $0 "OK" download_ok download_failed - - download_ok: - InitPluginsDir - untgz::extract "-d" "$GIS_DATABASE" "$TEMP\$ARCHIVE_NAME" - Pop $0 - StrCmp $0 "success" untar_ok untar_failed - - untar_ok: - Rename "$GIS_DATABASE\$ORIGINAL_UNTAR_FOLDER" "$GIS_DATABASE\$CUSTOM_UNTAR_FOLDER" - Delete "$TEMP\$ARCHIVE_NAME" - Goto end - - download_failed: - DetailPrint "$0" ;print error message to log - MessageBox MB_OK "Download Failed.$\r$\n${QGIS_BASE} will be installed without the $EXTENDED_ARCHIVE_NAME sample data set." - Goto end - - cancel_download: - MessageBox MB_OK "Download Canceled.$\r$\n${QGIS_BASE} will be installed without the $EXTENDED_ARCHIVE_NAME sample data set." - Goto end - - untar_failed: - DetailPrint "$0" ;print error message to log - - end: - -FunctionEnd - -Section /O "North Carolina Data Set" SecNorthCarolinaSDB - - ;Set the size (in KB) of the archive file - StrCpy $ARCHIVE_SIZE_KB 138629 - - ;Set the size (in KB) of the unpacked archive file - AddSize 293314 - - StrCpy $HTTP_PATH "https://grass.osgeo.org/sampledata" - StrCpy $ARCHIVE_NAME "nc_spm_latest.tar.gz" - StrCpy $EXTENDED_ARCHIVE_NAME "North Carolina" - StrCpy $ORIGINAL_UNTAR_FOLDER "nc_spm_08" - StrCpy $CUSTOM_UNTAR_FOLDER "North-Carolina" - - Call DownloadDataSet - -SectionEnd - -Section /O "South Dakota (Spearfish) Data Set" SecSpearfishSDB - - ;Set the size (in KB) of the archive file - StrCpy $ARCHIVE_SIZE_KB 20803 - - ;Set the size (in KB) of the unpacked archive file - AddSize 42171 - - StrCpy $HTTP_PATH "https://grass.osgeo.org/sampledata" - StrCpy $ARCHIVE_NAME "spearfish_grass60data-0.3.tar.gz" - StrCpy $EXTENDED_ARCHIVE_NAME "South Dakota (Spearfish)" - StrCpy $ORIGINAL_UNTAR_FOLDER "spearfish60" - StrCpy $CUSTOM_UNTAR_FOLDER "Spearfish60" - - Call DownloadDataSet - -SectionEnd - -Section /O "Alaska Data Set" SecAlaskaSDB - - ;Set the size (in KB) of the archive file - StrCpy $ARCHIVE_SIZE_KB 10253 - - ;Set the size (in KB) of the unpacked archive file - AddSize 33914 - - StrCpy $HTTP_PATH "https://qgis.org/downloads/data" - StrCpy $ARCHIVE_NAME "qgis_sample_data.tar.gz" - StrCpy $EXTENDED_ARCHIVE_NAME "Alaska" - StrCpy $ORIGINAL_UNTAR_FOLDER "qgis_sample_data" - StrCpy $CUSTOM_UNTAR_FOLDER "Alaska" - - Call DownloadDataSet - -SectionEnd - -;---------------------------------------------------------------------------------------------------------------------------- - -;Uninstaller Section - -!ifdef INNER -Section "Uninstall" - ${If} ${ARCH} == "x86_64" - ${If} ${RunningX64} - DetailPrint "Installer running on 64-bit host" - ; disable registry redirection (enable access to 64-bit portion of registry) - SetRegView 64 - ${EndIf} - ${EndIf} - - GetFullPathName /SHORT $0 $INSTDIR - System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("OSGEO4W_ROOT", "$0").r0' - System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("OSGEO4W_STARTMENU", "$SMPROGRAMS\${QGIS_BASE}").r0' - System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("OSGEO4W_DESKTOP", "$DESKTOP\${QGIS_BASE}").r0' - System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("OSGEO4W_MENU_LINKS", "1").r0' - System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("OSGEO4W_DESKTOP_LINKS", "1").r0' - - ReadEnvStr $0 COMSPEC - nsExec::ExecToLog '"$0" /c "$INSTDIR\preremove.bat"' - - Delete "$INSTDIR\uninstall.exe" - Delete "$INSTDIR\*.bat.done" - Delete "$INSTDIR\*.log" - Delete "$INSTDIR\*.txt" - Delete "$INSTDIR\*.ico" - Delete "$INSTDIR\*.bat" - Delete "$INSTDIR\*.dll" - - RMDir /r "$INSTDIR\bin" - RMDir /r "$INSTDIR\apps" - RMDir /r "$INSTDIR\etc" - RMDir /r "$INSTDIR\include" - RMDir /r "$INSTDIR\lib" - RMDir /r "$INSTDIR\share" - RMDir /r "$INSTDIR\icons" - RMDir /r "$INSTDIR\src" - RMDir /r "$INSTDIR\contrib" - RMDir /r "$INSTDIR\manifest" - RMDir /r "$INSTDIR\man" - - ;if empty, remove the install folder - RMDir "$INSTDIR" - - ;remove the Desktop ShortCut - SetShellVarContext all - Delete "$DESKTOP\${QGIS_BASE}\QGIS Desktop (${VERSION_NUMBER}).lnk" - Delete "$DESKTOP\${QGIS_BASE}\QGIS Browser (${VERSION_NUMBER}).lnk" - Delete "$DESKTOP\${QGIS_BASE}\OSGeo4W.lnk" - RmDir "$DESKTOP\${QGIS_BASE}" - - ;remove the Programs Start ShortCut - SetShellVarContext all - RMDir /r "$SMPROGRAMS\${QGIS_BASE}" - - ;remove the Registry Entries - DeleteRegKey HKLM "Software\${QGIS_BASE}" - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${QGIS_BASE}" -SectionEnd -!endif - -;---------------------------------------------------------------------------------------------------------------------------- - -!ifndef INNER -;Installer Section Descriptions -!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN - !insertmacro MUI_DESCRIPTION_TEXT ${SecQGIS} "Install ${QGIS_BASE}" - !insertmacro MUI_DESCRIPTION_TEXT ${SecNorthCarolinaSDB} "Download and install the North Carolina sample data set" - !insertmacro MUI_DESCRIPTION_TEXT ${SecSpearfishSDB} "Download and install the South Dakota (Spearfish) sample data set" - !insertmacro MUI_DESCRIPTION_TEXT ${SecAlaskaSDB} "Download and install the Alaska sample database (shapefiles and TIFF data)" -!insertmacro MUI_FUNCTION_DESCRIPTION_END -!endif - -;---------------------------------------------------------------------------------------------------------------------------- diff --git a/ms-windows/osgeo4w/configonly.bat b/ms-windows/osgeo4w/configonly.bat deleted file mode 100644 index ee2aa6254187..000000000000 --- a/ms-windows/osgeo4w/configonly.bat +++ /dev/null @@ -1,46 +0,0 @@ -@echo off -REM *************************************************************************** -REM configonly.cmd -REM --------------------- -REM begin : June 2018 -REM copyright : (C) 2018 by Juergen E. Fischer -REM email : jef at norbit dot de -REM *************************************************************************** -REM * * -REM * This program is free software; you can redistribute it and/or modify * -REM * it under the terms of the GNU General Public License as published by * -REM * the Free Software Foundation; either version 2 of the License, or * -REM * (at your option) any later version. * -REM * * -REM *************************************************************************** - -set ARCH=%1 -if "%ARCH%"=="x86" ( - set CMAKEGEN=Visual Studio 14 2015 -) else ( - set CMAKEGEN=Visual Studio 14 2015 Win64 - set ARCH=x86_64 -) - -set CONFIGONLY=1 - -setlocal enabledelayedexpansion - -for /f "tokens=*" %%L in (..\..\CMakeLists.txt) do ( - set L=%%L - set V=!L:SET(CPACK_PACKAGE_VERSION_=! - if not !V!==!L! ( - set V=!V:"=! - set V=!V:^)=! - set _major=!V:MAJOR =! - set _minor=!V:MINOR =! - set _patch=!V:PATCH =! - if not !_major!==!V! set MAJOR=!_major! - if not !_minor!==!V! set MINOR=!_minor! - if not !_patch!==!V! set PATCH=!_patch! - ) -) - -package-nightly.cmd %MAJOR%.%MINOR%.%PATCH% 99 qgis-test %ARCH% - -endlocal diff --git a/ms-windows/osgeo4w/creatensis.pl b/ms-windows/osgeo4w/creatensis.pl deleted file mode 100755 index 81d349d7989f..000000000000 --- a/ms-windows/osgeo4w/creatensis.pl +++ /dev/null @@ -1,567 +0,0 @@ -#!/usr/bin/env perl -# creates a NSIS installer from OSGeo4W packages -# note: works also on Unix - -# Copyright (C) 2010 Jürgen E. Fischer - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# -# Download OSGeo4W packages -# - -BEGIN { - # ignore requireAdministrator execution level while producing the - # uninstaller - $ENV{"__COMPAT_LAYER"} = 'RUNASINVOKER'; -} - -use strict; -use warnings; -use Getopt::Long; -use Pod::Usage; - -my $keep = 0; -my $verbose = 0; - -my $packagename = "QGIS"; -my $releasename; -my $shortname = "qgis"; -my $version; -my $binary; -my $root = "http://download.osgeo.org/osgeo4w"; -my $ininame = "setup.ini"; -my $arch = "x86_64"; -my $signwith; -my $signpass; -my $help; - -my $result = GetOptions( - "verbose+" => \$verbose, - "keep" => \$keep, - "signwith=s" => \$signwith, - "signpass=s" => \$signpass, - "releasename=s" => \$releasename, - "version=s" => \$version, - "binary=i" => \$binary, - "packagename=s" => \$packagename, - "shortname=s" => \$shortname, - "ininame=s" => \$ininame, - "mirror=s" => \$root, - "arch=s" => \$arch, - "help" => \$help - ); - -die "certificate not found" if defined $signwith && ! -f $signwith; - -pod2usage(1) if $help; - -my $wgetopt = $verbose ? "" : "-nv"; - -unless(-f "nsis/System.dll") { - mkdir "nsis", 0755 unless -d "nsis"; - system "wget $wgetopt -Onsis/System.dll http://qgis.org/downloads/System.dll"; - die "download of System.dll failed" if $?; -} - -my $archpath = $arch eq "" ? "" : "/$arch"; -my $archpostfix = $arch eq "" ? "" : "-$arch"; -my $unpacked = "unpacked" . ($arch eq "" ? "" : "-$arch"); -my $packages = "packages" . ($arch eq "" ? "" : "-$arch"); - -mkdir $packages, 0755 unless -d $packages; -chdir $packages; - -system "wget $wgetopt -c http://qgis.org/downloads/Untgz.zip" unless -f "Untgz.zip"; -die "download of Untgz.zip failed" if $?; - -system "wget $wgetopt -c https://qgis.org/downloads/Inetc.zip" unless -f "Inetc.zip"; -die "download of Inetc.zip failed" if $?; - -my %dep; -my %file; -my %lic; -my %sdesc; -my %md5; -my $package; - -system "wget $wgetopt -O setup.ini $root$archpath/$ininame"; -die "download of setup.ini failed" if $?; -open F, "setup.ini" || die "setup.ini not found"; -while() { - my $file; - my $md5; - - chop; - if(/^@ (\S+)/) { - $package = $1; - } elsif( /^requires: (.*)$/ ) { - @{$dep{$package}} = split / /, $1; - } elsif( ($file,$md5) = /^install:\s+(\S+)\s+.*\s+(\S+)$/) { - $file{$package} = $file unless exists $file{$package}; - $file =~ s/^.*\///; - $md5{$file} = $md5 unless exists $md5{$file}; - } elsif( ($file,$md5) = /^license:\s+(\S+)\s+.*\s+(\S+)$/) { - $lic{$package} = $file unless exists $lic{$package}; - $file =~ s/^.*\///; - $md5{$file} = $md5 unless exists $md5{$file}; - } elsif( /^sdesc:\s*"(.*)"\s*$/) { - $sdesc{$package} = $1 unless exists $sdesc{$package}; - } -} -close F; - -my %pkgs; - -sub getDeps { - my $pkg = shift; - - my $deponly = $pkg =~ /-$/; - $pkg =~ s/-$//; - - unless($deponly) { - return if exists $pkgs{$pkg}; - print " Including package $pkg\n" if $verbose; - $pkgs{$pkg} = 1; - } elsif( exists $pkgs{$pkg} ) { - print " Excluding package $pkg\n" if $verbose; - delete $pkgs{$pkg}; - return; - } else { - print " Including dependencies of package $pkg\n" if $verbose; - } - - foreach my $p ( @{ $dep{$pkg} } ) { - getDeps($p); - } -} - -unless(@ARGV) { - print "Defaulting to qgis-full package...\n" if $verbose; - push @ARGV, "qgis-full"; -} - -getDeps($_) for @ARGV; - -if(-f "../addons/bin/NCSEcw4_RO.dll") { - print "Enabling ECW support...\n" if $verbose; - getDeps("gdal-ecw") -} - -my @lic; -my @desc; -foreach my $p ( keys %pkgs ) { - my @f; - unless( exists $file{$p} ) { - print "No file for package $p found.\n" if $verbose; - next; - } - push @f, "$root/$file{$p}"; - - if( exists $lic{$p} ) { - push @f, "$root/$lic{$p}"; - my($l) = $lic{$p} =~ /([^\/]+)$/; - push @lic, $l; - push @desc, $sdesc{$p}; - } - - for my $f (@f) { - $f =~ s/\/\.\//\//g; - - my($file) = $f =~ /([^\/]+)$/; - - next if -f $file; - - print "Downloading $file [$f]...\n" if $verbose; - system "wget $wgetopt -c $f"; - die "download of $f failed" if $? or ! -f $file; - - if( exists $md5{$file} ) { - my $md5; - open F, "md5sum '$file'|"; - while() { - if( /^(\S+)\s+\*?(.*)$/ && $2 eq $file ) { - $md5 = $1; - } - } - close F; - - die "No md5sum of $p determined [$file]" unless defined $md5; - if( $md5 eq $md5{$file} ) { - print "md5sum of $file verified.\n" if $verbose; - } else { - die "md5sum mismatch for $file [$md5 vs $md5{$file{$p}}]" - } - } - else - { - die "md5sum for $file not found.\n"; - } - } -} - -chdir ".."; - -# -# Unpack them -# Add nircmd -# Add addons -# - -if( -d $unpacked ) { - unless( $keep ) { - print "Removing $unpacked directory\n" if $verbose; - system "rm -rf $unpacked"; - } else { - print "Keeping $unpacked directory\n" if $verbose; - } -} - -my $taropt = "v" x $verbose; - -unless(-d $unpacked ) { - mkdir "$unpacked", 0755; - mkdir "$unpacked/bin", 0755; - mkdir "$unpacked/etc", 0755; - mkdir "$unpacked/etc/setup", 0755; - - # Create package database - open O, ">$unpacked/etc/setup/installed.db"; - print O "INSTALLED.DB 2\n"; - - foreach my $pn ( keys %pkgs ) { - my $p = $file{$pn}; - unless( defined $p ) { - print "No package found for $pn\n" if $verbose; - next; - } - - $p =~ s#^.*/#$packages/#; - - unless( -r $p ) { - print "Package $p not found.\n" if $verbose; - next; - } - - print O "$pn $p 0\n"; - - print "Unpacking $p...\n" if $verbose; - system "bash -c 'tar $taropt -C $unpacked -xjvf $p | gzip -c >$unpacked/etc/setup/$pn.lst.gz && [ \${PIPESTATUS[0]} == 0 -a \${PIPESTATUS[1]} == 0 ]'"; - die "unpacking of $p failed" if $?; - } - - close O; - - chdir $unpacked; - - mkdir "bin", 0755; - - unless( -f "bin/nircmd.exe" ) { - unless( -f "../$packages/nircmd.zip" ) { - system "cd ../$packages; wget $wgetopt -c http://www.nirsoft.net/utils/nircmd.zip"; - die "download of nircmd.zip failed" if $?; - } - - mkdir "apps", 0755; - mkdir "apps/nircmd", 0755; - system "cd apps/nircmd; unzip ../../../$packages/nircmd.zip && mv nircmd.exe nircmdc.exe ../../bin"; - die "unpacking of nircmd failed" if $?; - } - - if( -d "../addons" ) { - print " Including addons...\n" if $verbose; - system "tar -C ../addons -cf - . | tar $taropt -xf -"; - die "copying of addons failed" if $?; - } - - chdir ".."; -} - -my($major, $minor, $patch); - -open F, "../../CMakeLists.txt"; -while() { - if(/SET\(CPACK_PACKAGE_VERSION_MAJOR "(\d+)"\)/i) { - $major = $1; - } elsif(/SET\(CPACK_PACKAGE_VERSION_MINOR "(\d+)"\)/i) { - $minor = $1; - } elsif(/SET\(CPACK_PACKAGE_VERSION_PATCH "(\d+)"\)/i) { - $patch = $1; - } elsif(/SET\(RELEASE_NAME "(.+)"\)/i) { - $releasename = $1 unless defined $releasename; - } -} -close F; - -$version = "$major.$minor.$patch" unless defined $version; - -my($pmajor,$pminor,$ppatch) = $version =~ /^(\d+)\.(\d+)\.(\d+)$/; -die "Invalid version $version" unless defined $ppatch; - -unless( defined $binary ) { - if( -f "binary$archpostfix-$version" ) { - open P, "binary$archpostfix-$version"; - $binary =

; - close P; - $binary++; - } else { - $binary = 1; - } -} - -# -# Create postinstall.bat -# - -open F, ">../Installer-Files/postinstall.bat"; - -my $r = ">>postinstall.log 2>&1\r\n"; - -print F "\@echo off\r\n"; -print F "if exist postinstall.log del postinstall.log\r\n"; -print F "set OSGEO4W_ROOT_MSYS=%OSGEO4W_ROOT:\\=/%$r"; -print F "if \"%OSGEO4W_ROOT_MSYS:~1,1%\"==\":\" set OSGEO4W_ROOT_MSYS=/%OSGEO4W_ROOT_MSYS:~0,1%/%OSGEO4W_ROOT_MSYS:~3%$r"; - -print F "del preremove-conf.bat$r"; -my $c = ">>preremove-conf.bat\r\n"; -print F "echo set OSGEO4W_ROOT=%OSGEO4W_ROOT%$c"; -print F "echo set OSGEO4W_ROOT_MSYS=%OSGEO4W_ROOT_MSYS%$c"; -print F "echo set OSGEO4W_STARTMENU=%OSGEO4W_STARTMENU%$c"; -print F "echo set OSGEO4W_DESKTOP=%OSGEO4W_DESKTOP%$c"; - -print F "echo OSGEO4W_ROOT=%OSGEO4W_ROOT%$r"; -print F "echo OSGEO4W_ROOT_MSYS=%OSGEO4W_ROOT_MSYS%$r"; -print F "echo OSGEO4W_STARTMENU=%OSGEO4W_STARTMENU%$r"; -print F "echo OSGEO4W_DESKTOP=%OSGEO4W_DESKTOP%$r"; -print F "PATH %OSGEO4W_ROOT%\\bin;%PATH%$r"; -print F "cd /d %OSGEO4W_ROOT%$r"; - -chdir $unpacked; -for my $p () { - $p =~ s/\//\\/g; - my($dir,$file) = $p =~ /^(.+)\\([^\\]+)$/; - - print F "echo Running postinstall $file...$r"; - print F "%COMSPEC% /c $p$r"; - print F "ren $p $file.done$r"; -} -chdir ".."; - -print F "ren postinstall.bat postinstall.bat.done$r"; - -close F; - -open F, ">../Installer-Files/preremove.bat"; - -$r = ">>%TEMP%\\$packagename-OSGeo4W-$version-$binary-preremove.log 2>&1\r\n"; - -print F "\@echo off\r\n"; -print F "call \"%~dp0\\preremove-conf.bat\"$r"; -print F "echo OSGEO4W_ROOT=%OSGEO4W_ROOT%$r"; -print F "echo OSGEO4W_STARTMENU=%OSGEO4W_STARTMENU%$r"; -print F "echo OSGEO4W_DESKTOP=%OSGEO4W_DESKTOP%$r"; -print F "set OSGEO4W_ROOT_MSYS=%OSGEO4W_ROOT:\\=/%$r"; -print F "if \"%OSGEO4W_ROOT_MSYS:~1,1%\"==\":\" set OSGEO4W_ROOT_MSYS=/%OSGEO4W_ROOT_MSYS:~0,1%/%OSGEO4W_ROOT_MSYS:~3%$r"; -print F "echo OSGEO4W_ROOT_MSYS=%OSGEO4W_ROOT_MSYS%$r"; -print F "PATH %OSGEO4W_ROOT%\\bin;%PATH%$r"; -print F "cd /d \"%OSGEO4W_ROOT%\"$r"; - -chdir $unpacked; -for my $p () { - $p =~ s/\//\\/g; - my($dir,$file) = $p =~ /^(.+)\\([^\\]+)$/; - - print F "echo Running preremove $file...$r"; - print F "%COMSPEC% /c $p$r"; - print F "ren $p $file.done$r"; -} -chdir ".."; - -print F "ren preremove.bat preremove.bat.done$r"; - -close F; - -unless(-d "untgz") { - system "unzip $packages/Untgz.zip"; - die "unpacking Untgz.zip failed" if $?; -} - -unless(-d "inetc") { - mkdir "inetc", 0755; - system "unzip -p $packages/Inetc.zip Plugins/x86-ansi/INetC.dll >inetc/INetC.dll"; - die "unpacking Inetc.zip failed" if $?; -} - -chdir ".."; - - -print "Creating license file\n" if $verbose; -open O, ">license.tmp"; -my $lic; -for my $l ( ( "osgeo4w/$unpacked/apps/$shortname/doc/LICENSE", "../COPYING", "./Installer-Files/LICENSE.txt" ) ) { - next unless -f $l; - $lic = $l; - last; -} - -die "no license found" unless defined $lic; - -my $i = 0; -if( @lic ) { - print O "License overview:\n"; - print O "1. QGIS\n"; - $i = 1; - for my $l ( @desc ) { - print O ++$i . ". $l\n"; - } - $i = 0; - print O "\n\n----------\n\n" . ++$i . ". License of 'QGIS'\n\n"; -} - -print " Including QGIS license $lic\n" if $verbose; -open I, $lic; -while() { - s/\s*$/\n/; - print O; -} -close I; - -for my $l (@lic) { - print " Including license $l\n" if $verbose; - - open I, "osgeo4w/$packages/$l" or die "License $l not found."; - print O "\n\n----------\n\n" . ++$i . ". License of '" . shift(@desc) . "'\n\n"; - while() { - s/\s*$/\n/; - print O; - } - close I; -} - -close O; - -my $license = "license.tmp"; -if( -f "osgeo4w/$unpacked/apps/$shortname/doc/LICENSE" ) { - open O, ">osgeo4w/$unpacked/apps/$shortname/doc/LICENSE"; - open I, $license; - while() { - print O; - } - close O; - close I; - - $license = "osgeo4w/$unpacked/apps/$shortname/doc/LICENSE"; -} - - -print "Running NSIS\n" if $verbose; - -my $installerbase = "$packagename-OSGeo4W-$version-$binary-Setup$archpostfix"; - -my $run; -my $instdest; - -if($^O eq "cygwin") { - $run = "cygstart "; - $instdest = `cygpath -w \$PWD`; -} else { - $run = "wine "; - $instdest = `winepath -w \$PWD`; -} - -$instdest =~ s/\s+$//; -$instdest =~ s/\\/\\\\/g; - - -my $args = ""; -$args .= " -V$verbose"; -$args .= " -DVERSION_NAME='$releasename'"; -$args .= " -DVERSION_NUMBER='$version'"; -$args .= " -DBINARY_REVISION=$binary"; -$args .= sprintf( " -DVERSION_INT='%d%02d%02d%02d'", $pmajor, $pminor, $ppatch, $binary ); -$args .= sprintf( " -DQGIS_BASE='$packagename %d.%d'", $pmajor, $pminor ); -$args .= " -DDISPLAYED_NAME=\"$packagename $version '$releasename'\""; -$args .= " -DPACKAGE_FOLDER=osgeo4w/$unpacked"; -$args .= " -DLICENSE_FILE='$license'"; -$args .= " -DARCH='$arch'"; -$args .= " QGIS-Installer.nsi"; - -sub sign { - my $base = shift; - - my $cmd = "osslsigncode sign"; - $cmd .= " -pkcs12 \"$signwith\""; - $cmd .= " -pass \"$signpass\"" if defined $signpass; - $cmd .= " -n \"$packagename $version '$releasename'\""; - $cmd .= " -h sha256"; - $cmd .= " -i \"https://qgis.org\""; - $cmd .= " -t \"http://timestamp.digicert.com\""; - $cmd .= " -in \"$base.exe\""; - $cmd .= " $base-signed.exe"; - system $cmd; - die "signing failed [$cmd]" if $?; - - rename("$base-signed.exe", "$base.exe") or die "rename failed: $!"; -} - -my $cmd; -unlink "makeuinst.exe"; -$cmd = "makensis -DINNER=1 -DUNINSTALLERDEST='$instdest' -DINSTALLER_NAME='makeuinst.exe' $args"; -system $cmd; -die "running makensis failed [$cmd]" if $?; -die "makeuinst.exe not created" unless -f "makeuinst.exe"; - -unlink "uninstall.exe"; -chmod 0755, "makeuinst.exe"; -system "${run}makeuinst.exe"; -sleep 5; -die "uninstall.exe not created" unless -f "uninstall.exe"; -unlink "makeuinst.exe"; - -sign "uninstall" if $signwith; - -$cmd = "makensis -DINSTALLER_NAME='$installerbase.exe' $args"; -system $cmd; -die "running makensis failed [$cmd]" if $?; - -sign "$installerbase" if $signwith; - -open P, ">osgeo4w/binary$archpostfix-$version"; -print P $binary; -close P; - -system "md5sum $installerbase.exe >$installerbase.exe.md5sum"; - -__END__ - -=head1 NAME - -creatensis.pl - create NSIS package from OSGeo4W packages - -=head1 SYNOPSIS - -creatensis.pl [options] [packages...] - - Options: - -verbose increase verbosity - -releasename=name name of release (defaults to CMakeLists.txt setting) - -keep don't start with a fresh unpacked directory - -signwith=cert.p12 optionally sign package with certificate (requires osslsigncode) - -signpass=password password of certificate - -version=m.m.p package version (defaults to CMakeLists.txt setting) - -binary=b binary version of package - -ininame=filename name of the setup.ini (defaults to setup.ini) - -packagename=s name of package (defaults to 'QGIS') - -shortname=s shortname used for batch file (defaults to 'qgis') - -mirror=s default mirror (defaults to 'http://download.osgeo.org/osgeo4w') - -arch=s architecture (x86 or x86_64; defaults to 'x86_64') - -help this help - - If no packages are given 'qgis-full' and it's dependencies will be retrieved - and packaged. - - Packages with a appended '-' are excluded, but their dependencies are included. -=cut diff --git a/ms-windows/osgeo4w/designer.bat.tmpl b/ms-windows/osgeo4w/designer.bat.tmpl deleted file mode 100644 index 6778fb445cf0..000000000000 --- a/ms-windows/osgeo4w/designer.bat.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -@echo off -call "%~dp0\o4w_env.bat" -call qt5_env.bat -call py3_env.bat -path %OSGEO4W_ROOT%\apps\@package@\bin;%PATH% -set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/@package@ -set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\@package@\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins -cd %USERPROFILE% -start "Qt Designer with QGIS custom widgets" /B "%OSGEO4W_ROOT%\apps\qt5\bin\designer.exe" %* diff --git a/ms-windows/osgeo4w/httpd.conf.tmpl b/ms-windows/osgeo4w/httpd.conf.tmpl deleted file mode 100644 index 382be280173d..000000000000 --- a/ms-windows/osgeo4w/httpd.conf.tmpl +++ /dev/null @@ -1,28 +0,0 @@ -LoadModule fcgid_module modules/mod_fcgid.so - -DefaultInitEnv O4W_QT_PREFIX "@osgeo4w@/apps/Qt5" -DefaultInitEnv O4W_QT_BINARIES "@osgeo4w@/apps/Qt5/bin" -DefaultInitEnv O4W_QT_PLUGINS "@osgeo4w@/apps/Qt5/plugins" -DefaultInitEnv O4W_QT_LIBRARIES "@osgeo4w@/apps/Qt5/lib" -DefaultInitEnv O4W_QT_TRANSLATIONS "@osgeo4w@/apps/Qt5/translations" -DefaultInitEnv O4W_QT_HEADERS "@osgeo4w@/apps/Qt5/include" -DefaultInitEnv O4W_QT_DOC "@osgeo4w@/apps/Qt5/doc" - -DefaultInitEnv PATH "@osgeo4w@\apps\qt5\bin;@osgeo4w@\bin;@osgeo4w@\apps\@package@\bin;@osgeo4w@\apps\grass\@grasspath@\bin;@osgeo4w@\apps\grass\@grasspath@\lib;@windir@\system32;@windir@;@windir@\System32\Wbem" -DefaultInitEnv QGIS_PREFIX_PATH "@osgeo4w@\apps\@package@" -DefaultInitEnv QT_PLUGIN_PATH "@osgeo4w@\apps\@package@\qtplugins;@osgeo4w@\apps\qt5\plugins" -DefaultInitEnv TEMP "@temp@" -DefaultInitEnv PYTHONHOME "@osgeo4w@\apps\Python37" -DefaultInitEnv PYTHONPATH "@osgeo4w@\apps\Python37;@osgeo4w@\apps\Python37\Scripts" - -Alias /@package@/ @osgeo4w@/apps/@package@/bin/ - - - SetHandler fcgid-script - Options ExecCGI - # Order/Allow is for Apache 2.2 - #Order allow,deny - #Allow from all - # Require is for Apache 2.4 - Require all granted - diff --git a/ms-windows/osgeo4w/msvc-env.bat b/ms-windows/osgeo4w/msvc-env.bat deleted file mode 100644 index 0dae07f8be41..000000000000 --- a/ms-windows/osgeo4w/msvc-env.bat +++ /dev/null @@ -1,91 +0,0 @@ -@echo off -REM *************************************************************************** -REM msvc-env.cmd -REM --------------------- -REM begin : June 2018 -REM copyright : (C) 2018 by Juergen E. Fischer -REM email : jef at norbit dot de -REM *************************************************************************** -REM * * -REM * This program is free software; you can redistribute it and/or modify * -REM * it under the terms of the GNU General Public License as published by * -REM * the Free Software Foundation; either version 2 of the License, or * -REM * (at your option) any later version. * -REM * * -REM *************************************************************************** - -if not "%PROGRAMFILES(X86)%"=="" set PF86=%PROGRAMFILES(X86)% -if "%PF86%"=="" set PF86=%PROGRAMFILES% -if "%PF86%"=="" (echo PROGRAMFILES not set & goto error) - -if "%VCSDK%"=="" set VCSDK=10.0.14393.0 - -set ARCH=%1 -if "%ARCH%"=="x86" goto x86 -if "%ARCH%"=="x86_64" goto x86_64 -goto usage - -:x86 -set VCARCH=x86 -set CMAKE_COMPILER_PATH=%PF86%\Microsoft Visual Studio 14.0\VC\bin -set DBGHLP_PATH=%PF86%\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger\x86 -set SETUPAPI_LIBRARY=%PF86%\Windows Kits\10\Lib\%VCSDK%\um\x86\SetupAPI.Lib -goto archset - -:x86_64 -set VCARCH=amd64 -set CMAKE_COMPILER_PATH=%PF86%\Microsoft Visual Studio 14.0\VC\bin\amd64 -set DBGHLP_PATH=%PF86%\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger\x64 -set SETUPAPI_LIBRARY=%PF86%\Windows Kits\10\Lib\%VCSDK%\um\x64\SetupAPI.Lib - -:archset -if not exist "%SETUPAPI_LIBRARY%" (echo SETUPAPI_LIBRARY not found & goto error) - -if "%CC%"=="" set CC=%CMAKE_COMPILER_PATH:\=/%/cl.exe -if "%CXX%"=="" set CXX=%CMAKE_COMPILER_PATH:\=/%/cl.exe -set CLCACHE_CL=%CMAKE_COMPILER_PATH:\=/%/cl.exe - -if "%OSGEO4W_ROOT%"=="" if "%ARCH%"=="x86" ( - set OSGEO4W_ROOT=C:\OSGeo4W -) else ( - set OSGEO4W_ROOT=C:\OSGeo4W64 -) - -if not exist "%OSGEO4W_ROOT%\bin\o4w_env.bat" (echo o4w_env.bat not found & goto error) -call "%OSGEO4W_ROOT%\bin\o4w_env.bat" -call "%OSGEO4W_ROOT%\bin\py3_env.bat" -call "%OSGEO4W_ROOT%\bin\qt5_env.bat" - -set VS140COMNTOOLS=%PF86%\Microsoft Visual Studio 14.0\Common7\Tools\ -call "%PF86%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %VCARCH% - -path %path%;%PF86%\Microsoft Visual Studio 14.0\VC\bin - -set GRASS7= -if exist %OSGEO4W_ROOT%\bin\grass74.bat set GRASS7=%OSGEO4W_ROOT%\bin\grass74.bat -if exist %OSGEO4W_ROOT%\bin\grass76.bat set GRASS7=%OSGEO4W_ROOT%\bin\grass76.bat -if exist %OSGEO4W_ROOT%\bin\grass78.bat set GRASS7=%OSGEO4W_ROOT%\bin\grass78.bat -if "%GRASS7%"=="" (echo GRASS7 not found & goto error) -for /f "usebackq tokens=1" %%a in (`%GRASS7% --config path`) do set GRASS_PREFIX=%%a - -set PYTHONPATH= -if exist "%PROGRAMFILES%\CMake\bin" path %PATH%;%PROGRAMFILES%\CMake\bin -if exist "%PF86%\CMake\bin" path %PATH%;%PF86%\CMake\bin -if exist c:\cygwin64\bin path %PATH%;c:\cygwin64\bin -if exist c:\cygwin\bin path %PATH%;c:\cygwin\bin - -set LIB=%LIB%;%OSGEO4W_ROOT%\apps\Qt5\lib;%OSGEO4W_ROOT%\lib -set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\apps\Qt5\include;%OSGEO4W_ROOT%\include - -goto end - -:usage -echo usage: %0 [x86^|x86_64] -echo sample: %0 x86_64 -exit /b 1 - -:error -echo ENV ERROR %ERRORLEVEL%: %DATE% %TIME% -exit /b 1 - -:end diff --git a/ms-windows/osgeo4w/ninja/ninja.bat b/ms-windows/osgeo4w/ninja/ninja.bat deleted file mode 100644 index e8b08649b144..000000000000 --- a/ms-windows/osgeo4w/ninja/ninja.bat +++ /dev/null @@ -1,7 +0,0 @@ -@echo off -call %OSGEO4W_ROOT%\bin\o4w_env.bat -call py3_env.bat -call qt5_env.bat -call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -path %PATH%;c:\cygwin\bin;c:\program files\cmake\bin -%OSGEO4W_ROOT%\bin\ninja -j4 -C ..\build-qgis-dev-x86_64 diff --git a/ms-windows/osgeo4w/ninja/ninja.sln b/ms-windows/osgeo4w/ninja/ninja.sln deleted file mode 100644 index 7a7812b16bd6..000000000000 --- a/ms-windows/osgeo4w/ninja/ninja.sln +++ /dev/null @@ -1,22 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ninja", "ninja.vcxproj", "{02B448C7-945C-46D6-954C-AEAE0653BA59}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - RelWithDebInfo|Win32 = RelWithDebInfo|Win32 - RelWithDebInfo|x64 = RelWithDebInfo|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {02B448C7-945C-46D6-954C-AEAE0653BA59}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {02B448C7-945C-46D6-954C-AEAE0653BA59}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {02B448C7-945C-46D6-954C-AEAE0653BA59}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {02B448C7-945C-46D6-954C-AEAE0653BA59}.RelWithDebInfo|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/ms-windows/osgeo4w/ninja/ninja.vcxproj b/ms-windows/osgeo4w/ninja/ninja.vcxproj deleted file mode 100644 index 347ae90b7176..000000000000 --- a/ms-windows/osgeo4w/ninja/ninja.vcxproj +++ /dev/null @@ -1,108 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - {02B448C7-945C-46D6-954C-AEAE0653BA59} - MakeFileProj - 8.1 - - - - Makefile - true - v140 - - - Makefile - false - v140 - - - Makefile - true - v140 - - - Makefile - false - v140 - - - - - - - - - - - - - - - - - - - - - ninja -C ../build-qgis-dev-x86 all - ..\build-qgis-dev-x86\output\bin\qgis.exe - WIN32;_DEBUG;$(NMakePreprocessorDefinitions) - ..\build-qgis-dev-x86 - - ninja -C ../build-qgis-dev-x86 clean all - ninja -C ../build-qgis-dev-x86 clean - - - ninja -C ../build-qgis-dev-x86 all - ..\build-qgis-dev-x86\output\bin\qgis.exe - WIN32;NDEBUG;$(NMakePreprocessorDefinitions) - ..\build-qgis-dev-x86 - - ninja -C ../build-qgis-dev-x86 clean all - ninja -C ../build-qgis-dev-x86 clean - - - ninja -C ../build-qgis-dev-x86_64 -j4 -k1000 all - ninja -C ../build-qgis-dev-x86_64 -j4 -k1000 clean all - ninja -C ../build-qgis-dev-x86_64 clean - ..\build-qgis-dev-x86_64\output\bin\qgis.exe - - - ninja -C ../build-qgis-dev-x86_64 -j4 -k1000 all - ninja -C ../build-qgis-dev-x86_64 -j4 -k1000 clean all - ninja -C ../build-qgis-dev-x86_64 clean - ..\build-qgis-dev-x86_64\output\bin\qgis.exe - - - - x86.log - - - - - x86.log - - - - - - \ No newline at end of file diff --git a/ms-windows/osgeo4w/package-nightly.cmd b/ms-windows/osgeo4w/package-nightly.cmd deleted file mode 100644 index f1e89aaf8332..000000000000 --- a/ms-windows/osgeo4w/package-nightly.cmd +++ /dev/null @@ -1,325 +0,0 @@ -@echo off -REM *************************************************************************** -REM package-nightly.cmd -REM --------------------- -REM begin : January 2011 -REM copyright : (C) 2011 by Juergen E. Fischer -REM email : jef at norbit dot de -REM *************************************************************************** -REM * * -REM * This program is free software; you can redistribute it and/or modify * -REM * it under the terms of the GNU General Public License as published by * -REM * the Free Software Foundation; either version 2 of the License, or * -REM * (at your option) any later version. * -REM * * -REM *************************************************************************** - -setlocal enabledelayedexpansion - -set VERSION=%1 -set PACKAGE=%2 -set PACKAGENAME=%3 -set ARCH=%4 -set SHA=%5 -set SITE=%6 -if "%VERSION%"=="" goto usage -if "%PACKAGE%"=="" goto usage -if "%PACKAGENAME%"=="" goto usage -if "%ARCH%"=="" goto usage -if not "%SHA%"=="" set SHA=-%SHA% -if "%SITE%"=="" set SITE=qgis.org -if "%TARGET%"=="" set TARGET=Nightly -if "%BUILDNAME%"=="" set BUILDNAME=%PACKAGENAME%-%VERSION%%SHA%-%TARGET%-VC14-%ARCH% - -if "%BUILDDIR%"=="" set BUILDDIR=%CD%\build-%PACKAGENAME%-%ARCH% -if not exist "%BUILDDIR%" mkdir %BUILDDIR% -if not exist "%BUILDDIR%" (echo could not create build directory %BUILDDIR% & goto error) - -call msvc-env.bat %ARCH% -call gdal-dev-env.bat - -set O4W_ROOT=%OSGEO4W_ROOT:\=/% -set LIB_DIR=%O4W_ROOT% - -if "%ARCH%"=="x86" ( - set CMAKE_OPT=^ - -D SPATIALINDEX_LIBRARY=%O4W_ROOT%/lib/spatialindex-32.lib -) else ( - set CMAKE_OPT=^ - -D SPATIALINDEX_LIBRARY=%O4W_ROOT%/lib/spatialindex-64.lib ^ - -D CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS=TRUE -) - -for %%i in ("%GRASS_PREFIX%") do set GRASS7_VERSION=%%~nxi -set GRASS_VERSIONS=%GRASS7_VERSION% - -set TAR=tar.exe -if exist "c:\cygwin\bin\tar.exe" set TAR=c:\cygwin\bin\tar.exe -if exist "c:\cygwin64\bin\tar.exe" set TAR=c:\cygwin64\bin\tar.exe - -set BUILDCONF=RelWithDebInfo - -cd ..\.. -set SRCDIR=%CD% - -if "%BUILDDIR:~1,1%"==":" %BUILDDIR:~0,2% -cd %BUILDDIR% - -set PKGDIR=%OSGEO4W_ROOT%\apps\%PACKAGENAME% - -if exist repackage goto package - -if not exist build.log goto build - -REM -REM try renaming the logfile to see if it's locked -REM - -if exist build.tmp del build.tmp -if exist build.tmp (echo could not remove build.tmp & goto error) - -ren build.log build.tmp -if exist build.log goto locked -if not exist build.tmp goto locked - -ren build.tmp build.log -if exist build.tmp goto locked -if not exist build.log goto locked - -goto build - -:locked -echo Logfile locked -if exist build.tmp del build.tmp -goto error - -:build -echo BEGIN: %DATE% %TIME% - -set >buildenv.log - -if exist qgsversion.h del qgsversion.h - -if exist CMakeCache.txt if exist skipcmake goto skipcmake - -touch %SRCDIR%\CMakeLists.txt - -echo CMAKE: %DATE% %TIME% - -if "%CMAKEGEN%"=="" set CMAKEGEN=Ninja -if "%OSGEO4W_CXXFLAGS%"=="" set OSGEO4W_CXXFLAGS=/MD /Z7 /MP /Od /D NDEBUG - -for %%i in (%PYTHONHOME%) do set PYVER=%%~ni - -cmake -G "%CMAKEGEN%" ^ - -D CMAKE_CXX_COMPILER="%CXX:\=/%" ^ - -D CMAKE_C_COMPILER="%CC:\=/%" ^ - -D CMAKE_LINKER="%CMAKE_COMPILER_PATH:\=/%/link.exe" ^ - -D CMAKE_CXX_FLAGS_RELWITHDEBINFO="%OSGEO4W_CXXFLAGS%" ^ - -D CMAKE_PDB_OUTPUT_DIRECTORY_RELWITHDEBINFO=%BUILDDIR%\apps\%PACKAGENAME%\pdb ^ - -D SUBMIT_URL="https://cdash.orfeo-toolbox.org/submit.php?project=QGIS" ^ - -D BUILDNAME="%BUILDNAME%" ^ - -D SITE="%SITE%" ^ - -D PEDANTIC=TRUE ^ - -D WITH_QSPATIALITE=TRUE ^ - -D WITH_SERVER=TRUE ^ - -D SERVER_SKIP_ECW=TRUE ^ - -D WITH_GRASS=TRUE ^ - -D WITH_3D=TRUE ^ - -D WITH_GRASS7=TRUE ^ - -D WITH_HANA=TRUE ^ - -D GRASS_PREFIX7=%GRASS_PREFIX:\=/% ^ - -D WITH_ORACLE=TRUE ^ - -D WITH_CUSTOM_WIDGETS=TRUE ^ - -D CMAKE_BUILD_TYPE=%BUILDCONF% ^ - -D CMAKE_CONFIGURATION_TYPES=%BUILDCONF% ^ - -D SETUPAPI_LIBRARY="%SETUPAPI_LIBRARY%" ^ - -D PROJ_LIBRARY=%O4W_ROOT%/apps/proj-dev/lib/proj.lib ^ - -D PROJ_INCLUDE_DIR=%O4W_ROOT%/apps/proj-dev/include ^ - -D GDAL_LIBRARY=%O4W_ROOT%/apps/gdal-dev/lib/gdal_i.lib ^ - -D GDAL_INCLUDE_DIR=%O4W_ROOT%/apps/gdal-dev/include ^ - -D GEOS_LIBRARY=%O4W_ROOT%/lib/geos_c.lib ^ - -D SQLITE3_LIBRARY=%O4W_ROOT%/lib/sqlite3_i.lib ^ - -D SPATIALITE_LIBRARY=%O4W_ROOT%/lib/spatialite_i.lib ^ - -D PYTHON_EXECUTABLE=%O4W_ROOT%/bin/python3.exe ^ - -D SIP_BINARY_PATH=%PYTHONHOME:\=/%/sip.exe ^ - -D PYTHON_INCLUDE_DIR=%PYTHONHOME:\=/%/include ^ - -D PYTHON_LIBRARY=%PYTHONHOME:\=/%/libs/%PYVER%.lib ^ - -D QT_LIBRARY_DIR=%O4W_ROOT%/lib ^ - -D QT_HEADERS_DIR=%O4W_ROOT%/apps/qt5/include ^ - -D CMAKE_INSTALL_PREFIX=%O4W_ROOT%/apps/%PACKAGENAME% ^ - -D FCGI_INCLUDE_DIR=%O4W_ROOT%/include ^ - -D FCGI_LIBRARY=%O4W_ROOT%/lib/libfcgi.lib ^ - -D QCA_INCLUDE_DIR=%OSGEO4W_ROOT%\apps\Qt5\include\QtCrypto ^ - -D QCA_LIBRARY=%OSGEO4W_ROOT%\apps\Qt5\lib\qca-qt5.lib ^ - -D QSCINTILLA_LIBRARY=%OSGEO4W_ROOT%\apps\Qt5\lib\qscintilla2.lib ^ - -D DART_TESTING_TIMEOUT=60 ^ - -D PUSH_TO_CDASH=TRUE ^ - %CMAKE_OPT% ^ - %SRCDIR:\=/% -if errorlevel 1 (echo cmake failed & goto error) - -if "%CONFIGONLY%"=="1" (echo Exiting after configuring build directory: %CD% & goto end) - -:skipcmake -if exist ..\noclean (echo skip clean & goto skipclean) -echo CLEAN: %DATE% %TIME% -cmake --build %BUILDDIR% --target clean --config %BUILDCONF% -if errorlevel 1 (echo clean failed & goto error) - -:skipclean -if exist ..\skipbuild (echo skip build & goto skipbuild) -echo ALL_BUILD: %DATE% %TIME% -cmake --build %BUILDDIR% --target %TARGET%Build --config %BUILDCONF% -set /P tag=<%BUILDDIR%\Testing\TAG -findstr "" %BUILDDIR%\Testing\%tag%\Build.xml >nul -if not errorlevel 1 ( - cmake --build %BUILDDIR% --target %TARGET%Submit --config %BUILDCONF% - if errorlevel 1 echo SUBMITTING BUILD ERRORS WAS NOT SUCCESSFUL. - echo build failed - goto error -) - -:skipbuild -if exist ..\skiptests goto skiptests - -echo RUN_TESTS: %DATE% %TIME% - -reg add "HKCU\Software\Microsoft\Windows\Windows Error Reporting" /v DontShow /t REG_DWORD /d 1 /f - -set oldtemp=%TEMP% -set oldtmp=%TMP% -set oldpath=%PATH% - -set TEMP=%TEMP%\%PACKAGENAME%-%ARCH% -set TMP=%TEMP% -if exist "%TEMP%" rmdir /s /q "%TEMP%" -mkdir "%TEMP%" - -for %%g IN (%GRASS_VERSIONS%) do ( - set path=!path!;%OSGEO4W_ROOT%\apps\grass\%%g\lib - set GISBASE=%OSGEO4W_ROOT%\apps\grass\%%g -) -PATH %path%;%BUILDDIR%\output\plugins -set QT_PLUGIN_PATH=%BUILDDIR%\output\plugins;%OSGEO4W_ROOT%\apps\qt5\plugins - -cmake --build %BUILDDIR% --target %TARGET%Test --config %BUILDCONF% -if errorlevel 1 echo TESTS WERE NOT SUCCESSFUL. - -set TEMP=%oldtemp% -set TMP=%oldtmp% -PATH %oldpath% - -cmake --build %BUILDDIR% --target %TARGET%Submit --config %BUILDCONF% -if errorlevel 1 echo TEST SUBMISSION WAS NOT SUCCESSFUL. - -:skiptests -if exist ..\skippackage goto end - -if exist "%PKGDIR%" ( - echo REMOVE: %DATE% %TIME% - rmdir /s /q "%PKGDIR%" -) - -echo INSTALL: %DATE% %TIME% -cmake --build %BUILDDIR% --target install --config %BUILDCONF% -if errorlevel 1 (echo INSTALL failed & goto error) - -:package -echo PACKAGE: %DATE% %TIME% - -cd .. - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' -e 's/@grassversions@/%GRASS_VERSIONS%/g' postinstall-dev.bat >%OSGEO4W_ROOT%\etc\postinstall\%PACKAGENAME%.bat -if errorlevel 1 (echo creation of desktop postinstall failed & goto error) - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' -e 's/@grassversions@/%GRASS_VERSIONS%/g' preremove-dev.bat >%OSGEO4W_ROOT%\etc\preremove\%PACKAGENAME%.bat -if errorlevel 1 (echo creation of desktop preremove failed & goto error) - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' -e 's/^call py3_env.bat/call gdal-dev-py3-env.bat/' designer.bat.tmpl >%OSGEO4W_ROOT%\bin\%PACKAGENAME%-designer.bat.tmpl -if errorlevel 1 (echo creation of designer template failed & goto error) -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' qgis.reg.tmpl >%PKGDIR%\bin\qgis.reg.tmpl -if errorlevel 1 (echo creation of registry template & goto error) - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' -e 's/^call py3_env.bat/call gdal-dev-py3-env.bat/' qgis.bat.tmpl >%OSGEO4W_ROOT%\bin\%PACKAGENAME%.bat.tmpl -if errorlevel 1 (echo creation of desktop template failed & goto error) - -set batches=bin/%PACKAGENAME%.bat.tmpl -for %%g IN (%GRASS_VERSIONS%) do ( - for /f "usebackq tokens=1" %%a in (`%%g --config version`) do set gv=%%a - for /F "delims=." %%i in ("!gv!") do set v=%%i - - sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' -e 's/@grasspath@/%%g/g' -e 's/@grassversion@/!gv!/g' -e 's/^call py3_env.bat/call gdal-dev-py3-env.bat/' qgis-grass.bat.tmpl >%OSGEO4W_ROOT%\bin\%PACKAGENAME%-g!v!.bat.tmpl - if errorlevel 1 (echo creation of desktop template failed & goto error) - set batches=!batches! bin/%PACKAGENAME%-g!v!.bat.tmpl -) - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' -e 's/^call py3_env.bat/call gdal-dev-py3-env.bat/' python.bat.tmpl >%OSGEO4W_ROOT%\bin\python-%PACKAGENAME%.bat.tmpl -if errorlevel 1 (echo creation of python wrapper template failed & goto error) - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' -e 's/^call py3_env.bat/call gdal-dev-py3-env.bat/' process.bat.tmpl >%OSGEO4W_ROOT%\bin\qgis_process-%PACKAGENAME%.bat.tmpl -if errorlevel 1 (echo creation of qgis process wrapper template failed & goto error) - -touch exclude -if exist ..\skipbuild (echo skip build & goto skipbuild) - -move %PKGDIR%\bin\qgis.exe %OSGEO4W_ROOT%\bin\%PACKAGENAME%-bin.exe -if errorlevel 1 (echo move of desktop executable failed & goto error) -copy qgis.vars %OSGEO4W_ROOT%\bin\%PACKAGENAME%-bin.vars -if errorlevel 1 (echo copy of desktop executable vars failed & goto error) - -if not exist %PKGDIR%\qtplugins\sqldrivers mkdir %PKGDIR%\qtplugins\sqldrivers -move %OSGEO4W_ROOT%\apps\qt5\plugins\sqldrivers\qsqlocispatial.dll %PKGDIR%\qtplugins\sqldrivers -if errorlevel 1 (echo move of oci sqldriver failed & goto error) -move %OSGEO4W_ROOT%\apps\qt5\plugins\sqldrivers\qsqlspatialite.dll %PKGDIR%\qtplugins\sqldrivers -if errorlevel 1 (echo move of spatialite sqldriver failed & goto error) - -if not exist %PKGDIR%\qtplugins\designer mkdir %PKGDIR%\qtplugins\designer -move %OSGEO4W_ROOT%\apps\qt5\plugins\designer\qgis_customwidgets.dll %PKGDIR%\qtplugins\designer -if errorlevel 1 (echo move of customwidgets failed & goto error) - -if not exist %PKGDIR%\python\PyQt5\uic\widget-plugins mkdir %PKGDIR%\python\PyQt5\uic\widget-plugins -move %PYTHONHOME%\Lib\site-packages\PyQt5\uic\widget-plugins\qgis_customwidgets.py %PKGDIR%\python\PyQt5\uic\widget-plugins -if errorlevel 1 (echo move of customwidgets binding failed & goto error) - -for %%i in (dbghelp.dll symsrv.dll) do ( - copy "%DBGHLP_PATH%\%%i" %OSGEO4W_ROOT%\apps\%PACKAGENAME% - if errorlevel 1 (echo %%i not found & goto error) -) - -if not exist %ARCH%\release\qgis\%PACKAGENAME% mkdir %ARCH%\release\qgis\%PACKAGENAME% -%TAR% -C %OSGEO4W_ROOT% -cjf %ARCH%/release/qgis/%PACKAGENAME%/%PACKAGENAME%-%VERSION%-%PACKAGE%.tar.bz2 ^ - --exclude-from exclude ^ - --exclude "*.pyc" ^ - apps/%PACKAGENAME% ^ - bin/%PACKAGENAME%-bin.exe ^ - bin/%PACKAGENAME%-bin.vars ^ - %batches% ^ - bin/%PACKAGENAME%-designer.bat.tmpl ^ - bin/python-%PACKAGENAME%.bat.tmpl ^ - bin/qgis_process-%PACKAGENAME%.bat.tmpl ^ - etc/postinstall/%PACKAGENAME%.bat ^ - etc/preremove/%PACKAGENAME%.bat -if errorlevel 1 (echo tar failed & goto error) - -if not exist %ARCH%\release\qgis\%PACKAGENAME%-pdb mkdir %ARCH%\release\qgis\%PACKAGENAME%-pdb -%TAR% -C %BUILDDIR% -cjf %ARCH%/release/qgis/%PACKAGENAME%-pdb/%PACKAGENAME%-pdb-%VERSION%-%PACKAGE%.tar.bz2 ^ - apps/%PACKAGENAME%/pdb -if errorlevel 1 (echo tar failed & goto error) - -goto end - -:usage -echo usage: %0 version package packagename arch [sha [site]] -echo sample: %0 2.11.0 38 qgis-dev x86_64 339dbf1 qgis.org -exit /b 1 - -:error -echo BUILD ERROR %ERRORLEVEL%: %DATE% %TIME% -if exist %PACKAGENAME%-%VERSION%-%PACKAGE%.tar.bz2 del %PACKAGENAME%-%VERSION%-%PACKAGE%.tar.bz2 -exit /b 1 - -:end -echo FINISHED: %DATE% %TIME% - -endlocal diff --git a/ms-windows/osgeo4w/package.cmd b/ms-windows/osgeo4w/package.cmd deleted file mode 100644 index ee7c45dfd616..000000000000 --- a/ms-windows/osgeo4w/package.cmd +++ /dev/null @@ -1,482 +0,0 @@ -@echo off -REM *************************************************************************** -REM package.cmd -REM --------------------- -REM begin : July 2009 -REM copyright : (C) 2009 by Juergen E. Fischer -REM email : jef at norbit dot de -REM *************************************************************************** -REM * * -REM * This program is free software; you can redistribute it and/or modify * -REM * it under the terms of the GNU General Public License as published by * -REM * the Free Software Foundation; either version 2 of the License, or * -REM * (at your option) any later version. * -REM * * -REM *************************************************************************** - -setlocal enabledelayedexpansion - -set VERSION=%1 -set PACKAGE=%2 -set PACKAGENAME=%3 -set ARCH=%4 -set SHA=%5 -set SITE=%6 -if "%VERSION%"=="" goto usage -if "%PACKAGE%"=="" goto usage -if "%PACKAGENAME%"=="" goto usage -if "%ARCH%"=="" goto usage -if not "%SHA%"=="" set SHA=-%SHA% -if "%SITE%"=="" set SITE=qgis.org -if "%BUILDNAME%"=="" set BUILDNAME=%PACKAGENAME%-%VERSION%%SHA%-Release-VC14-%ARCH% - -set BUILDDIR=%CD%\build-%PACKAGENAME%-%ARCH% -if not exist "%BUILDDIR%" mkdir %BUILDDIR% -if not exist "%BUILDDIR%" (echo could not create build directory %BUILDDIR% & goto error) - -call msvc-env.bat %ARCH% - -set O4W_ROOT=%OSGEO4W_ROOT:\=/% -set LIB_DIR=%O4W_ROOT% - -if "%ARCH%"=="x86" ( - set CMAKE_OPT=^ - -D SPATIALINDEX_LIBRARY=%O4W_ROOT%/lib/spatialindex-32.lib -) else ( - set CMAKE_OPT=^ - -D SPATIALINDEX_LIBRARY=%O4W_ROOT%/lib/spatialindex-64.lib ^ - -D CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS=TRUE -) - -for %%i in ("%GRASS_PREFIX%") do set GRASS7_VERSION=%%~nxi -set GRASS_VERSIONS=%GRASS7_VERSION% - -set TAR=tar.exe -if exist "c:\cygwin\bin\tar.exe" set TAR=c:\cygwin\bin\tar.exe -if exist "c:\cygwin64\bin\tar.exe" set TAR=c:\cygwin64\bin\tar.exe - -set BUILDCONF=Release - -cd ..\.. -set SRCDIR=%CD% - -if "%BUILDDIR:~1,1%"==":" %BUILDDIR:~0,2% -cd %BUILDDIR% - -set PKGDIR=%OSGEO4W_ROOT%\apps\%PACKAGENAME% - -if exist repackage goto package - -if not exist build.log goto build - -REM -REM try renaming the logfile to see if it's locked -REM - -if exist build.tmp del build.tmp -if exist build.tmp (echo could not remove build.tmp & goto error) - -ren build.log build.tmp -if exist build.log goto locked -if not exist build.tmp goto locked - -ren build.tmp build.log -if exist build.tmp goto locked -if not exist build.log goto locked - -goto build - -:locked -echo Logfile locked -if exist build.tmp del build.tmp -goto error - -:build -echo BEGIN: %DATE% %TIME% - -set >buildenv.log - -if exist qgsversion.h del qgsversion.h - -if exist CMakeCache.txt if exist skipcmake goto skipcmake - -touch %SRCDIR%\CMakeLists.txt - -echo CMAKE: %DATE% %TIME% -if errorlevel 1 goto error - -if "%CMAKEGEN%"=="" set CMAKEGEN=Ninja -if "%CC%"=="" set CC="%CMAKE_COMPILER_PATH:\=/%/cl.exe" -if "%CXX%"=="" set CXX="%CMAKE_COMPILER_PATH:\=/%/cl.exe" -if "%OSGEO4W_CXXFLAGS%"=="" set OSGEO4W_CXXFLAGS=/MD /Z7 /MP /O2 /Ob2 /D NDEBUG - -for %%i in (%PYTHONHOME%) do set PYVER=%%~ni - -cmake -G "%CMAKEGEN%" ^ - -D CMAKE_CXX_COMPILER="%CXX:\=/%" ^ - -D CMAKE_C_COMPILER="%CC:\=/%" ^ - -D CMAKE_LINKER="%CMAKE_COMPILER_PATH:\=/%/link.exe" ^ - -D CMAKE_CXX_FLAGS_RELEASE="%OSGEO4W_CXXFLAGS%" ^ - -D CMAKE_PDB_OUTPUT_DIRECTORY_RELEASE=%BUILDDIR%\apps\%PACKAGENAME%\pdb ^ - -D CMAKE_SHARED_LINKER_FLAGS_RELEASE="/INCREMENTAL:NO /DEBUG /OPT:REF /OPT:ICF" ^ - -D CMAKE_MODULE_LINKER_FLAGS_RELEASE="/INCREMENTAL:NO /DEBUG /OPT:REF /OPT:ICF" ^ - -D SUBMIT_URL="https://cdash.orfeo-toolbox.org/submit.php?project=QGIS" ^ - -D BUILDNAME="%BUILDNAME%" ^ - -D SITE="%SITE%" ^ - -D PEDANTIC=TRUE ^ - -D WITH_QSPATIALITE=TRUE ^ - -D WITH_SERVER=TRUE ^ - -D WITH_HANA=TRUE ^ - -D SERVER_SKIP_ECW=TRUE ^ - -D WITH_GRASS=TRUE ^ - -D WITH_3D=TRUE ^ - -D WITH_GRASS7=TRUE ^ - -D GRASS_PREFIX7=%GRASS_PREFIX:\=/% ^ - -D WITH_ORACLE=TRUE ^ - -D WITH_CUSTOM_WIDGETS=TRUE ^ - -D CMAKE_BUILD_TYPE=%BUILDCONF% ^ - -D CMAKE_CONFIGURATION_TYPES=%BUILDCONF% ^ - -D SETUPAPI_LIBRARY="%SETUPAPI_LIBRARY%" ^ - -D GEOS_LIBRARY=%O4W_ROOT%/lib/geos_c.lib ^ - -D SQLITE3_LIBRARY=%O4W_ROOT%/lib/sqlite3_i.lib ^ - -D SPATIALITE_LIBRARY=%O4W_ROOT%/lib/spatialite_i.lib ^ - -D PYTHON_EXECUTABLE=%O4W_ROOT%/bin/python3.exe ^ - -D SIP_BINARY_PATH=%PYTHONHOME:\=/%/sip.exe ^ - -D PYTHON_INCLUDE_DIR=%PYTHONHOME:\=/%/include ^ - -D PYTHON_LIBRARY=%PYTHONHOME:\=/%/libs/%PYVER%.lib ^ - -D QT_LIBRARY_DIR=%O4W_ROOT%/lib ^ - -D QT_HEADERS_DIR=%O4W_ROOT%/apps/qt5/include ^ - -D CMAKE_INSTALL_PREFIX=%O4W_ROOT%/apps/%PACKAGENAME% ^ - -D FCGI_INCLUDE_DIR=%O4W_ROOT%/include ^ - -D FCGI_LIBRARY=%O4W_ROOT%/lib/libfcgi.lib ^ - -D QCA_INCLUDE_DIR=%OSGEO4W_ROOT%\apps\Qt5\include\QtCrypto ^ - -D QCA_LIBRARY=%OSGEO4W_ROOT%\apps\Qt5\lib\qca-qt5.lib ^ - -D QSCINTILLA_LIBRARY=%OSGEO4W_ROOT%\apps\Qt5\lib\qscintilla2.lib ^ - -D DART_TESTING_TIMEOUT=60 ^ - %CMAKE_OPT% ^ - %SRCDIR:\=/% -if errorlevel 1 (echo cmake failed & goto error) - -if "%CONFIGONLY%"=="1" (echo Exiting after configuring build directory: %CD% & goto end) - -:skipcmake -if exist ..\noclean (echo skip clean & goto skipclean) -echo CLEAN: %DATE% %TIME% -cmake --build %BUILDDIR% --target clean --config %BUILDCONF% -if errorlevel 1 (echo clean failed & goto error) - -:skipclean -if exist ..\skipbuild (echo skip build & goto skipbuild) -echo ALL_BUILD: %DATE% %TIME% -cmake --build %BUILDDIR% --config %BUILDCONF% -if errorlevel 1 (echo build failed & goto error) - -:skipbuild -if exist ..\skiptests goto skiptests - -echo RUN_TESTS: %DATE% %TIME% - -reg add "HKCU\Software\Microsoft\Windows\Windows Error Reporting" /v DontShow /t REG_DWORD /d 1 /f - -set oldtemp=%TEMP% -set oldtmp=%TMP% -set oldpath=%PATH% - -set TEMP=%TEMP%\%PACKAGENAME%-%ARCH% -set TMP=%TEMP% -if exist "%TEMP%" rmdir /s /q "%TEMP%" -mkdir "%TEMP%" - -for %%g IN (%GRASS_VERSIONS%) do ( - set path=!path!;%OSGEO4W_ROOT%\apps\grass\%%g\lib - set GISBASE=%OSGEO4W_ROOT%\apps\grass\%%g -) -PATH %path%;%BUILDDIR%\output\plugins -set QT_PLUGIN_PATH=%BUILDDIR%\output\plugins;%OSGEO4W_ROOT%\apps\qt5\plugins - -cmake --build %BUILDDIR% --target Experimental --config %BUILDCONF% -if errorlevel 1 echo TESTS WERE NOT SUCCESSFUL. - -set TEMP=%oldtemp% -set TMP=%oldtmp% -PATH %oldpath% - -:skiptests -if exist ..\skippackage goto end - -if exist "%PKGDIR%" ( - echo REMOVE: %DATE% %TIME% - rmdir /s /q "%PKGDIR%" -) - -echo INSTALL: %DATE% %TIME% -cmake --build %BUILDDIR% --target install --config %BUILDCONF% -if errorlevel 1 (echo INSTALL failed & goto error) - -:package -echo PACKAGE: %DATE% %TIME% - -cd .. -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' postinstall-common.bat >%OSGEO4W_ROOT%\etc\postinstall\%PACKAGENAME%-common.bat -if errorlevel 1 (echo creation of common postinstall failed & goto error) - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' postinstall-desktop.bat >%OSGEO4W_ROOT%\etc\postinstall\%PACKAGENAME%.bat -if errorlevel 1 (echo creation of desktop postinstall failed & goto error) - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' preremove-desktop.bat >%OSGEO4W_ROOT%\etc\preremove\%PACKAGENAME%.bat -if errorlevel 1 (echo creation of desktop preremove failed & goto error) - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' qgis.bat.tmpl >%OSGEO4W_ROOT%\bin\%PACKAGENAME%.bat.tmpl -if errorlevel 1 (echo creation of desktop template failed & goto error) - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' designer.bat.tmpl >%OSGEO4W_ROOT%\bin\%PACKAGENAME%-designer.bat.tmpl -if errorlevel 1 (echo creation of designer template failed & goto error) -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' qgis.reg.tmpl >%PKGDIR%\bin\qgis.reg.tmpl -if errorlevel 1 (echo creation of registry template & goto error) - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' postinstall-server.bat >%OSGEO4W_ROOT%\etc\postinstall\%PACKAGENAME%-server.bat -if errorlevel 1 (echo creation of server postinstall failed & goto error) - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' preremove-server.bat >%OSGEO4W_ROOT%\etc\preremove\%PACKAGENAME%-server.bat -if errorlevel 1 (echo creation of server preremove failed & goto error) - -if not exist %OSGEO4W_ROOT%\httpd.d mkdir %OSGEO4W_ROOT%\httpd.d -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' httpd.conf.tmpl >%OSGEO4W_ROOT%\httpd.d\httpd_%PACKAGENAME%.conf.tmpl -if errorlevel 1 (echo creation of httpd.conf template failed & goto error) - -set packages="" "-common" "-server" "-devel" "-oracle-provider" "-grass-plugin-common" - -for %%g IN (%GRASS_VERSIONS%) do ( - for /f "usebackq tokens=1" %%a in (`%%g --config version`) do set gv=%%a - for /F "delims=." %%i in ("!gv!") do set v=%%i - set w=!v! - if !v!==6 set w= - - sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' -e 's/@grasspath@/%%g/g' -e 's/@grassversion@/!gv!/g' -e 's/@grassmajor@/!v!/g' postinstall-grass.bat >%OSGEO4W_ROOT%\etc\postinstall\%PACKAGENAME%-grass-plugin!w!.bat - if errorlevel 1 (echo creation of grass desktop postinstall failed & goto error) - sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' -e 's/@grasspath@/%%g/g' -e 's/@grassversion@/!gv!/g' -e 's/@grassmajor@/!v!/g' preremove-grass.bat >%OSGEO4W_ROOT%\etc\preremove\%PACKAGENAME%-grass-plugin!w!.bat - if errorlevel 1 (echo creation of grass desktop preremove failed & goto error) - sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' -e 's/@grasspath@/%%g/g' -e 's/@grassversion@/!gv!/g' -e 's/@grassmajor@/!v!/g' qgis-grass.bat.tmpl >%OSGEO4W_ROOT%\bin\%PACKAGENAME%-grass!v!.bat.tmpl - if errorlevel 1 (echo creation of grass desktop template failed & goto error) - - set packages=!packages! "-grass-plugin!w!" -) - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' python.bat.tmpl >%OSGEO4W_ROOT%\bin\python-%PACKAGENAME%.bat.tmpl -if errorlevel 1 (echo creation of python wrapper template failed & goto error) - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' process.bat.tmpl >%OSGEO4W_ROOT%\bin\qgis_process-%PACKAGENAME%.bat.tmpl -if errorlevel 1 (echo creation of qgis process wrapper template failed & goto error) - -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' preremove-grass-plugin-common.bat >%OSGEO4W_ROOT%\etc\preremove\%PACKAGENAME%-grass-plugin-common.bat -if errorlevel 1 (echo creation of grass common preremove failed & goto error) -sed -e 's/@package@/%PACKAGENAME%/g' -e 's/@version@/%VERSION%/g' postinstall-grass-plugin-common.bat >%OSGEO4W_ROOT%\etc\postinstall\%PACKAGENAME%-grass-plugin-common.bat -if errorlevel 1 (echo creation of grass common postinstall failed & goto error) - -touch exclude -if exist ..\skipbuild (echo skip build & goto skipbuild) - -for %%i in (%packages%) do ( - if not exist %ARCH%\release\qgis\%PACKAGENAME%%%i mkdir %ARCH%\release\qgis\%PACKAGENAME%%%i -) - -%TAR% -C %OSGEO4W_ROOT% -cjf %ARCH%/release/qgis/%PACKAGENAME%-common/%PACKAGENAME%-common-%VERSION%-%PACKAGE%.tar.bz2 ^ - --exclude-from exclude ^ - --exclude "*.pyc" ^ - "apps/%PACKAGENAME%/bin/qgispython.dll" ^ - "apps/%PACKAGENAME%/bin/qgis_analysis.dll" ^ - "apps/%PACKAGENAME%/bin/qgis_3d.dll" ^ - "apps/%PACKAGENAME%/bin/qgis_core.dll" ^ - "apps/%PACKAGENAME%/bin/qgis_gui.dll" ^ - "apps/%PACKAGENAME%/bin/qgis_native.dll" ^ - "apps/%PACKAGENAME%/bin/qgis_process.exe" ^ - "apps/%PACKAGENAME%/doc/" ^ - "apps/%PACKAGENAME%/plugins/authmethod_basic.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_delimitedtext.dll" ^ - "apps/%PACKAGENAME%/plugins/authmethod_esritoken.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_gpx.dll" ^ - "apps/%PACKAGENAME%/plugins/authmethod_identcert.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_mssql.dll" ^ - "apps/%PACKAGENAME%/plugins/authmethod_pkcs12.dll" ^ - "apps/%PACKAGENAME%/plugins/authmethod_pkipaths.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_postgres.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_postgresraster.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_spatialite.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_virtuallayer.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_wcs.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_wfs.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_wms.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_arcgismapserver.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_arcgisfeatureserver.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_mdal.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_hana.dll" ^ - "apps/%PACKAGENAME%/plugins/authmethod_oauth2.dll" ^ - "apps/%PACKAGENAME%/plugins/authmethod_maptilerhmacsha256.dll" ^ - "apps/%PACKAGENAME%/resources/qgis.db" ^ - "apps/%PACKAGENAME%/resources/spatialite.db" ^ - "apps/%PACKAGENAME%/resources/srs.db" ^ - "apps/%PACKAGENAME%/resources/symbology-style.xml" ^ - "apps/%PACKAGENAME%/resources/cpt-city-qgis-min/" ^ - "apps/%PACKAGENAME%/svg/" ^ - "apps/%PACKAGENAME%/crssync.exe" ^ - "etc/postinstall/%PACKAGENAME%-common.bat" -if errorlevel 1 (echo tar common failed & goto error) - -%TAR% -C %OSGEO4W_ROOT% -cjf %ARCH%/release/qgis/%PACKAGENAME%-server/%PACKAGENAME%-server-%VERSION%-%PACKAGE%.tar.bz2 ^ - --exclude-from exclude ^ - --exclude "*.pyc" ^ - "apps/%PACKAGENAME%/bin/qgis_mapserv.fcgi.exe" ^ - "apps/%PACKAGENAME%/bin/qgis_server.dll" ^ - "apps/%PACKAGENAME%/bin/admin.sld" ^ - "apps/%PACKAGENAME%/bin/wms_metadata.xml" ^ - "apps/%PACKAGENAME%/resources/server/" ^ - "apps/%PACKAGENAME%/server/" ^ - "apps/%PACKAGENAME%/python/qgis/_server.pyd" ^ - "apps/%PACKAGENAME%/python/qgis/_server.pyi" ^ - "apps/%PACKAGENAME%/python/qgis/server/" ^ - "httpd.d/httpd_%PACKAGENAME%.conf.tmpl" ^ - "etc/postinstall/%PACKAGENAME%-server.bat" ^ - "etc/preremove/%PACKAGENAME%-server.bat" -if errorlevel 1 (echo tar server failed & goto error) - -move %PKGDIR%\bin\qgis.exe %OSGEO4W_ROOT%\bin\%PACKAGENAME%-bin.exe -if errorlevel 1 (echo move of desktop executable failed & goto error) -copy qgis.vars %OSGEO4W_ROOT%\bin\%PACKAGENAME%-bin.vars -if errorlevel 1 (echo copy of desktop executable vars failed & goto error) - -if not exist %PKGDIR%\qtplugins\sqldrivers mkdir %PKGDIR%\qtplugins\sqldrivers -move %OSGEO4W_ROOT%\apps\qt5\plugins\sqldrivers\qsqlocispatial.dll %PKGDIR%\qtplugins\sqldrivers -if errorlevel 1 (echo move of oci sqldriver failed & goto error) -move %OSGEO4W_ROOT%\apps\qt5\plugins\sqldrivers\qsqlspatialite.dll %PKGDIR%\qtplugins\sqldrivers -if errorlevel 1 (echo move of spatialite sqldriver failed & goto error) - -if not exist %PKGDIR%\qtplugins\designer mkdir %PKGDIR%\qtplugins\designer -move %OSGEO4W_ROOT%\apps\qt5\plugins\designer\qgis_customwidgets.dll %PKGDIR%\qtplugins\designer -if errorlevel 1 (echo move of customwidgets failed & goto error) - -if not exist %PKGDIR%\python\PyQt5\uic\widget-plugins mkdir %PKGDIR%\python\PyQt5\uic\widget-plugins -move %PYTHONHOME%\Lib\site-packages\PyQt5\uic\widget-plugins\qgis_customwidgets.py %PKGDIR%\python\PyQt5\uic\widget-plugins -if errorlevel 1 (echo move of customwidgets binding failed & goto error) - -for %%i in (dbghelp.dll symsrv.dll) do ( - copy "%DBGHLP_PATH%\%%i" %OSGEO4W_ROOT%\apps\%PACKAGENAME% - if errorlevel 1 (echo %%i not found & goto error) -) - -if not exist %ARCH%\release\qgis\%PACKAGENAME% mkdir %ARCH%\release\qgis\%PACKAGENAME% -%TAR% -C %OSGEO4W_ROOT% -cjf %ARCH%/release/qgis/%PACKAGENAME%/%PACKAGENAME%-%VERSION%-%PACKAGE%.tar.bz2 ^ - --exclude-from exclude ^ - --exclude "*.pyc" ^ - --exclude "apps/%PACKAGENAME%/python/qgis/_server.pyd" ^ - --exclude "apps/%PACKAGENAME%/python/qgis/_server.pyi" ^ - --exclude "apps/%PACKAGENAME%/python/qgis/_server.lib" ^ - --exclude "apps/%PACKAGENAME%/python/qgis/server" ^ - --exclude "apps/%PACKAGENAME%/server/" ^ - "bin/%PACKAGENAME%-bin.exe" ^ - "bin/%PACKAGENAME%-bin.vars" ^ - "bin/python-%PACKAGENAME%.bat.tmpl" ^ - "bin/qgis_process-%PACKAGENAME%.bat.tmpl" ^ - "apps/%PACKAGENAME%/bin/qgis_app.dll" ^ - "apps/%PACKAGENAME%/bin/qgis.reg.tmpl" ^ - "apps/%PACKAGENAME%/i18n/" ^ - "apps/%PACKAGENAME%/icons/" ^ - "apps/%PACKAGENAME%/images/" ^ - "apps/%PACKAGENAME%/plugins/plugin_offlineediting.dll" ^ - "apps/%PACKAGENAME%/plugins/plugin_topology.dll" ^ - "apps/%PACKAGENAME%/plugins/plugin_geometrychecker.dll" ^ - "apps/%PACKAGENAME%/qtplugins/sqldrivers/qsqlspatialite.dll" ^ - "apps/%PACKAGENAME%/qtplugins/designer/" ^ - "apps/%PACKAGENAME%/python/" ^ - "apps/%PACKAGENAME%/resources/customization.xml" ^ - "apps/%PACKAGENAME%/resources/themes/" ^ - "apps/%PACKAGENAME%/resources/data/" ^ - "apps/%PACKAGENAME%/resources/metadata-ISO/" ^ - "apps/%PACKAGENAME%/resources/opencl_programs/" ^ - "apps/%PACKAGENAME%/resources/palettes/" ^ - "apps/%PACKAGENAME%/resources/2to3migration.txt" ^ - "apps/%PACKAGENAME%/resources/qgis_global_settings.ini" ^ - "apps/%PACKAGENAME%/qgiscrashhandler.exe" ^ - "apps/%PACKAGENAME%/dbghelp.dll" ^ - "apps/%PACKAGENAME%/symsrv.dll" ^ - "bin/%PACKAGENAME%.bat.tmpl" ^ - "bin/%PACKAGENAME%-designer.bat.tmpl" ^ - "etc/postinstall/%PACKAGENAME%.bat" ^ - "etc/preremove/%PACKAGENAME%.bat" -if errorlevel 1 (echo tar desktop failed & goto error) - -if not exist %ARCH%\release\qgis\%PACKAGENAME%-pdb mkdir %ARCH%\release\qgis\%PACKAGENAME%-pdb -%TAR% -C %BUILDDIR% -cjf %ARCH%/release/qgis/%PACKAGENAME%-pdb/%PACKAGENAME%-pdb-%VERSION%-%PACKAGE%.tar.bz2 ^ - apps/%PACKAGENAME%/pdb -if errorlevel 1 (echo tar failed & goto error) - -%TAR% -C %OSGEO4W_ROOT% -cjf %ARCH%/release/qgis/%PACKAGENAME%-grass-plugin-common/%PACKAGENAME%-grass-plugin-common-%VERSION%-%PACKAGE%.tar.bz2 ^ - --exclude-from exclude ^ - --exclude "*.pyc" ^ - --exclude "apps/%PACKAGENAME%/grass/modules/qgis.d.rast6.exe" ^ - --exclude "apps/%PACKAGENAME%/grass/modules/qgis.d.rast7.exe" ^ - --exclude "apps/%PACKAGENAME%/grass/modules/qgis.g.info6.exe" ^ - --exclude "apps/%PACKAGENAME%/grass/modules/qgis.g.info7.exe" ^ - --exclude "apps/%PACKAGENAME%/grass/modules/qgis.r.in6.exe" ^ - --exclude "apps/%PACKAGENAME%/grass/modules/qgis.r.in7.exe" ^ - --exclude "apps/%PACKAGENAME%/grass/modules/qgis.v.in6.exe" ^ - --exclude "apps/%PACKAGENAME%/grass/modules/qgis.v.in7.exe" ^ - --exclude "apps/%PACKAGENAME%/grass/bin/qgis.g.browser6.exe" ^ - --exclude "apps/%PACKAGENAME%/grass/bin/qgis.g.browser7.exe" ^ - "apps/%PACKAGENAME%/grass" ^ - "etc/postinstall/%PACKAGENAME%-grass-plugin-common.bat" ^ - "etc/preremove/%PACKAGENAME%-grass-plugin-common.bat" -if errorlevel 1 (echo tar grass-plugin failed & goto error) - -for %%g IN (%GRASS_VERSIONS%) do ( - for /f "usebackq tokens=1" %%a in (`%%g --config version`) do set gv=%%a - for /F "delims=." %%i in ("!gv!") do set v=%%i - set w=!v! - if !v!==6 set w= - - %TAR% -C %OSGEO4W_ROOT% -cjf %ARCH%/release/qgis/%PACKAGENAME%-grass-plugin!w!/%PACKAGENAME%-grass-plugin!w!-%VERSION%-%PACKAGE%.tar.bz2 ^ - "apps/%PACKAGENAME%/bin/qgisgrass!v!.dll" ^ - "apps/%PACKAGENAME%/grass/bin/qgis.g.browser!v!.exe" ^ - "apps/%PACKAGENAME%/grass/modules/qgis.d.rast!v!.exe" ^ - "apps/%PACKAGENAME%/grass/modules/qgis.g.info!v!.exe" ^ - "apps/%PACKAGENAME%/grass/modules/qgis.r.in!v!.exe" ^ - "apps/%PACKAGENAME%/grass/modules/qgis.v.in!v!.exe" ^ - "apps/%PACKAGENAME%/plugins/plugin_grass!v!.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_grass!v!.dll" ^ - "apps/%PACKAGENAME%/plugins/provider_grassraster!v!.dll" ^ - "bin/%PACKAGENAME%-grass!v!.bat.tmpl" ^ - "etc/postinstall/%PACKAGENAME%-grass-plugin!w!.bat" ^ - "etc/preremove/%PACKAGENAME%-grass-plugin!w!.bat" - if errorlevel 1 (echo tar grass-plugin!w! failed & goto error) -) - -%TAR% -C %OSGEO4W_ROOT% -cjf %ARCH%/release/qgis/%PACKAGENAME%-oracle-provider/%PACKAGENAME%-oracle-provider-%VERSION%-%PACKAGE%.tar.bz2 ^ - "apps/%PACKAGENAME%/plugins/oracleprovider.dll" ^ - "apps/%PACKAGENAME%/qtplugins/sqldrivers/qsqlocispatial.dll" -if errorlevel 1 (echo tar oracle-provider failed & goto error) - -%TAR% -C %OSGEO4W_ROOT% -cjf %ARCH%/release/qgis/%PACKAGENAME%-devel/%PACKAGENAME%-devel-%VERSION%-%PACKAGE%.tar.bz2 ^ - --exclude-from exclude ^ - --exclude "*.pyc" ^ - "apps/%PACKAGENAME%/FindQGIS.cmake" ^ - "apps/%PACKAGENAME%/include/" ^ - "apps/%PACKAGENAME%/lib/" -if errorlevel 1 (echo tar devel failed & goto error) - -goto end - -:usage -echo usage: %0 version package packagename arch [sha [site]] -echo sample: %0 2.0.1 3 qgis x86 f802808 -exit /b 1 - -:error -echo BUILD ERROR %ERRORLEVEL%: %DATE% %TIME% -for %%i in (%packages%) do ( - if exist %ARCH%\release\qgis\%PACKAGENAME%%%i\%PACKAGENAME%%%i-%VERSION%-%PACKAGE%.tar.bz2 del %ARCH%\release\qgis\%PACKAGENAME%%%i\%PACKAGENAME%%%i-%VERSION%-%PACKAGE%.tar.bz2 -) -exit /b 1 - -:end -echo FINISHED: %DATE% %TIME% - -endlocal diff --git a/ms-windows/osgeo4w/postinstall-common.bat b/ms-windows/osgeo4w/postinstall-common.bat deleted file mode 100644 index 4cbee4a1bf3e..000000000000 --- a/ms-windows/osgeo4w/postinstall-common.bat +++ /dev/null @@ -1,5 +0,0 @@ -call "%OSGEO4W_ROOT%\bin\o4w_env.bat" -call qt5_env.bat -path %PATH%;%OSGEO4W_ROOT%\apps\@package@\bin -set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/@package@ -"%OSGEO4W_ROOT%\apps\@package@\crssync" diff --git a/ms-windows/osgeo4w/postinstall-desktop.bat b/ms-windows/osgeo4w/postinstall-desktop.bat deleted file mode 100644 index 392aeccfde0a..000000000000 --- a/ms-windows/osgeo4w/postinstall-desktop.bat +++ /dev/null @@ -1,25 +0,0 @@ -textreplace -std -t bin\@package@.bat -textreplace -std -t bin\@package@-designer.bat -textreplace -std -t bin\python-@package@.bat -textreplace -std -t bin\qgis_process-@package@.bat - -REM get short path without blanks -for %%i in ("%OSGEO4W_ROOT%") do set O4W_ROOT=%%~fsi -if "%OSGEO4W_DESKTOP%"=="" set OSGEO4W_DESKTOP=~$folder.common_desktop$ - -call "%OSGEO4W_ROOT%\bin\@package@.bat" --postinstall - -if not %OSGEO4W_MENU_LINKS%==0 mkdir "%OSGEO4W_STARTMENU%" -if not %OSGEO4W_DESKTOP_LINKS%==0 mkdir "%OSGEO4W_DESKTOP%" - -if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%O4W_ROOT%\bin\@package@-bin.exe" "%OSGEO4W_STARTMENU%" "QGIS Desktop @version@" "" "" "" "" "~$folder.mydocuments$" -if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%O4W_ROOT%\bin\@package@-bin.exe" "%OSGEO4W_DESKTOP%" "QGIS Desktop @version@" "" "" "" "" "~$folder.mydocuments$" - -if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%O4W_ROOT%\bin\nircmd.exe" "%OSGEO4W_STARTMENU%" "Qt Designer with QGIS @version@ custom widgets" "exec hide """%OSGEO4W_ROOT%\bin\@package@-designer.bat"" "%O4W_ROOT%\apps\@package@\icons\QGIS.ico" "" "" "~$folder.mydocuments$" -if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%O4W_ROOT%\bin\nircmd.exe" "%OSGEO4W_DESKTOP%" "Qt Designer with QGIS @version@ custom widgets" "exec hide %O4W_ROOT%\bin\@package@-designer.bat" "%O4W_ROOT%\apps\@package@\icons\QGIS.ico" "" "" "~$folder.mydocuments$" - -set OSGEO4W_ROOT=%OSGEO4W_ROOT:\=\\% -textreplace -std -t "%O4W_ROOT%\apps\@package@\bin\qgis.reg" -nircmd elevate "%WINDIR%\regedit" /s "%O4W_ROOT%\apps\@package@\bin\qgis.reg" -del /s /q "%OSGEO4W_ROOT%\apps\@package@\python\*.pyc" -exit /b 0 diff --git a/ms-windows/osgeo4w/postinstall-dev.bat b/ms-windows/osgeo4w/postinstall-dev.bat deleted file mode 100644 index 870873951314..000000000000 --- a/ms-windows/osgeo4w/postinstall-dev.bat +++ /dev/null @@ -1,55 +0,0 @@ -setlocal enabledelayedexpansion - -textreplace -std -t bin\@package@.bat -textreplace -std -t bin\@package@-designer.bat -textreplace -std -t bin\python-@package@.bat -textreplace -std -t bin\qgis_process-@package@.bat - -if "%OSGEO4W_DESKTOP%"=="" set OSGEO4W_DESKTOP=~$folder.common_desktop$ - -if not %OSGEO4W_MENU_LINKS%==0 mkdir "%OSGEO4W_STARTMENU%" -if not %OSGEO4W_DESKTOP_LINKS%==0 mkdir "%OSGEO4W_DESKTOP%" - -call "%OSGEO4W_ROOT%\bin\@package@.bat" --postinstall - -if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\@package@-bin.exe" "%OSGEO4W_STARTMENU%" "QGIS Desktop @version@" "" "" "" "" "~$folder.mydocuments$" -if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\@package@-bin.exe" "%OSGEO4W_DESKTOP%" "QGIS Desktop @version@" "" "" "" "" "~$folder.mydocuments$" - -for %%g in (@grassversions@) do ( - set gv= - for /f "usebackq tokens=1" %%a in (`%%g --config version`) do set gv=%%a - if not "!gv!"=="" ( - for /F "delims=." %%i in ("!gv!") do set v=%%i - - copy "%OSGEO4W_ROOT%\bin\@package@-bin.exe" "%OSGEO4W_ROOT%\bin\@package@-bin-g!v!.exe" - copy "%OSGEO4W_ROOT%\bin\@package@-bin.vars" "%OSGEO4W_ROOT%\bin\@package@-bin-g!v!.vars" - textreplace -std -map @grassmajor@ !v! -t bin\@package@-g!v!.bat - call "%OSGEO4W_ROOT%\bin\@package@-g!v!.bat" --postinstall - - if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\@package@-bin-g!v!.exe" "%OSGEO4W_STARTMENU%" "QGIS Desktop @version@ with GRASS !gv! (Nightly)" "" "" "" "" "~$folder.mydocuments$" - if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\@package@-bin-g!v!.exe" "%OSGEO4W_DESKTOP%" "QGIS Desktop @version@ with GRASS !gv! (Nightly)" "" "" "" "" "~$folder.mydocuments$" - ) -) - -if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\nircmd.exe" "%OSGEO4W_STARTMENU%" "Qt Designer with QGIS @version@ custom widgets (Nightly)" "exec hide """%OSGEO4W_ROOT%\bin\@package@-designer.bat"" "%OSGEO4W_ROOT%\apps\@package@\icons\QGIS.ico" "" "" "~$folder.mydocuments$" -if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\nircmd.exe" "%OSGEO4W_DESKTOP%" "Qt Designer with QGIS @version@ custom widgets (Nightly)" "exec hide """%OSGEO4W_ROOT%\bin\@package@-designer.bat"" "%OSGEO4W_ROOT%\apps\@package@\icons\QGIS.ico" "" "" "~$folder.mydocuments$" - -set O4W_ROOT=%OSGEO4W_ROOT% -set OSGEO4W_ROOT=%OSGEO4W_ROOT:\=\\% -textreplace -std -t "%O4W_ROOT%\apps\@package@\bin\qgis.reg" -set OSGEO4W_ROOT=%O4W_ROOT% - -REM Do not register extensions if release is installed -if not exist "%O4W_ROOT%\apps\qgis\bin\qgis.reg" nircmd elevate "%WINDIR%\regedit" /s "%O4W_ROOT%\apps\@package@\bin\qgis.reg" - -call "%OSGEO4W_ROOT%\bin\o4w_env.bat" -call qt5_env.bat -call gdal-dev-env.bat -path %PATH%;%OSGEO4W_ROOT%\apps\@package@\bin -set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/@package@ -"%OSGEO4W_ROOT%\apps\@package@\crssync" - -del /s /q "%OSGEO4W_ROOT%\apps\@package@\*.pyc" -exit /b 0 - -endlocal diff --git a/ms-windows/osgeo4w/postinstall-grass-plugin-common.bat b/ms-windows/osgeo4w/postinstall-grass-plugin-common.bat deleted file mode 100644 index 892c9d81cc32..000000000000 --- a/ms-windows/osgeo4w/postinstall-grass-plugin-common.bat +++ /dev/null @@ -1,2 +0,0 @@ -del /s /q "%OSGEO4W_ROOT%\apps\@package@\grass\*.pyc" -exit /b 0 diff --git a/ms-windows/osgeo4w/postinstall-grass.bat b/ms-windows/osgeo4w/postinstall-grass.bat deleted file mode 100644 index b851c2cde834..000000000000 --- a/ms-windows/osgeo4w/postinstall-grass.bat +++ /dev/null @@ -1,13 +0,0 @@ -textreplace -std -t bin\@package@-grass@grassmajor@.bat - -if "%OSGEO4W_DESKTOP%"=="" set OSGEO4W_DESKTOP=~$folder.common_desktop$ - -copy bin\@package@-bin.exe bin\@package@-bin-g@grassmajor@.exe -copy bin\@package@-bin.vars bin\@package@-bin-g@grassmajor@.vars -call "%OSGEO4W_ROOT%\bin\@package@-grass@grassmajor@.bat" --postinstall - -if not %OSGEO4W_MENU_LINKS%==0 mkdir "%OSGEO4W_STARTMENU%" -if not %OSGEO4W_DESKTOP_LINKS%==0 mkdir "%OSGEO4W_DESKTOP%" - -if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\@package@-bin-g@grassmajor@.exe" "%OSGEO4W_STARTMENU%" "QGIS Desktop @version@ with GRASS @grassversion@" "" "" "" "" "~$folder.mydocuments$" -if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\@package@-bin-g@grassmajor@.exe" "%OSGEO4W_DESKTOP%" "QGIS Desktop @version@ with GRASS @grassversion@" "" "" "" "" "~$folder.mydocuments$" diff --git a/ms-windows/osgeo4w/postinstall-server.bat b/ms-windows/osgeo4w/postinstall-server.bat deleted file mode 100644 index db7085284168..000000000000 --- a/ms-windows/osgeo4w/postinstall-server.bat +++ /dev/null @@ -1,5 +0,0 @@ -textreplace -std ^ - -map @windir@ "%WINDIR%" ^ - -map @temp@ "%TEMP%" ^ - -t httpd.d\httpd_@package@.conf -del httpd.d\httpd_@package@.conf.tmpl diff --git a/ms-windows/osgeo4w/preremove-desktop.bat b/ms-windows/osgeo4w/preremove-desktop.bat deleted file mode 100644 index 242a205480ca..000000000000 --- a/ms-windows/osgeo4w/preremove-desktop.bat +++ /dev/null @@ -1,15 +0,0 @@ -del "%OSGEO4W_STARTMENU%\QGIS Desktop @version@.lnk" -del "%OSGEO4W_STARTMENU%\QGIS Browser @version@.lnk" -del "%OSGEO4W_STARTMENU%\Qt Designer with QGIS @version@ custom widgets.lnk" -rmdir "%OSGEO4W_STARTMENU%" -del "%OSGEO4W_DESKTOP%\QGIS Desktop @version@.lnk" -del "%OSGEO4W_DESKTOP%\QGIS Browser @version@.lnk" -del "%OSGEO4W_DESKTOP%\Qt Designer with QGIS @version@ custom widgets.lnk" -rmdir "%OSGEO4W_DESKTOP%" -del "%OSGEO4W_ROOT%\bin\@package@.bat" -del "%OSGEO4W_ROOT%\bin\@package@-bin.vars" -del "%OSGEO4W_ROOT%\bin\@package@-bin.env" -del "%OSGEO4W_ROOT%\bin\@package@-designer.bat" -del "%OSGEO4W_ROOT%\apps\@package@\python\qgis\qgisconfig.py" -del "%OSGEO4W_ROOT%\apps\@package@\bin\qgis.reg" -del /s /q "%OSGEO4W_ROOT%\apps\@package@\python\*.pyc" diff --git a/ms-windows/osgeo4w/preremove-dev.bat b/ms-windows/osgeo4w/preremove-dev.bat deleted file mode 100644 index ae7532026c20..000000000000 --- a/ms-windows/osgeo4w/preremove-dev.bat +++ /dev/null @@ -1,30 +0,0 @@ -setlocal enabledelayedexpansion - -for %%g in (@grassversions@) do ( - for /f "usebackq tokens=1" %%a in (`%%g --config version`) do set gv=%%a - for /F "delims=." %%i in ("!gv!") do set v=%%i - - del "%OSGEO4W_STARTMENU%\QGIS Desktop @version@ with GRASS !gv! (Nightly).lnk" - del "%OSGEO4W_STARTMENU%\QGIS Browser @version@ with GRASS !gv! (Nightly).lnk" - del "%OSGEO4W_DESKTOP%\QGIS Desktop @version@ with GRASS !gv! (Nightly).lnk" - del "%OSGEO4W_DESKTOP%\QGIS Browser @version@ with GRASS !gv! (Nightly).lnk" - del "%OSGEO4W_ROOT%\bin\@package@-g!v!.bat" - del "%OSGEO4W_ROOT%\bin\@package@-bin-g!v!.exe" - del "%OSGEO4W_ROOT%\bin\@package@-bin-g!v!.env" - del "%OSGEO4W_ROOT%\bin\@package@-bin-g!v!.vars" -) - -del "%OSGEO4W_STARTMENU%\Qt Designer with QGIS @version@ custom widgets (Nightly).lnk" -rmdir "%OSGEO4W_STARTMENU%" -del "%OSGEO4W_DESKTOP%\Qt Designer with QGIS @version@ custom widgets (Nightly).lnk" -rmdir "%OSGEO4W_DESKTOP%" - -del "%OSGEO4W_ROOT%\bin\@package@-bin.env" -del "%OSGEO4W_ROOT%\bin\@package@-designer.bat" -del "%OSGEO4W_ROOT%\bin\python-@package@.bat" -del "%OSGEO4W_ROOT%\bin\qgis_process-@package@.bat" -del "%OSGEO4W_ROOT%\apps\@package@\python\qgis\qgisconfig.py" -del "%OSGEO4W_ROOT%\apps\@package@\bin\qgis.reg" -del /s /q "%OSGEO4W_ROOT%\apps\@package@\*.pyc" - -endlocal diff --git a/ms-windows/osgeo4w/preremove-grass-plugin-common.bat b/ms-windows/osgeo4w/preremove-grass-plugin-common.bat deleted file mode 100644 index 59ae472ac964..000000000000 --- a/ms-windows/osgeo4w/preremove-grass-plugin-common.bat +++ /dev/null @@ -1 +0,0 @@ -del /s /q "%OSGEO4W_ROOT%\apps\@package@\grass\*.pyc" diff --git a/ms-windows/osgeo4w/preremove-grass.bat b/ms-windows/osgeo4w/preremove-grass.bat deleted file mode 100644 index 1b2c2abc33c4..000000000000 --- a/ms-windows/osgeo4w/preremove-grass.bat +++ /dev/null @@ -1,10 +0,0 @@ -del "%OSGEO4W_STARTMENU%\QGIS Desktop @version@ with GRASS @grassversion@.lnk" -del "%OSGEO4W_STARTMENU%\QGIS Browser @version@ with GRASS @grassversion@.lnk" -rmdir "%OSGEO4W_STARTMENU%" -del "%OSGEO4W_DESKTOP%\QGIS Desktop @version@ with GRASS @grassversion@.lnk" -del "%OSGEO4W_DESKTOP%\QGIS Browser @version@ with GRASS @grassversion@.lnk" -rmdir "%OSGEO4W_DESKTOP%" -del "%OSGEO4W_ROOT%\bin\@package@-grass@grassmajor@.bat" -del "%OSGEO4W_ROOT%\bin\@package@-bin-g@grassmajor@.exe" -del "%OSGEO4W_ROOT%\bin\@package@-bin-g@grassmajor@.vars" -del "%OSGEO4W_ROOT%\bin\@package@-bin-g@grassmajor@.env" diff --git a/ms-windows/osgeo4w/preremove-server.bat b/ms-windows/osgeo4w/preremove-server.bat deleted file mode 100644 index 91f3f99f79fa..000000000000 --- a/ms-windows/osgeo4w/preremove-server.bat +++ /dev/null @@ -1 +0,0 @@ -del "%OSGEO4W_ROOT%\httpd.d\httpd_@package@.conf" diff --git a/ms-windows/osgeo4w/process.bat.tmpl b/ms-windows/osgeo4w/process.bat.tmpl deleted file mode 100644 index 87746d50bdc4..000000000000 --- a/ms-windows/osgeo4w/process.bat.tmpl +++ /dev/null @@ -1,14 +0,0 @@ -@echo off -call "%~dp0\o4w_env.bat" -call qt5_env.bat -call py3_env.bat -@echo off -path %OSGEO4W_ROOT%\apps\@package@\bin;%PATH% -set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/@package@ -set GDAL_FILENAME_IS_UTF8=YES -rem Set VSI cache to be used as buffer, see #6448 -set VSI_CACHE=TRUE -set VSI_CACHE_SIZE=1000000 -set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\@package@\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins -set PYTHONPATH=%OSGEO4W_ROOT%\apps\@package@\python;%PYTHONPATH% -"%OSGEO4W_ROOT%\apps\@package@\bin\qgis_process.exe" %* diff --git a/ms-windows/osgeo4w/python.bat.tmpl b/ms-windows/osgeo4w/python.bat.tmpl deleted file mode 100644 index 3282dcd50e5d..000000000000 --- a/ms-windows/osgeo4w/python.bat.tmpl +++ /dev/null @@ -1,14 +0,0 @@ -@echo off -call "%~dp0\o4w_env.bat" -call qt5_env.bat -call py3_env.bat -@echo off -path %OSGEO4W_ROOT%\apps\@package@\bin;%PATH% -set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/@package@ -set GDAL_FILENAME_IS_UTF8=YES -rem Set VSI cache to be used as buffer, see #6448 -set VSI_CACHE=TRUE -set VSI_CACHE_SIZE=1000000 -set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\@package@\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins -set PYTHONPATH=%OSGEO4W_ROOT%\apps\@package@\python;%PYTHONPATH% -"%PYTHONHOME%\python" %* diff --git a/ms-windows/osgeo4w/qgis-grass.bat.tmpl b/ms-windows/osgeo4w/qgis-grass.bat.tmpl deleted file mode 100644 index 4d45dca5a881..000000000000 --- a/ms-windows/osgeo4w/qgis-grass.bat.tmpl +++ /dev/null @@ -1,15 +0,0 @@ -@echo off -call "%~dp0\o4w_env.bat" -call qt5_env.bat -call py3_env.bat -set savedpath=%PATH% -call "%OSGEO4W_ROOT%\apps\grass\@grasspath@\etc\env.bat" -@echo off -path %OSGEO4W_ROOT%\apps\@package@\bin;%OSGEO4W_ROOT%\apps\grass\@grasspath@\lib;%OSGEO4W_ROOT%\apps\grass\@grasspath@\bin;%savedpath% -set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/@package@ -set GDAL_FILENAME_IS_UTF8=YES -rem Set VSI cache to be used as buffer, see #6448 -set VSI_CACHE=TRUE -set VSI_CACHE_SIZE=1000000 -set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\@package@\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins -start "QGIS" /B "%OSGEO4W_ROOT%\bin\@package@-bin-g@grassmajor@.exe" %* diff --git a/ms-windows/osgeo4w/qgis.bat.tmpl b/ms-windows/osgeo4w/qgis.bat.tmpl deleted file mode 100644 index e3c09c80e4b3..000000000000 --- a/ms-windows/osgeo4w/qgis.bat.tmpl +++ /dev/null @@ -1,13 +0,0 @@ -@echo off -call "%~dp0\o4w_env.bat" -call qt5_env.bat -call py3_env.bat -@echo off -path %OSGEO4W_ROOT%\apps\@package@\bin;%PATH% -set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/@package@ -set GDAL_FILENAME_IS_UTF8=YES -rem Set VSI cache to be used as buffer, see #6448 -set VSI_CACHE=TRUE -set VSI_CACHE_SIZE=1000000 -set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\@package@\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins -start "QGIS" /B "%OSGEO4W_ROOT%\bin\@package@-bin.exe" %* diff --git a/ms-windows/osgeo4w/qgis.reg.tmpl b/ms-windows/osgeo4w/qgis.reg.tmpl deleted file mode 100644 index 9bbd6b5afc2d..000000000000 --- a/ms-windows/osgeo4w/qgis.reg.tmpl +++ /dev/null @@ -1,48 +0,0 @@ -Windows Registry Editor Version 5.00 - -[HKEY_CLASSES_ROOT\QGIS Project] -@="QGIS Project" - -[HKEY_CLASSES_ROOT\QGIS Project\DefaultIcon] -@="@osgeo4w@\\apps\\@package@\\icons\\qgis-qgs.ico" - -[HKEY_CLASSES_ROOT\QGIS Project\Shell] - -[HKEY_CLASSES_ROOT\QGIS Project\Shell\open] -@="" - -[HKEY_CLASSES_ROOT\QGIS Project\Shell\open\command] -@="\"@osgeo4w@\\bin\\@package@.bat\" \"%1\"" - -[HKEY_CLASSES_ROOT\.qgs] -@="QGIS Project" - -[HKEY_CLASSES_ROOT\.qgz] -@="QGIS Project" - -[HKEY_CLASSES_ROOT\QGIS Composer Template] -@="QGIS Composer Template" - -[HKEY_CLASSES_ROOT\QGIS Composer Template\DefaultIcon] -@="@osgeo4w@\\apps\\@package@\\icons\\qgis-qpt.ico" - -[HKEY_CLASSES_ROOT\.qpt] -@="QGIS Composer Template" - -[HKEY_CLASSES_ROOT\QGIS Layer Settings] -@="QGIS Layer Settings" - -[HKEY_CLASSES_ROOT\QGIS Layer Settings\DefaultIcon] -@="@osgeo4w@\\apps\\@package@\\icons\\qgis-qml.ico" - -[HKEY_CLASSES_ROOT\.qml] -@="QGIS Layer Settings" - -[HKEY_CLASSES_ROOT\QGIS Layer Definition] -@="QGIS Layer Definition" - -[HKEY_CLASSES_ROOT\QGIS Layer Definition\DefaultIcon] -@="@osgeo4w@\\apps\\@package@\\icons\\qgis-qlr.ico" - -[HKEY_CLASSES_ROOT\.qlr] -@="QGIS Layer Definition" diff --git a/ms-windows/osgeo4w/qgis.vars b/ms-windows/osgeo4w/qgis.vars deleted file mode 100644 index 2fa37cfef9cb..000000000000 --- a/ms-windows/osgeo4w/qgis.vars +++ /dev/null @@ -1,30 +0,0 @@ -PATH -GDAL_DATA -GDAL_DRIVER_PATH -GDAL_FILENAME_IS_UTF8 -GEOTIFF_CSV -GISBASE -GRASS_HTML_BROWSER -GRASS_PROJSHARE -GRASS_PYTHON -GRASS_SH -GRASS_WISH -JPEGMEM -NLS_LANG -OSGEO4W_ROOT -PROJ_LIB -PYTHONHOME -PYTHONPATH -QGIS_PREFIX_PATH -QT_PLUGIN_PATH -QT_RASTER_CLIP_LIMIT -VSI_CACHE -VSI_CACHE_SIZE -O4W_QT_PREFIX -O4W_QT_BINARIES -O4W_QT_PLUGINS -O4W_QT_LIBRARIES -O4W_QT_TRANSLATIONS -O4W_QT_HEADERS -PGEO_DRIVER_TEMPLATE -OGR_SKIP diff --git a/ms-windows/osgeo4w/runasadmin.ps1 b/ms-windows/osgeo4w/runasadmin.ps1 deleted file mode 100644 index ab2b4fca35a0..000000000000 --- a/ms-windows/osgeo4w/runasadmin.ps1 +++ /dev/null @@ -1,4 +0,0 @@ -#-RunAsAdministrator -Write-Output ($args -join ' ') -$cmd, $args = $args -Start-Process $cmd -Wait -ArgumentList $args -NoNewWindow diff --git a/ms-windows/plugins.nsh b/ms-windows/plugins.nsh deleted file mode 100644 index 335ed71ba0e2..000000000000 --- a/ms-windows/plugins.nsh +++ /dev/null @@ -1,14 +0,0 @@ -############################### reg2nsis begin ################################# -# This NSIS-script was generated by the Reg2Nsis utility # -# Author : Artem Zankovich # -# URL : http://aarrtteemm.nm.ru # -# Usage : You can freely inserts this into your setup script as inline text # -# or include file with the help of !include directive. # -# Please don't remove this header. # -################################################################################ - -WriteRegStr HKEY_CURRENT_USER "Software\QGIS\QGIS3\Plugins" "grassplugin" "true" -WriteRegStr HKEY_CURRENT_USER "Software\QGIS\QGIS3\Plugins" "offlineeditingplugin" "true" -WriteRegStr HKEY_CURRENT_USER "Software\QGIS\QGIS3\Plugins" "topolplugin" "true" - -############################### reg2nsis end ################################# diff --git a/ms-windows/python_plugins.nsh b/ms-windows/python_plugins.nsh deleted file mode 100644 index 7a86b37ec826..000000000000 --- a/ms-windows/python_plugins.nsh +++ /dev/null @@ -1,14 +0,0 @@ -############################### reg2nsis begin ################################# -# This NSIS-script was generated by the Reg2Nsis utility # -# Author : Artem Zankovich # -# URL : http://aarrtteemm.nm.ru # -# Usage : You can freely inserts this into your setup script as inline text # -# or include file with the help of !include directive. # -# Please don't remove this header. # -################################################################################ - -WriteRegStr HKEY_CURRENT_USER "Software\QGIS\QGIS3\PythonPlugins" "GdalTools" "true" -WriteRegStr HKEY_CURRENT_USER "Software\QGIS\QGIS3\PythonPlugins" "db_manager" "true" -WriteRegStr HKEY_CURRENT_USER "Software\QGIS\QGIS3\PythonPlugins" "processing" "true" - -############################### reg2nsis end ################################# diff --git a/ms-windows/quickpackage.sh b/ms-windows/quickpackage.sh deleted file mode 100755 index a146c1fa12ab..000000000000 --- a/ms-windows/quickpackage.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bash -########################################################################### -# quickpackage.sh -# --------------------- -# Date : November 2010 -# Copyright : (C) 2010 by Tim Sutton -# Email : tim at kartoza dot com -########################################################################### -# # -# This program is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -########################################################################### - - -# This script is just for if you want to run the nsis (under linux) part -# of the package building process. Typically you should use -# -# osgeo4w/creatensis.pl -# -# rather to do the complete package build process. However running this -# script can be useful if you have manually tweaked the package contents -# under osgeo4w/unpacked and want to create a new package based on that. -# -# Tim Sutton November 2010 - -makensis \ --DVERSION_NUMBER='1.7.0' \ --DVERSION_NAME='Wroclaw' \ --DSVN_REVISION='0' \ --DQGIS_BASE='QGIS' \ --DINSTALLER_NAME='QGIS-1-7-0-Setup.exe' \ --DDISPLAYED_NAME='QGIS 1.7.0' \ --DBINARY_REVISION=1 \ --DINSTALLER_TYPE=OSGeo4W \ --DPACKAGE_FOLDER=osgeo4w/unpacked \ --DSHORTNAME=qgis \ -QGIS-Installer.nsi diff --git a/ms-windows/x64.nsh b/ms-windows/x64.nsh deleted file mode 100644 index e694c1e61369..000000000000 --- a/ms-windows/x64.nsh +++ /dev/null @@ -1,54 +0,0 @@ -; --------------------- -; x64.nsh -; --------------------- -; -; A few simple macros to handle installations on x64 machines. -; -; RunningX64 checks if the installer is running on x64. -; -; ${If} ${RunningX64} -; MessageBox MB_OK "running on x64" -; ${EndIf} -; -; DisableX64FSRedirection disables file system redirection. -; EnableX64FSRedirection enables file system redirection. -; -; SetOutPath $SYSDIR -; ${DisableX64FSRedirection} -; File some.dll # extracts to C:\Windows\System32 -; ${EnableX64FSRedirection} -; File some.dll # extracts to C:\Windows\SysWOW64 -; - -!ifndef ___X64__NSH___ -!define ___X64__NSH___ - -!include LogicLib.nsh - -!macro _RunningX64 _a _b _t _f - !insertmacro _LOGICLIB_TEMP - System::Call kernel32::GetCurrentProcess()i.s - System::Call kernel32::IsWow64Process(is,*i.s) - Pop $_LOGICLIB_TEMP - !insertmacro _!= $_LOGICLIB_TEMP 0 `${_t}` `${_f}` -!macroend - -!define RunningX64 `"" RunningX64 ""` - -!macro DisableX64FSRedirection - - System::Call kernel32::Wow64EnableWow64FsRedirection(i0) - -!macroend - -!define DisableX64FSRedirection "!insertmacro DisableX64FSRedirection" - -!macro EnableX64FSRedirection - - System::Call kernel32::Wow64EnableWow64FsRedirection(i1) - -!macroend - -!define EnableX64FSRedirection "!insertmacro EnableX64FSRedirection" - -!endif # !___X64__NSH___ diff --git a/python/PyQt6/gui/gui_auto.sip b/python/PyQt6/gui/gui_auto.sip index e6bf953cc433..6b52a03ca1d7 100644 --- a/python/PyQt6/gui/gui_auto.sip +++ b/python/PyQt6/gui/gui_auto.sip @@ -329,7 +329,9 @@ %Include auto_generated/editorwidgets/qgsdefaultsearchwidgetwrapper.sip %Include auto_generated/editorwidgets/qgsdoublespinbox.sip %Include auto_generated/editorwidgets/qgshtmlwidgetwrapper.sip +%If ( HAVE_QSCI_SIP ) %Include auto_generated/editorwidgets/qgsjsoneditwidget.sip +%End %Include auto_generated/editorwidgets/qgsmultiedittoolbutton.sip %Include auto_generated/editorwidgets/qgsrelationaggregatesearchwidgetwrapper.sip %Include auto_generated/editorwidgets/qgsrelationreferencesearchwidgetwrapper.sip diff --git a/python/gui/gui_auto.sip b/python/gui/gui_auto.sip index e6bf953cc433..6b52a03ca1d7 100644 --- a/python/gui/gui_auto.sip +++ b/python/gui/gui_auto.sip @@ -329,7 +329,9 @@ %Include auto_generated/editorwidgets/qgsdefaultsearchwidgetwrapper.sip %Include auto_generated/editorwidgets/qgsdoublespinbox.sip %Include auto_generated/editorwidgets/qgshtmlwidgetwrapper.sip +%If ( HAVE_QSCI_SIP ) %Include auto_generated/editorwidgets/qgsjsoneditwidget.sip +%End %Include auto_generated/editorwidgets/qgsmultiedittoolbutton.sip %Include auto_generated/editorwidgets/qgsrelationaggregatesearchwidgetwrapper.sip %Include auto_generated/editorwidgets/qgsrelationreferencesearchwidgetwrapper.sip diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index e9847f5041b6..3bd86feef79d 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -515,6 +515,10 @@ if (ANDROID) else() add_executable(${QGIS_APP_NAME} MACOSX_BUNDLE WIN32 ${QGIS_APPMAIN_SRCS}) + if(MSVC AND BUILD_WITH_QT6) + qt_disable_unicode_defines(${QGIS_APP_NAME}) + endif(MSVC AND BUILD_WITH_QT6) + # require c++17 target_compile_features(${QGIS_APP_NAME} PRIVATE cxx_std_17) target_compile_definitions(${QGIS_APP_NAME} PRIVATE "QT_PLUGINS_DIR=\"${QT_PLUGINS_DIR}\"") diff --git a/src/app/main.cpp b/src/app/main.cpp index 5cb8ee81e586..bce6f9f1ae43 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -177,10 +177,10 @@ void usage( const QString &appName ) << QStringLiteral( " the PostGIS extension\n" ) ; // OK #ifdef Q_OS_WIN - MessageBox( nullptr, - msg.join( QString() ).toLocal8Bit().constData(), - "QGIS command line options", - MB_OK ); + MessageBoxA( nullptr, + msg.join( QString() ).toLocal8Bit().constData(), + "QGIS command line options", + MB_OK ); #else std::cout << msg.join( QString() ).toLocal8Bit().constData(); #endif @@ -219,7 +219,7 @@ void myPrint( const char *fmt, ... ) #if defined(Q_OS_WIN) char buffer[1024]; vsnprintf( buffer, sizeof buffer, fmt, ap ); - OutputDebugString( buffer ); + OutputDebugStringA( buffer ); #else vfprintf( stderr, fmt, ap ); #endif diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index c6856c998c8d..af244470b57c 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -13054,7 +13054,11 @@ void QgisApp::openURL( QString url, bool useQgisDocDirectory ) CFRelease( urlRef ); #elif defined(Q_OS_WIN) if ( url.startsWith( "file://", Qt::CaseInsensitive ) ) +#ifdef UNICODE + ShellExecute( 0, 0, url.mid( 7 ).toStdWString().c_str(), 0, 0, SW_SHOWNORMAL ); +#else ShellExecute( 0, 0, url.mid( 7 ).toLocal8Bit().constData(), 0, 0, SW_SHOWNORMAL ); +#endif else QDesktopServices::openUrl( url ); #else diff --git a/src/core/layout/qgslayoutitemlegend.cpp b/src/core/layout/qgslayoutitemlegend.cpp index 6d1a02d3cfda..1ccef7dc7c81 100644 --- a/src/core/layout/qgslayoutitemlegend.cpp +++ b/src/core/layout/qgslayoutitemlegend.cpp @@ -1198,7 +1198,7 @@ void QgsLayoutItemLegend::doUpdateFilterByMap() { mapExtent.transform( mapTransform ); } - catch ( QgsCsException &cse ) + catch ( QgsCsException & ) { continue; } diff --git a/src/core/mesh/qgstopologicalmesh.cpp b/src/core/mesh/qgstopologicalmesh.cpp index b789f224f99d..e6b040f7e067 100644 --- a/src/core/mesh/qgstopologicalmesh.cpp +++ b/src/core/mesh/qgstopologicalmesh.cpp @@ -703,7 +703,7 @@ QgsMeshEditingError QgsTopologicalMesh::counterClockwiseFaces( QgsMeshFace &face if ( error != QgsMeshEditingError() ) return error; - if ( clockwise > 0 )// clockwise --> reverse the order of the index; + if ( clockwise )// clockwise --> reverse the order of the index; { for ( int i = 0; i < faceSize / 2; ++i ) { diff --git a/src/core/pal/labelposition.cpp b/src/core/pal/labelposition.cpp index ba1a576c58d8..caf010ed7af1 100644 --- a/src/core/pal/labelposition.cpp +++ b/src/core/pal/labelposition.cpp @@ -574,7 +574,7 @@ double LabelPosition::getDistanceToPoint( double xp, double yp, bool useOuterBou geos::unique_ptr point( GEOSGeom_createPointFromXY_r( geosctxt, xp, yp ) ); contains = ( GEOSPreparedContainsProperly_r( geosctxt, mPreparedOuterBoundsGeos, point.get() ) == 1 ); } - catch ( GEOSException &e ) + catch ( GEOSException & ) { contains = false; } diff --git a/src/core/pointcloud/qgslazdecoder.cpp b/src/core/pointcloud/qgslazdecoder.cpp index 67a4e3b7d462..efde5717dba5 100644 --- a/src/core/pointcloud/qgslazdecoder.cpp +++ b/src/core/pointcloud/qgslazdecoder.cpp @@ -38,7 +38,9 @@ #include "lazperf/readers.hpp" #if defined(_MSC_VER) +#ifndef UNICODE #define UNICODE +#endif #include #include #endif diff --git a/src/core/pointcloud/qgspointcloudlayerrenderer.cpp b/src/core/pointcloud/qgspointcloudlayerrenderer.cpp index b4868da229b2..276167147f58 100644 --- a/src/core/pointcloud/qgspointcloudlayerrenderer.cpp +++ b/src/core/pointcloud/qgspointcloudlayerrenderer.cpp @@ -688,7 +688,7 @@ void QgsPointCloudLayerRenderer::renderTriangulatedSurface( QgsPointCloudRenderC { delaunator.reset( new delaunator::Delaunator( points ) ); } - catch ( std::exception &e ) + catch ( std::exception & ) { // something went wrong, better to retrieve initial state QgsDebugMsgLevel( QStringLiteral( "Error with triangulation" ), 4 ); diff --git a/src/core/qgsattributetableconfig.h b/src/core/qgsattributetableconfig.h index ba50862a3312..9daf64a74a2f 100644 --- a/src/core/qgsattributetableconfig.h +++ b/src/core/qgsattributetableconfig.h @@ -48,7 +48,7 @@ class CORE_EXPORT QgsAttributeTableConfig /** * Defines the configuration of a column in the attribute table. */ - struct ColumnConfig + struct CORE_EXPORT ColumnConfig { //! Constructor for ColumnConfig ColumnConfig() = default; diff --git a/src/core/qgsexpressioncontext.cpp b/src/core/qgsexpressioncontext.cpp index b05f99490a5e..8e0b9c2bcedd 100644 --- a/src/core/qgsexpressioncontext.cpp +++ b/src/core/qgsexpressioncontext.cpp @@ -106,7 +106,11 @@ void QgsExpressionContextScope::addVariable( const QgsExpressionContextScope::St bool QgsExpressionContextScope::removeVariable( const QString &name ) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return mVariables.remove( name ); +#else return mVariables.remove( name ) > 0; +#endif } bool QgsExpressionContextScope::hasVariable( const QString &name ) const diff --git a/src/core/qgsopenclutils.cpp b/src/core/qgsopenclutils.cpp index 39fab282a0d0..beb1cf53e157 100644 --- a/src/core/qgsopenclutils.cpp +++ b/src/core/qgsopenclutils.cpp @@ -25,6 +25,9 @@ #include #ifdef Q_OS_WIN +#if defined(UNICODE) && !defined(_UNICODE) +#define _UNICODE +#endif #include #include #endif @@ -100,7 +103,12 @@ void QgsOpenClUtils::init() } #ifdef Q_OS_WIN - HMODULE hModule = GetModuleHandle( "OpenCL.dll" ); +#ifdef _UNICODE +#define _T(x) L##x +#else +#define _T(x) x +#endif + HMODULE hModule = GetModuleHandle( _T( "OpenCL.dll" ) ); if ( hModule ) { TCHAR pszFileName[1024]; @@ -114,13 +122,13 @@ void QgsOpenClUtils::init() DWORD dwLen = GetFileVersionInfoSize( pszFileName, &dwUseless ); if ( dwLen ) { - LPTSTR lpVI = ( LPSTR ) malloc( dwLen ); + LPTSTR lpVI = ( LPTSTR ) malloc( dwLen * sizeof( TCHAR ) ); if ( lpVI ) { if ( GetFileVersionInfo( pszFileName, 0, dwLen, lpVI ) ) { VS_FIXEDFILEINFO *lpFFI; - if ( VerQueryValue( lpVI, "\\", ( LPVOID * ) &lpFFI, ( UINT * ) &dwUseless ) ) + if ( VerQueryValue( lpVI, _T( "\\" ), ( LPVOID * ) &lpFFI, ( UINT * ) &dwUseless ) ) { QgsMessageLog::logMessage( QObject::tr( "OpenCL Product version: %1.%2.%3.%4" ) .arg( lpFFI->dwProductVersionMS >> 16 ) @@ -163,13 +171,23 @@ void QgsOpenClUtils::init() QgsDebugMsgLevel( QString( "d:%1 subBlock:%2" ).arg( d ).arg( subBlock ), 2 ); - BOOL r = VerQueryValue( lpVI, subBlock.toUtf8(), ( LPVOID * )&lpBuffer, ( UINT * )&dwUseless ); + BOOL r = VerQueryValue( lpVI, +#ifdef UNICODE + subBlock.toStdWString().c_str(), +#else + subBlock.toUtf8(), +#endif + ( LPVOID * )&lpBuffer, ( UINT * )&dwUseless ); if ( r && lpBuffer && lpBuffer != INVALID_HANDLE_VALUE && dwUseless < 1023 ) { QgsMessageLog::logMessage( QObject::tr( "Found OpenCL version info %1: %2" ) .arg( d ) +#ifdef UNICODE + .arg( QString::fromUtf16( ( const ushort * ) lpBuffer ) ), +#else .arg( QString::fromLocal8Bit( lpBuffer ) ), +#endif LOGMESSAGE_TAG, Qgis::MessageLevel::Info ); } } diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index a9a7a64db345..ae6d3f0850d2 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -1618,6 +1618,13 @@ else() PROPERTIES COMPILE_FLAGS "-w -Wno-deprecated-declarations") endif() +if(MSVC) + set_source_files_properties( + ${CMAKE_BINARY_DIR}/src/gui/qgis_gui_autogen/mocs_compilation.cpp + PROPERTIES COMPILE_FLAGS "/bigobj" + ) +endif() + ############################################################# # qgis_gui library @@ -1713,7 +1720,7 @@ GENERATE_EXPORT_HEADER( set(QGIS_GUI_HDRS ${QGIS_GUI_HDRS} ${CMAKE_CURRENT_BINARY_DIR}/qgis_gui.h) if(NOT APPLE OR NOT QGIS_MACAPP_FRAMEWORK) - if (WIN32 ) + if (WIN32) include_directories(${CMAKE_SOURCE_DIR}/src/native/win) elseif (APPLE) include_directories(${CMAKE_SOURCE_DIR}/src/native/mac) diff --git a/src/native/CMakeLists.txt b/src/native/CMakeLists.txt index cedc517814a1..73edb952b1ad 100644 --- a/src/native/CMakeLists.txt +++ b/src/native/CMakeLists.txt @@ -144,7 +144,7 @@ if (UNIX AND NOT APPLE AND NOT ANDROID) target_link_libraries(qgis_native ${QT_VERSION_BASE}::DBus) endif() -if (MSVC) +if (MSVC AND NOT BUILD_WITH_QT6) find_package(${QT_VERSION_BASE}WinExtras) target_link_libraries(qgis_native shell32) diff --git a/src/native/win/qgswinnative.cpp b/src/native/win/qgswinnative.cpp index 008c207a35aa..dbc83f6819b2 100644 --- a/src/native/win/qgswinnative.cpp +++ b/src/native/win/qgswinnative.cpp @@ -23,16 +23,24 @@ #include #include #include +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) #include #include #include #include #include +#endif #include "wintoastlib.h" #include #include #include +#ifdef UNICODE +#define _T(x) L##x +#else +#define _T(x) x +#endif + struct LPITEMIDLISTDeleter { @@ -57,6 +65,7 @@ void QgsWinNative::initializeMainWindow( QWindow *window, const QString &version ) { mWindow = window; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) if ( mTaskButton ) return; // already initialized! @@ -64,6 +73,7 @@ void QgsWinNative::initializeMainWindow( QWindow *window, mTaskButton->setWindow( window ); mTaskProgress = mTaskButton->progress(); mTaskProgress->setVisible( false ); +#endif QString appName = qgetenv( "QGIS_WIN_APP_NAME" ); if ( appName.isEmpty() ) @@ -126,7 +136,7 @@ void QgsWinNative::showFileProperties( const QString &path ) info.nShow = SW_SHOWNORMAL; info.fMask = SEE_MASK_INVOKEIDLIST; info.lpIDList = pidl.get(); - info.lpVerb = "properties"; + info.lpVerb = _T( "properties" ); ShellExecuteEx( &info ); } @@ -134,24 +144,31 @@ void QgsWinNative::showFileProperties( const QString &path ) void QgsWinNative::showUndefinedApplicationProgress() { +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) mTaskProgress->setMaximum( 0 ); mTaskProgress->show(); +#endif } void QgsWinNative::setApplicationProgress( double progress ) { +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) mTaskProgress->setMaximum( 100 ); mTaskProgress->show(); mTaskProgress->setValue( static_cast< int >( std::round( progress ) ) ); +#endif } void QgsWinNative::hideApplicationProgress() { +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) mTaskProgress->hide(); +#endif } void QgsWinNative::onRecentProjectsChanged( const std::vector &recentProjects ) { +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QWinJumpList jumplist; jumplist.recent()->clear(); for ( const RecentProjectProperties &recentProject : recentProjects ) @@ -163,6 +180,7 @@ void QgsWinNative::onRecentProjectsChanged( const std::vectorsetArguments( QStringList( recentProject.path ) ); jumplist.recent()->addItem( newProject ); } +#endif } class NotificationHandler : public WinToastLib::IWinToastHandler @@ -228,7 +246,11 @@ bool QgsWinNative::openTerminalAtPath( const QString &path ) return process.startDetached( &pid ); } +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) bool QgsWinNativeEventFilter::nativeEventFilter( const QByteArray &eventType, void *message, long * ) +#else +bool QgsWinNativeEventFilter::nativeEventFilter( const QByteArray &eventType, void *message, qintptr * ) +#endif { static const QByteArray sWindowsGenericMSG{ "windows_generic_MSG" }; if ( !message || eventType != sWindowsGenericMSG ) diff --git a/src/native/win/qgswinnative.h b/src/native/win/qgswinnative.h index 9f0e7479d144..c67902998128 100644 --- a/src/native/win/qgswinnative.h +++ b/src/native/win/qgswinnative.h @@ -15,8 +15,8 @@ * * ***************************************************************************/ -#ifndef QGSMACNATIVE_H -#define QGSMACNATIVE_H +#ifndef QGSWINNATIVE_H +#define QGSWINNATIVE_H #include "qgsnative.h" #include @@ -25,8 +25,10 @@ #include #pragma comment(lib,"Shell32.lib") +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) class QWinTaskbarButton; class QWinTaskbarProgress; +#endif class QWindow; @@ -35,7 +37,11 @@ class QgsWinNativeEventFilter : public QObject, public QAbstractNativeEventFilte Q_OBJECT public: +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) bool nativeEventFilter( const QByteArray &eventType, void *message, long * ) override; +#else + bool nativeEventFilter( const QByteArray &eventType, void *message, qintptr *result ) override; +#endif signals: @@ -70,10 +76,12 @@ class NATIVE_EXPORT QgsWinNative : public QgsNative QWindow *mWindow = nullptr; Capabilities mCapabilities = NativeFilePropertiesDialog | NativeOpenTerminalAtPath; bool mWinToastInitialized = false; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QWinTaskbarButton *mTaskButton = nullptr; QWinTaskbarProgress *mTaskProgress = nullptr; +#endif QgsWinNativeEventFilter *mNativeEventFilter = nullptr; }; -#endif // QGSMACNATIVE_H +#endif // QGSWINNATIVE_H diff --git a/src/providers/grass/qgsgrass.cpp b/src/providers/grass/qgsgrass.cpp index eb8585c112e3..946af31a1ded 100644 --- a/src/providers/grass/qgsgrass.cpp +++ b/src/providers/grass/qgsgrass.cpp @@ -270,8 +270,8 @@ QString QgsGrass::pathSeparator() #include QString QgsGrass::shortPath( const QString &path ) { - TCHAR buf[MAX_PATH]; - int len = GetShortPathName( path.toUtf8().constData(), buf, MAX_PATH ); + char buf[MAX_PATH]; + int len = GetShortPathNameA( path.toUtf8().constData(), buf, MAX_PATH ); if ( len == 0 || len > MAX_PATH ) { diff --git a/src/server/qgis_mapserver.cpp b/src/server/qgis_mapserver.cpp index 38d9fe5dcb7c..1ed9042085e0 100644 --- a/src/server/qgis_mapserver.cpp +++ b/src/server/qgis_mapserver.cpp @@ -177,7 +177,7 @@ class TcpServerWorker: public QObject }; // This will delete the connection - QTcpSocket::connect( clientConnection, &QAbstractSocket::disconnected, clientConnection, connectionDeleter, Qt::QueuedConnection ); + QObject::connect( clientConnection, &QAbstractSocket::disconnected, clientConnection, connectionDeleter, Qt::QueuedConnection ); #if 0 // Debugging output clientConnection->connect( clientConnection, &QAbstractSocket::errorOccurred, clientConnection, [ = ]( QAbstractSocket::SocketError socketError ) @@ -187,7 +187,7 @@ class TcpServerWorker: public QObject #endif // Incoming connection parser - QTcpSocket::connect( clientConnection, &QIODevice::readyRead, context, [ = ] { + QObject::connect( clientConnection, &QIODevice::readyRead, context, [ = ] { // Read all incoming data while ( clientConnection->bytesAvailable() > 0 ) From bbad3f8c7e8e1ed67ee65efdb0156bbc6780c2b2 Mon Sep 17 00:00:00 2001 From: "Juergen E. Fischer" Date: Tue, 14 May 2024 22:15:48 +0200 Subject: [PATCH 3/4] add pr comments for packages --- .github/workflows/osgeo4w.yml | 49 ++++++++++++++++++++++++++++++-- tests/code_layout/CMakeLists.txt | 2 +- 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/.github/workflows/osgeo4w.yml b/.github/workflows/osgeo4w.yml index deccc879a0c6..6c178e524908 100644 --- a/.github/workflows/osgeo4w.yml +++ b/.github/workflows/osgeo4w.yml @@ -26,6 +26,7 @@ permissions: env: REPO: ${{ github.server_url }}/${{ github.repository }} + CTEST_CUSTOM_TESTS_IGNORE: 'ProcessingQgisAlgorithmsTestPt1;ProcessingQgisAlgorithmsTestPt2;ProcessingQgisAlgorithmsTestPt3;ProcessingQgisAlgorithmsTestPt4;ProcessingQgisAlgorithmsTestPt5;ProcessingGdalAlgorithmsRasterTest;ProcessingGdalAlgorithmsVectorTest;ProcessingScriptUtilsTest;ProcessingGrassAlgorithmsImageryTest;ProcessingGrassAlgorithmsRasterTestPt1;ProcessingGrassAlgorithmsRasterTestPt2;ProcessingGrassAlgorithmsVectorTest;test_core_browsermodel;test_core_callout;test_core_compositionconverter;test_core_diagram;test_core_dxfexport;test_core_expression;test_core_fontmarker;test_core_gdalprovider;test_core_imagecache;test_core_labelingengine;test_core_layoutlabel;test_core_layoutmanualtable;test_core_layoutmap;test_core_layoutmapgrid;test_core_layoutpicture;test_core_layoutscalebar;test_core_layouttable;test_core_legendrenderer;test_core_linefillsymbol;test_core_maprendererjob;test_core_maprotation;test_core_mapsettingsutils;test_core_mesheditor;test_core_meshlayer;test_core_pallabeling;test_core_project;test_core_svgcache;test_core_svgmarker;test_core_tiledownloadmanager;test_core_vectorfilewriter;test_core_vectortilelayer;test_core_layouthtml;test_core_openclutils;test_gui_attributeform;test_gui_processinggui;test_gui_filedownloader;test_gui_ogrprovidergui;test_gui_externalresourcewidgetwrapper;test_gui_queryresultwidget;test_gui_rasterlayersaveasdialog;test_3d_3dcameracontroller;test_3d_3drendering;test_3d_layout3dmap;test_3d_mesh3drendering;test_3d_pointcloud3drendering;test_analysis_processingalgspt1;test_analysis_processingalgspt2;test_analysis_processingmodelalgorithm;test_analysis_processing;test_provider_wcsprovider;test_provider_wmsprovider;test_provider_copcprovider;qgis_grassprovidertest8;test_app_qgisappclipboard;test_app_measurebearingtool;test_app_vertextool;PyQgsAnnotationLineTextItem;PyQgsAnnotationPointTextItem;PyQgsBlockingProcess;PyQgsCesium3dTilesLayer;PyQgsColorRampLegendNode;PyQgsDelimitedTextProvider;PyQgsExifTools;PyQgsExternalStorageWebDAV;PyQgsExternalStorageAWSS3;PyQgsFontManager;PyQgsProject;PyQgsFileUtils;PyQgsGeometryGeneratorSymbolLayer;PyQgsGeometryTest;PyQgsGoogleMapsGeocoder;PyQgsGpxProvider;PyQgsLayoutAtlas;PyQgsLayoutElevationProfile;PyQgsLayoutLegend;PyQgsLayoutMap;PyQgsLayoutMapGrid;PyQgsLineSymbolLayers;PyQgsMapLayer;PyQgsOGRProviderGpkg;PyQgsOrientedBox3D;PyQgsPalLabelingCanvas;PyQgsPalLabelingLayout;PyQgsPalLabelingPlacement;PyQgsPlot;PyQgsPointCloudAttributeByRampRenderer;PyQgsPointCloudClassifiedRenderer;PyQgsPointCloudRgbRenderer;PyQgsPointDisplacementRenderer;PyQgsProcessExecutablePt2;PyQgsProcessingPackageLayersAlgorithm;PyQgsProfileExporter;PyQgsProviderConnectionSpatialite;TestQgsRandomMarkerSymbolLayer;PyQgsRasterAttributeTable;PyQgsRasterFileWriter;PyQgsRasterLayer;PyQgsRasterResampler;PyQgsSvgCache;PyQgsTextRenderer;PyQgsSensorThingsProvider;PyQgsExternalStorageSimpleCopy;PyQgsSpatialiteProvider;PyQgsTiledSceneRender;PyQgsVectorFileWriter;PyQgsVectorLayerCache;PyQgsVectorLayerEditBuffer;PyQgsVectorLayerProfileGenerator;PyQgsVirtualLayerProvider;PyQgsSettings;PyQgsSettingsEntry;PyQgsSettingsTreeNode;PyQgsZipUtils;PyQgsAuthManagerProxy;PyQgsAuxiliaryStorage;PyQgsSelectiveMasking;PyQgsAuthSettingsWidget;PyQgsOGRProvider;PyQgsWFSProviderGUI;PyQgsAnnotation;PyQgsAuthenticationSystem;PyQgsProjectionSelectionWidgets;PyQgsRasterLayerProperties;PyQgsVectorLayer;PyQgsServer;PyQgsServerWMS;PyQgsServerApi;PyQgsServerWMSGetFeatureInfo;PyQgsServerWMSGetMap;PyQgsServerWMSGetMapDxf;PyQgsServerWMSGetLegendGraphic;PyQgsServerWMSGetPrint;PyQgsServerWMSGetPrintExtra;PyQgsServerWMSGetPrintOutputs;PyQgsServerWMSGetPrintAtlas;PyQgsServerWMSGetPrintMapTheme;PyQgsServerWMSDimension;PyQgsServerSettings;PyQgsServerSecurity;PyQgsServerCacheManager;PyQgsServerWMTS;PyQgsServerWFS;PyQgsServerLocaleOverride;PyQgsOfflineEditingWFS;PyQgsAuthManagerPasswordOWSTest;PyQgsAuthManagerPKIOWSTest;PyQgsAuthManagerOAuth2OWSTest;PyQgsServerRequest' jobs: osgeo4w-packages: @@ -75,6 +76,9 @@ jobs: strategy: matrix: ${{ fromJson(needs.osgeo4w-packages.outputs.matrix) }} + permissions: + pull-requests: write + steps: - name: Restore build cache uses: actions/cache/restore@v4 @@ -104,7 +108,8 @@ jobs: %GITHUB_WORKSPACE%\scripts\ccache -sv - - uses: actions/upload-artifact@v4 + - id: upload + uses: actions/upload-artifact@v4 with: name: ${{ matrix.pkg }} path: x86_64/ @@ -112,7 +117,47 @@ jobs: - name: Save build cache for push only uses: actions/cache/save@v4 - if: ${{ github.event_name == 'push' }} + if: github.event_name == 'push' with: path: ccache key: build-ccache-osgeo4w-${{ matrix.pkg }}-${{ github.ref_name }}-${{ github.run_id }} + + - run: npm install xml-js + if: github.event_name == 'pull_request' + - name: 'Post artifact download link and test results as comment on PR' + uses: actions/github-script@v7 + if: github.event_name == 'pull_request' + with: + script: | + let fs = require('fs'); + let tag = String(fs.readFileSync("src/${{ matrix.pkg }}/osgeo4w/build/Testing/TAG")).split("\r\n")[0] + let buildId = require('xml-js').xml2js(fs.readFileSync("src/${{ matrix.pkg }}/osgeo4w/build/Testing/" + tag + "/Done.xml"), {compact:true, ignoreDeclaration:true})['Done']['buildId']['_text'] + + const prComments = await github.rest.issues.listComments({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number + }); + const PREFIX = "## OSGeo4W package ${{ matrix.pkg }} ready!"; + let body = PREFIX + "\n\n" + "Package repository archive of this PR is available for testing [here](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts/${{ steps.upload.outputs.artifact-id }})."; + body += "\n\n*(Built from commit ${{ github.event.pull_request.head.sha }})*\n"; + body += "\n\n*(Test results are [here](https://cdash.orfeo-toolbox.org/viewTest.php?buildid=" + buildId + "))*"; + + const winBuildComment = prComments.data?.find(c => c.body.startsWith(PREFIX)); + if (!!winBuildComment) { + // update the existing comment + await github.rest.issues.updateComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: winBuildComment.id, + body: body + }); + } else { + // submit a new comment + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + body: body + }); + } diff --git a/tests/code_layout/CMakeLists.txt b/tests/code_layout/CMakeLists.txt index 35f5fa28c479..ec46beccc63a 100644 --- a/tests/code_layout/CMakeLists.txt +++ b/tests/code_layout/CMakeLists.txt @@ -1,6 +1,6 @@ # TESTSRC is relative to ${CMAKE_SOURCE_DIR} macro (add_qgis_test_script TESTNAME TESTSRC) - add_test(${TESTNAME} ${CMAKE_SOURCE_DIR}/${TESTSRC}) + add_test(NAME ${TESTNAME} COMMAND sh ${CMAKE_SOURCE_DIR}/${TESTSRC}) set_tests_properties(${TESTNAME} PROPERTIES FIXTURES_REQUIRED SOURCETREE) endmacro() From beea934c2292afb31b68b830c172c4288cfde709 Mon Sep 17 00:00:00 2001 From: "Juergen E. Fischer" Date: Thu, 16 May 2024 01:59:50 +0200 Subject: [PATCH 4/4] fix sip_check failure --- python/PyQt6/gui/gui_auto.sip | 2 -- python/gui/gui_auto.sip | 2 -- 2 files changed, 4 deletions(-) diff --git a/python/PyQt6/gui/gui_auto.sip b/python/PyQt6/gui/gui_auto.sip index 6b52a03ca1d7..e6bf953cc433 100644 --- a/python/PyQt6/gui/gui_auto.sip +++ b/python/PyQt6/gui/gui_auto.sip @@ -329,9 +329,7 @@ %Include auto_generated/editorwidgets/qgsdefaultsearchwidgetwrapper.sip %Include auto_generated/editorwidgets/qgsdoublespinbox.sip %Include auto_generated/editorwidgets/qgshtmlwidgetwrapper.sip -%If ( HAVE_QSCI_SIP ) %Include auto_generated/editorwidgets/qgsjsoneditwidget.sip -%End %Include auto_generated/editorwidgets/qgsmultiedittoolbutton.sip %Include auto_generated/editorwidgets/qgsrelationaggregatesearchwidgetwrapper.sip %Include auto_generated/editorwidgets/qgsrelationreferencesearchwidgetwrapper.sip diff --git a/python/gui/gui_auto.sip b/python/gui/gui_auto.sip index 6b52a03ca1d7..e6bf953cc433 100644 --- a/python/gui/gui_auto.sip +++ b/python/gui/gui_auto.sip @@ -329,9 +329,7 @@ %Include auto_generated/editorwidgets/qgsdefaultsearchwidgetwrapper.sip %Include auto_generated/editorwidgets/qgsdoublespinbox.sip %Include auto_generated/editorwidgets/qgshtmlwidgetwrapper.sip -%If ( HAVE_QSCI_SIP ) %Include auto_generated/editorwidgets/qgsjsoneditwidget.sip -%End %Include auto_generated/editorwidgets/qgsmultiedittoolbutton.sip %Include auto_generated/editorwidgets/qgsrelationaggregatesearchwidgetwrapper.sip %Include auto_generated/editorwidgets/qgsrelationreferencesearchwidgetwrapper.sip