Skip to content

Commit 8c66d0c

Browse files
committed
Prepare the MeVisLab thirdparty libraries for the 3.7.2 release
1 parent 98068c2 commit 8c66d0c

104 files changed

Lines changed: 1781 additions & 1432 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Recipes for MeVisLab Thirdparty packages
44

5-
The `recipes` directory contains all recipes.
5+
The `recipes` directory contains all recipes. The overall build order is currently defined in the `build_configuratuion.yml`.
66

77
## Local package development
88

@@ -35,9 +35,66 @@ Now conan should be installed:
3535
conan --version
3636
```
3737

38+
### Install MeVisLab Build Tool
39+
40+
`mbt`, the MeVisLab Build Tool, is a small wrapper for Conan and the Conan Package Tools.
41+
It mainly ensures that Conan is properly configured and initialized before invoking conan itself.
42+
43+
```
44+
python -m pip install -U git+http://gitlab.mevis.lokal/mevislab/mbt.git
45+
```
46+
3847
## Build a package
3948

49+
### Using mbt, conan-package-tools or conan
50+
51+
All wrappers (`mbt`, `conan-package-tools`) are just convenience.
52+
They make certain things easier, while making advanced things very difficult.
53+
That seems to be the nature of wrappers. Therefore it is always possible to
54+
work without these tools.
55+
56+
So a recipe can be built directly with `mbt`:
57+
58+
```
59+
cd recipes/<recipe_name>
60+
mbt build
61+
```
62+
63+
_Note_: If you are building under Windows, have several Visual Studio versions installed and want to use _not_ the
64+
newest one, you have to set an environment variable with the desired version to communicate this to `mbt`:
65+
```
66+
SET CONAN_VISUAL_VERSIONS=16
67+
```
68+
69+
Or using `conan-package-tools`:
70+
```
71+
cd recipes/<recipe_name>
72+
./build.py
73+
```
74+
75+
Or using `conan`:
4076
```
4177
cd recipes/<recipe_name>
4278
conan create .
4379
```
80+
81+
## Jenkins Integration
82+
83+
### Pipeline Description
84+
There are mainly two Jenkinsfiles that control the build of all thirdparty library and tools: Jenkinsfile and JenkinsfileLibrary. The first parses the `build_configuration.yml` and triggers the build of one tier after the other, starting with tier0. For further details see the chapter Build Configuration
85+
86+
The conan package system is written in a way that it checks if the package itself or one of its dependencies has been changed since the last successful build. If nothing has changed then the build and archiving step is been skipped.
87+
Since even this check takes a certain amount of time, an additional optimization has been implemented. All changed files are collected since the last successful build of the complete thirdparty/branch build. And only those directly affected projects and the tiers below are triggered to be rebuild. This shortens the build time enormously. If one of the files `Jenkinsfile`, `JenkinsfileLibrary`, or `build_configuration.yml` is part of any changeset, then this optimisation is skipped and all tiers with all projects are build.
88+
89+
### Build Configuration
90+
The build configuration is organised in the `build_configuration.yml` file. All libraries and tools that are needed to build MeVisLab are organised in this file. Since it very tedios and cumpersome to descripe smallest possible dependecy graph, the dependencies are broken down in different tiers. The content of the different tier is organised according to the dependencies of the individual libraries and tools. So if a e.g. a library A depends on an other library B, then B must be referenced in an one of the upper tiers.
91+
92+
The build of each library and tool for all specified platform and build types must finish in a defined time. There is a default, that is been used for all packages. In case that a certain package needs much more time, e.g. qt5, then there is the possibility to define a timeout exception.
93+
94+
These are the parameters that are defined in the file:
95+
96+
| Parameter | Description |
97+
| --------- | ------------|
98+
| timeout_default: | Default time in minutes for all not other specified packages. |
99+
| timeout_exception: | A map of all packages with their individual timeouts. |
100+
| tiers: | It must contain an ordered list of all tiers, starting with tier0 |

recipes/boost/conandata.yml

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,13 @@ type: cpp
22
name: boost
33
display_name: Boost
44
mli_name: "None"
5-
version: "1.81.0"
5+
version: "1.83.0"
66
homepage: http://www.boost.org
77
description: Boost provides free peer-reviewed portable C++ source libraries
88
license: BSL-1.0
99

1010
sources:
11-
"1.81.0":
12-
sha256: 71feeed900fbccca04a3b4f2f84a7c217186f28a940ed8b7ed4725986baf99fa
11+
"1.83.0":
12+
sha256: 6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e
1313
url: https://boostorg.jfrog.io/artifactory/main/release/${version}/source/boost_${version_major}_${version_minor}_${version_patch}.tar.bz2
1414
base_path: boost_${version_major}_${version_minor}_${version_patch}
15-
16-
patches:
17-
"1.81.0":
18-
# commit 3f42566a7d5ab4d7d9ed81613fa61609e2084e07 on boostorg/multiprecision:
19-
- patch_file: "patches/${version}-redundant_warning_pop.patch"

recipes/boost/conanfile.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,6 @@ def source(self):
5050
self.default_source()
5151
os.rename(os.path.join("sources", "LICENSE_1_0.txt"), os.path.join("sources", "LICENSE"))
5252

53-
# change rpath on macOS
54-
tools.replace_in_file('sources/tools/build/src/tools/clang-darwin.jam', '-install_name "@rpath/$(<[1]:D=)" "$(>)"', '-install_name "$(<[1]:D=)" "$(>)"')
55-
5653

5754
def build(self):
5855
self._bootstrap()
@@ -86,7 +83,6 @@ def package(self):
8683
self.copy(pattern="*.dll", dst="bin", src=out_lib_dir, keep_path=False)
8784
self.copy(pattern="boost*.pdb", dst="bin", src=out_lib_dir, keep_path=False)
8885

89-
self.patch_binaries()
9086
self.default_package()
9187

9288

@@ -233,7 +229,7 @@ def _get_build_flags(self):
233229
flags.append("-sNO_BZIP2=1")
234230
flags.append("-sNO_LZMA=1")
235231
flags.append("-sNO_ZSTD=1")
236-
232+
237233
if self.settings.compiler == "Visual Studio":
238234
# Avoid WINAPI mismatch in boost::log:
239235
flags.append("define=BOOST_USE_WINAPI_VERSION=0x600")

recipes/boost/patches/1.81.0-redundant_warning_pop.patch

Lines changed: 0 additions & 14 deletions
This file was deleted.

recipes/c-blosc/conandata.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
type: pure_c
22
name: c-blosc
3-
version: "1.21.4"
3+
version: "1.21.5"
44
homepage: https://www.blosc.org
55
description: An extremely fast, multi-threaded, meta-compressor library
66
license: BSD-3-Clause
77

88
sources:
9-
"1.21.4":
10-
sha256: e72bd03827b8564bbb3dc3ea0d0e689b4863871ce3861d946f2efd7a186ecf3e
9+
"1.21.5":
10+
sha256: 32e61961bbf81ffea6ff30e9d70fca36c86178afd3e3cfa13376adec8c687509
1111
url: https://github.com/Blosc/c-blosc/archive/refs/tags/v${version}.tar.gz
1212
base_path: c-blosc-${version}
1313

1414
patches:
15-
"1.21.4":
15+
"1.21.5":
1616
- patch_file: patches/${version}-fix_cmake_find_package.cmake

recipes/c-blosc/patches/1.21.4-fix_cmake_find_package.cmake renamed to recipes/c-blosc/patches/1.21.5-fix_cmake_find_package.cmake

File renamed without changes.

recipes/conan_generator/mli.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io
44
import os
5+
import re
56
import glob
67
import textwrap
78
from typing import List, Dict, Optional
@@ -12,6 +13,7 @@
1213

1314
MLI_DIRECTORY: str = 'MeVis/ThirdParty/Configuration/Installers/Libraries'
1415

16+
PYTHON_UNIX_DIR_RE: re.Pattern = re.compile(r"python\d\.\d+")
1517

1618
def _is_optional(entry):
1719
# make pdb/debug files optional, so we don't get an error if they can't be copied
@@ -143,7 +145,8 @@ def create_mli_content(self, variant):
143145
def _binExcludes(entry):
144146
# do not add .lib files for Windows,
145147
# and do also not add the whole site-packages path
146-
return (tools.os_info.is_windows and (entry.endswith('.lib') or entry.endswith('.exp'))) or entry in ['python', 'site-packages']
148+
return (tools.os_info.is_windows and (entry.endswith('.lib') or entry.endswith('.exp'))) or \
149+
entry in ['python', 'site-packages'] or PYTHON_UNIX_DIR_RE.fullmatch(entry)
147150

148151
# DLLs can have executable rights on Linux, better to check the suffix, too:
149152
def _hasDllSuffix(name):

recipes/cryptopp/conandata.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ type: cpp
22
name: cryptopp
33
cmake_name: CryptoPP
44
display_name: Crypto++
5-
version: "8.7.0"
5+
version: "8.8.0"
66
homepage: http://www.cryptopp.com
77
description: A library of cryptographic schemes
88
license: BSL-1.0
99

1010
sources:
1111
source:
12-
sha256: "8d6a4064b8e9f34cd3e838f5a12c40067ee7b95ee37d9173ec273cb0913e7ca2"
13-
url: "https://github.com/weidai11/cryptopp/archive/CRYPTOPP_8_7_0.tar.gz"
12+
sha256: "f8b8f632533b279ee297694e651e9204824bba6022ce66e60ebebb08b551fe7a"
13+
url: "https://github.com/weidai11/cryptopp/archive/CRYPTOPP_8_8_0.tar.gz"
1414
cmake:
15-
sha256: "c113aba8069842edb201b4aaa2925e2c9d6ca081c4fd6b049ff74fedf6e8bae3"
16-
url: "https://github.com/abdes/cryptopp-cmake/archive/CRYPTOPP_8_7_0.tar.gz"
15+
sha256: "a10068ab47fb46785dfe43ebe45369008855b03f6711ac7d1af6f45aa9238290"
16+
url: "https://github.com/abdes/cryptopp-cmake/archive/CRYPTOPP_8_8_0.tar.gz"

recipes/cryptopp/conanfile.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from conan import ConanFile
44
from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout
55
from conan.tools.files import export_conandata_patches, get
6+
from conans import tools
67
import shutil
78
import os
89

@@ -20,6 +21,8 @@ def layout(self):
2021
def source(self):
2122
get(self, **self.conan_data["sources"]["source"], strip_root=True)
2223
get(self, **self.conan_data["sources"]["cmake"], destination=os.path.join(self.source_folder, "cryptopp-cmake"), strip_root=True)
24+
with tools.chdir(self.source_folder):
25+
tools.patch(base_path=".", patch_file=f"../patches/{self.version}-CMakeLists.patch", strip=1)
2326

2427
def generate(self):
2528
tc = CMakeToolchain(self)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git i/cryptopp-cmake/CMakeLists.txt w/cryptopp-cmake/CMakeLists.txt
2+
index b0ee7a2..d0ba2fd 100644
3+
--- i/cryptopp-cmake/CMakeLists.txt
4+
+++ w/cryptopp-cmake/CMakeLists.txt
5+
@@ -192,7 +192,7 @@ include(cmake/FasterBuild.cmake)
6+
# If CMake is invoked with an explicit option (cryptopp_SOURCE_DIR), setting
7+
# the location for user-provided sources of crypto++, or if the automatic
8+
# download fails, we use that option value to find the sources.
9+
-find_package(Git)
10+
+# find_package(Git) leads to crash because it assumed the temp conan directory is git controlled
11+
12+
if(NOT CRYPTOPP_SOURCES)
13+
include(GetCryptoppSources)

0 commit comments

Comments
 (0)