Skip to content

Commit 9f16131

Browse files
authored
Include dependency licences in distribution bundle (#113)
1 parent 68fdcca commit 9f16131

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

conanfile.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,10 @@ def generate(self):
4545
"boost_thread*"],
4646
"thrift": ["thrift", "thriftd"],
4747
}
48-
for req, dep in self.dependencies.items():
49-
self._import_dynamic_libs(dep, dldir, dependency_libs.get(req.ref.name, ["*"]))
48+
licensedir = os.path.join(self.build_folder, "dist", "doc", "licenses")
49+
for dep in self.dependencies.host.values():
50+
self._import_dynamic_libs(dep, dldir, dependency_libs.get(dep.ref.name, ["*"]))
51+
self._import_license(dep, licensedir)
5052
if self.dependencies["libcosim"].options.proxyfmu:
5153
self._import_executables(self.dependencies["proxyfmu"], bindir, ["*"])
5254

@@ -74,6 +76,22 @@ def _import_executables(self, dependency, target_dir, patterns=["*"]):
7476
files = copy(self, patternx, bindir, target_dir, keep_path=False)
7577
self._update_rpath(files, "$ORIGIN/../lib")
7678

79+
def _import_license(self, dependency, licenses_dir):
80+
src_licenses_dir = os.path.join(dependency.package_folder, "licenses")
81+
tgt_licenses_dir = os.path.join(licenses_dir, dependency.ref.name)
82+
if os.path.isdir(src_licenses_dir):
83+
# Copy the full contents of '<package_dir>/licenses/' if it exists,
84+
# which it does for virtually all conan-center packages.
85+
copy(self, "*", src_licenses_dir, tgt_licenses_dir)
86+
else:
87+
# Copy everything that looks like it might contain license and
88+
# copyright information.
89+
copy(self, "*licen?e*", dependency.package_folder, tgt_licenses_dir, keep_path=False)
90+
copy(self, "*copying*", dependency.package_folder, tgt_licenses_dir, keep_path=False)
91+
copy(self, "*notice*", dependency.package_folder, tgt_licenses_dir, keep_path=False)
92+
copy(self, "*authors*", dependency.package_folder, tgt_licenses_dir, keep_path=False)
93+
copy(self, "*copyright*", dependency.package_folder, tgt_licenses_dir, keep_path=False)
94+
7795
def _update_rpath(self, files, new_rpath):
7896
if files and self.settings.os == "Linux":
7997
with VirtualBuildEnv(self).environment().vars(self).apply():

0 commit comments

Comments
 (0)