From 4875dfaf05ec510ab15855706f8a065e9c619cae Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Wed, 19 May 2021 15:08:20 +0200 Subject: [PATCH 01/50] Start new release cycle for PyPRT 1.3.1 --- pyprt/__init__.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyprt/__init__.py b/pyprt/__init__.py index 4fc8405d..9e0bb4c1 100644 --- a/pyprt/__init__.py +++ b/pyprt/__init__.py @@ -13,6 +13,6 @@ # limitations under the License. # A copy of the license is available in the repository's LICENSE file. -__version__ = '1.3.0' +__version__ = '1.3.1.dev0' from .pyprt import * diff --git a/setup.py b/setup.py index 0fdc055f..0020ba01 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ pyprt_name = 'PyPRT' pyprt_author = 'Esri R&D Center Zurich' pyprt_copyright = '(c) 2021, ' + pyprt_author -pyprt_version = '1.3.0' # keep consistent with __version__ in pyprt/__init__.py +pyprt_version = '1.3.1.dev0' # keep consistent with __version__ in pyprt/__init__.py record_file = os.path.join(os.path.realpath(os.curdir), pyprt_name+'.egg-info', 'record_setup_develop_files.txt') From 7751a172c5403f6a8092994633e8fd9309b0038f Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Mon, 17 May 2021 16:10:16 +0200 Subject: [PATCH 02/50] Updated and consolidated licensing information. Also ran formatter on setup.py --- README.md | 12 ++++++++---- setup.py | 33 +++++++++++++++++---------------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 61a9a480..f5ad575e 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ PyPRT provides a Python binding for PRT (Procedural RunTime) of CityEngine. This * [Minimal Example](#minimal-example) * [Documentation](#documentation) * [Development](#development) -* [License](#license) +* [License](#licensing-information) ## Installation @@ -177,10 +177,14 @@ Note: We only support Docker on Linux and Windows. On Windows, Docker needs to b * Windows: `docker run --rm -v %cd%:C:\temp\pyprt\root -w C:\temp\pyprt\root pyprt:windows-py36-conda cmd /c "python setup.py bdist_conda && copy C:\temp\conda\envs\pyprt\conda-bld\win-64\pyprt-*.tar.bz2 C:\temp\pyprt\root"` 1. The resulting conda package will be located in the current directy (PyPRT git repo root). -## License +## Licensing Information -PyPRT is under the same license as the included [CityEngine SDK](https://github.com/Esri/cityengine-sdk#licensing). +PyPRT is free for personal, educational, and non-commercial use. Commercial use requires at least one commercial license of the latest CityEngine version installed in the organization. Redistribution or web service offerings are not allowed unless expressly permitted. -An exception is the PyPRT source code (without CityEngine SDK, binaries, or object code), which is licensed under the Apache License, Version 2.0 (the “License”); you may not use this work except in compliance with the License. You may obtain a copy of the License at . +PyPRT is under the same license as the included [CityEngine SDK](https://github.com/esri/cityengine-sdk#licensing). An exception is the PyPRT source code (without CityEngine SDK, binaries, or object code), which is licensed under the Apache License, Version 2.0 (the “License”); you may not use this work except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 + +All content in the "Examples" directory/section is licensed under the APACHE 2.0 license as well. + +For questions or enquiries, please contact the Esri CityEngine team (cityengine-info@esri.com). [Back to top](#table-of-contents) diff --git a/setup.py b/setup.py index 0fdc055f..81d876a4 100644 --- a/setup.py +++ b/setup.py @@ -23,8 +23,10 @@ from distutils.dir_util import copy_tree, remove_tree from distutils import log from sphinx.setup_command import BuildDoc + try: from distutils.command.bdist_conda import CondaDistribution + distclass = CondaDistribution except: distclass = [] @@ -34,14 +36,14 @@ pyprt_copyright = '(c) 2021, ' + pyprt_author pyprt_version = '1.3.0' # keep consistent with __version__ in pyprt/__init__.py -record_file = os.path.join(os.path.realpath(os.curdir), pyprt_name+'.egg-info', 'record_setup_develop_files.txt') +record_file = os.path.join(os.path.realpath(os.curdir), pyprt_name + '.egg-info', 'record_setup_develop_files.txt') -long_description = """PyPRT provides a Python binding for PRT (Procedural RunTime) of CityEngine. This enables the execution of -[CityEngine](https://www.esri.com/software/cityengine) CGA rules within Python. Using PyPRT, the generation of 3D -content in Python is greatly simplified. Therefore, Python developers, data scientists, GIS analysts, -etc. can efficiently make use of CityEngine rule packages in order to create 3D geometries stored as Python data -structures, or to export these geometries in another format (like OBJ, Scene Layer Package, ... ). Given an initial -geometry, on which to apply the CGA rule, the 3D generation is procedurally done in Python (Python script, +long_description = """PyPRT provides a Python binding for PRT (Procedural RunTime) of CityEngine. This enables the +execution of [CityEngine](https://www.esri.com/software/cityengine) CGA rules within Python. Using PyPRT, +the generation of 3D content in Python is greatly simplified. Therefore, Python developers, data scientists, +GIS analysts, etc. can efficiently make use of CityEngine rule packages in order to create 3D geometries stored as +Python data structures, or to export these geometries in another format (like OBJ, Scene Layer Package, ... ). Given +an initial geometry, on which to apply the CGA rule, the 3D generation is procedurally done in Python (Python script, Jupyter Notebook, ...). This allows for efficient and customizable geometry generation. For instance, when modeling buildings, PyPRT users can easily change the parameters of the generated buildings (like the height or the shape) by changing the values of the CGA rule input attributes. @@ -52,13 +54,7 @@ PyPRT allows generating 3D models on multiple initial geometries. Different input attributes can be applied on each of these initial shapes. Moreover, the outputted 3D geometries can either be used inside Python or exported to -another format by using one of PRT encoders. - -*PyPRT is free for non-commercial use.* Commercial use requires at least one commercial license of the latest -CityEngine version installed in the organization. No redistribution is allowed. An exception is the PyPRT source code -(without CityEngine SDK, binaries or object code), which is licensed under the Apache License, Version 2.0 (the -"License"); you may not use this work except in compliance with the License. You may obtain a copy of the License at -[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0). """ +another format by using one of PRT encoders.""" class CMakeConfig: @@ -244,8 +240,13 @@ def run(self): 'build_doc': BuildDoc}, distclass=distclass, conda_import_tests=False, - license="PyPRT is under the same license as the included CityEngine SDK. An exception is the PyPRT source code, " - "which is licensed under the Apache License, Version 2.0.", + license="PyPRT is free for personal, educational, and non-commercial use. Commercial use requires at least one " + "commercial license of the latest CityEngine version installed in the organization. Redistribution or web " + "service offerings are not allowed unless expressly permitted. PyPRT is under the same license as the " + "included [CityEngine SDK](https://github.com/Esri/esri-cityengine-sdk#licensing). An exception is the " + "PyPRT source code (without CityEngine SDK, binaries, or object code), which is licensed under the Apache " + "License, Version 2.0 (the “License”); you may not use this work except in compliance with the License. " + "You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0", classifiers=['Development Status :: 5 - Production/Stable', 'License :: Free for non-commercial use', 'License :: OSI Approved :: Apache Software License', From e1ed239785c4db1c58a4cca23b6271da2f9a7679 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Thu, 20 May 2021 11:21:18 +0200 Subject: [PATCH 03/50] Sync license entry in ToC --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f5ad575e..d6b2e705 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ PyPRT provides a Python binding for PRT (Procedural RunTime) of CityEngine. This * [Minimal Example](#minimal-example) * [Documentation](#documentation) * [Development](#development) -* [License](#licensing-information) +* [Licensing Information](#licensing-information) ## Installation From 6a1eba2419d4b24a85b3e2ab3ac1804116e7da04 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Jun 2021 04:39:51 +0000 Subject: [PATCH 04/50] build(deps): bump urllib3 from 1.26.4 to 1.26.5 in /envs/centos7/py36 Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.4 to 1.26.5. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.26.4...1.26.5) --- updated-dependencies: - dependency-name: urllib3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- envs/centos7/py36/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/envs/centos7/py36/requirements.txt b/envs/centos7/py36/requirements.txt index d6195d94..0193af4b 100644 --- a/envs/centos7/py36/requirements.txt +++ b/envs/centos7/py36/requirements.txt @@ -110,7 +110,7 @@ traitlets==4.3.3 twine==3.4.0 typing-extensions==3.7.4.3 ujson==4.0.2 -urllib3==1.26.4 +urllib3==1.26.5 virtualenv==20.4.3 wcwidth==0.2.5 webencodings==0.5.1 From 4545b396101f51b501d7625d3c986840fe7ece53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Jun 2021 04:39:52 +0000 Subject: [PATCH 05/50] build(deps): bump urllib3 from 1.26.4 to 1.26.5 in /envs/windows/py37 Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.4 to 1.26.5. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.26.4...1.26.5) --- updated-dependencies: - dependency-name: urllib3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- envs/windows/py37/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/envs/windows/py37/requirements.txt b/envs/windows/py37/requirements.txt index 678364c2..11056ea8 100644 --- a/envs/windows/py37/requirements.txt +++ b/envs/windows/py37/requirements.txt @@ -99,7 +99,7 @@ tqdm==4.60.0 traitlets==5.0.5 twine==3.4.1 typing-extensions==3.10.0.0 -urllib3==1.26.4 +urllib3==1.26.5 wcwidth==0.2.5 webencodings==0.5.1 widgetsnbextension==3.5.1 From c352e883358d1c25523e358829fab0b2ced895da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Jun 2021 04:39:57 +0000 Subject: [PATCH 06/50] build(deps): bump urllib3 from 1.26.4 to 1.26.5 in /envs/windows/py38 Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.4 to 1.26.5. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.26.4...1.26.5) --- updated-dependencies: - dependency-name: urllib3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- envs/windows/py38/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/envs/windows/py38/requirements.txt b/envs/windows/py38/requirements.txt index 4bc251dc..08a280bf 100644 --- a/envs/windows/py38/requirements.txt +++ b/envs/windows/py38/requirements.txt @@ -107,7 +107,7 @@ tqdm==4.60.0 traitlets==5.0.5 twine==3.4.1 ujson==4.0.2 -urllib3==1.26.4 +urllib3==1.26.5 wcwidth==0.2.5 webencodings==0.5.1 widgetsnbextension==3.5.1 From 9ec7006e27595c5b224b7a603fff708a437a9099 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Jun 2021 04:39:57 +0000 Subject: [PATCH 07/50] build(deps): bump urllib3 from 1.26.4 to 1.26.5 in /envs/centos7/py38 Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.4 to 1.26.5. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.26.4...1.26.5) --- updated-dependencies: - dependency-name: urllib3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- envs/centos7/py38/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/envs/centos7/py38/requirements.txt b/envs/centos7/py38/requirements.txt index 0359a82b..3c9e4acb 100644 --- a/envs/centos7/py38/requirements.txt +++ b/envs/centos7/py38/requirements.txt @@ -101,7 +101,7 @@ tqdm==4.60.0 traitlets==5.0.5 twine==3.4.1 ujson==4.0.2 -urllib3==1.26.4 +urllib3==1.26.5 wcwidth==0.2.5 webencodings==0.5.1 widgetsnbextension==3.5.1 From d9bf67fec30eabf29499aacda66569095d0db06c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Jun 2021 23:27:53 +0000 Subject: [PATCH 08/50] build(deps): bump pillow from 8.1.2 to 8.2.0 in /envs/centos7/py36 Bumps [pillow](https://github.com/python-pillow/Pillow) from 8.1.2 to 8.2.0. - [Release notes](https://github.com/python-pillow/Pillow/releases) - [Changelog](https://github.com/python-pillow/Pillow/blob/master/CHANGES.rst) - [Commits](https://github.com/python-pillow/Pillow/compare/8.1.2...8.2.0) --- updated-dependencies: - dependency-name: pillow dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- envs/centos7/py36/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/envs/centos7/py36/requirements.txt b/envs/centos7/py36/requirements.txt index d6195d94..1e3b16f5 100644 --- a/envs/centos7/py36/requirements.txt +++ b/envs/centos7/py36/requirements.txt @@ -65,7 +65,7 @@ pandocfilters==1.4.3 parso==0.8.1 pexpect==4.8.0 pickleshare==0.7.5 -Pillow==8.1.2 +Pillow==8.2.0 pkginfo==1.7.0 pluggy==0.13.1 prometheus-client==0.9.0 From f9a9e2159319bcde986020a3c7495905e3896379 Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Mon, 28 Jun 2021 15:18:02 +0200 Subject: [PATCH 09/50] Update version to 1.4 --- pyprt/__init__.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyprt/__init__.py b/pyprt/__init__.py index 9e0bb4c1..db25c60a 100644 --- a/pyprt/__init__.py +++ b/pyprt/__init__.py @@ -13,6 +13,6 @@ # limitations under the License. # A copy of the license is available in the repository's LICENSE file. -__version__ = '1.3.1.dev0' +__version__ = '1.4.0.dev0' from .pyprt import * diff --git a/setup.py b/setup.py index f0614817..191a97e5 100644 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ pyprt_name = 'PyPRT' pyprt_author = 'Esri R&D Center Zurich' pyprt_copyright = '(c) 2021, ' + pyprt_author -pyprt_version = '1.3.1.dev0' # keep consistent with __version__ in pyprt/__init__.py +pyprt_version = '1.4.0.dev0' # keep consistent with __version__ in pyprt/__init__.py record_file = os.path.join(os.path.realpath(os.curdir), pyprt_name + '.egg-info', 'record_setup_develop_files.txt') From 262b379b45d6267c94f26698c78b649cfbab61d2 Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Tue, 29 Jun 2021 10:36:46 +0200 Subject: [PATCH 10/50] update PRT version to 2.4 and corresponding windows compiler requirements --- CHANGELOG.md | 6 ++++++ README.md | 2 +- src/dependencies.cmake | 4 ++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04eba1bb..6562c624 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # PyPRT ChangeLog +## v1.4.0 (2021-07-XX) + +### Changed +* Internal update to PRT 2.4 +* Updated compiler requirements on Windows (MSVC 14.27) + ## v1.3.0 (2021-05-12) ### Added diff --git a/README.md b/README.md index d6b2e705..2fced12c 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ The project is composed of two parts: the C++ native directory (`src`) and Pytho ### Requirements * C++ Compiler (C++ 17) - * Windows: MSVC 14.23 or later + * Windows: MSVC 14.27 or later * Linux: GCC 8 or later (we build and test on RHEL7/CentOS7) * macOS (Catalina or later): Xcode 11 or later * Python (version >= 3.6) diff --git a/src/dependencies.cmake b/src/dependencies.cmake index 5e888984..78fddb21 100644 --- a/src/dependencies.cmake +++ b/src/dependencies.cmake @@ -36,7 +36,7 @@ endif() if(NOT prt_DIR) if(PYPRT_WINDOWS) set(PRT_OS "win10") - set(PRT_TC "vc142") + set(PRT_TC "vc1427") elseif(PYPRT_LINUX) set(PRT_OS "rhel7") set(PRT_TC "gcc63") @@ -45,7 +45,7 @@ if(NOT prt_DIR) set(PRT_TC "ac81") endif() - set(PRT_VERSION "2.3.6821") + set(PRT_VERSION "2.4.7316") set(PRT_ARCHIVE "esri_ce_sdk-${PRT_VERSION}-${PRT_OS}-${PRT_TC}-x86_64-rel-opt.zip") set(PRT_URL "https://github.com/esri/cityengine-sdk/releases/download/${PRT_VERSION}/${PRT_ARCHIVE}") From c5c52c7f1ac0837b8afb888f1dfce3324155f7cc Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Tue, 29 Jun 2021 10:57:36 +0200 Subject: [PATCH 11/50] Update linux compiler requirements --- README.md | 2 +- src/dependencies.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2fced12c..3ceb6a6f 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ The project is composed of two parts: the C++ native directory (`src`) and Pytho * C++ Compiler (C++ 17) * Windows: MSVC 14.27 or later - * Linux: GCC 8 or later (we build and test on RHEL7/CentOS7) + * Linux: GCC 9.3 or later (we build and test on RHEL7/CentOS7) * macOS (Catalina or later): Xcode 11 or later * Python (version >= 3.6) * Packages (latest version if not specified): wheel, arcgis 1.8.2, twine, sphinx, pkginfo, xmlrunner diff --git a/src/dependencies.cmake b/src/dependencies.cmake index 78fddb21..b1173247 100644 --- a/src/dependencies.cmake +++ b/src/dependencies.cmake @@ -39,7 +39,7 @@ if(NOT prt_DIR) set(PRT_TC "vc1427") elseif(PYPRT_LINUX) set(PRT_OS "rhel7") - set(PRT_TC "gcc63") + set(PRT_TC "gcc93") elseif(PYPRT_MACOS) set(PRT_OS "osx12") set(PRT_TC "ac81") From ae423a0a9c7e7d551d0d06599d67cd26a00d2b70 Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Tue, 29 Jun 2021 11:00:25 +0200 Subject: [PATCH 12/50] Update jenkinsfile to new compiler requirements --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index df73265f..775f84e7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -49,8 +49,8 @@ env.PIPELINE_ARCHIVING_ALLOWED = "true" @Field final Map PY36_CONDA_CONFIG = [ py: '3.6-conda' ] @Field final Map PY37_CONDA_CONFIG = [ py: '3.7-conda' ] @Field final Map PY38_CONDA_CONFIG = [ py: '3.8-conda' ] -@Field final Map LINUX_NATIVE_CONFIG = [ os: cepl.CFG_OS_RHEL7, bc: cepl.CFG_BC_REL, tc: cepl.CFG_TC_GCC83, cc: cepl.CFG_CC_OPT, arch: cepl.CFG_ARCH_X86_64 ] -@Field final Map WINDOWS_NATIVE_CONFIG = [ os: cepl.CFG_OS_WIN10, bc: cepl.CFG_BC_REL, tc: cepl.CFG_TC_VC142, cc: cepl.CFG_CC_OPT, arch: cepl.CFG_ARCH_X86_64 ] +@Field final Map LINUX_NATIVE_CONFIG = [ os: cepl.CFG_OS_RHEL7, bc: cepl.CFG_BC_REL, tc: cepl.CFG_TC_GCC93, cc: cepl.CFG_CC_OPT, arch: cepl.CFG_ARCH_X86_64 ] +@Field final Map WINDOWS_NATIVE_CONFIG = [ os: cepl.CFG_OS_WIN10, bc: cepl.CFG_BC_REL, tc: cepl.CFG_TC_VC1427, cc: cepl.CFG_CC_OPT, arch: cepl.CFG_ARCH_X86_64 ] @Field final Map LINUX_DOCKER_CONFIG = [ ba: DOCKER_AGENT_LINUX, ws: DOCKER_WS_LINUX ] @Field final Map WINDOWS_DOCKER_CONFIG = [ ba: DOCKER_AGENT_WINDOWS, ws: DOCKER_WS_WINDOWS ] From 79b629d9d927cb742219223da091acae3634369b Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Tue, 29 Jun 2021 12:41:14 +0200 Subject: [PATCH 13/50] remove macos support --- CHANGELOG.md | 5 ++ README.md | 4 +- envs/macos/py36-conda/environment.yml | 10 --- envs/macos/py36/requirements.txt | 108 -------------------------- envs/macos/py38-conda/environment.yml | 10 --- envs/macos/py38/requirements.txt | 105 ------------------------- setup.py | 3 +- src/client/CMakeLists.txt | 13 ---- src/codec/CMakeLists.txt | 5 -- src/dependencies.cmake | 5 -- 10 files changed, 7 insertions(+), 261 deletions(-) delete mode 100644 envs/macos/py36-conda/environment.yml delete mode 100644 envs/macos/py36/requirements.txt delete mode 100644 envs/macos/py38-conda/environment.yml delete mode 100644 envs/macos/py38/requirements.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 04eba1bb..e2132f42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # PyPRT ChangeLog +## v1.4.0 (2021-07-XX) + +### Removed +* Removed MacOS support + ## v1.3.0 (2021-05-12) ### Added diff --git a/README.md b/README.md index d6b2e705..5ef0b4b7 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ PyPRT provides a Python binding for PRT (Procedural RunTime) of CityEngine. This Run `pip install pyprt` in your (virtual) Python environment or `conda install -c esri pyprt` in a Conda environment. Then use `import pyprt` in your scripts. -We provide wheels for Python 3.6 and 3.8 on Linux, Windows and macOS. Additionally, we also provide wheels for Python 3.7 on Windows. Conda packages are available for Python 3.6, 3.7 and 3.8 on Linux, Windows and macOS. For other Python versions please [build](#development) PyPRT yourself. +We provide wheels for Python 3.6 and 3.8 on Linux and Windows. Additionally, we also provide wheels for Python 3.7 on Windows. Conda packages are available for Python 3.6, 3.7 and 3.8 on Linux and Windows. For other Python versions please [build](#development) PyPRT yourself. ## Minimal Example @@ -73,7 +73,6 @@ The project is composed of two parts: the C++ native directory (`src`) and Pytho * C++ Compiler (C++ 17) * Windows: MSVC 14.23 or later * Linux: GCC 8 or later (we build and test on RHEL7/CentOS7) - * macOS (Catalina or later): Xcode 11 or later * Python (version >= 3.6) * Packages (latest version if not specified): wheel, arcgis 1.8.2, twine, sphinx, pkginfo, xmlrunner * Optional: Conda (e.g. miniconda3) @@ -84,7 +83,6 @@ A note regarding the meaning of "open a shell" in the following sections: this i * On Windows, use the shortcuts provided by Visual Studio or run `vcvarsall.bat` of the desired MSVC toolchain. * On RHEL-based Linux, run e.g. `source /opt/rh/devtoolset-8/enable`. -* On macOS, there is usually no action required (the current Xcode command line tools are activated by default). _Note: on Windows, replace `bin` with `Scripts` in the following commands. Some commands also differ in their file extension between Linux and Windows (`.sh` vs `.bat` and similar). Please refer to the `venv` documentation for details: _ diff --git a/envs/macos/py36-conda/environment.yml b/envs/macos/py36-conda/environment.yml deleted file mode 100644 index f75b477b..00000000 --- a/envs/macos/py36-conda/environment.yml +++ /dev/null @@ -1,10 +0,0 @@ -channels: - - defaults - - anaconda - - esri -dependencies: - - python=3.6 - - sphinx - - conda-build - - conda-verify - - arcgis=1.8.2 diff --git a/envs/macos/py36/requirements.txt b/envs/macos/py36/requirements.txt deleted file mode 100644 index d45acf50..00000000 --- a/envs/macos/py36/requirements.txt +++ /dev/null @@ -1,108 +0,0 @@ -alabaster==0.7.12 -anyio==2.2.0 -appnope==0.1.2 -arcgis==1.8.2 -argon2-cffi==20.1.0 -async-generator==1.10 -attrs==21.2.0 -Babel==2.9.1 -backcall==0.2.0 -bleach==3.3.0 -certifi==2020.12.5 -cffi==1.14.5 -chardet==4.0.0 -colorama==0.4.4 -contextvars==2.4 -cryptography==3.4.7 -cycler==0.10.0 -dataclasses==0.8 -decorator==5.0.7 -defusedxml==0.7.1 -deprecation==2.1.0 -docutils==0.16 -entrypoints==0.3 -idna==2.10 -imagesize==1.2.0 -immutables==0.15 -importlib-metadata==4.0.1 -ipykernel==5.5.4 -ipython==7.16.1 -ipython-genutils==0.2.0 -ipywidgets==7.6.3 -jedi==0.18.0 -Jinja2==2.11.3 -json5==0.9.5 -jsonschema==3.2.0 -jupyter-client==6.1.12 -jupyter-core==4.7.1 -jupyter-packaging==0.10.1 -jupyter-server==1.6.4 -jupyterlab==3.0.14 -jupyterlab-pygments==0.1.2 -jupyterlab-server==2.5.0 -jupyterlab-widgets==1.0.0 -keyring==23.0.1 -kiwisolver==1.3.1 -lerc==0.1.0 -MarkupSafe==1.1.1 -matplotlib==3.3.4 -mistune==0.8.4 -nbclassic==0.2.7 -nbclient==0.5.3 -nbconvert==6.0.7 -nbformat==5.1.3 -nest-asyncio==1.5.1 -notebook==6.3.0 -ntlm-auth==1.5.0 -numpy==1.19.5 -oauthlib==3.1.0 -packaging==20.9 -pandas==1.1.5 -pandocfilters==1.4.3 -parso==0.8.2 -pexpect==4.8.0 -pickleshare==0.7.5 -Pillow==8.2.0 -pkginfo==1.7.0 -prometheus-client==0.10.1 -prompt-toolkit==3.0.18 -ptyprocess==0.7.0 -pycparser==2.20 -Pygments==2.9.0 -pyparsing==2.4.7 -pyrsistent==0.17.3 -pyshp==2.1.3 -python-dateutil==2.8.1 -pytz==2021.1 -pyzmq==22.0.3 -readme-renderer==29.0 -requests==2.25.1 -requests-ntlm==1.1.0 -requests-oauthlib==1.3.0 -requests-toolbelt==0.9.1 -rfc3986==1.4.0 -Send2Trash==1.5.0 -six==1.16.0 -sniffio==1.2.0 -snowballstemmer==2.1.0 -Sphinx==3.5.4 -sphinxcontrib-applehelp==1.0.2 -sphinxcontrib-devhelp==1.0.2 -sphinxcontrib-htmlhelp==1.0.3 -sphinxcontrib-jsmath==1.0.1 -sphinxcontrib-qthelp==1.0.3 -sphinxcontrib-serializinghtml==1.1.4 -terminado==0.9.4 -testpath==0.4.4 -tomlkit==0.7.0 -tornado==6.1 -tqdm==4.60.0 -traitlets==4.3.3 -twine==3.4.1 -typing-extensions==3.10.0.0 -urllib3==1.26.4 -wcwidth==0.2.5 -webencodings==0.5.1 -widgetsnbextension==3.5.1 -xmlrunner==1.7.7 -zipp==3.4.1 diff --git a/envs/macos/py38-conda/environment.yml b/envs/macos/py38-conda/environment.yml deleted file mode 100644 index cfb6951c..00000000 --- a/envs/macos/py38-conda/environment.yml +++ /dev/null @@ -1,10 +0,0 @@ -channels: - - defaults - - anaconda - - esri -dependencies: - - python=3.8 - - sphinx - - conda-build - - conda-verify - - arcgis=1.8.2 diff --git a/envs/macos/py38/requirements.txt b/envs/macos/py38/requirements.txt deleted file mode 100644 index 35e94e16..00000000 --- a/envs/macos/py38/requirements.txt +++ /dev/null @@ -1,105 +0,0 @@ -alabaster==0.7.12 -anyio==2.2.0 -appnope==0.1.2 -arcgis==1.8.2 -argon2-cffi==20.1.0 -async-generator==1.10 -attrs==21.2.0 -Babel==2.9.1 -backcall==0.2.0 -bleach==3.3.0 -certifi==2020.12.5 -cffi==1.14.5 -chardet==4.0.0 -colorama==0.4.4 -cryptography==3.4.7 -cycler==0.10.0 -decorator==5.0.7 -defusedxml==0.7.1 -deprecation==2.1.0 -docutils==0.16 -entrypoints==0.3 -idna==2.10 -imagesize==1.2.0 -importlib-metadata==4.0.1 -ipykernel==5.5.4 -ipython==7.23.1 -ipython-genutils==0.2.0 -ipywidgets==7.6.3 -jedi==0.18.0 -Jinja2==2.11.3 -json5==0.9.5 -jsonschema==3.2.0 -jupyter-client==6.1.12 -jupyter-core==4.7.1 -jupyter-packaging==0.10.1 -jupyter-server==1.6.4 -jupyterlab==3.0.14 -jupyterlab-pygments==0.1.2 -jupyterlab-server==2.5.0 -jupyterlab-widgets==1.0.0 -keyring==23.0.1 -kiwisolver==1.3.1 -lerc==0.1.0 -MarkupSafe==1.1.1 -matplotlib==3.4.1 -matplotlib-inline==0.1.2 -mistune==0.8.4 -nbclassic==0.2.7 -nbclient==0.5.3 -nbconvert==6.0.7 -nbformat==5.1.3 -nest-asyncio==1.5.1 -notebook==6.3.0 -ntlm-auth==1.5.0 -numpy==1.20.2 -oauthlib==3.1.0 -packaging==20.9 -pandas==1.2.4 -pandocfilters==1.4.3 -parso==0.8.2 -pexpect==4.8.0 -pickleshare==0.7.5 -Pillow==8.2.0 -pkginfo==1.7.0 -prometheus-client==0.10.1 -prompt-toolkit==3.0.18 -ptyprocess==0.7.0 -pycparser==2.20 -Pygments==2.9.0 -pyparsing==2.4.7 -pyrsistent==0.17.3 -pyshp==2.1.3 -python-dateutil==2.8.1 -pytz==2021.1 -pyzmq==22.0.3 -readme-renderer==29.0 -requests==2.25.1 -requests-ntlm==1.1.0 -requests-oauthlib==1.3.0 -requests-toolbelt==0.9.1 -rfc3986==1.4.0 -Send2Trash==1.5.0 -six==1.16.0 -sniffio==1.2.0 -snowballstemmer==2.1.0 -Sphinx==3.5.4 -sphinxcontrib-applehelp==1.0.2 -sphinxcontrib-devhelp==1.0.2 -sphinxcontrib-htmlhelp==1.0.3 -sphinxcontrib-jsmath==1.0.1 -sphinxcontrib-qthelp==1.0.3 -sphinxcontrib-serializinghtml==1.1.4 -terminado==0.9.4 -testpath==0.4.4 -tomlkit==0.7.0 -tornado==6.1 -tqdm==4.60.0 -traitlets==5.0.5 -twine==3.4.1 -urllib3==1.26.4 -wcwidth==0.2.5 -webencodings==0.5.1 -widgetsnbextension==3.5.1 -xmlrunner==1.7.7 -zipp==3.4.1 diff --git a/setup.py b/setup.py index 191a97e5..f7284caf 100644 --- a/setup.py +++ b/setup.py @@ -232,7 +232,7 @@ def run(self): project_urls={"Documentation": "https://github.com/Esri/pyprt/blob/master/README.md#documentation", "Examples": "https://github.com/Esri/pyprt-examples", "Source Code": "https://github.com/Esri/pyprt"}, - platforms=['Windows', 'Linux', 'MacOS'], + platforms=['Windows', 'Linux'], packages=find_packages(exclude=['tests']), include_package_data=True, ext_modules=[CMakeExtension('pyprt.pyprt', 'src')], @@ -252,7 +252,6 @@ def run(self): 'License :: OSI Approved :: Apache Software License', 'Operating System :: Microsoft :: Windows', 'Operating System :: Unix', - 'Operating System :: MacOS', 'Programming Language :: C++', 'Programming Language :: Python', 'Programming Language :: Python :: 3 :: Only', diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt index 785d9656..542b9b6d 100644 --- a/src/client/CMakeLists.txt +++ b/src/client/CMakeLists.txt @@ -62,19 +62,6 @@ elseif(PYPRT_LINUX) # GCC 8 needs explicit linking of C++17 std::filesystem lib target_link_libraries(${CLIENT_TARGET} PRIVATE stdc++fs) -elseif(PYPRT_MACOS) - target_compile_options(${CLIENT_TARGET} PRIVATE - -stdlib=libc++ - -fvisibility=hidden -fvisibility-inlines-hidden - -Wall -Wextra -Wunused-parameter - -mmacosx-version-min=10.15) # required by C++17 - - set_target_properties(${CLIENT_TARGET} PROPERTIES - INSTALL_RPATH "@loader_path" - INSTALL_RPATH_USE_LINK_PATH FALSE - SKIP_RPATH FALSE - BUILD_WITH_INSTALL_RPATH TRUE) - endif() target_link_libraries(${CLIENT_TARGET} PRIVATE diff --git a/src/codec/CMakeLists.txt b/src/codec/CMakeLists.txt index f1fe8c3f..ed01e393 100644 --- a/src/codec/CMakeLists.txt +++ b/src/codec/CMakeLists.txt @@ -47,11 +47,6 @@ elseif(PYPRT_LINUX) -Wl,--exclude-libs,ALL -Wall -Wextra -Wunused-parameter) -elseif(PYPRT_MACOS) - target_compile_options(${CODEC_TARGET} PRIVATE - -stdlib=libc++ - -fvisibility=hidden -fvisibility-inlines-hidden - -Wall -Wextra -Wunused-parameter) endif() diff --git a/src/dependencies.cmake b/src/dependencies.cmake index 5e888984..8bd412be 100644 --- a/src/dependencies.cmake +++ b/src/dependencies.cmake @@ -25,8 +25,6 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") set(PYPRT_WINDOWS 1) elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") set(PYPRT_LINUX 1) -elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") - set(PYPRT_MACOS 1) endif() @@ -40,9 +38,6 @@ if(NOT prt_DIR) elseif(PYPRT_LINUX) set(PRT_OS "rhel7") set(PRT_TC "gcc63") - elseif(PYPRT_MACOS) - set(PRT_OS "osx12") - set(PRT_TC "ac81") endif() set(PRT_VERSION "2.3.6821") From 2a5068806bc37f13a5aa7e09d2902fa152bd3a98 Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Wed, 7 Jul 2021 13:57:06 +0200 Subject: [PATCH 14/50] reivew: add explanation --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2132f42..215ff4db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ ## v1.4.0 (2021-07-XX) ### Removed -* Removed MacOS support +* Removed MacOS support as PRT 2.4 and later is not available anymore on that platform ## v1.3.0 (2021-05-12) From b74983a3467728609b12c9d3c1b0403af69e3700 Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Tue, 3 Aug 2021 16:05:43 +0200 Subject: [PATCH 15/50] Update Dockerfiles for new images --- Jenkinsfile | 2 +- envs/centos7/py36-conda/Dockerfile | 4 ++-- envs/centos7/py36/Dockerfile | 4 ++-- envs/centos7/py37-conda/Dockerfile | 4 ++-- envs/centos7/py38-conda/Dockerfile | 4 ++-- envs/centos7/py38/Dockerfile | 4 ++-- envs/windows/py36-conda/Dockerfile | 4 ++-- envs/windows/py36/Dockerfile | 4 ++-- envs/windows/py37-conda/Dockerfile | 4 ++-- envs/windows/py37/Dockerfile | 4 ++-- envs/windows/py38-conda/Dockerfile | 4 ++-- envs/windows/py38/Dockerfile | 4 ++-- 12 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 775f84e7..373c7580 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -267,7 +267,7 @@ String getDockerEnvDir(Map cfg) { String getDockerImage(Map cfg) { String image = 'zrh-dreg-sp-1.esri.com/pyprt/pyprt' - String tag = 'jnk-v1-' + String tag = 'jnk-v3-' tag += (cfg.os == cepl.CFG_OS_WIN10) ? 'windows' : (cfg.os == cepl.CFG_OS_RHEL7) ? 'centos7' : error(cfg.os) tag += "-py${getPySuf(cfg)}-${cfg.tc}" diff --git a/envs/centos7/py36-conda/Dockerfile b/envs/centos7/py36-conda/Dockerfile index a2a2d527..671fb0e9 100644 --- a/envs/centos7/py36-conda/Dockerfile +++ b/envs/centos7/py36-conda/Dockerfile @@ -1,7 +1,7 @@ FROM centos:7 RUN yum install -y centos-release-scl-rh epel-release \ - && yum install -y git cmake3 ninja-build devtoolset-8-toolchain \ + && yum install -y git cmake3 ninja-build devtoolset-9-toolchain \ && yum install -y curl bzip2 # make cmake3 the default cmake @@ -35,5 +35,5 @@ COPY envs/centos7/py36-conda/environment.yml ./environment.yml RUN ./conda/bin/conda env create --prefix ./pyprt-conda-env --file ./environment.yml # also see https://github.com/sclorg/devtoolset-container -RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-8 && source /tmp/pyprt/conda/bin/activate /tmp/pyprt/pyprt-conda-env" >> /tmp/env_enable +RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-9 && source /tmp/pyprt/conda/bin/activate /tmp/pyprt/pyprt-conda-env" >> /tmp/env_enable ENV BASH_ENV=/tmp/env_enable ENV=/tmp/env_enable PROMPT_COMMAND="source /tmp/env_enable" diff --git a/envs/centos7/py36/Dockerfile b/envs/centos7/py36/Dockerfile index 09fb0700..f5c878a5 100644 --- a/envs/centos7/py36/Dockerfile +++ b/envs/centos7/py36/Dockerfile @@ -2,7 +2,7 @@ FROM centos:7 RUN yum install -y centos-release-scl-rh epel-release -RUN yum install -y git cmake3 ninja-build devtoolset-8-toolchain \ +RUN yum install -y git cmake3 ninja-build devtoolset-9-toolchain \ rh-python36-python rh-python36-python-devel rh-python36-python-pip RUN alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \ @@ -21,7 +21,7 @@ RUN useradd --uid $USER_ID --gid $GROUP_ID user USER user # also see https://github.com/sclorg/devtoolset-container -RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-8" >> /tmp/scl_enable +RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-9" >> /tmp/scl_enable ENV BASH_ENV=/tmp/scl_enable ENV=/tmp/scl_enable PROMPT_COMMAND=". /tmp/scl_enable" WORKDIR /tmp/pyprt diff --git a/envs/centos7/py37-conda/Dockerfile b/envs/centos7/py37-conda/Dockerfile index 08c48762..537562d6 100644 --- a/envs/centos7/py37-conda/Dockerfile +++ b/envs/centos7/py37-conda/Dockerfile @@ -1,7 +1,7 @@ FROM centos:7 RUN yum install -y centos-release-scl-rh epel-release \ - && yum install -y git cmake3 ninja-build devtoolset-8-toolchain \ + && yum install -y git cmake3 ninja-build devtoolset-9-toolchain \ && yum install -y curl bzip2 # make cmake3 the default cmake @@ -35,5 +35,5 @@ COPY envs/centos7/py37-conda/environment.yml ./environment.yml RUN ./conda/bin/conda env create --prefix ./pyprt-conda-env --file ./environment.yml # also see https://github.com/sclorg/devtoolset-container -RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-8 && source /tmp/pyprt/conda/bin/activate /tmp/pyprt/pyprt-conda-env" >> /tmp/env_enable +RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-9 && source /tmp/pyprt/conda/bin/activate /tmp/pyprt/pyprt-conda-env" >> /tmp/env_enable ENV BASH_ENV=/tmp/env_enable ENV=/tmp/env_enable PROMPT_COMMAND="source /tmp/env_enable" diff --git a/envs/centos7/py38-conda/Dockerfile b/envs/centos7/py38-conda/Dockerfile index 85ef3239..6c68ccc7 100644 --- a/envs/centos7/py38-conda/Dockerfile +++ b/envs/centos7/py38-conda/Dockerfile @@ -1,7 +1,7 @@ FROM centos:7 RUN yum install -y centos-release-scl-rh epel-release \ - && yum install -y git cmake3 ninja-build devtoolset-8-toolchain \ + && yum install -y git cmake3 ninja-build devtoolset-9-toolchain \ && yum install -y curl bzip2 # make cmake3 the default cmake @@ -35,5 +35,5 @@ COPY envs/centos7/py38-conda/environment.yml ./environment.yml RUN ./conda/bin/conda env create --prefix ./pyprt-conda-env --file ./environment.yml # also see https://github.com/sclorg/devtoolset-container -RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-8 && source /tmp/pyprt/conda/bin/activate /tmp/pyprt/pyprt-conda-env" >> /tmp/env_enable +RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-9 && source /tmp/pyprt/conda/bin/activate /tmp/pyprt/pyprt-conda-env" >> /tmp/env_enable ENV BASH_ENV=/tmp/env_enable ENV=/tmp/env_enable PROMPT_COMMAND="source /tmp/env_enable" diff --git a/envs/centos7/py38/Dockerfile b/envs/centos7/py38/Dockerfile index 4c7d9931..73f310d0 100644 --- a/envs/centos7/py38/Dockerfile +++ b/envs/centos7/py38/Dockerfile @@ -2,7 +2,7 @@ FROM centos:7 RUN yum install -y centos-release-scl-rh epel-release -RUN yum install -y git cmake3 ninja-build devtoolset-8-toolchain \ +RUN yum install -y git cmake3 ninja-build devtoolset-9-toolchain \ rh-python38-python rh-python38-python-devel rh-python38-python-pip RUN alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \ @@ -21,7 +21,7 @@ RUN useradd --uid $USER_ID --gid $GROUP_ID user USER user # also see https://github.com/sclorg/devtoolset-container -RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-8" >> /tmp/scl_enable +RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-9" >> /tmp/scl_enable ENV BASH_ENV=/tmp/scl_enable ENV=/tmp/scl_enable PROMPT_COMMAND=". /tmp/scl_enable" WORKDIR /tmp/pyprt/docker diff --git a/envs/windows/py36-conda/Dockerfile b/envs/windows/py36-conda/Dockerfile index ef8429d0..effdc269 100644 --- a/envs/windows/py36-conda/Dockerfile +++ b/envs/windows/py36-conda/Dockerfile @@ -10,7 +10,7 @@ ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` --installPath C:\BuildTools ` --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` ---add Microsoft.VisualStudio.Component.VC.14.23.x86.x64 ` +--add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` || IF "%ERRORLEVEL%"=="3010" EXIT 0 ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe @@ -25,4 +25,4 @@ COPY envs/windows/py36-conda/environment.yml ./environment.yml RUN conda env create -n pyprt --file environment.yml # https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ -ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.23", "&&", "call", "conda.bat", "activate", "pyprt", "&&" ] +ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&", "call", "conda.bat", "activate", "pyprt", "&&" ] diff --git a/envs/windows/py36/Dockerfile b/envs/windows/py36/Dockerfile index 8fd4c218..d8eacd99 100644 --- a/envs/windows/py36/Dockerfile +++ b/envs/windows/py36/Dockerfile @@ -13,7 +13,7 @@ ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` --installPath C:\BuildTools ` --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` ---add Microsoft.VisualStudio.Component.VC.14.23.x86.x64 ` +--add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` || IF "%ERRORLEVEL%"=="3010" EXIT 0 ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe @@ -27,4 +27,4 @@ RUN pip install --no-cache-dir --upgrade wheel RUN pip install --no-cache-dir -r requirements.txt # https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ -ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.23", "&&" ] +ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&" ] diff --git a/envs/windows/py37-conda/Dockerfile b/envs/windows/py37-conda/Dockerfile index eb61ca05..629b2b11 100644 --- a/envs/windows/py37-conda/Dockerfile +++ b/envs/windows/py37-conda/Dockerfile @@ -10,7 +10,7 @@ ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` --installPath C:\BuildTools ` --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` ---add Microsoft.VisualStudio.Component.VC.14.23.x86.x64 ` +--add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` || IF "%ERRORLEVEL%"=="3010" EXIT 0 ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe @@ -25,4 +25,4 @@ COPY envs/windows/py37-conda/environment.yml ./environment.yml RUN conda env create -n pyprt --file environment.yml # https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ -ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.23", "&&", "call", "conda.bat", "activate", "pyprt", "&&" ] +ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&", "call", "conda.bat", "activate", "pyprt", "&&" ] diff --git a/envs/windows/py37/Dockerfile b/envs/windows/py37/Dockerfile index 54485754..caa4b974 100644 --- a/envs/windows/py37/Dockerfile +++ b/envs/windows/py37/Dockerfile @@ -13,7 +13,7 @@ ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` --installPath C:\BuildTools ` --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` ---add Microsoft.VisualStudio.Component.VC.14.23.x86.x64 ` +--add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` || IF "%ERRORLEVEL%"=="3010" EXIT 0 ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe @@ -27,4 +27,4 @@ RUN pip install --no-cache-dir --upgrade wheel RUN pip install --no-cache-dir -r requirements.txt # https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ -ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.23", "&&" ] +ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&" ] diff --git a/envs/windows/py38-conda/Dockerfile b/envs/windows/py38-conda/Dockerfile index 8dfe79c1..d2d18c25 100644 --- a/envs/windows/py38-conda/Dockerfile +++ b/envs/windows/py38-conda/Dockerfile @@ -10,7 +10,7 @@ ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` --installPath C:\BuildTools ` --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` ---add Microsoft.VisualStudio.Component.VC.14.23.x86.x64 ` +--add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` || IF "%ERRORLEVEL%"=="3010" EXIT 0 ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe @@ -25,4 +25,4 @@ COPY envs/windows/py38-conda/environment.yml ./environment.yml RUN conda env create -n pyprt --file environment.yml # https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ -ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.23", "&&", "call", "conda.bat", "activate", "pyprt", "&&" ] +ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&", "call", "conda.bat", "activate", "pyprt", "&&" ] diff --git a/envs/windows/py38/Dockerfile b/envs/windows/py38/Dockerfile index d44592af..674d1f52 100644 --- a/envs/windows/py38/Dockerfile +++ b/envs/windows/py38/Dockerfile @@ -13,7 +13,7 @@ ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` --installPath C:\BuildTools ` --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` ---add Microsoft.VisualStudio.Component.VC.14.23.x86.x64 ` +--add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` || IF "%ERRORLEVEL%"=="3010" EXIT 0 ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe @@ -27,4 +27,4 @@ RUN pip install --no-cache-dir --upgrade wheel RUN pip install --no-cache-dir -r requirements.txt # https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ -ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.23", "&&" ] +ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&" ] From 25593a58519ad07f4d611e59ccdc034b4828381c Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Mon, 9 Aug 2021 15:38:56 +0200 Subject: [PATCH 16/50] Update failing test --- tests/pyGeometry_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/pyGeometry_test.py b/tests/pyGeometry_test.py index d74e4ddc..8c2d0368 100644 --- a/tests/pyGeometry_test.py +++ b/tests/pyGeometry_test.py @@ -38,7 +38,7 @@ def test_verticesnber_candler(self): m = pyprt.ModelGenerator([shape_geo_from_obj]) model = m.generate_model([attrs], rpk, 'com.esri.pyprt.PyEncoder', { 'emitReport': False, 'emitGeometry': True}) - self.assertEqual(len(model[0].get_vertices()), 97050*3) + self.assertEqual(len(model[0].get_vertices()), 97044*3) def test_facesnber_candler(self): rpk = asset_file('candler.rpk') From b84b739bc9e64c8e4f46619d51dcf87fa223e8ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Aug 2021 21:03:08 +0000 Subject: [PATCH 17/50] build(deps): bump pywin32 from 300 to 301 in /envs/windows/py37 Bumps [pywin32](https://github.com/mhammond/pywin32) from 300 to 301. - [Release notes](https://github.com/mhammond/pywin32/releases) - [Changelog](https://github.com/mhammond/pywin32/blob/master/CHANGES.txt) - [Commits](https://github.com/mhammond/pywin32/commits) --- updated-dependencies: - dependency-name: pywin32 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- envs/windows/py37/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/envs/windows/py37/requirements.txt b/envs/windows/py37/requirements.txt index 678364c2..95395c9f 100644 --- a/envs/windows/py37/requirements.txt +++ b/envs/windows/py37/requirements.txt @@ -69,7 +69,7 @@ pyrsistent==0.17.3 pyshp==2.1.3 python-dateutil==2.8.1 pytz==2021.1 -pywin32==300 +pywin32==301 pywin32-ctypes==0.2.0 pywinpty==1.0.1 pyzmq==22.0.3 From 4daee2848b2a840c6cde477d271f8f7c81b1f089 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Aug 2021 21:03:18 +0000 Subject: [PATCH 18/50] build(deps): bump pywin32 from 300 to 301 in /envs/windows/py38 Bumps [pywin32](https://github.com/mhammond/pywin32) from 300 to 301. - [Release notes](https://github.com/mhammond/pywin32/releases) - [Changelog](https://github.com/mhammond/pywin32/blob/master/CHANGES.txt) - [Commits](https://github.com/mhammond/pywin32/commits) --- updated-dependencies: - dependency-name: pywin32 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- envs/windows/py38/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/envs/windows/py38/requirements.txt b/envs/windows/py38/requirements.txt index 4bc251dc..5957357b 100644 --- a/envs/windows/py38/requirements.txt +++ b/envs/windows/py38/requirements.txt @@ -74,7 +74,7 @@ pyshp==2.1.3 python-certifi-win32==1.6 python-dateutil==2.8.1 pytz==2021.1 -pywin32==300 +pywin32==301 pywin32-ctypes==0.2.0 pywinpty==1.0.1 pyzmq==22.0.3 From 48e32fdb18a2fdfb81b823181f9c3bb367ce109e Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Tue, 10 Aug 2021 08:03:16 +0200 Subject: [PATCH 19/50] Update changelog --- CHANGELOG.md | 148 +++++++++++++++++++++++++-------------------------- 1 file changed, 74 insertions(+), 74 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 992d7535..5ac37005 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,75 +1,75 @@ -# PyPRT ChangeLog - -## v1.4.0 (2021-08-XX) - -### Changed -* Internal update to PRT 2.4 -* Updated compiler requirements on Windows (MSVC 14.27) - -### Removed -* Removed MacOS support as PRT 2.4 and later is not available anymore on that platform - -## v1.3.0 (2021-05-12) - -### Added -* New function `get_attributes` on `GeneratedModel`. Returns the CGA rule attributes used to generate the model -* Added support for CGA array attributes -* Added pre-built wheels and conda packages for Python 3.7 and 3.8 - -### Changed -* Updated the `arcgis_to_pyprt` function to work with the latest `arcgis` package (1.8) -* Switched from `pipenv` to `venv` to better support multiple Python versions - -### Removed -* Removed previously deprecated API functions `inspect_rpk` and overload of `generate_model` -* Removed `tox` to simplify running tests in multiple Python versions - -## v1.2.0 (2020-11-19) - -### Added -* New `get_rpk_attributes_info(rule_package_path)` function to query CGA rule attributes and their annotations -* Holes and multi faces polygons support in the `arcgis_to_pyprt(...)` function -* PyPRT icon - -### Changed -* Removal of the overload `generate_model(rule_attributes)` (use `generate_model(rule_attributes, rule_package_path, geometry_encoder, encoder_options)` instead) -* Deprecation of the `inspect_rpk(rule_package_path)` function (use `get_rpk_attributes_info(rule_package_path)` instead) -* Internal update to PRT 2.3 -* Updated compiler requirements on Windows (MSVC 14.23) - -### Fixed -* Removed `streetWidth(a)` attribute from the rule package attributes dictionary (in `inspect_rpk(...)` and `get_rpk_attributes_info(...)`) - -## v1.1.0 (2020-07-16) - -### Added -* Added new API function `pyprt.inspect_rpk(...)` to query available CGA rule attributes -* Added support for macOS 10.15 (Catalina) -* Added support for initial shapes with polygon holes -* Added automatic detection of RuleFile and StartRule attributes in RPKs -* The `GeneratedModel` class now provides access to CGA `print` and error output when used with the PyEncoder (new `get_cga_prints()` and `get_cga_errors()` functions) - -### Changed -* Internal update to PRT 2.2 (adds support for CGA language features of CityEngine 2020.0) -* Reorganization and cleanup of C++ sources -* Moved PyPRT conda package to Esri organization - -## v1.0.0 (2020-05-07) - -### Added - -* PyPRT conda package available on Anaconda Cloud -* API Documentation -* License file and copyright statements - -### Changed - -* README improvements -* setup.py metadata and PyPI project page improvements - -## v1.0.0b1 (2020-02-20) - -* First public release -* PyPRT wheels available on PyPI -* Published source code on GitHub +# PyPRT ChangeLog + +## v1.4.0 (2021-08-XX) + +### Changed +* Internal update to PRT 2.4 +* Updated compiler requirements on Windows (MSVC 14.27) and Linux (GCC 9.3) + +### Removed +* Removed MacOS support as PRT 2.4 and later is not available anymore on that platform + +## v1.3.0 (2021-05-12) + +### Added +* New function `get_attributes` on `GeneratedModel`. Returns the CGA rule attributes used to generate the model +* Added support for CGA array attributes +* Added pre-built wheels and conda packages for Python 3.7 and 3.8 + +### Changed +* Updated the `arcgis_to_pyprt` function to work with the latest `arcgis` package (1.8) +* Switched from `pipenv` to `venv` to better support multiple Python versions + +### Removed +* Removed previously deprecated API functions `inspect_rpk` and overload of `generate_model` +* Removed `tox` to simplify running tests in multiple Python versions + +## v1.2.0 (2020-11-19) + +### Added +* New `get_rpk_attributes_info(rule_package_path)` function to query CGA rule attributes and their annotations +* Holes and multi faces polygons support in the `arcgis_to_pyprt(...)` function +* PyPRT icon + +### Changed +* Removal of the overload `generate_model(rule_attributes)` (use `generate_model(rule_attributes, rule_package_path, geometry_encoder, encoder_options)` instead) +* Deprecation of the `inspect_rpk(rule_package_path)` function (use `get_rpk_attributes_info(rule_package_path)` instead) +* Internal update to PRT 2.3 +* Updated compiler requirements on Windows (MSVC 14.23) + +### Fixed +* Removed `streetWidth(a)` attribute from the rule package attributes dictionary (in `inspect_rpk(...)` and `get_rpk_attributes_info(...)`) + +## v1.1.0 (2020-07-16) + +### Added +* Added new API function `pyprt.inspect_rpk(...)` to query available CGA rule attributes +* Added support for macOS 10.15 (Catalina) +* Added support for initial shapes with polygon holes +* Added automatic detection of RuleFile and StartRule attributes in RPKs +* The `GeneratedModel` class now provides access to CGA `print` and error output when used with the PyEncoder (new `get_cga_prints()` and `get_cga_errors()` functions) + +### Changed +* Internal update to PRT 2.2 (adds support for CGA language features of CityEngine 2020.0) +* Reorganization and cleanup of C++ sources +* Moved PyPRT conda package to Esri organization + +## v1.0.0 (2020-05-07) + +### Added + +* PyPRT conda package available on Anaconda Cloud +* API Documentation +* License file and copyright statements + +### Changed + +* README improvements +* setup.py metadata and PyPI project page improvements + +## v1.0.0b1 (2020-02-20) + +* First public release +* PyPRT wheels available on PyPI +* Published source code on GitHub * Published [PyPRT examples](https://github.com/Esri/pyprt-examples) on GitHub \ No newline at end of file From 7634bae645a7244409bc4850e6af0c7e6796a2b8 Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Tue, 10 Aug 2021 11:40:32 +0200 Subject: [PATCH 20/50] Update missing dependabot dependencies --- envs/windows/py36/requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/envs/windows/py36/requirements.txt b/envs/windows/py36/requirements.txt index d6195d94..fa9f07f5 100644 --- a/envs/windows/py36/requirements.txt +++ b/envs/windows/py36/requirements.txt @@ -65,7 +65,7 @@ pandocfilters==1.4.3 parso==0.8.1 pexpect==4.8.0 pickleshare==0.7.5 -Pillow==8.1.2 +Pillow==8.2.0 pkginfo==1.7.0 pluggy==0.13.1 prometheus-client==0.9.0 @@ -110,7 +110,7 @@ traitlets==4.3.3 twine==3.4.0 typing-extensions==3.7.4.3 ujson==4.0.2 -urllib3==1.26.4 +urllib3==1.26.5 virtualenv==20.4.3 wcwidth==0.2.5 webencodings==0.5.1 From 92d212a277025b5220236bf0ec1e29214062582f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Aug 2021 12:22:20 +0000 Subject: [PATCH 21/50] build(deps): bump pillow from 8.1.2 to 8.2.0 in /envs/centos7/py36 Bumps [pillow](https://github.com/python-pillow/Pillow) from 8.1.2 to 8.2.0. - [Release notes](https://github.com/python-pillow/Pillow/releases) - [Changelog](https://github.com/python-pillow/Pillow/blob/master/CHANGES.rst) - [Commits](https://github.com/python-pillow/Pillow/compare/8.1.2...8.2.0) --- updated-dependencies: - dependency-name: pillow dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- envs/centos7/py36/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/envs/centos7/py36/requirements.txt b/envs/centos7/py36/requirements.txt index d6195d94..1e3b16f5 100644 --- a/envs/centos7/py36/requirements.txt +++ b/envs/centos7/py36/requirements.txt @@ -65,7 +65,7 @@ pandocfilters==1.4.3 parso==0.8.1 pexpect==4.8.0 pickleshare==0.7.5 -Pillow==8.1.2 +Pillow==8.2.0 pkginfo==1.7.0 pluggy==0.13.1 prometheus-client==0.9.0 From b99b2fbc94860d12f70044f0a5d78f8d45264ccc Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Wed, 11 Aug 2021 14:25:54 +0200 Subject: [PATCH 22/50] Python 3.9: docker files for Linux Note: disabled arcgis package in conda env, not yet available for Python 3.9 --- envs/centos7/py39-conda/Dockerfile | 39 +++++++++ envs/centos7/py39-conda/environment.yml | 10 +++ envs/centos7/py39/Dockerfile | 46 ++++++++++ envs/centos7/py39/requirements.txt | 110 ++++++++++++++++++++++++ 4 files changed, 205 insertions(+) create mode 100644 envs/centos7/py39-conda/Dockerfile create mode 100644 envs/centos7/py39-conda/environment.yml create mode 100644 envs/centos7/py39/Dockerfile create mode 100644 envs/centos7/py39/requirements.txt diff --git a/envs/centos7/py39-conda/Dockerfile b/envs/centos7/py39-conda/Dockerfile new file mode 100644 index 00000000..abf71c35 --- /dev/null +++ b/envs/centos7/py39-conda/Dockerfile @@ -0,0 +1,39 @@ +FROM centos:7 + +RUN yum install -y centos-release-scl-rh epel-release \ + && yum install -y git cmake3 ninja-build devtoolset-9-toolchain \ + && yum install -y curl bzip2 + +# make cmake3 the default cmake +RUN alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \ + --slave /usr/local/bin/ctest ctest /usr/bin/ctest3 \ + --slave /usr/local/bin/cpack cpack /usr/bin/cpack3 \ + --slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \ + --family cmake + +# this container works with mounted host directories +# we create a user with matching uid/gid to avoid permissions issues +# inspired by https://vsupalov.com/docker-shared-permissions/ +ARG USER_ID +ARG GROUP_ID +RUN groupadd --gid $GROUP_ID user +RUN useradd --uid $USER_ID --gid $GROUP_ID user +USER user + +RUN mkdir /tmp/pyprt +WORKDIR /tmp/pyprt + +# see https://github.com/conda/conda-docker/blob/master/miniconda3/centos7/Dockerfile +RUN curl -sSL https://repo.anaconda.com/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh -o /tmp/pyprt/miniconda.sh \ + && bash ./miniconda.sh -bfp ./conda \ + && rm -rf ./miniconda.sh \ + && ./conda/bin/conda install -y python=3.9 \ + && ./conda/bin/conda update conda \ + && ./conda/bin/conda clean --all --yes + +COPY envs/centos7/py39-conda/environment.yml ./environment.yml +RUN ./conda/bin/conda env create --prefix ./pyprt-conda-env --file ./environment.yml + +# also see https://github.com/sclorg/devtoolset-container +RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-9 && source /tmp/pyprt/conda/bin/activate /tmp/pyprt/pyprt-conda-env" >> /tmp/env_enable +ENV BASH_ENV=/tmp/env_enable ENV=/tmp/env_enable PROMPT_COMMAND="source /tmp/env_enable" diff --git a/envs/centos7/py39-conda/environment.yml b/envs/centos7/py39-conda/environment.yml new file mode 100644 index 00000000..e65610b4 --- /dev/null +++ b/envs/centos7/py39-conda/environment.yml @@ -0,0 +1,10 @@ +channels: + - defaults + - anaconda + - esri +dependencies: + - python=3.9 + - sphinx + - conda-build + - conda-verify + #- arcgis=1.8.2 diff --git a/envs/centos7/py39/Dockerfile b/envs/centos7/py39/Dockerfile new file mode 100644 index 00000000..4527d6e3 --- /dev/null +++ b/envs/centos7/py39/Dockerfile @@ -0,0 +1,46 @@ +FROM centos:7 + +RUN yum install -y centos-release-scl epel-release +RUN yum install -y git cmake3 ninja-build devtoolset-9-toolchain + +RUN alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \ + --slave /usr/local/bin/ctest ctest /usr/bin/ctest3 \ + --slave /usr/local/bin/cpack cpack /usr/bin/cpack3 \ + --slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \ + --family cmake + +# no RPM repos yet, we manually build Python 3.9 with default CentOS 7 toolchain +WORKDIR /tmp +ADD https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tar.xz python_src.tar.xz +RUN yum install -y gcc make openssl-devel libffi-devel bzip2-devel liblzma-dev +RUN tar xf python_src.tar.xz && \ + pushd Python-3.9.6 && \ + ./configure --enable-optimizations && \ + CPU_COUNT=$(grep -c ^processor /proc/cpuinfo) && \ + make -j$CPU_COUNT altinstall && \ + popd && \ + python3.9 -V + +## this container works with mounted host directories +## we create a user with matching uid/gid to avoid permissions issues +## inspired by https://vsupalov.com/docker-shared-permissions/ +ARG USER_ID +ARG GROUP_ID +RUN groupadd --gid $GROUP_ID user +RUN useradd --uid $USER_ID --gid $GROUP_ID user +USER user + +## also see https://github.com/sclorg/devtoolset-container +RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-9" >> /tmp/scl_enable +ENV BASH_ENV=/tmp/scl_enable ENV=/tmp/scl_enable PROMPT_COMMAND=". /tmp/scl_enable" + +WORKDIR /tmp/pyprt/docker +COPY envs/centos7/py39/requirements.txt ./requirements.txt + +ENV VIRTUAL_ENV=/tmp/pyprt-venv +RUN python3.9 -m venv $VIRTUAL_ENV +ENV PATH="$VIRTUAL_ENV/bin:$PATH" + +RUN python -V && \ + python -m pip install --no-cache-dir --upgrade pip && python -m pip install --no-cache-dir --upgrade wheel && \ + python -m pip install --no-cache-dir -r requirements.txt diff --git a/envs/centos7/py39/requirements.txt b/envs/centos7/py39/requirements.txt new file mode 100644 index 00000000..0359a82b --- /dev/null +++ b/envs/centos7/py39/requirements.txt @@ -0,0 +1,110 @@ +alabaster==0.7.12 +anyio==2.2.0 +arcgis==1.8.2 +argon2-cffi==20.1.0 +async-generator==1.10 +attrs==20.3.0 +Babel==2.9.1 +backcall==0.2.0 +bleach==3.3.0 +certifi==2020.12.5 +cffi==1.14.5 +chardet==4.0.0 +colorama==0.4.4 +cryptography==3.4.7 +cycler==0.10.0 +decorator==5.0.7 +defusedxml==0.7.1 +deprecation==2.1.0 +docutils==0.16 +entrypoints==0.3 +idna==2.10 +imagesize==1.2.0 +importlib-metadata==4.0.1 +ipykernel==5.5.3 +ipython==7.23.0 +ipython-genutils==0.2.0 +ipywidgets==7.6.3 +jedi==0.18.0 +jeepney==0.6.0 +Jinja2==2.11.3 +json5==0.9.5 +jsonschema==3.2.0 +jupyter-client==6.1.12 +jupyter-core==4.7.1 +jupyter-packaging==0.9.2 +jupyter-server==1.6.4 +jupyterlab==3.0.14 +jupyterlab-pygments==0.1.2 +jupyterlab-server==2.5.0 +jupyterlab-widgets==1.0.0 +keyring==23.0.1 +kiwisolver==1.3.1 +lerc==0.1.0 +MarkupSafe==1.1.1 +matplotlib==3.4.1 +matplotlib-inline==0.1.2 +mistune==0.8.4 +nbclassic==0.2.7 +nbclient==0.5.3 +nbconvert==6.0.7 +nbformat==5.1.3 +nest-asyncio==1.5.1 +notebook==6.3.0 +ntlm-auth==1.5.0 +numpy==1.20.2 +oauthlib==3.1.0 +packaging==20.9 +pandas==1.2.4 +pandocfilters==1.4.3 +parso==0.8.2 +pexpect==4.8.0 +pickleshare==0.7.5 +Pillow==8.2.0 +pkginfo==1.7.0 +prometheus-client==0.10.1 +prompt-toolkit==3.0.18 +ptyprocess==0.7.0 +pycparser==2.20 +Pygments==2.9.0 +pyparsing==2.4.7 +pyrsistent==0.17.3 +pyshp==2.1.3 +python-certifi-win32==1.6 +python-dateutil==2.8.1 +pytz==2021.1 +pyzmq==22.0.3 +readme-renderer==29.0 +requests==2.25.1 +requests-ntlm==1.1.0 +requests-oauthlib==1.3.0 +requests-toolbelt==0.9.1 +rfc3986==1.4.0 +SecretStorage==3.3.1 +Send2Trash==1.5.0 +setuptools-scm==6.0.1 +six==1.15.0 +sniffio==1.2.0 +snowballstemmer==2.1.0 +Sphinx==3.5.4 +sphinxcontrib-applehelp==1.0.2 +sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-htmlhelp==1.0.3 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-serializinghtml==1.1.4 +terminado==0.9.4 +testpath==0.4.4 +tomlkit==0.7.0 +tornado==6.1 +tqdm==4.60.0 +traitlets==5.0.5 +twine==3.4.1 +ujson==4.0.2 +urllib3==1.26.4 +wcwidth==0.2.5 +webencodings==0.5.1 +widgetsnbextension==3.5.1 +wrapt==1.12.1 +xmlrunner==1.7.7 +zipp==3.4.1 From 6f8ba486428b4c84db0aed7f178a1f039997b9c1 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Wed, 11 Aug 2021 14:31:32 +0200 Subject: [PATCH 23/50] CI: add Python 3.9 support for Linux --- Jenkinsfile | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index 373c7580..2b6e4901 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -46,9 +46,11 @@ env.PIPELINE_ARCHIVING_ALLOWED = "true" @Field final Map PY36_CONFIG = [ py: '3.6' ] @Field final Map PY37_CONFIG = [ py: '3.7' ] @Field final Map PY38_CONFIG = [ py: '3.8' ] +@Field final Map PY39_CONFIG = [ py: '3.9' ] @Field final Map PY36_CONDA_CONFIG = [ py: '3.6-conda' ] @Field final Map PY37_CONDA_CONFIG = [ py: '3.7-conda' ] @Field final Map PY38_CONDA_CONFIG = [ py: '3.8-conda' ] +@Field final Map PY39_CONDA_CONFIG = [ py: '3.9-conda' ] @Field final Map LINUX_NATIVE_CONFIG = [ os: cepl.CFG_OS_RHEL7, bc: cepl.CFG_BC_REL, tc: cepl.CFG_TC_GCC93, cc: cepl.CFG_CC_OPT, arch: cepl.CFG_ARCH_X86_64 ] @Field final Map WINDOWS_NATIVE_CONFIG = [ os: cepl.CFG_OS_WIN10, bc: cepl.CFG_BC_REL, tc: cepl.CFG_TC_VC1427, cc: cepl.CFG_CC_OPT, arch: cepl.CFG_ARCH_X86_64 ] @Field final Map LINUX_DOCKER_CONFIG = [ ba: DOCKER_AGENT_LINUX, ws: DOCKER_WS_LINUX ] @@ -72,6 +74,10 @@ env.PIPELINE_ARCHIVING_ALLOWED = "true" PY38_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] +@Field final List CONFIGS_TESTS_PY39 = [ + PY39_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, +] + @Field final List CONFIGS_BUILD_WHEELS_PY36 = [ PY36_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, PY36_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, @@ -86,6 +92,10 @@ env.PIPELINE_ARCHIVING_ALLOWED = "true" PY38_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] +@Field final List CONFIGS_BUILD_WHEELS_PY39 = [ + PY39_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, +] + @Field final List CONFIGS_BUILD_CONDA_PY36 = [ PY36_CONDA_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, PY36_CONDA_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, @@ -101,6 +111,10 @@ env.PIPELINE_ARCHIVING_ALLOWED = "true" PY38_CONDA_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] +@Field final List CONFIGS_BUILD_CONDA_PY39 = [ + PY39_CONDA_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, +] + @Field final List CONFIGS_DOC = [ PY36_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, ] @@ -136,6 +150,7 @@ Map taskGenTests() { tasks << cepl.generateTasks('pyprt-tests-py36', this.&taskRunTests, CONFIGS_TESTS_PY36) tasks << cepl.generateTasks('pyprt-tests-py37', this.&taskRunTests, CONFIGS_TESTS_PY37) tasks << cepl.generateTasks('pyprt-tests-py38', this.&taskRunTests, CONFIGS_TESTS_PY38) + tasks << cepl.generateTasks('pyprt-tests-py39', this.&taskRunTests, CONFIGS_TESTS_PY39) return tasks } @@ -144,9 +159,11 @@ Map taskGenPyPRT() { tasks << cepl.generateTasks('pyprt-wheel-py36', this.&taskBuildWheel, CONFIGS_BUILD_WHEELS_PY36) tasks << cepl.generateTasks('pyprt-wheel-py37', this.&taskBuildWheel, CONFIGS_BUILD_WHEELS_PY37) tasks << cepl.generateTasks('pyprt-wheel-py38', this.&taskBuildWheel, CONFIGS_BUILD_WHEELS_PY38) + tasks << cepl.generateTasks('pyprt-wheel-py39', this.&taskBuildWheel, CONFIGS_BUILD_WHEELS_PY39) tasks << cepl.generateTasks('pyprt-conda-py36', this.&taskBuildConda, CONFIGS_BUILD_CONDA_PY36) tasks << cepl.generateTasks('pyprt-conda-py37', this.&taskBuildConda, CONFIGS_BUILD_CONDA_PY37) tasks << cepl.generateTasks('pyprt-conda-py38', this.&taskBuildConda, CONFIGS_BUILD_CONDA_PY38) + tasks << cepl.generateTasks('pyprt-conda-py39', this.&taskBuildConda, CONFIGS_BUILD_CONDA_PY39) tasks << cepl.generateTasks('pyprt-doc', this.&taskBuildDoc, CONFIGS_DOC) return tasks; } From ef881b631e9235e6944d16c7d5ec0e45d872ee41 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Thu, 12 Aug 2021 10:06:36 +0200 Subject: [PATCH 24/50] Python 3.9: Docker files for Windows Note: disabled arcgis package in conda env, not yet available for Python 3.9 --- envs/windows/py39-conda/Dockerfile | 28 ++++++ envs/windows/py39-conda/environment.yml | 10 ++ envs/windows/py39/Dockerfile | 30 ++++++ envs/windows/py39/requirements.txt | 117 ++++++++++++++++++++++++ 4 files changed, 185 insertions(+) create mode 100644 envs/windows/py39-conda/Dockerfile create mode 100644 envs/windows/py39-conda/environment.yml create mode 100644 envs/windows/py39/Dockerfile create mode 100644 envs/windows/py39/requirements.txt diff --git a/envs/windows/py39-conda/Dockerfile b/envs/windows/py39-conda/Dockerfile new file mode 100644 index 00000000..523b1a7f --- /dev/null +++ b/envs/windows/py39-conda/Dockerfile @@ -0,0 +1,28 @@ +# escape=` + +FROM mcr.microsoft.com/windows/servercore:1809 +SHELL ["cmd", "/S", "/C"] + +ADD https://go.microsoft.com/fwlink/?linkid=2088631 C:\temp\ndp48-x86-x64-allos-enu.exe +RUN C:\temp\ndp48-x86-x64-allos-enu.exe /q /norestart /install + +ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe +RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` +--installPath C:\BuildTools ` +--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` +--add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` +|| IF "%ERRORLEVEL%"=="3010" EXIT 0 + +ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe +RUN C:\temp\git-installer.exe /VERYSILENT /NORESTART /NOCANCEL + +ADD https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe C:\temp\miniconda.exe +RUN C:\temp\miniconda.exe /S /AddToPath=1 /InstallationType=JustMe /RegisterPython=0 /D=C:\temp\conda + +WORKDIR C:\temp\pyprt + +COPY envs/windows/py39-conda/environment.yml ./environment.yml +RUN conda env create -n pyprt --file environment.yml + +# https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ +ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&", "call", "conda.bat", "activate", "pyprt", "&&" ] diff --git a/envs/windows/py39-conda/environment.yml b/envs/windows/py39-conda/environment.yml new file mode 100644 index 00000000..e65610b4 --- /dev/null +++ b/envs/windows/py39-conda/environment.yml @@ -0,0 +1,10 @@ +channels: + - defaults + - anaconda + - esri +dependencies: + - python=3.9 + - sphinx + - conda-build + - conda-verify + #- arcgis=1.8.2 diff --git a/envs/windows/py39/Dockerfile b/envs/windows/py39/Dockerfile new file mode 100644 index 00000000..87e31261 --- /dev/null +++ b/envs/windows/py39/Dockerfile @@ -0,0 +1,30 @@ +# escape=` + +# https://docs.microsoft.com/en-us/visualstudio/install/build-tools-container?view=vs-2019 +# https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2019 + +FROM python:3.9-windowsservercore-1809 +SHELL ["cmd", "/S", "/C"] + +ADD https://go.microsoft.com/fwlink/?linkid=2088631 C:\temp\ndp48-x86-x64-allos-enu.exe +RUN C:\temp\ndp48-x86-x64-allos-enu.exe /q /norestart /install + +ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe +RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` +--installPath C:\BuildTools ` +--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` +--add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` +|| IF "%ERRORLEVEL%"=="3010" EXIT 0 + +ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe +RUN C:\TEMP\git-installer.exe /VERYSILENT /NORESTART /NOCANCEL + +WORKDIR C:\temp\pyprt +COPY ./envs/windows/py39/requirements.txt ./requirements.txt + +RUN pip install --no-cache-dir --upgrade pip +RUN pip install --no-cache-dir --upgrade wheel +RUN pip install --no-cache-dir -r requirements.txt + +# https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ +ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&" ] diff --git a/envs/windows/py39/requirements.txt b/envs/windows/py39/requirements.txt new file mode 100644 index 00000000..4bc251dc --- /dev/null +++ b/envs/windows/py39/requirements.txt @@ -0,0 +1,117 @@ +alabaster==0.7.12 +anyio==2.2.0 +arcgis==1.8.2 +argon2-cffi==20.1.0 +async-generator==1.10 +attrs==20.3.0 +Babel==2.9.1 +backcall==0.2.0 +bleach==3.3.0 +certifi==2020.12.5 +cffi==1.14.5 +chardet==4.0.0 +colorama==0.4.4 +cryptography==3.4.7 +cycler==0.10.0 +decorator==5.0.7 +defusedxml==0.7.1 +deprecation==2.1.0 +docutils==0.16 +entrypoints==0.3 +idna==2.10 +imagesize==1.2.0 +importlib-metadata==4.0.1 +ipykernel==5.5.3 +ipython==7.23.0 +ipython-genutils==0.2.0 +ipywidgets==7.6.3 +jedi==0.18.0 +jeepney==0.6.0 +Jinja2==2.11.3 +json5==0.9.5 +jsonschema==3.2.0 +jupyter-client==6.1.12 +jupyter-core==4.7.1 +jupyter-packaging==0.9.2 +jupyter-server==1.6.4 +jupyterlab==3.0.14 +jupyterlab-pygments==0.1.2 +jupyterlab-server==2.5.0 +jupyterlab-widgets==1.0.0 +keyring==23.0.1 +kiwisolver==1.3.1 +lerc==0.1.0 +MarkupSafe==1.1.1 +matplotlib==3.4.1 +matplotlib-inline==0.1.2 +mistune==0.8.4 +nbclassic==0.2.7 +nbclient==0.5.3 +nbconvert==6.0.7 +nbformat==5.1.3 +nest-asyncio==1.5.1 +notebook==6.3.0 +ntlm-auth==1.5.0 +numpy==1.20.2 +oauthlib==3.1.0 +packaging==20.9 +pandas==1.2.4 +pandocfilters==1.4.3 +parso==0.8.2 +pexpect==4.8.0 +pickleshare==0.7.5 +Pillow==8.2.0 +pkginfo==1.7.0 +prometheus-client==0.10.1 +prompt-toolkit==3.0.18 +ptyprocess==0.7.0 +pycparser==2.20 +Pygments==2.9.0 +pyparsing==2.4.7 +pypiwin32==223 +pyrsistent==0.17.3 +pyshp==2.1.3 +python-certifi-win32==1.6 +python-dateutil==2.8.1 +pytz==2021.1 +pywin32==300 +pywin32-ctypes==0.2.0 +pywinpty==1.0.1 +pyzmq==22.0.3 +readme-renderer==29.0 +requests==2.25.1 +requests-kerberos==0.12.0 +requests-negotiate-sspi==0.5.2 +requests-ntlm==1.1.0 +requests-oauthlib==1.3.0 +requests-toolbelt==0.9.1 +rfc3986==1.4.0 +SecretStorage==3.3.1 +Send2Trash==1.5.0 +setuptools-scm==6.0.1 +six==1.15.0 +sniffio==1.2.0 +snowballstemmer==2.1.0 +Sphinx==3.5.4 +sphinxcontrib-applehelp==1.0.2 +sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-htmlhelp==1.0.3 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-serializinghtml==1.1.4 +terminado==0.9.4 +testpath==0.4.4 +tomlkit==0.7.0 +tornado==6.1 +tqdm==4.60.0 +traitlets==5.0.5 +twine==3.4.1 +ujson==4.0.2 +urllib3==1.26.4 +wcwidth==0.2.5 +webencodings==0.5.1 +widgetsnbextension==3.5.1 +winkerberos==0.8.0 +wrapt==1.12.1 +xmlrunner==1.7.7 +zipp==3.4.1 From aa23f514ae6f0e992991bd9ab6d92251ce4e85da Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Thu, 12 Aug 2021 10:09:07 +0200 Subject: [PATCH 25/50] CI: add Python 3.9 support for Windows --- Jenkinsfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index 2b6e4901..5473d3fa 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -76,6 +76,7 @@ env.PIPELINE_ARCHIVING_ALLOWED = "true" @Field final List CONFIGS_TESTS_PY39 = [ PY39_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY39_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_BUILD_WHEELS_PY36 = [ @@ -94,6 +95,7 @@ env.PIPELINE_ARCHIVING_ALLOWED = "true" @Field final List CONFIGS_BUILD_WHEELS_PY39 = [ PY39_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY39_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_BUILD_CONDA_PY36 = [ @@ -113,6 +115,7 @@ env.PIPELINE_ARCHIVING_ALLOWED = "true" @Field final List CONFIGS_BUILD_CONDA_PY39 = [ PY39_CONDA_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY39_CONDA_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_DOC = [ From 3deb0d175d902d4ad83ee0d8960632189676f160 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Thu, 12 Aug 2021 10:12:16 +0200 Subject: [PATCH 26/50] CI: Cleanup: Extract docker image revision number --- Jenkinsfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 5473d3fa..da49e19d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -37,6 +37,8 @@ env.PIPELINE_ARCHIVING_ALLOWED = "true" @Field final String SOURCE_STASH = 'pyprt-sources' @Field String pkgVer = "0.0.0" +@Field final String DOCKER_IMAGE_REV = "v3" + @Field final String DOCKER_AGENT_LINUX = 'centos7-64-d' @Field final String DOCKER_WS_LINUX = "/tmp/pyprt/ws" @@ -287,7 +289,7 @@ String getDockerEnvDir(Map cfg) { String getDockerImage(Map cfg) { String image = 'zrh-dreg-sp-1.esri.com/pyprt/pyprt' - String tag = 'jnk-v3-' + String tag = "jnk-${DOCKER_IMAGE_REV}-" tag += (cfg.os == cepl.CFG_OS_WIN10) ? 'windows' : (cfg.os == cepl.CFG_OS_RHEL7) ? 'centos7' : error(cfg.os) tag += "-py${getPySuf(cfg)}-${cfg.tc}" From d690f813754f085a91eb452ea7087975c6c0016a Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Wed, 11 Aug 2021 14:26:57 +0200 Subject: [PATCH 27/50] doc: fixed typo in build instructions --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 96d10512..2b3f57b2 100644 --- a/README.md +++ b/README.md @@ -173,7 +173,7 @@ Note: We only support Docker on Linux and Windows. On Windows, Docker needs to b 1. Run the build * Linux: `docker run --rm -v $(pwd):/tmp/pyprt/root -w /tmp/pyprt/root pyprt:centos7-py36-conda bash -c 'python setup.py bdist_conda && cp -r /tmp/pyprt/pyprt-conda-env/conda-bld/linux-64/pyprt*.tar.bz2 /tmp/pyprt/root'` * Windows: `docker run --rm -v %cd%:C:\temp\pyprt\root -w C:\temp\pyprt\root pyprt:windows-py36-conda cmd /c "python setup.py bdist_conda && copy C:\temp\conda\envs\pyprt\conda-bld\win-64\pyprt-*.tar.bz2 C:\temp\pyprt\root"` -1. The resulting conda package will be located in the current directy (PyPRT git repo root). +1. The resulting conda package will be located in the current directly (PyPRT git repo root). ## Licensing Information From eed8b68e0d1c5f87d990df83eda3bb8fd170b636 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Wed, 11 Aug 2021 14:27:28 +0200 Subject: [PATCH 28/50] doc: fixed missing uid/gid arguments for conda docker build command --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2b3f57b2..9959be86 100644 --- a/README.md +++ b/README.md @@ -168,7 +168,7 @@ Note: We only support Docker on Linux and Windows. On Windows, Docker needs to b 1. Open a shell in the PyPRT git root 1. Create the desired image for the build toolchain (adapt `py36` to your desired Python version): - * Linux: `docker build --rm -f envs/centos7/py36-conda/Dockerfile -t pyprt:centos7-py36-conda .` + * Linux: `docker build --rm -f envs/centos7/py36-conda/Dockerfile -t pyprt:centos7-py36-conda --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) .` * Windows: `docker build --rm -f envs\windows\py36-conda\Dockerfile -t pyprt:windows-py36-conda .` 1. Run the build * Linux: `docker run --rm -v $(pwd):/tmp/pyprt/root -w /tmp/pyprt/root pyprt:centos7-py36-conda bash -c 'python setup.py bdist_conda && cp -r /tmp/pyprt/pyprt-conda-env/conda-bld/linux-64/pyprt*.tar.bz2 /tmp/pyprt/root'` From 6cdf22d61e38aa97c0e209b95f164982ffefaef8 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Thu, 12 Aug 2021 14:33:45 +0200 Subject: [PATCH 29/50] doc: add Python 3.9 to README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9959be86..d339adca 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,9 @@ PyPRT provides a Python binding for PRT (Procedural RunTime) of CityEngine. This Run `pip install pyprt` in your (virtual) Python environment or `conda install -c esri pyprt` in a Conda environment. Then use `import pyprt` in your scripts. -We provide wheels for Python 3.6 and 3.8 on Linux and Windows. Additionally, we also provide wheels for Python 3.7 on Windows. Conda packages are available for Python 3.6, 3.7 and 3.8 on Linux and Windows. For other Python versions please [build](#development) PyPRT yourself. +We provide wheels for Python 3.6, 3.8 and 3.9 on Linux and Windows. Additionally, we also provide wheels for Python 3.7 on Windows. Conda packages are available for Python 3.6, 3.7, 3.8 and 3.9(*) on Linux and Windows. For other Python versions please [build](#development) PyPRT yourself. + +(*) A note regarding Python 3.9 and Conda: The arcgis package for Python 3.9 is not yet available in Conda, the arcgis submodule in PyPRT is not working yet. ## Minimal Example From bf16ccc01dce12faa9ad2641ed2a505531833e80 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Mon, 16 Aug 2021 09:13:53 +0200 Subject: [PATCH 30/50] review: python 3.9 venv security update --- envs/centos7/py39/requirements.txt | 2 +- envs/windows/py39/requirements.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/envs/centos7/py39/requirements.txt b/envs/centos7/py39/requirements.txt index 0359a82b..3c9e4acb 100644 --- a/envs/centos7/py39/requirements.txt +++ b/envs/centos7/py39/requirements.txt @@ -101,7 +101,7 @@ tqdm==4.60.0 traitlets==5.0.5 twine==3.4.1 ujson==4.0.2 -urllib3==1.26.4 +urllib3==1.26.5 wcwidth==0.2.5 webencodings==0.5.1 widgetsnbextension==3.5.1 diff --git a/envs/windows/py39/requirements.txt b/envs/windows/py39/requirements.txt index 4bc251dc..0ab75c8c 100644 --- a/envs/windows/py39/requirements.txt +++ b/envs/windows/py39/requirements.txt @@ -74,7 +74,7 @@ pyshp==2.1.3 python-certifi-win32==1.6 python-dateutil==2.8.1 pytz==2021.1 -pywin32==300 +pywin32==301 pywin32-ctypes==0.2.0 pywinpty==1.0.1 pyzmq==22.0.3 @@ -107,7 +107,7 @@ tqdm==4.60.0 traitlets==5.0.5 twine==3.4.1 ujson==4.0.2 -urllib3==1.26.4 +urllib3==1.26.5 wcwidth==0.2.5 webencodings==0.5.1 widgetsnbextension==3.5.1 From 014ccbee9b3455612f7009c3c3d09e855966a37e Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Mon, 16 Aug 2021 09:15:23 +0200 Subject: [PATCH 31/50] review: improve wording in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d339adca..0762053a 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Run `pip install pyprt` in your (virtual) Python environment or `conda install - We provide wheels for Python 3.6, 3.8 and 3.9 on Linux and Windows. Additionally, we also provide wheels for Python 3.7 on Windows. Conda packages are available for Python 3.6, 3.7, 3.8 and 3.9(*) on Linux and Windows. For other Python versions please [build](#development) PyPRT yourself. -(*) A note regarding Python 3.9 and Conda: The arcgis package for Python 3.9 is not yet available in Conda, the arcgis submodule in PyPRT is not working yet. +(*) A note regarding Python 3.9 and Conda: The arcgis package for Python 3.9 is not yet available in Conda, therefore the arcgis submodule in PyPRT is not yet working with Python 3.9. ## Minimal Example From 6d13d4b8db766a784ada9d337a63692bb4abba0a Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Sun, 2 May 2021 15:42:53 +0200 Subject: [PATCH 32/50] docker: update ignore files --- .dockerignore | 3 +++ .gitignore | 4 +++- envs/.gitignore | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 .dockerignore create mode 100644 envs/.gitignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..6c09d9af --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +.venv* +build +dist diff --git a/.gitignore b/.gitignore index 0318afbf..f5a2cc6f 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,9 @@ /**/__pycache__ /test-reports/ -/.venv*/ +**/.conda-*/ +**/.venv*/ + /**/Pipfile.lock # development mode diff --git a/envs/.gitignore b/envs/.gitignore new file mode 100644 index 00000000..485dee64 --- /dev/null +++ b/envs/.gitignore @@ -0,0 +1 @@ +.idea From bd1841c325decd3d4ab8903d0d451ffa69137349 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Sun, 2 May 2021 15:42:36 +0200 Subject: [PATCH 33/50] docker: deduplicate dockerfiles * extracted base image * parameterized python version --- README.md | 16 ++++---- envs/centos7/base/Dockerfile | 12 ++++++ envs/centos7/{py36-conda => conda}/Dockerfile | 22 ++++------- .../environment-py3.6.yml} | 0 .../environment-py3.7.yml} | 0 .../environment-py3.8.yml} | 0 .../environment-py3.9.yml} | 0 envs/centos7/py36/Dockerfile | 35 ----------------- envs/centos7/py37-conda/Dockerfile | 39 ------------------- envs/centos7/py38-conda/Dockerfile | 39 ------------------- envs/centos7/py38/Dockerfile | 35 ----------------- envs/centos7/py39-conda/Dockerfile | 39 ------------------- envs/centos7/wheel/Dockerfile | 30 ++++++++++++++ .../Dockerfile => wheel/Dockerfile-py3.9} | 14 ++----- .../requirements-py3.6.txt} | 0 .../requirements-py3.8.txt} | 0 .../requirements-py3.9.txt} | 0 envs/windows/base/Dockerfile | 17 ++++++++ envs/windows/base/Dockerfile-py | 22 +++++++++++ envs/windows/conda/Dockerfile | 18 +++++++++ .../environment-py3.6.yml} | 0 .../environment-py3.7.yml} | 0 .../environment-py3.8.yml} | 0 .../environment-py3.9.yml} | 0 envs/windows/py36-conda/Dockerfile | 28 ------------- envs/windows/py36/Dockerfile | 30 -------------- envs/windows/py37-conda/Dockerfile | 28 ------------- envs/windows/py37/Dockerfile | 30 -------------- envs/windows/py38-conda/Dockerfile | 28 ------------- envs/windows/py38/Dockerfile | 30 -------------- envs/windows/py39-conda/Dockerfile | 28 ------------- envs/windows/py39/Dockerfile | 30 -------------- envs/windows/wheel/Dockerfile | 16 ++++++++ .../requirements-py3.6.txt} | 0 .../requirements-py3.7.txt} | 0 .../requirements-py3.8.txt} | 0 .../requirements-py3.9.txt} | 0 37 files changed, 133 insertions(+), 453 deletions(-) create mode 100644 envs/centos7/base/Dockerfile rename envs/centos7/{py36-conda => conda}/Dockerfile (66%) rename envs/centos7/{py36-conda/environment.yml => conda/environment-py3.6.yml} (100%) rename envs/centos7/{py37-conda/environment.yml => conda/environment-py3.7.yml} (100%) rename envs/centos7/{py38-conda/environment.yml => conda/environment-py3.8.yml} (100%) rename envs/centos7/{py39-conda/environment.yml => conda/environment-py3.9.yml} (100%) delete mode 100644 envs/centos7/py36/Dockerfile delete mode 100644 envs/centos7/py37-conda/Dockerfile delete mode 100644 envs/centos7/py38-conda/Dockerfile delete mode 100644 envs/centos7/py38/Dockerfile delete mode 100644 envs/centos7/py39-conda/Dockerfile create mode 100644 envs/centos7/wheel/Dockerfile rename envs/centos7/{py39/Dockerfile => wheel/Dockerfile-py3.9} (74%) rename envs/centos7/{py36/requirements.txt => wheel/requirements-py3.6.txt} (100%) rename envs/centos7/{py38/requirements.txt => wheel/requirements-py3.8.txt} (100%) rename envs/centos7/{py39/requirements.txt => wheel/requirements-py3.9.txt} (100%) create mode 100644 envs/windows/base/Dockerfile create mode 100644 envs/windows/base/Dockerfile-py create mode 100644 envs/windows/conda/Dockerfile rename envs/windows/{py36-conda/environment.yml => conda/environment-py3.6.yml} (100%) rename envs/windows/{py37-conda/environment.yml => conda/environment-py3.7.yml} (100%) rename envs/windows/{py38-conda/environment.yml => conda/environment-py3.8.yml} (100%) rename envs/windows/{py39-conda/environment.yml => conda/environment-py3.9.yml} (100%) delete mode 100644 envs/windows/py36-conda/Dockerfile delete mode 100644 envs/windows/py36/Dockerfile delete mode 100644 envs/windows/py37-conda/Dockerfile delete mode 100644 envs/windows/py37/Dockerfile delete mode 100644 envs/windows/py38-conda/Dockerfile delete mode 100644 envs/windows/py38/Dockerfile delete mode 100644 envs/windows/py39-conda/Dockerfile delete mode 100644 envs/windows/py39/Dockerfile create mode 100644 envs/windows/wheel/Dockerfile rename envs/windows/{py36/requirements.txt => wheel/requirements-py3.6.txt} (100%) rename envs/windows/{py37/requirements.txt => wheel/requirements-py3.7.txt} (100%) rename envs/windows/{py38/requirements.txt => wheel/requirements-py3.8.txt} (100%) rename envs/windows/{py39/requirements.txt => wheel/requirements-py3.9.txt} (100%) diff --git a/README.md b/README.md index 0762053a..fae002a1 100644 --- a/README.md +++ b/README.md @@ -91,11 +91,11 @@ _Note: on Windows, replace `bin` with `Scripts` in the following commands. Some ### Build Python Wheel 1. Open a shell in the PyPRT git root. -1. First time only: set up a virtual Python environment with build dependencies for PyPRT. Adapt `python3.6` and `centos7/py36` to your desired OS/Python combination. +1. First time only: set up a virtual Python environment with build dependencies for PyPRT. Adapt `python3.6` and the `envs` file to your desired OS/Python combination. 1. Create the virtual environment: `python3.6 -m venv .venv` 1. Get latest pip: `.venv/bin/python -m pip install --upgrade pip` 1. Get latest wheel: `.venv/bin/python -m pip install --upgrade wheel` - 1. Install build dependencies for PyPRT: `.venv/bin/python -m pip install -r envs/centos7/py36/requirements.txt` + 1. Install build dependencies for PyPRT: `.venv/bin/python -m pip install -r envs/centos7/wheel/requirements-py36.txt` 1. Run `.venv/bin/python setup.py bdist_wheel`. This will build the CMake project and Python packages. 1. The resulting wheel is written to the temporary `dist` folder. @@ -106,7 +106,7 @@ _Note: on Windows, replace `bin` with `Scripts` in the following commands. Some 1. First time only: run `conda env create --prefix ./env --file envs/centos7/py36-conda/environment.yml` to create a conda environment with all the required Python packages (adapt `centos7/py36-conda` to your desired OS/Python combination). 1. Run `activate ./env`. 1. Run `python setup.py bdist_conda`. This will build the CMake project and Python packages. -1. The resulting package is written to the `./env/conda-bld/{platform}` folder. +1. The resulting package is written to the `./env-py36/conda-bld/{platform}` folder. ### Iterative Python Development @@ -158,9 +158,9 @@ Note: We only support Docker on Linux and Windows. On Windows, Docker needs to b #### Build Wheels 1. Open a shell in the PyPRT git root -1. Create the desired image for the build toolchain (adapt `py36` to your desired Python version): - * Linux: `docker build --rm -f envs/centos7/py36/Dockerfile -t pyprt:centos7-py36 --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) .` - * Windows: `docker build --rm -f envs\windows\py36\Dockerfile -t pyprt:windows-py36 .` +1. Create the desired image for the build toolchain (adapt to your desired Python version): + * Linux: `docker build --rm -f envs/centos7/wheel/Dockerfile -t pyprt:centos7-py36 --build-arg PY_VER=36 --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) .` + * Windows: `docker build --rm -f envs\windows\wheel\Dockerfile -t pyprt:windows-py36 --build-arg PY_VER=3.6 .` 1. Run the build * Linux: `docker run --rm -v $(pwd):/tmp/pyprt/root -w /tmp/pyprt/root pyprt:centos7-py36 bash -c 'python setup.py bdist_wheel'` * Windows: `docker run --rm -v %cd%:C:\temp\pyprt\root -w C:\temp\pyprt\root pyprt:windows-py36 cmd /c "python setup.py bdist_wheel"` @@ -170,8 +170,8 @@ Note: We only support Docker on Linux and Windows. On Windows, Docker needs to b 1. Open a shell in the PyPRT git root 1. Create the desired image for the build toolchain (adapt `py36` to your desired Python version): - * Linux: `docker build --rm -f envs/centos7/py36-conda/Dockerfile -t pyprt:centos7-py36-conda --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) .` - * Windows: `docker build --rm -f envs\windows\py36-conda\Dockerfile -t pyprt:windows-py36-conda .` + * Linux: `docker build --rm -f envs/centos7/conda/Dockerfile -t pyprt:centos7-py36-conda --build-arg PY_VER=36 --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) .` + * Windows: `docker build --rm -f envs\windows\conda\Dockerfile -t pyprt:windows-py36-conda --build-arg PY_VER=3.6 .` 1. Run the build * Linux: `docker run --rm -v $(pwd):/tmp/pyprt/root -w /tmp/pyprt/root pyprt:centos7-py36-conda bash -c 'python setup.py bdist_conda && cp -r /tmp/pyprt/pyprt-conda-env/conda-bld/linux-64/pyprt*.tar.bz2 /tmp/pyprt/root'` * Windows: `docker run --rm -v %cd%:C:\temp\pyprt\root -w C:\temp\pyprt\root pyprt:windows-py36-conda cmd /c "python setup.py bdist_conda && copy C:\temp\conda\envs\pyprt\conda-bld\win-64\pyprt-*.tar.bz2 C:\temp\pyprt\root"` diff --git a/envs/centos7/base/Dockerfile b/envs/centos7/base/Dockerfile new file mode 100644 index 00000000..2cfff5f9 --- /dev/null +++ b/envs/centos7/base/Dockerfile @@ -0,0 +1,12 @@ +FROM centos:7 + +RUN yum install -y centos-release-scl-rh epel-release \ + && yum install -y git cmake3 ninja-build devtoolset-9-toolchain \ + && yum install -y curl bzip2 + +# make cmake3 the default cmake +RUN alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \ + --slave /usr/local/bin/ctest ctest /usr/bin/ctest3 \ + --slave /usr/local/bin/cpack cpack /usr/bin/cpack3 \ + --slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \ + --family cmake diff --git a/envs/centos7/py36-conda/Dockerfile b/envs/centos7/conda/Dockerfile similarity index 66% rename from envs/centos7/py36-conda/Dockerfile rename to envs/centos7/conda/Dockerfile index 671fb0e9..36341b5e 100644 --- a/envs/centos7/py36-conda/Dockerfile +++ b/envs/centos7/conda/Dockerfile @@ -1,21 +1,13 @@ -FROM centos:7 +ARG REGISTRY='' +FROM ${REGISTRY}pyprt-base:jnk-v4-centos7 -RUN yum install -y centos-release-scl-rh epel-release \ - && yum install -y git cmake3 ninja-build devtoolset-9-toolchain \ - && yum install -y curl bzip2 - -# make cmake3 the default cmake -RUN alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \ - --slave /usr/local/bin/ctest ctest /usr/bin/ctest3 \ - --slave /usr/local/bin/cpack cpack /usr/bin/cpack3 \ - --slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \ - --family cmake +ARG PY_VER +ARG USER_ID +ARG GROUP_ID # this container works with mounted host directories # we create a user with matching uid/gid to avoid permissions issues # inspired by https://vsupalov.com/docker-shared-permissions/ -ARG USER_ID -ARG GROUP_ID RUN groupadd --gid $GROUP_ID user RUN useradd --uid $USER_ID --gid $GROUP_ID user USER user @@ -27,11 +19,11 @@ WORKDIR /tmp/pyprt RUN curl -sSL https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -o /tmp/pyprt/miniconda.sh \ && bash ./miniconda.sh -bfp ./conda \ && rm -rf ./miniconda.sh \ - && ./conda/bin/conda install -y python=3.6 \ + && ./conda/bin/conda install -y python=${PY_VER} \ && ./conda/bin/conda update conda \ && ./conda/bin/conda clean --all --yes -COPY envs/centos7/py36-conda/environment.yml ./environment.yml +COPY envs/centos7/conda/environment-py${PY_VER}.yml ./environment.yml RUN ./conda/bin/conda env create --prefix ./pyprt-conda-env --file ./environment.yml # also see https://github.com/sclorg/devtoolset-container diff --git a/envs/centos7/py36-conda/environment.yml b/envs/centos7/conda/environment-py3.6.yml similarity index 100% rename from envs/centos7/py36-conda/environment.yml rename to envs/centos7/conda/environment-py3.6.yml diff --git a/envs/centos7/py37-conda/environment.yml b/envs/centos7/conda/environment-py3.7.yml similarity index 100% rename from envs/centos7/py37-conda/environment.yml rename to envs/centos7/conda/environment-py3.7.yml diff --git a/envs/centos7/py38-conda/environment.yml b/envs/centos7/conda/environment-py3.8.yml similarity index 100% rename from envs/centos7/py38-conda/environment.yml rename to envs/centos7/conda/environment-py3.8.yml diff --git a/envs/centos7/py39-conda/environment.yml b/envs/centos7/conda/environment-py3.9.yml similarity index 100% rename from envs/centos7/py39-conda/environment.yml rename to envs/centos7/conda/environment-py3.9.yml diff --git a/envs/centos7/py36/Dockerfile b/envs/centos7/py36/Dockerfile deleted file mode 100644 index f5c878a5..00000000 --- a/envs/centos7/py36/Dockerfile +++ /dev/null @@ -1,35 +0,0 @@ -FROM centos:7 - -RUN yum install -y centos-release-scl-rh epel-release - -RUN yum install -y git cmake3 ninja-build devtoolset-9-toolchain \ -rh-python36-python rh-python36-python-devel rh-python36-python-pip - -RUN alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \ ---slave /usr/local/bin/ctest ctest /usr/bin/ctest3 \ ---slave /usr/local/bin/cpack cpack /usr/bin/cpack3 \ ---slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \ ---family cmake - -# this container works with mounted host directories -# we create a user with matching uid/gid to avoid permissions issues -# inspired by https://vsupalov.com/docker-shared-permissions/ -ARG USER_ID -ARG GROUP_ID -RUN groupadd --gid $GROUP_ID user -RUN useradd --uid $USER_ID --gid $GROUP_ID user -USER user - -# also see https://github.com/sclorg/devtoolset-container -RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-9" >> /tmp/scl_enable -ENV BASH_ENV=/tmp/scl_enable ENV=/tmp/scl_enable PROMPT_COMMAND=". /tmp/scl_enable" - -WORKDIR /tmp/pyprt -COPY envs/centos7/py36/requirements.txt ./requirements.txt - -ENV VIRTUAL_ENV=/tmp/pyprt-venv -RUN source scl_source enable rh-python36 && python -m venv $VIRTUAL_ENV -ENV PATH="$VIRTUAL_ENV/bin:$PATH" - -RUN python -m pip install --no-cache-dir --upgrade pip && python -m pip install --no-cache-dir --upgrade wheel -RUN python -m pip install --no-cache-dir -r requirements.txt diff --git a/envs/centos7/py37-conda/Dockerfile b/envs/centos7/py37-conda/Dockerfile deleted file mode 100644 index 537562d6..00000000 --- a/envs/centos7/py37-conda/Dockerfile +++ /dev/null @@ -1,39 +0,0 @@ -FROM centos:7 - -RUN yum install -y centos-release-scl-rh epel-release \ - && yum install -y git cmake3 ninja-build devtoolset-9-toolchain \ - && yum install -y curl bzip2 - -# make cmake3 the default cmake -RUN alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \ - --slave /usr/local/bin/ctest ctest /usr/bin/ctest3 \ - --slave /usr/local/bin/cpack cpack /usr/bin/cpack3 \ - --slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \ - --family cmake - -# this container works with mounted host directories -# we create a user with matching uid/gid to avoid permissions issues -# inspired by https://vsupalov.com/docker-shared-permissions/ -ARG USER_ID -ARG GROUP_ID -RUN groupadd --gid $GROUP_ID user -RUN useradd --uid $USER_ID --gid $GROUP_ID user -USER user - -RUN mkdir /tmp/pyprt -WORKDIR /tmp/pyprt - -# see https://github.com/conda/conda-docker/blob/master/miniconda3/centos7/Dockerfile -RUN curl -sSL https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -o /tmp/pyprt/miniconda.sh \ - && bash ./miniconda.sh -bfp ./conda \ - && rm -rf ./miniconda.sh \ - && ./conda/bin/conda install -y python=3.7 \ - && ./conda/bin/conda update conda \ - && ./conda/bin/conda clean --all --yes - -COPY envs/centos7/py37-conda/environment.yml ./environment.yml -RUN ./conda/bin/conda env create --prefix ./pyprt-conda-env --file ./environment.yml - -# also see https://github.com/sclorg/devtoolset-container -RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-9 && source /tmp/pyprt/conda/bin/activate /tmp/pyprt/pyprt-conda-env" >> /tmp/env_enable -ENV BASH_ENV=/tmp/env_enable ENV=/tmp/env_enable PROMPT_COMMAND="source /tmp/env_enable" diff --git a/envs/centos7/py38-conda/Dockerfile b/envs/centos7/py38-conda/Dockerfile deleted file mode 100644 index 6c68ccc7..00000000 --- a/envs/centos7/py38-conda/Dockerfile +++ /dev/null @@ -1,39 +0,0 @@ -FROM centos:7 - -RUN yum install -y centos-release-scl-rh epel-release \ - && yum install -y git cmake3 ninja-build devtoolset-9-toolchain \ - && yum install -y curl bzip2 - -# make cmake3 the default cmake -RUN alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \ - --slave /usr/local/bin/ctest ctest /usr/bin/ctest3 \ - --slave /usr/local/bin/cpack cpack /usr/bin/cpack3 \ - --slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \ - --family cmake - -# this container works with mounted host directories -# we create a user with matching uid/gid to avoid permissions issues -# inspired by https://vsupalov.com/docker-shared-permissions/ -ARG USER_ID -ARG GROUP_ID -RUN groupadd --gid $GROUP_ID user -RUN useradd --uid $USER_ID --gid $GROUP_ID user -USER user - -RUN mkdir /tmp/pyprt -WORKDIR /tmp/pyprt - -# see https://github.com/conda/conda-docker/blob/master/miniconda3/centos7/Dockerfile -RUN curl -sSL https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -o /tmp/pyprt/miniconda.sh \ - && bash ./miniconda.sh -bfp ./conda \ - && rm -rf ./miniconda.sh \ - && ./conda/bin/conda install -y python=3.8 \ - && ./conda/bin/conda update conda \ - && ./conda/bin/conda clean --all --yes - -COPY envs/centos7/py38-conda/environment.yml ./environment.yml -RUN ./conda/bin/conda env create --prefix ./pyprt-conda-env --file ./environment.yml - -# also see https://github.com/sclorg/devtoolset-container -RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-9 && source /tmp/pyprt/conda/bin/activate /tmp/pyprt/pyprt-conda-env" >> /tmp/env_enable -ENV BASH_ENV=/tmp/env_enable ENV=/tmp/env_enable PROMPT_COMMAND="source /tmp/env_enable" diff --git a/envs/centos7/py38/Dockerfile b/envs/centos7/py38/Dockerfile deleted file mode 100644 index 73f310d0..00000000 --- a/envs/centos7/py38/Dockerfile +++ /dev/null @@ -1,35 +0,0 @@ -FROM centos:7 - -RUN yum install -y centos-release-scl-rh epel-release - -RUN yum install -y git cmake3 ninja-build devtoolset-9-toolchain \ -rh-python38-python rh-python38-python-devel rh-python38-python-pip - -RUN alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \ ---slave /usr/local/bin/ctest ctest /usr/bin/ctest3 \ ---slave /usr/local/bin/cpack cpack /usr/bin/cpack3 \ ---slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \ ---family cmake - -# this container works with mounted host directories -# we create a user with matching uid/gid to avoid permissions issues -# inspired by https://vsupalov.com/docker-shared-permissions/ -ARG USER_ID -ARG GROUP_ID -RUN groupadd --gid $GROUP_ID user -RUN useradd --uid $USER_ID --gid $GROUP_ID user -USER user - -# also see https://github.com/sclorg/devtoolset-container -RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-9" >> /tmp/scl_enable -ENV BASH_ENV=/tmp/scl_enable ENV=/tmp/scl_enable PROMPT_COMMAND=". /tmp/scl_enable" - -WORKDIR /tmp/pyprt/docker -COPY envs/centos7/py38/requirements.txt ./requirements.txt - -ENV VIRTUAL_ENV=/tmp/pyprt-venv -RUN source scl_source enable rh-python38 && python -m venv $VIRTUAL_ENV -ENV PATH="$VIRTUAL_ENV/bin:$PATH" - -RUN python -m pip install --no-cache-dir --upgrade pip && python -m pip install --no-cache-dir --upgrade wheel -RUN python -m pip install --no-cache-dir -r requirements.txt diff --git a/envs/centos7/py39-conda/Dockerfile b/envs/centos7/py39-conda/Dockerfile deleted file mode 100644 index abf71c35..00000000 --- a/envs/centos7/py39-conda/Dockerfile +++ /dev/null @@ -1,39 +0,0 @@ -FROM centos:7 - -RUN yum install -y centos-release-scl-rh epel-release \ - && yum install -y git cmake3 ninja-build devtoolset-9-toolchain \ - && yum install -y curl bzip2 - -# make cmake3 the default cmake -RUN alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \ - --slave /usr/local/bin/ctest ctest /usr/bin/ctest3 \ - --slave /usr/local/bin/cpack cpack /usr/bin/cpack3 \ - --slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \ - --family cmake - -# this container works with mounted host directories -# we create a user with matching uid/gid to avoid permissions issues -# inspired by https://vsupalov.com/docker-shared-permissions/ -ARG USER_ID -ARG GROUP_ID -RUN groupadd --gid $GROUP_ID user -RUN useradd --uid $USER_ID --gid $GROUP_ID user -USER user - -RUN mkdir /tmp/pyprt -WORKDIR /tmp/pyprt - -# see https://github.com/conda/conda-docker/blob/master/miniconda3/centos7/Dockerfile -RUN curl -sSL https://repo.anaconda.com/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh -o /tmp/pyprt/miniconda.sh \ - && bash ./miniconda.sh -bfp ./conda \ - && rm -rf ./miniconda.sh \ - && ./conda/bin/conda install -y python=3.9 \ - && ./conda/bin/conda update conda \ - && ./conda/bin/conda clean --all --yes - -COPY envs/centos7/py39-conda/environment.yml ./environment.yml -RUN ./conda/bin/conda env create --prefix ./pyprt-conda-env --file ./environment.yml - -# also see https://github.com/sclorg/devtoolset-container -RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-9 && source /tmp/pyprt/conda/bin/activate /tmp/pyprt/pyprt-conda-env" >> /tmp/env_enable -ENV BASH_ENV=/tmp/env_enable ENV=/tmp/env_enable PROMPT_COMMAND="source /tmp/env_enable" diff --git a/envs/centos7/wheel/Dockerfile b/envs/centos7/wheel/Dockerfile new file mode 100644 index 00000000..d581c6b6 --- /dev/null +++ b/envs/centos7/wheel/Dockerfile @@ -0,0 +1,30 @@ +ARG REGISTRY='' +FROM ${REGISTRY}pyprt-base:jnk-v4-centos7 + +ARG PY_VER +ARG USER_ID +ARG GROUP_ID + +RUN yum install -y rh-python${PY_VER//./}-python rh-python${PY_VER//./}-python-devel rh-python${PY_VER//./}-python-pip + +# this container works with mounted host directories +# we create a user with matching uid/gid to avoid permissions issues +# inspired by https://vsupalov.com/docker-shared-permissions/ +RUN groupadd --gid $GROUP_ID user +RUN useradd --uid $USER_ID --gid $GROUP_ID user +USER user + +# also see https://github.com/sclorg/devtoolset-container +RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtoolset-9" >> /tmp/scl_enable +ENV BASH_ENV=/tmp/scl_enable ENV=/tmp/scl_enable PROMPT_COMMAND=". /tmp/scl_enable" + +WORKDIR /tmp/pyprt +COPY envs/centos7/wheel/requirements-py${PY_VER}.txt ./requirements.txt + +ENV VIRTUAL_ENV=/tmp/pyprt-venv +RUN source scl_source enable rh-python${PY_VER//./} && python -m venv $VIRTUAL_ENV +ENV PATH="$VIRTUAL_ENV/bin:$PATH" + +RUN python -m pip install --no-cache-dir --upgrade pip \ + && python -m pip install --no-cache-dir --upgrade wheel \ + && python -m pip install --no-cache-dir -r requirements.txt diff --git a/envs/centos7/py39/Dockerfile b/envs/centos7/wheel/Dockerfile-py3.9 similarity index 74% rename from envs/centos7/py39/Dockerfile rename to envs/centos7/wheel/Dockerfile-py3.9 index 4527d6e3..22e4fd8f 100644 --- a/envs/centos7/py39/Dockerfile +++ b/envs/centos7/wheel/Dockerfile-py3.9 @@ -1,13 +1,5 @@ -FROM centos:7 - -RUN yum install -y centos-release-scl epel-release -RUN yum install -y git cmake3 ninja-build devtoolset-9-toolchain - -RUN alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \ - --slave /usr/local/bin/ctest ctest /usr/bin/ctest3 \ - --slave /usr/local/bin/cpack cpack /usr/bin/cpack3 \ - --slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \ - --family cmake +ARG REGISTRY='' +FROM ${REGISTRY}pyprt-base:jnk-v4-centos7 # no RPM repos yet, we manually build Python 3.9 with default CentOS 7 toolchain WORKDIR /tmp @@ -35,7 +27,7 @@ RUN echo "unset BASH_ENV PROMPT_COMMAND ENV && source scl_source enable devtools ENV BASH_ENV=/tmp/scl_enable ENV=/tmp/scl_enable PROMPT_COMMAND=". /tmp/scl_enable" WORKDIR /tmp/pyprt/docker -COPY envs/centos7/py39/requirements.txt ./requirements.txt +COPY envs/centos7/wheel/requirements-py3.9.txt ./requirements.txt ENV VIRTUAL_ENV=/tmp/pyprt-venv RUN python3.9 -m venv $VIRTUAL_ENV diff --git a/envs/centos7/py36/requirements.txt b/envs/centos7/wheel/requirements-py3.6.txt similarity index 100% rename from envs/centos7/py36/requirements.txt rename to envs/centos7/wheel/requirements-py3.6.txt diff --git a/envs/centos7/py38/requirements.txt b/envs/centos7/wheel/requirements-py3.8.txt similarity index 100% rename from envs/centos7/py38/requirements.txt rename to envs/centos7/wheel/requirements-py3.8.txt diff --git a/envs/centos7/py39/requirements.txt b/envs/centos7/wheel/requirements-py3.9.txt similarity index 100% rename from envs/centos7/py39/requirements.txt rename to envs/centos7/wheel/requirements-py3.9.txt diff --git a/envs/windows/base/Dockerfile b/envs/windows/base/Dockerfile new file mode 100644 index 00000000..dab9e649 --- /dev/null +++ b/envs/windows/base/Dockerfile @@ -0,0 +1,17 @@ +# escape=` + +FROM mcr.microsoft.com/windows/servercore:1809 +SHELL ["cmd", "/S", "/C"] + +ADD https://zrh-code.esri.com/nexus/content/repositories/thirdparty/com/microsoft/ndp/48/ndp-48-x86-x64-allos-enu.exe C:\temp\ndp48-x86-x64-allos-enu.exe +RUN C:\temp\ndp48-x86-x64-allos-enu.exe /q /norestart /install + +ADD https://zrh-code.esri.com/nexus/content/repositories/thirdparty/com/microsoft/vs_buildtools/16/vs_buildtools-16.exe C:\temp\vs_buildtools.exe +RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` + --installPath C:\BuildTools ` + --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` + --add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` + || IF "%ERRORLEVEL%"=="3010" EXIT 0 + +ADD https://zrh-code.esri.com/nexus/content/repositories/thirdparty/com/github/git-for-windows/2.31.1/git-for-windows-2.31.1-64-bit.exe C:\temp\git-installer.exe +RUN C:\temp\git-installer.exe /VERYSILENT /NORESTART /NOCANCEL diff --git a/envs/windows/base/Dockerfile-py b/envs/windows/base/Dockerfile-py new file mode 100644 index 00000000..92f6eac5 --- /dev/null +++ b/envs/windows/base/Dockerfile-py @@ -0,0 +1,22 @@ +# escape=` + +# https://docs.microsoft.com/en-us/visualstudio/install/build-tools-container?view=vs-2019 +# https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2019 + +ARG PY_VER + +FROM python:${PY_VER}-windowsservercore-1809 +SHELL ["cmd", "/S", "/C"] + +ADD https://zrh-code.esri.com/nexus/content/repositories/thirdparty/com/microsoft/ndp/48/ndp-48-x86-x64-allos-enu.exe C:\temp\ndp48-x86-x64-allos-enu.exe +RUN C:\temp\ndp48-x86-x64-allos-enu.exe /q /norestart /install + +ADD https://zrh-code.esri.com/nexus/content/repositories/thirdparty/com/microsoft/vs_buildtools/16/vs_buildtools-16.exe C:\temp\vs_buildtools.exe +RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` + --installPath C:\BuildTools ` + --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` + --add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` + || IF "%ERRORLEVEL%"=="3010" EXIT 0 + +ADD https://zrh-code.esri.com/nexus/content/repositories/thirdparty/com/github/git-for-windows/2.31.1/git-for-windows-2.31.1-64-bit.exe C:\temp\git-installer.exe +RUN C:\temp\git-installer.exe /VERYSILENT /NORESTART /NOCANCEL diff --git a/envs/windows/conda/Dockerfile b/envs/windows/conda/Dockerfile new file mode 100644 index 00000000..b0a5d4a9 --- /dev/null +++ b/envs/windows/conda/Dockerfile @@ -0,0 +1,18 @@ +# escape=` + +ARG REGISTRY='' +ARG PY_VER + +FROM ${REGISTRY}pyprt-base:jnk-v4-windows + +ADD https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe C:\temp\miniconda.exe +RUN C:\temp\miniconda.exe /S /AddToPath=1 /InstallationType=JustMe /RegisterPython=0 /D=C:\temp\conda + +WORKDIR C:\temp\pyprt + +ARG PY_VER +COPY envs/windows/conda/environment-py${PY_VER}.yml ./environment.yml +RUN conda env create -n pyprt --file environment.yml + +# https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ +ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&", "call", "conda.bat", "activate", "pyprt", "&&" ] diff --git a/envs/windows/py36-conda/environment.yml b/envs/windows/conda/environment-py3.6.yml similarity index 100% rename from envs/windows/py36-conda/environment.yml rename to envs/windows/conda/environment-py3.6.yml diff --git a/envs/windows/py37-conda/environment.yml b/envs/windows/conda/environment-py3.7.yml similarity index 100% rename from envs/windows/py37-conda/environment.yml rename to envs/windows/conda/environment-py3.7.yml diff --git a/envs/windows/py38-conda/environment.yml b/envs/windows/conda/environment-py3.8.yml similarity index 100% rename from envs/windows/py38-conda/environment.yml rename to envs/windows/conda/environment-py3.8.yml diff --git a/envs/windows/py39-conda/environment.yml b/envs/windows/conda/environment-py3.9.yml similarity index 100% rename from envs/windows/py39-conda/environment.yml rename to envs/windows/conda/environment-py3.9.yml diff --git a/envs/windows/py36-conda/Dockerfile b/envs/windows/py36-conda/Dockerfile deleted file mode 100644 index effdc269..00000000 --- a/envs/windows/py36-conda/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -# escape=` - -FROM mcr.microsoft.com/windows/servercore:1809 -SHELL ["cmd", "/S", "/C"] - -ADD https://go.microsoft.com/fwlink/?linkid=2088631 C:\temp\ndp48-x86-x64-allos-enu.exe -RUN C:\temp\ndp48-x86-x64-allos-enu.exe /q /norestart /install - -ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe -RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` ---installPath C:\BuildTools ` ---add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` ---add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` -|| IF "%ERRORLEVEL%"=="3010" EXIT 0 - -ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe -RUN C:\temp\git-installer.exe /VERYSILENT /NORESTART /NOCANCEL - -ADD https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe C:\temp\miniconda.exe -RUN C:\temp\miniconda.exe /S /AddToPath=1 /InstallationType=JustMe /RegisterPython=0 /D=C:\temp\conda - -WORKDIR C:\temp\pyprt - -COPY envs/windows/py36-conda/environment.yml ./environment.yml -RUN conda env create -n pyprt --file environment.yml - -# https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ -ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&", "call", "conda.bat", "activate", "pyprt", "&&" ] diff --git a/envs/windows/py36/Dockerfile b/envs/windows/py36/Dockerfile deleted file mode 100644 index d8eacd99..00000000 --- a/envs/windows/py36/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -# escape=` - -# https://docs.microsoft.com/en-us/visualstudio/install/build-tools-container?view=vs-2019 -# https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2019 - -FROM python:3.6-windowsservercore-1809 -SHELL ["cmd", "/S", "/C"] - -ADD https://go.microsoft.com/fwlink/?linkid=2088631 C:\temp\ndp48-x86-x64-allos-enu.exe -RUN C:\temp\ndp48-x86-x64-allos-enu.exe /q /norestart /install - -ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe -RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` ---installPath C:\BuildTools ` ---add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` ---add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` -|| IF "%ERRORLEVEL%"=="3010" EXIT 0 - -ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe -RUN C:\temp\git-installer.exe /VERYSILENT /NORESTART /NOCANCEL - -WORKDIR C:\temp\pyprt -COPY ./envs/windows/py36/requirements.txt ./requirements.txt - -RUN pip install --no-cache-dir --upgrade pip -RUN pip install --no-cache-dir --upgrade wheel -RUN pip install --no-cache-dir -r requirements.txt - -# https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ -ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&" ] diff --git a/envs/windows/py37-conda/Dockerfile b/envs/windows/py37-conda/Dockerfile deleted file mode 100644 index 629b2b11..00000000 --- a/envs/windows/py37-conda/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -# escape=` - -FROM mcr.microsoft.com/windows/servercore:1809 -SHELL ["cmd", "/S", "/C"] - -ADD https://go.microsoft.com/fwlink/?linkid=2088631 C:\temp\ndp48-x86-x64-allos-enu.exe -RUN C:\temp\ndp48-x86-x64-allos-enu.exe /q /norestart /install - -ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe -RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` ---installPath C:\BuildTools ` ---add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` ---add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` -|| IF "%ERRORLEVEL%"=="3010" EXIT 0 - -ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe -RUN C:\temp\git-installer.exe /VERYSILENT /NORESTART /NOCANCEL - -ADD https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe C:\temp\miniconda.exe -RUN C:\temp\miniconda.exe /S /AddToPath=1 /InstallationType=JustMe /RegisterPython=0 /D=C:\temp\conda - -WORKDIR C:\temp\pyprt - -COPY envs/windows/py37-conda/environment.yml ./environment.yml -RUN conda env create -n pyprt --file environment.yml - -# https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ -ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&", "call", "conda.bat", "activate", "pyprt", "&&" ] diff --git a/envs/windows/py37/Dockerfile b/envs/windows/py37/Dockerfile deleted file mode 100644 index caa4b974..00000000 --- a/envs/windows/py37/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -# escape=` - -# https://docs.microsoft.com/en-us/visualstudio/install/build-tools-container?view=vs-2019 -# https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2019 - -FROM python:3.7-windowsservercore-1809 -SHELL ["cmd", "/S", "/C"] - -ADD https://go.microsoft.com/fwlink/?linkid=2088631 C:\temp\ndp48-x86-x64-allos-enu.exe -RUN C:\temp\ndp48-x86-x64-allos-enu.exe /q /norestart /install - -ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe -RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` ---installPath C:\BuildTools ` ---add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` ---add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` -|| IF "%ERRORLEVEL%"=="3010" EXIT 0 - -ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe -RUN C:\temp\git-installer.exe /VERYSILENT /NORESTART /NOCANCEL - -WORKDIR C:\temp\pyprt -COPY ./envs/windows/py37/requirements.txt ./requirements.txt - -RUN pip install --no-cache-dir --upgrade pip -RUN pip install --no-cache-dir --upgrade wheel -RUN pip install --no-cache-dir -r requirements.txt - -# https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ -ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&" ] diff --git a/envs/windows/py38-conda/Dockerfile b/envs/windows/py38-conda/Dockerfile deleted file mode 100644 index d2d18c25..00000000 --- a/envs/windows/py38-conda/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -# escape=` - -FROM mcr.microsoft.com/windows/servercore:1809 -SHELL ["cmd", "/S", "/C"] - -ADD https://go.microsoft.com/fwlink/?linkid=2088631 C:\temp\ndp48-x86-x64-allos-enu.exe -RUN C:\temp\ndp48-x86-x64-allos-enu.exe /q /norestart /install - -ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe -RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` ---installPath C:\BuildTools ` ---add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` ---add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` -|| IF "%ERRORLEVEL%"=="3010" EXIT 0 - -ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe -RUN C:\temp\git-installer.exe /VERYSILENT /NORESTART /NOCANCEL - -ADD https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe C:\temp\miniconda.exe -RUN C:\temp\miniconda.exe /S /AddToPath=1 /InstallationType=JustMe /RegisterPython=0 /D=C:\temp\conda - -WORKDIR C:\temp\pyprt - -COPY envs/windows/py38-conda/environment.yml ./environment.yml -RUN conda env create -n pyprt --file environment.yml - -# https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ -ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&", "call", "conda.bat", "activate", "pyprt", "&&" ] diff --git a/envs/windows/py38/Dockerfile b/envs/windows/py38/Dockerfile deleted file mode 100644 index 674d1f52..00000000 --- a/envs/windows/py38/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -# escape=` - -# https://docs.microsoft.com/en-us/visualstudio/install/build-tools-container?view=vs-2019 -# https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2019 - -FROM python:3.8-windowsservercore-1809 -SHELL ["cmd", "/S", "/C"] - -ADD https://go.microsoft.com/fwlink/?linkid=2088631 C:\temp\ndp48-x86-x64-allos-enu.exe -RUN C:\temp\ndp48-x86-x64-allos-enu.exe /q /norestart /install - -ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe -RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` ---installPath C:\BuildTools ` ---add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` ---add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` -|| IF "%ERRORLEVEL%"=="3010" EXIT 0 - -ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe -RUN C:\TEMP\git-installer.exe /VERYSILENT /NORESTART /NOCANCEL - -WORKDIR C:\temp\pyprt -COPY ./envs/windows/py38/requirements.txt ./requirements.txt - -RUN pip install --no-cache-dir --upgrade pip -RUN pip install --no-cache-dir --upgrade wheel -RUN pip install --no-cache-dir -r requirements.txt - -# https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ -ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&" ] diff --git a/envs/windows/py39-conda/Dockerfile b/envs/windows/py39-conda/Dockerfile deleted file mode 100644 index 523b1a7f..00000000 --- a/envs/windows/py39-conda/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -# escape=` - -FROM mcr.microsoft.com/windows/servercore:1809 -SHELL ["cmd", "/S", "/C"] - -ADD https://go.microsoft.com/fwlink/?linkid=2088631 C:\temp\ndp48-x86-x64-allos-enu.exe -RUN C:\temp\ndp48-x86-x64-allos-enu.exe /q /norestart /install - -ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe -RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` ---installPath C:\BuildTools ` ---add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` ---add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` -|| IF "%ERRORLEVEL%"=="3010" EXIT 0 - -ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe -RUN C:\temp\git-installer.exe /VERYSILENT /NORESTART /NOCANCEL - -ADD https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe C:\temp\miniconda.exe -RUN C:\temp\miniconda.exe /S /AddToPath=1 /InstallationType=JustMe /RegisterPython=0 /D=C:\temp\conda - -WORKDIR C:\temp\pyprt - -COPY envs/windows/py39-conda/environment.yml ./environment.yml -RUN conda env create -n pyprt --file environment.yml - -# https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ -ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&", "call", "conda.bat", "activate", "pyprt", "&&" ] diff --git a/envs/windows/py39/Dockerfile b/envs/windows/py39/Dockerfile deleted file mode 100644 index 87e31261..00000000 --- a/envs/windows/py39/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -# escape=` - -# https://docs.microsoft.com/en-us/visualstudio/install/build-tools-container?view=vs-2019 -# https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2019 - -FROM python:3.9-windowsservercore-1809 -SHELL ["cmd", "/S", "/C"] - -ADD https://go.microsoft.com/fwlink/?linkid=2088631 C:\temp\ndp48-x86-x64-allos-enu.exe -RUN C:\temp\ndp48-x86-x64-allos-enu.exe /q /norestart /install - -ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\temp\vs_buildtools.exe -RUN C:\temp\vs_buildtools.exe --quiet --wait --norestart --nocache ` ---installPath C:\BuildTools ` ---add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` ---add Microsoft.VisualStudio.Component.VC.14.27.x86.x64 ` -|| IF "%ERRORLEVEL%"=="3010" EXIT 0 - -ADD https://github.com/git-for-windows/git/releases/download/v2.31.1.windows.1/Git-2.31.1-64-bit.exe C:\temp\git-installer.exe -RUN C:\TEMP\git-installer.exe /VERYSILENT /NORESTART /NOCANCEL - -WORKDIR C:\temp\pyprt -COPY ./envs/windows/py39/requirements.txt ./requirements.txt - -RUN pip install --no-cache-dir --upgrade pip -RUN pip install --no-cache-dir --upgrade wheel -RUN pip install --no-cache-dir -r requirements.txt - -# https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ -ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&" ] diff --git a/envs/windows/wheel/Dockerfile b/envs/windows/wheel/Dockerfile new file mode 100644 index 00000000..0306ea99 --- /dev/null +++ b/envs/windows/wheel/Dockerfile @@ -0,0 +1,16 @@ +# escape=` + +ARG REGISTRY='' +ARG PY_VER +FROM ${REGISTRY}pyprt-base:jnk-v4-windows-py${PY_VER} + +WORKDIR C:\temp\pyprt +ARG PY_VER +COPY ./envs/windows/wheel/requirements-py${PY_VER}.txt ./requirements.txt + +RUN pip install --no-cache-dir --upgrade pip ` + && pip install --no-cache-dir --upgrade wheel ` + && pip install --no-cache-dir -r requirements.txt + +# https://devblogs.microsoft.com/cppblog/using-msvc-in-a-docker-container-for-your-c-projects/ +ENTRYPOINT [ "C:\\BuildTools\\VC\\Auxiliary\\Build\\vcvarsall.bat", "x64", "-vcvars_ver=14.27", "&&" ] diff --git a/envs/windows/py36/requirements.txt b/envs/windows/wheel/requirements-py3.6.txt similarity index 100% rename from envs/windows/py36/requirements.txt rename to envs/windows/wheel/requirements-py3.6.txt diff --git a/envs/windows/py37/requirements.txt b/envs/windows/wheel/requirements-py3.7.txt similarity index 100% rename from envs/windows/py37/requirements.txt rename to envs/windows/wheel/requirements-py3.7.txt diff --git a/envs/windows/py38/requirements.txt b/envs/windows/wheel/requirements-py3.8.txt similarity index 100% rename from envs/windows/py38/requirements.txt rename to envs/windows/wheel/requirements-py3.8.txt diff --git a/envs/windows/py39/requirements.txt b/envs/windows/wheel/requirements-py3.9.txt similarity index 100% rename from envs/windows/py39/requirements.txt rename to envs/windows/wheel/requirements-py3.9.txt From 647b5098281dd8dcb34482eeefd3b4f9ea7d9234 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Fri, 13 Aug 2021 16:48:14 +0200 Subject: [PATCH 34/50] docker: add image build pipeline --- envs/Jenkinsfile | 193 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 193 insertions(+) create mode 100644 envs/Jenkinsfile diff --git a/envs/Jenkinsfile b/envs/Jenkinsfile new file mode 100644 index 00000000..3273818d --- /dev/null +++ b/envs/Jenkinsfile @@ -0,0 +1,193 @@ +#!/usr/bin/env groovy + +// This pipeline is designed to run on Esri-internal CI infrastructure. + + +// -- PIPELINE LIBRARIES + +@Library('psl') +import com.esri.zrh.jenkins.PipelineSupportLibrary +import com.esri.zrh.jenkins.JenkinsTools +import com.esri.zrh.jenkins.ce.CityEnginePipelineLibrary +import com.esri.zrh.jenkins.ce.PrtAppPipelineLibrary +import com.esri.zrh.jenkins.PslFactory +import com.esri.zrh.jenkins.psl.UploadTrackingPsl +import groovy.transform.Field + +@Field def psl = PslFactory.create(this, UploadTrackingPsl.ID) +@Field def cepl = new CityEnginePipelineLibrary(this, psl) +@Field def papl = new PrtAppPipelineLibrary(cepl) + + +// -- SETUP + +properties([ + disableConcurrentBuilds() +]) + +psl.runsHere('production') + + +// -- GLOBAL DEFINITIONS + +@Field final String DOCKER_REGISTRY = 'zrh-dreg-sp-1.esri.com' +@Field final String DOCKER_PROJECT = "${DOCKER_REGISTRY}/pyprt/" +@Field final String DOCKER_IMAGE_REV = 'v4' // target revision of the generated images + +@Field final String REPO = 'git@github.com:esri/pyprt.git' +@Field final String SOURCE = 'pyprt.git' +@Field final String CREDS = 'jenkins-devtopia-pyprt-deployer-key' +@Field final String SOURCE_STASH = 'pyprt-sources' + +@Field final String DOCKER_AGENT_LINUX = 'centos7-64-d' +@Field final String DOCKER_AGENT_WINDOWS = 'win19-64-d' + +@Field final Map PY36 = [ py: '3.6' ] +@Field final Map PY37 = [ py: '3.7' ] +@Field final Map PY38 = [ py: '3.8' ] +@Field final Map PY39 = [ py: '3.9' ] + +@Field final Map BASE = [ kind: 'base' ] +@Field final Map WHEEL = [ kind: 'wheel' ] +@Field final Map CONDA = [ kind: 'conda' ] + +@Field final String OS_CENTOS7 = 'centos7' +@Field final String OS_WINDOWS = 'windows' + +@Field final Map LINUX_TOOLCHAIN = [ ba: DOCKER_AGENT_LINUX, os: OS_CENTOS7, tc: cepl.CFG_TC_GCC93 ] +@Field final Map WINDOWS_TOOLCHAIN = [ ba: DOCKER_AGENT_WINDOWS, os: OS_WINDOWS, tc: cepl.CFG_TC_VC1427 ] + +@Field final List CONFIGS_PREPARE = [ + LINUX_TOOLCHAIN, +] +@Field final List CONFIGS_BASE_IMAGES = [ + composeConfig(null, BASE, LINUX_TOOLCHAIN), + composeConfig(null, BASE, WINDOWS_TOOLCHAIN), + composeConfig(PY36, BASE, WINDOWS_TOOLCHAIN), + composeConfig(PY37, BASE, WINDOWS_TOOLCHAIN), + composeConfig(PY38, BASE, WINDOWS_TOOLCHAIN), + composeConfig(PY39, BASE, WINDOWS_TOOLCHAIN), +] +@Field final List CONFIGS_IMAGES = [ + composeConfig(PY36, WHEEL, LINUX_TOOLCHAIN), + composeConfig(PY36, WHEEL, WINDOWS_TOOLCHAIN), + composeConfig(PY36, CONDA, LINUX_TOOLCHAIN), + composeConfig(PY36, CONDA, WINDOWS_TOOLCHAIN), + composeConfig(PY37, WHEEL, WINDOWS_TOOLCHAIN), + composeConfig(PY37, CONDA, LINUX_TOOLCHAIN), + composeConfig(PY37, CONDA, WINDOWS_TOOLCHAIN), + composeConfig(PY38, WHEEL, LINUX_TOOLCHAIN), + composeConfig(PY38, WHEEL, WINDOWS_TOOLCHAIN), + composeConfig(PY38, CONDA, LINUX_TOOLCHAIN), + composeConfig(PY38, CONDA, WINDOWS_TOOLCHAIN), + composeConfig(PY39, WHEEL, LINUX_TOOLCHAIN), + composeConfig(PY39, WHEEL, WINDOWS_TOOLCHAIN), + composeConfig(PY39, CONDA, LINUX_TOOLCHAIN), + composeConfig(PY39, CONDA, WINDOWS_TOOLCHAIN), +] + + +// -- PIPELINE + +stage('prepare') { + cepl.runParallel(taskGenPrepare()) +} + +stage('build-base-images') { + cepl.runParallel(taskGenBuildDockerBaseImage()) +} + +stage('build-images') { + cepl.runParallel(taskGenBuildDockerImage()) +} + + +// -- TASK GENERATORS + +Map taskGenPrepare() { + Map tasks = [:] + tasks << cepl.generateTasks('prepare', this.&taskPrepare, CONFIGS_PREPARE) + return tasks +} + +Map taskGenBuildDockerBaseImage() { + Map tasks = [:] + tasks << cepl.generateTasks('image', this.&taskBuildDockerImage, CONFIGS_BASE_IMAGES) + return tasks; +} + +Map taskGenBuildDockerImage() { + Map tasks = [:] + tasks << cepl.generateTasks('image', this.&taskBuildDockerImage, CONFIGS_IMAGES) + return tasks; +} + + +// -- TASK BUILDERS + +def taskPrepare(cfg) { + cepl.cleanCurrentDir() + papl.checkout(REPO, env.BRANCH_NAME, CREDS) + stash(name: SOURCE_STASH) +} + +def taskBuildDockerImage(cfg) { + cepl.cleanCurrentDir() + unstash(name: SOURCE_STASH) + + final String dockerFile = getDockerFile(cfg) + final String image = getDockerImage(cfg) + final String tag = getDockerTag(cfg) + final String dockerArgs = getDockerArgs(cfg) + + dir(path: SOURCE) { + docker.withRegistry("https://${DOCKER_REGISTRY}", 'jenkins-pyprt-dreg-robot') { + def dockerImage = docker.build(image, "-m 4GB --rm -f ${dockerFile} ${dockerArgs} .") + dockerImage.push(tag) + } + } +} + + +// -- HELPERS + +@NonCPS +Map composeConfig(py, kind, tc) { + if (py != null) + return py + kind + tc + [ grp: "py${py['py']}-${kind['kind']}" ] + else + return kind + tc + [ grp: "${kind['kind']}" ] +} + +String getDockerFile(cfg) { + String path = "envs/${cfg.os}/${cfg.kind}/Dockerfile" + if (cfg.py == PY39.py && cfg.os == OS_CENTOS7 && cfg.kind == WHEEL.kind) + path += '-py3.9' // workaround: no Python 3.9 packages available for CentOS7 + else if (cfg.py != null && cfg.kind == BASE.kind) + path += '-py' // base images from pre-built python images + return path +} + +String getDockerImage(cfg) { + return DOCKER_PROJECT + ((cfg.kind == BASE.kind) ? 'pyprt-base' : 'pyprt') +} + +String getDockerTag(cfg) { + String tag = "jnk-${DOCKER_IMAGE_REV}-${cfg.os}" + if (cfg.kind != BASE.kind) + tag += "-py${cfg.py}-${cfg.kind}-${cfg.tc}" + else if (cfg.py != null) + tag += "-py${cfg.py}" + return tag +} + +String getDockerArgs(cfg) { + String args = '' + if (cfg.kind != BASE.kind) + args += " --build-arg REGISTRY=${DOCKER_PROJECT}" + if (cfg.py != null) + args += " --build-arg PY_VER=${cfg.py}" + if (cfg.os == OS_CENTOS7) + args += ' --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g)' + return args +} From 9124c0f60b0aca65341ebce042006a1248005ff1 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Wed, 18 Aug 2021 11:12:45 +0200 Subject: [PATCH 35/50] main pipeline: switch to v4 docker image revisions --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index da49e19d..216b0e3a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -37,7 +37,7 @@ env.PIPELINE_ARCHIVING_ALLOWED = "true" @Field final String SOURCE_STASH = 'pyprt-sources' @Field String pkgVer = "0.0.0" -@Field final String DOCKER_IMAGE_REV = "v3" +@Field final String DOCKER_IMAGE_REV = "v4" @Field final String DOCKER_AGENT_LINUX = 'centos7-64-d' @Field final String DOCKER_WS_LINUX = "/tmp/pyprt/ws" From 4d19f8410e904e35d7c7a827df08bb77c246d38d Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Wed, 18 Aug 2021 11:00:16 +0200 Subject: [PATCH 36/50] main pipeline: adapt to changed docker image tag syntax --- Jenkinsfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 216b0e3a..77a391e4 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -45,10 +45,10 @@ env.PIPELINE_ARCHIVING_ALLOWED = "true" @Field final String DOCKER_AGENT_WINDOWS = 'win19-64-d' @Field final String DOCKER_WS_WINDOWS = "c:/temp/pyprt/ws" -@Field final Map PY36_CONFIG = [ py: '3.6' ] -@Field final Map PY37_CONFIG = [ py: '3.7' ] -@Field final Map PY38_CONFIG = [ py: '3.8' ] -@Field final Map PY39_CONFIG = [ py: '3.9' ] +@Field final Map PY36_CONFIG = [ py: '3.6-wheel' ] +@Field final Map PY37_CONFIG = [ py: '3.7-wheel' ] +@Field final Map PY38_CONFIG = [ py: '3.8-wheel' ] +@Field final Map PY39_CONFIG = [ py: '3.9-wheel' ] @Field final Map PY36_CONDA_CONFIG = [ py: '3.6-conda' ] @Field final Map PY37_CONDA_CONFIG = [ py: '3.7-conda' ] @Field final Map PY38_CONDA_CONFIG = [ py: '3.8-conda' ] @@ -291,7 +291,7 @@ String getDockerImage(Map cfg) { String tag = "jnk-${DOCKER_IMAGE_REV}-" tag += (cfg.os == cepl.CFG_OS_WIN10) ? 'windows' : (cfg.os == cepl.CFG_OS_RHEL7) ? 'centos7' : error(cfg.os) - tag += "-py${getPySuf(cfg)}-${cfg.tc}" + tag += "-py${cfg.py}-${cfg.tc}" return "${image}:${tag}" } From c377422f729fc7ca017c78d341a751afff5503d7 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Wed, 18 Aug 2021 11:00:50 +0200 Subject: [PATCH 37/50] main pipeline: remove unused functions --- Jenkinsfile | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 77a391e4..6cd67bbb 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -272,20 +272,6 @@ def taskRunTests(cfg) { // -- HELPERS -String getPySuf(cfg) { - return cfg.py.replace(".", "") -} - -String getDockerEnvDir(Map cfg) { - String envDir = "envs/" - switch (cfg.os) { - case cepl.CFG_OS_WIN10: envDir += 'windows'; break; - case cepl.CFG_OS_RHEL7: envDir += 'centos7'; break; - default: error("No docker env available for ${cfg.os}") - } - return "${envDir}/py${getPySuf(cfg)}" -} - String getDockerImage(Map cfg) { String image = 'zrh-dreg-sp-1.esri.com/pyprt/pyprt' From 8d92ee6112f00c7ddab8d6e26dde4edd2a1d02e5 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Wed, 18 Aug 2021 16:14:28 +0200 Subject: [PATCH 38/50] main pipeline cleanup: introduce KIND config element --- Jenkinsfile | 64 ++++++++++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6cd67bbb..78d33f96 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -45,83 +45,81 @@ env.PIPELINE_ARCHIVING_ALLOWED = "true" @Field final String DOCKER_AGENT_WINDOWS = 'win19-64-d' @Field final String DOCKER_WS_WINDOWS = "c:/temp/pyprt/ws" -@Field final Map PY36_CONFIG = [ py: '3.6-wheel' ] -@Field final Map PY37_CONFIG = [ py: '3.7-wheel' ] -@Field final Map PY38_CONFIG = [ py: '3.8-wheel' ] -@Field final Map PY39_CONFIG = [ py: '3.9-wheel' ] -@Field final Map PY36_CONDA_CONFIG = [ py: '3.6-conda' ] -@Field final Map PY37_CONDA_CONFIG = [ py: '3.7-conda' ] -@Field final Map PY38_CONDA_CONFIG = [ py: '3.8-conda' ] -@Field final Map PY39_CONDA_CONFIG = [ py: '3.9-conda' ] +@Field final Map PY36 = [ py: '3.6' ] +@Field final Map PY37 = [ py: '3.7' ] +@Field final Map PY38 = [ py: '3.8' ] +@Field final Map PY39 = [ py: '3.9' ] +@Field final Map KIND_WHEEL = [ kind: 'wheel' ] +@Field final Map KIND_CONDA = [ kind: 'conda' ] @Field final Map LINUX_NATIVE_CONFIG = [ os: cepl.CFG_OS_RHEL7, bc: cepl.CFG_BC_REL, tc: cepl.CFG_TC_GCC93, cc: cepl.CFG_CC_OPT, arch: cepl.CFG_ARCH_X86_64 ] @Field final Map WINDOWS_NATIVE_CONFIG = [ os: cepl.CFG_OS_WIN10, bc: cepl.CFG_BC_REL, tc: cepl.CFG_TC_VC1427, cc: cepl.CFG_CC_OPT, arch: cepl.CFG_ARCH_X86_64 ] @Field final Map LINUX_DOCKER_CONFIG = [ ba: DOCKER_AGENT_LINUX, ws: DOCKER_WS_LINUX ] @Field final Map WINDOWS_DOCKER_CONFIG = [ ba: DOCKER_AGENT_WINDOWS, ws: DOCKER_WS_WINDOWS ] @Field final List CONFIGS_PREPARE = [ - PY36_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY36 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, ] @Field final List CONFIGS_TESTS_PY36 = [ - PY36_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY36_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, + PY36 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY36 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_TESTS_PY37 = [ - PY37_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, + PY37 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_TESTS_PY38 = [ - PY38_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY38_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, + PY38 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY38 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_TESTS_PY39 = [ - PY39_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY39_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, + PY39 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY39 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_BUILD_WHEELS_PY36 = [ - PY36_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY36_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, + PY36 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY36 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_BUILD_WHEELS_PY37 = [ - PY37_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, + PY37 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_BUILD_WHEELS_PY38 = [ - PY38_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY38_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, + PY38 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY38 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_BUILD_WHEELS_PY39 = [ - PY39_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY39_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, + PY39 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY39 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_BUILD_CONDA_PY36 = [ - PY36_CONDA_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY36_CONDA_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, + PY36 + KIND_CONDA + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY36 + KIND_CONDA + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_BUILD_CONDA_PY37 = [ - PY37_CONDA_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY37_CONDA_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, + PY37 + KIND_CONDA + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY37 + KIND_CONDA + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_BUILD_CONDA_PY38 = [ - PY38_CONDA_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY38_CONDA_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, + PY38 + KIND_CONDA + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY38 + KIND_CONDA + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_BUILD_CONDA_PY39 = [ - PY39_CONDA_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY39_CONDA_CONFIG + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, + PY39 + KIND_CONDA + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY39 + KIND_CONDA + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, ] @Field final List CONFIGS_DOC = [ - PY36_CONFIG + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + PY36 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, ] @@ -277,7 +275,7 @@ String getDockerImage(Map cfg) { String tag = "jnk-${DOCKER_IMAGE_REV}-" tag += (cfg.os == cepl.CFG_OS_WIN10) ? 'windows' : (cfg.os == cepl.CFG_OS_RHEL7) ? 'centos7' : error(cfg.os) - tag += "-py${cfg.py}-${cfg.tc}" + tag += "-py${cfg.py}-${cfg.kind}-${cfg.tc}" return "${image}:${tag}" } From afd4d9bd1071e5624f112ba2da4b73d5c81b5bc6 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Wed, 18 Aug 2021 16:20:18 +0200 Subject: [PATCH 39/50] main pipeline cleanup: simplify task generation --- Jenkinsfile | 105 ++++++++++++++++++---------------------------------- 1 file changed, 37 insertions(+), 68 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 78d33f96..cef5529f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -57,69 +57,42 @@ env.PIPELINE_ARCHIVING_ALLOWED = "true" @Field final Map WINDOWS_DOCKER_CONFIG = [ ba: DOCKER_AGENT_WINDOWS, ws: DOCKER_WS_WINDOWS ] @Field final List CONFIGS_PREPARE = [ - PY36 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + composeConfig(PY36, KIND_WHEEL, LINUX_NATIVE_CONFIG, LINUX_DOCKER_CONFIG), ] -@Field final List CONFIGS_TESTS_PY36 = [ - PY36 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY36 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, +@Field final List CONFIGS_TEST = [ + composeConfig(PY36, KIND_WHEEL, LINUX_NATIVE_CONFIG, LINUX_DOCKER_CONFIG), + composeConfig(PY36, KIND_WHEEL, WINDOWS_NATIVE_CONFIG, WINDOWS_DOCKER_CONFIG), + composeConfig(PY37, KIND_WHEEL, WINDOWS_NATIVE_CONFIG, WINDOWS_DOCKER_CONFIG), + composeConfig(PY38, KIND_WHEEL, LINUX_NATIVE_CONFIG, LINUX_DOCKER_CONFIG), + composeConfig(PY38, KIND_WHEEL, WINDOWS_NATIVE_CONFIG, WINDOWS_DOCKER_CONFIG), + composeConfig(PY39, KIND_WHEEL, LINUX_NATIVE_CONFIG, LINUX_DOCKER_CONFIG), + composeConfig(PY39, KIND_WHEEL, WINDOWS_NATIVE_CONFIG, WINDOWS_DOCKER_CONFIG), ] -@Field final List CONFIGS_TESTS_PY37 = [ - PY37 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, +@Field final List CONFIGS_BUILD_WHEEL = [ + composeConfig(PY36, KIND_WHEEL, LINUX_NATIVE_CONFIG, LINUX_DOCKER_CONFIG), + composeConfig(PY36, KIND_WHEEL, WINDOWS_NATIVE_CONFIG, WINDOWS_DOCKER_CONFIG), + composeConfig(PY37, KIND_WHEEL, WINDOWS_NATIVE_CONFIG, WINDOWS_DOCKER_CONFIG), + composeConfig(PY38, KIND_WHEEL, LINUX_NATIVE_CONFIG, LINUX_DOCKER_CONFIG), + composeConfig(PY38, KIND_WHEEL, WINDOWS_NATIVE_CONFIG, WINDOWS_DOCKER_CONFIG), + composeConfig(PY39, KIND_WHEEL, LINUX_NATIVE_CONFIG, LINUX_DOCKER_CONFIG), + composeConfig(PY39, KIND_WHEEL, WINDOWS_NATIVE_CONFIG, WINDOWS_DOCKER_CONFIG), ] -@Field final List CONFIGS_TESTS_PY38 = [ - PY38 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY38 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, -] - -@Field final List CONFIGS_TESTS_PY39 = [ - PY39 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY39 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, -] - -@Field final List CONFIGS_BUILD_WHEELS_PY36 = [ - PY36 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY36 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, -] - -@Field final List CONFIGS_BUILD_WHEELS_PY37 = [ - PY37 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, -] - -@Field final List CONFIGS_BUILD_WHEELS_PY38 = [ - PY38 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY38 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, -] - -@Field final List CONFIGS_BUILD_WHEELS_PY39 = [ - PY39 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY39 + KIND_WHEEL + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, -] - -@Field final List CONFIGS_BUILD_CONDA_PY36 = [ - PY36 + KIND_CONDA + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY36 + KIND_CONDA + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, -] - -@Field final List CONFIGS_BUILD_CONDA_PY37 = [ - PY37 + KIND_CONDA + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY37 + KIND_CONDA + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, -] - -@Field final List CONFIGS_BUILD_CONDA_PY38 = [ - PY38 + KIND_CONDA + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY38 + KIND_CONDA + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, -] - -@Field final List CONFIGS_BUILD_CONDA_PY39 = [ - PY39 + KIND_CONDA + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, - PY39 + KIND_CONDA + WINDOWS_DOCKER_CONFIG + WINDOWS_NATIVE_CONFIG, +@Field final List CONFIGS_BUILD_CONDA = [ + composeConfig(PY36, KIND_CONDA, LINUX_NATIVE_CONFIG, LINUX_DOCKER_CONFIG), + composeConfig(PY36, KIND_CONDA, WINDOWS_NATIVE_CONFIG, WINDOWS_DOCKER_CONFIG), + composeConfig(PY37, KIND_CONDA, LINUX_NATIVE_CONFIG, LINUX_DOCKER_CONFIG), + composeConfig(PY37, KIND_CONDA, WINDOWS_NATIVE_CONFIG, WINDOWS_DOCKER_CONFIG), + composeConfig(PY38, KIND_CONDA, LINUX_NATIVE_CONFIG, LINUX_DOCKER_CONFIG), + composeConfig(PY38, KIND_CONDA, WINDOWS_NATIVE_CONFIG, WINDOWS_DOCKER_CONFIG), + composeConfig(PY39, KIND_CONDA, LINUX_NATIVE_CONFIG, LINUX_DOCKER_CONFIG), + composeConfig(PY39, KIND_CONDA, WINDOWS_NATIVE_CONFIG, WINDOWS_DOCKER_CONFIG), ] @Field final List CONFIGS_DOC = [ - PY36 + KIND_WHEEL + LINUX_DOCKER_CONFIG + LINUX_NATIVE_CONFIG, + composeConfig(PY36, KIND_WHEEL, LINUX_NATIVE_CONFIG, LINUX_DOCKER_CONFIG), ] @@ -144,30 +117,21 @@ papl.finalizeRun('pyprt', env.BRANCH_NAME) Map taskGenPrepare() { Map tasks = [:] - tasks << cepl.generateTasks('pyprt-prepare', this.&taskPrepare, CONFIGS_PREPARE) + tasks << cepl.generateTasks('prepare', this.&taskPrepare, CONFIGS_PREPARE) return tasks } Map taskGenTests() { Map tasks = [:] - tasks << cepl.generateTasks('pyprt-tests-py36', this.&taskRunTests, CONFIGS_TESTS_PY36) - tasks << cepl.generateTasks('pyprt-tests-py37', this.&taskRunTests, CONFIGS_TESTS_PY37) - tasks << cepl.generateTasks('pyprt-tests-py38', this.&taskRunTests, CONFIGS_TESTS_PY38) - tasks << cepl.generateTasks('pyprt-tests-py39', this.&taskRunTests, CONFIGS_TESTS_PY39) + tasks << cepl.generateTasks('test', this.&taskRunTests, CONFIGS_TEST) return tasks } Map taskGenPyPRT() { Map tasks = [:] - tasks << cepl.generateTasks('pyprt-wheel-py36', this.&taskBuildWheel, CONFIGS_BUILD_WHEELS_PY36) - tasks << cepl.generateTasks('pyprt-wheel-py37', this.&taskBuildWheel, CONFIGS_BUILD_WHEELS_PY37) - tasks << cepl.generateTasks('pyprt-wheel-py38', this.&taskBuildWheel, CONFIGS_BUILD_WHEELS_PY38) - tasks << cepl.generateTasks('pyprt-wheel-py39', this.&taskBuildWheel, CONFIGS_BUILD_WHEELS_PY39) - tasks << cepl.generateTasks('pyprt-conda-py36', this.&taskBuildConda, CONFIGS_BUILD_CONDA_PY36) - tasks << cepl.generateTasks('pyprt-conda-py37', this.&taskBuildConda, CONFIGS_BUILD_CONDA_PY37) - tasks << cepl.generateTasks('pyprt-conda-py38', this.&taskBuildConda, CONFIGS_BUILD_CONDA_PY38) - tasks << cepl.generateTasks('pyprt-conda-py39', this.&taskBuildConda, CONFIGS_BUILD_CONDA_PY39) - tasks << cepl.generateTasks('pyprt-doc', this.&taskBuildDoc, CONFIGS_DOC) + tasks << cepl.generateTasks('build', this.&taskBuildWheel, CONFIGS_BUILD_WHEEL) + tasks << cepl.generateTasks('build', this.&taskBuildConda, CONFIGS_BUILD_CONDA) + tasks << cepl.generateTasks('doc', this.&taskBuildDoc, CONFIGS_DOC) return tasks; } @@ -270,6 +234,11 @@ def taskRunTests(cfg) { // -- HELPERS +@NonCPS +Map composeConfig(py, kind, tc, dc) { + return py + kind + tc + dc + [ grp: "py${py['py']}-${kind['kind']}" ] +} + String getDockerImage(Map cfg) { String image = 'zrh-dreg-sp-1.esri.com/pyprt/pyprt' From 711e58b0eb8e8ab768fc7208392b83058f484a13 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Wed, 18 Aug 2021 16:45:29 +0200 Subject: [PATCH 40/50] image pipeline cleanup: host miniconda installers on nexus --- envs/centos7/conda/Dockerfile | 12 ++++++------ envs/windows/conda/Dockerfile | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/envs/centos7/conda/Dockerfile b/envs/centos7/conda/Dockerfile index 36341b5e..443ee6b0 100644 --- a/envs/centos7/conda/Dockerfile +++ b/envs/centos7/conda/Dockerfile @@ -16,12 +16,12 @@ RUN mkdir /tmp/pyprt WORKDIR /tmp/pyprt # see https://github.com/conda/conda-docker/blob/master/miniconda3/centos7/Dockerfile -RUN curl -sSL https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -o /tmp/pyprt/miniconda.sh \ - && bash ./miniconda.sh -bfp ./conda \ - && rm -rf ./miniconda.sh \ - && ./conda/bin/conda install -y python=${PY_VER} \ - && ./conda/bin/conda update conda \ - && ./conda/bin/conda clean --all --yes +ADD --chown=${USER_ID}:${GROUP_ID} https://zrh-code.esri.com/nexus/service/local/repositories/tools/content/io/conda/miniconda3/4.10.3/miniconda3-4.10.3-py39-linux-x86_64.sh /tmp/pyprt/miniconda.sh +RUN bash miniconda.sh -bfp ./conda && \ + rm -rf ./miniconda.sh && \ + conda/bin/conda install -y python=${PY_VER} && \ + conda/bin/conda update conda && \ + conda/bin/conda clean --all --yes COPY envs/centos7/conda/environment-py${PY_VER}.yml ./environment.yml RUN ./conda/bin/conda env create --prefix ./pyprt-conda-env --file ./environment.yml diff --git a/envs/windows/conda/Dockerfile b/envs/windows/conda/Dockerfile index b0a5d4a9..0ff5f4c6 100644 --- a/envs/windows/conda/Dockerfile +++ b/envs/windows/conda/Dockerfile @@ -5,7 +5,7 @@ ARG PY_VER FROM ${REGISTRY}pyprt-base:jnk-v4-windows -ADD https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe C:\temp\miniconda.exe +ADD https://zrh-code.esri.com/nexus/service/local/repositories/tools/content/io/conda/miniconda3/4.10.3/miniconda3-4.10.3-py39-windows-x86_64.exe C:\temp\miniconda.exe RUN C:\temp\miniconda.exe /S /AddToPath=1 /InstallationType=JustMe /RegisterPython=0 /D=C:\temp\conda WORKDIR C:\temp\pyprt From 81b8ee33072f5215bb081082820eb66e4f99bdda Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Thu, 19 Aug 2021 17:34:32 +0200 Subject: [PATCH 41/50] review: addressed inconsistencies in README --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index fae002a1..97be9bc6 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ The project is composed of two parts: the C++ native directory (`src`) and Pytho A note regarding the meaning of "open a shell" in the following sections: this implies that the shell also needs to have the correct C++ compiler activated: * On Windows, use the shortcuts provided by Visual Studio or run `vcvarsall.bat` of the desired MSVC toolchain. -* On RHEL-based Linux, run e.g. `source /opt/rh/devtoolset-8/enable`. +* On RHEL-based Linux, run e.g. `source /opt/rh/devtoolset-9/enable`. _Note: on Windows, replace `bin` with `Scripts` in the following commands. Some commands also differ in their file extension between Linux and Windows (`.sh` vs `.bat` and similar). Please refer to the `venv` documentation for details: _ @@ -95,7 +95,7 @@ _Note: on Windows, replace `bin` with `Scripts` in the following commands. Some 1. Create the virtual environment: `python3.6 -m venv .venv` 1. Get latest pip: `.venv/bin/python -m pip install --upgrade pip` 1. Get latest wheel: `.venv/bin/python -m pip install --upgrade wheel` - 1. Install build dependencies for PyPRT: `.venv/bin/python -m pip install -r envs/centos7/wheel/requirements-py36.txt` + 1. Install build dependencies for PyPRT: `.venv/bin/python -m pip install -r envs/centos7/wheel/requirements-py3.6.txt` 1. Run `.venv/bin/python setup.py bdist_wheel`. This will build the CMake project and Python packages. 1. The resulting wheel is written to the temporary `dist` folder. @@ -103,10 +103,10 @@ _Note: on Windows, replace `bin` with `Scripts` in the following commands. Some 1. Install Miniconda or Anaconda. 1. Open a shell in the PyPRT git root and activate Miniconda (or Anaconda). -1. First time only: run `conda env create --prefix ./env --file envs/centos7/py36-conda/environment.yml` to create a conda environment with all the required Python packages (adapt `centos7/py36-conda` to your desired OS/Python combination). +1. First time only: run `conda env create --prefix ./env --file envs/centos7/conda/environment-py3.6.yml` to create a conda environment with all the required Python packages (adapt `centos7` and `environment-py3.6.yml` to your desired OS/Python combination). 1. Run `activate ./env`. 1. Run `python setup.py bdist_conda`. This will build the CMake project and Python packages. -1. The resulting package is written to the `./env-py36/conda-bld/{platform}` folder. +1. The resulting package is written to the `./env/conda-bld/{platform}` folder. ### Iterative Python Development @@ -159,7 +159,7 @@ Note: We only support Docker on Linux and Windows. On Windows, Docker needs to b 1. Open a shell in the PyPRT git root 1. Create the desired image for the build toolchain (adapt to your desired Python version): - * Linux: `docker build --rm -f envs/centos7/wheel/Dockerfile -t pyprt:centos7-py36 --build-arg PY_VER=36 --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) .` + * Linux: `docker build --rm -f envs/centos7/wheel/Dockerfile -t pyprt:centos7-py36 --build-arg PY_VER=3.6 --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) .` * Windows: `docker build --rm -f envs\windows\wheel\Dockerfile -t pyprt:windows-py36 --build-arg PY_VER=3.6 .` 1. Run the build * Linux: `docker run --rm -v $(pwd):/tmp/pyprt/root -w /tmp/pyprt/root pyprt:centos7-py36 bash -c 'python setup.py bdist_wheel'` @@ -169,8 +169,8 @@ Note: We only support Docker on Linux and Windows. On Windows, Docker needs to b #### Build Conda Packages 1. Open a shell in the PyPRT git root -1. Create the desired image for the build toolchain (adapt `py36` to your desired Python version): - * Linux: `docker build --rm -f envs/centos7/conda/Dockerfile -t pyprt:centos7-py36-conda --build-arg PY_VER=36 --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) .` +1. Create the desired image for the build toolchain (adapt `py3.6` to your desired Python version): + * Linux: `docker build --rm -f envs/centos7/conda/Dockerfile -t pyprt:centos7-py36-conda --build-arg PY_VER=3.6 --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) .` * Windows: `docker build --rm -f envs\windows\conda\Dockerfile -t pyprt:windows-py36-conda --build-arg PY_VER=3.6 .` 1. Run the build * Linux: `docker run --rm -v $(pwd):/tmp/pyprt/root -w /tmp/pyprt/root pyprt:centos7-py36-conda bash -c 'python setup.py bdist_conda && cp -r /tmp/pyprt/pyprt-conda-env/conda-bld/linux-64/pyprt*.tar.bz2 /tmp/pyprt/root'` From 2a6d0632870634adfd8946ef3782c3bace2beee7 Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Thu, 19 Aug 2021 17:38:25 +0200 Subject: [PATCH 42/50] review: use dot syntax for python version in docker tags for local docker docs --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 97be9bc6..6de84c88 100644 --- a/README.md +++ b/README.md @@ -159,22 +159,22 @@ Note: We only support Docker on Linux and Windows. On Windows, Docker needs to b 1. Open a shell in the PyPRT git root 1. Create the desired image for the build toolchain (adapt to your desired Python version): - * Linux: `docker build --rm -f envs/centos7/wheel/Dockerfile -t pyprt:centos7-py36 --build-arg PY_VER=3.6 --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) .` - * Windows: `docker build --rm -f envs\windows\wheel\Dockerfile -t pyprt:windows-py36 --build-arg PY_VER=3.6 .` + * Linux: `docker build --rm -f envs/centos7/wheel/Dockerfile -t pyprt:centos7-py3.6 --build-arg PY_VER=3.6 --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) .` + * Windows: `docker build --rm -f envs\windows\wheel\Dockerfile -t pyprt:windows-py3.6 --build-arg PY_VER=3.6 .` 1. Run the build - * Linux: `docker run --rm -v $(pwd):/tmp/pyprt/root -w /tmp/pyprt/root pyprt:centos7-py36 bash -c 'python setup.py bdist_wheel'` - * Windows: `docker run --rm -v %cd%:C:\temp\pyprt\root -w C:\temp\pyprt\root pyprt:windows-py36 cmd /c "python setup.py bdist_wheel"` + * Linux: `docker run --rm -v $(pwd):/tmp/pyprt/root -w /tmp/pyprt/root pyprt:centos7-py3.6 bash -c 'python setup.py bdist_wheel'` + * Windows: `docker run --rm -v %cd%:C:\temp\pyprt\root -w C:\temp\pyprt\root pyprt:windows-py3.6 cmd /c "python setup.py bdist_wheel"` 1. The resulting wheel should appear in the `dist` directory. #### Build Conda Packages 1. Open a shell in the PyPRT git root 1. Create the desired image for the build toolchain (adapt `py3.6` to your desired Python version): - * Linux: `docker build --rm -f envs/centos7/conda/Dockerfile -t pyprt:centos7-py36-conda --build-arg PY_VER=3.6 --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) .` - * Windows: `docker build --rm -f envs\windows\conda\Dockerfile -t pyprt:windows-py36-conda --build-arg PY_VER=3.6 .` + * Linux: `docker build --rm -f envs/centos7/conda/Dockerfile -t pyprt:centos7-py3.6-conda --build-arg PY_VER=3.6 --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) .` + * Windows: `docker build --rm -f envs\windows\conda\Dockerfile -t pyprt:windows-py3.6-conda --build-arg PY_VER=3.6 .` 1. Run the build - * Linux: `docker run --rm -v $(pwd):/tmp/pyprt/root -w /tmp/pyprt/root pyprt:centos7-py36-conda bash -c 'python setup.py bdist_conda && cp -r /tmp/pyprt/pyprt-conda-env/conda-bld/linux-64/pyprt*.tar.bz2 /tmp/pyprt/root'` - * Windows: `docker run --rm -v %cd%:C:\temp\pyprt\root -w C:\temp\pyprt\root pyprt:windows-py36-conda cmd /c "python setup.py bdist_conda && copy C:\temp\conda\envs\pyprt\conda-bld\win-64\pyprt-*.tar.bz2 C:\temp\pyprt\root"` + * Linux: `docker run --rm -v $(pwd):/tmp/pyprt/root -w /tmp/pyprt/root pyprt:centos7-py3.6-conda bash -c 'python setup.py bdist_conda && cp -r /tmp/pyprt/pyprt-conda-env/conda-bld/linux-64/pyprt*.tar.bz2 /tmp/pyprt/root'` + * Windows: `docker run --rm -v %cd%:C:\temp\pyprt\root -w C:\temp\pyprt\root pyprt:windows-py3.6-conda cmd /c "python setup.py bdist_conda && copy C:\temp\conda\envs\pyprt\conda-bld\win-64\pyprt-*.tar.bz2 C:\temp\pyprt\root"` 1. The resulting conda package will be located in the current directly (PyPRT git repo root). ## Licensing Information From 2fe0aa24392683bc131e5ef62cff27c22c92a8f7 Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Tue, 24 Aug 2021 09:23:51 +0200 Subject: [PATCH 43/50] Redesign overview graphic --- images/diagram.png | Bin 153027 -> 404540 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/diagram.png b/images/diagram.png index de67ad80e71ab64f292808aa2279a2e5dd8c356a..4f8dfe1e3aa9cf8e2e2bdfe35212b54a2923d2ff 100644 GIT binary patch literal 404540 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 z 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

