diff --git a/libs/icu/icu.py b/libs/icu/icu.py index 4e4dd908..8db8d936 100644 --- a/libs/icu/icu.py +++ b/libs/icu/icu.py @@ -1,101 +1,109 @@ # -*- coding: utf-8 -*- import info class subinfo(info.infoclass): def registerOptions(self): self.parent.package.categoryInfo.platforms = CraftCore.compiler.Platforms.NotMacOS def setTargets(self): self.svnTargets["svnHEAD"] = "http://source.icu-project.org/repos/icu/icu/trunk" self.targetInstSrc["svnHEAD"] = "source" for ver in ["53.1", "55.1", "58.2", "62.1", "63.1"]: ver2 = ver.replace(".", "_") self.targets[ver] = f"http://download.icu-project.org/files/icu4c/{ver}/icu4c-{ver2}-src.tgz" if CraftVersion(ver) < "63.1": self.targetDigestUrls[ver] = ([f"https://ssl.icu-project.org/files/icu4c/{ver}/icu4c-src-{ver2}.md5"], CraftHash.HashAlgorithm.MD5) else: self.targetDigestUrls[ver] = ([f"https://ssl.icu-project.org/files/icu4c/{ver}/SHASUM512.txt"], CraftHash.HashAlgorithm.SHA512) if CraftVersion(ver) == "63.1": self.targets[ver] = f"https://files.kde.org/craft/sources/libs/icu/icu4c-{ver2}-src.tgz" self.targetDigestUrls[ver] = ([f"https://files.kde.org/craft/sources/libs/icu/SHASUM512.txt"], CraftHash.HashAlgorithm.SHA512) self.targetInstSrc[ver] = os.path.join("icu", "source") self.patchToApply[ver] = [("icu-msys.diff", 2)] self.patchToApply["63.1"] += [("icu-63.1-20181212.diff", 1), ("icu-63.1-20181215.diff", 2), # backport https://github.com/unicode-org/icu/pull/228 ] if CraftCore.compiler.isMSVC2015() or CraftCore.compiler.isMinGW(): self.patchToApply["55.1"] += [("icu-20150414.diff", 2)] if CraftCore.compiler.isMinGW(): self.patchToApply["55.1"] += [("icu-20150414.diff", 2)] self.patchToApply["58.2"] += ("0020-workaround-missing-locale.patch", 2) # https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-icu/0020-workaround-missing-locale.patch self.defaultTarget = "63.1" def setDependencies(self): self.buildDependencies["virtual/base"] = None self.buildDependencies["dev-utils/pkg-config"] = None if CraftCore.compiler.isMinGW(): self.buildDependencies["dev-utils/msys"] = None from Package.MSBuildPackageBase import * class PackageCMake(MSBuildPackageBase): def __init__(self, **args): MSBuildPackageBase.__init__(self) self.subinfo.options.configure.projectFile = os.path.join(self.sourceDir(), "allinone", "allinone.sln") def install(self): self.cleanImage() if not MSBuildPackageBase.install(self, installHeaders=False, buildDirs=[os.path.join(self.sourceDir(), "..", dir) for dir in ["bin", "bin64", "lib", "lib64"]]): return False utils.copyDir(os.path.join(self.sourceDir(), "..", "include"), os.path.join(self.imageDir(), "include")) if CraftCore.compiler.isMSVC() and self.buildType() == "Debug": imagedir = os.path.join(self.installDir(), "lib") filelist = os.listdir(imagedir) for f in filelist: if f.endswith("d.lib"): utils.copyFile(os.path.join(imagedir, f), os.path.join(imagedir, f.replace("d.lib", ".lib"))) return True + def postInstall(self): + return self.patchInstallPrefix([os.path.join(self.installDir(), "bin/icu-config")], + self.subinfo.buildPrefix, CraftCore.standardDirs.craftRoot()) + from Package.AutoToolsPackageBase import * class PackageMSys(AutoToolsPackageBase): def __init__(self): AutoToolsPackageBase.__init__(self) self.subinfo.options.configure.autoreconf = False def make(self): datafile = os.path.join(os.path.dirname(os.path.abspath(__file__)), "icudt55l.dat") if os.path.exists(datafile): datafileDestination = os.path.join(self.sourceDir(), "data", "in", "icudt55l.dat") if os.path.exists(datafileDestination): os.remove(datafileDestination) utils.copyFile(datafile, datafileDestination) return AutoToolsPackageBase.make(self) def install(self): if not AutoToolsPackageBase.install(self): return False files = os.listdir(os.path.join(self.installDir(), "lib")) for dll in files: if dll.endswith(".dll"): utils.copyFile(os.path.join(self.installDir(), "lib", dll), os.path.join(self.installDir(), "bin", dll)) return True + def postInstall(self): + return self.patchInstallPrefix([os.path.join(self.installDir(), "bin/icu-config")], + self.subinfo.buildPrefix, CraftCore.standardDirs.craftRoot()) + if CraftCore.compiler.isGCCLike(): class Package(PackageMSys): pass else: class Package(PackageCMake): pass