A4v 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 JS2TV2{{WlDtGoaJ literal 153027 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

4#b7Mq@MdJ9z?{piv7>Eb8*n%hYGd^TEpD*L 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 From ca94be72e541cc6490dd98f8acc8a483a14229d0 Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Tue, 24 Aug 2021 09:24:55 +0200 Subject: [PATCH 44/50] Update version to rc --- pyprt/__init__.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyprt/__init__.py b/pyprt/__init__.py index db25c60a..4e6225fd 100644 --- a/pyprt/__init__.py +++ b/pyprt/__init__.py @@ -13,6 +13,6 @@ # limitations under the License. # A copy of the license is available in the repository's LICENSE file. -__version__ = '1.4.0.dev0' +__version__ = '1.4.0rc1' from .pyprt import * diff --git a/setup.py b/setup.py index f7284caf..0b5bb5e6 100644 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ pyprt_name = 'PyPRT' pyprt_author = 'Esri R&D Center Zurich' pyprt_copyright = '(c) 2021, ' + pyprt_author -pyprt_version = '1.4.0.dev0' # keep consistent with __version__ in pyprt/__init__.py +pyprt_version = '1.4.0rc1' # keep consistent with __version__ in pyprt/__init__.py record_file = os.path.join(os.path.realpath(os.curdir), pyprt_name + '.egg-info', 'record_setup_develop_files.txt') From 680d0620bf062c7d73cf58d067eb9f0f11bb2296 Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Tue, 24 Aug 2021 09:31:22 +0200 Subject: [PATCH 45/50] Update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ac37005..5057df58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,13 @@ ## v1.4.0 (2021-08-XX) +### Added +* Added pre-built wheels and conda packages for Python 3.9 + ### Changed * Internal update to PRT 2.4 * Updated compiler requirements on Windows (MSVC 14.27) and Linux (GCC 9.3) +* Updated urllib3, pywin32 and pillow versions in the environment requirements-py3.*.txt files based on dependabot security analysis ### Removed * Removed MacOS support as PRT 2.4 and later is not available anymore on that platform From c6870efee8f569a2de5734ab11f992e00a799108 Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Tue, 24 Aug 2021 10:20:38 +0200 Subject: [PATCH 46/50] Review: clarify changelog --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5057df58..59fe5648 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,11 +2,13 @@ ## v1.4.0 (2021-08-XX) +* Compatible CityEngine versions to create RPKs with: 2021.0 or earlier + ### Added * Added pre-built wheels and conda packages for Python 3.9 ### Changed -* Internal update to PRT 2.4 +* Internal update to PRT 2.4 (CityEngine 2021.0) * Updated compiler requirements on Windows (MSVC 14.27) and Linux (GCC 9.3) * Updated urllib3, pywin32 and pillow versions in the environment requirements-py3.*.txt files based on dependabot security analysis From f77b59d091b4d4f25e174dd6772835c98a827818 Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Tue, 24 Aug 2021 13:26:07 +0200 Subject: [PATCH 47/50] Update to release version --- pyprt/__init__.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyprt/__init__.py b/pyprt/__init__.py index 4e6225fd..195d9863 100644 --- a/pyprt/__init__.py +++ b/pyprt/__init__.py @@ -13,6 +13,6 @@ # limitations under the License. # A copy of the license is available in the repository's LICENSE file. -__version__ = '1.4.0rc1' +__version__ = '1.4.0' from .pyprt import * diff --git a/setup.py b/setup.py index 0b5bb5e6..7613d6dc 100644 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ pyprt_name = 'PyPRT' pyprt_author = 'Esri R&D Center Zurich' pyprt_copyright = '(c) 2021, ' + pyprt_author -pyprt_version = '1.4.0rc1' # keep consistent with __version__ in pyprt/__init__.py +pyprt_version = '1.4.0' # keep consistent with __version__ in pyprt/__init__.py record_file = os.path.join(os.path.realpath(os.curdir), pyprt_name + '.egg-info', 'record_setup_develop_files.txt') From 1bd089e804f9f61309ae0701c4e6f43d4b30b72d Mon Sep 17 00:00:00 2001 From: Simon Haegler Date: Tue, 24 Aug 2021 14:28:26 +0200 Subject: [PATCH 48/50] cleanup: GCC9 and C++17 do not require to link to stdc++fs anymore --- src/client/CMakeLists.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt index 542b9b6d..47d788c1 100644 --- a/src/client/CMakeLists.txt +++ b/src/client/CMakeLists.txt @@ -58,10 +58,6 @@ elseif(PYPRT_LINUX) INSTALL_RPATH_USE_LINK_PATH FALSE SKIP_RPATH FALSE BUILD_WITH_INSTALL_RPATH TRUE) - - # GCC 8 needs explicit linking of C++17 std::filesystem lib - target_link_libraries(${CLIENT_TARGET} PRIVATE stdc++fs) - endif() target_link_libraries(${CLIENT_TARGET} PRIVATE From 0c16e027a4a44d623bdc181a5008953c3f527331 Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Tue, 24 Aug 2021 14:43:31 +0200 Subject: [PATCH 49/50] Update release date --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59fe5648..dc8760e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # PyPRT ChangeLog -## v1.4.0 (2021-08-XX) +## v1.4.0 (2021-08-24) * Compatible CityEngine versions to create RPKs with: 2021.0 or earlier From 6d1ebf9a9621a2c8dc9935df2db02b58120ea7e1 Mon Sep 17 00:00:00 2001 From: Camille Lechot Date: Tue, 24 Aug 2021 18:44:53 +0200 Subject: [PATCH 50/50] Update tests script with new envs folder structure --- build_and_run_tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build_and_run_tests.py b/build_and_run_tests.py index 1189d417..20a1ac8c 100644 --- a/build_and_run_tests.py +++ b/build_and_run_tests.py @@ -5,7 +5,7 @@ import venv env_os = "windows" if platform.system() == "Windows" else "centos7" -env_py = f"py{sys.version_info[0]}{sys.version_info[1]}" +env_py = f"py{sys.version_info[0]}.{sys.version_info[1]}" env_dir = tempfile.TemporaryDirectory(prefix="pyprt-test-venv") venv.create(env_dir.name, with_pip=True) @@ -15,7 +15,7 @@ os.system(f"{py_cmd} -m pip install --upgrade pip") os.system(f"{py_cmd} -m pip install --upgrade wheel") -os.system(f"{py_cmd} -m pip install -r envs/{env_os}/{env_py}/requirements.txt") +os.system(f"{py_cmd} -m pip install -r envs/{env_os}/wheel/requirements-{env_py}.txt") os.system(f"{py_cmd} setup.py clean --all") os.system(f"{py_cmd} setup.py install")