diff --git a/blueprints/dev-utils/_windows/git/git.py b/blueprints/dev-utils/_windows/git/git.py index dc61086f2..3606d083c 100644 --- a/blueprints/dev-utils/_windows/git/git.py +++ b/blueprints/dev-utils/_windows/git/git.py @@ -1,66 +1,66 @@ # -*- coding: utf-8 -*- # Copyright Hannah von Reth # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. import info from Package.MaybeVirtualPackageBase import * class subinfo(info.infoclass): def setTargets(self): ver = "2.20.0" build = "1" self.targets[ver] = f"https://github.com/git-for-windows/git/releases/download/v{ver}.windows.{build}/PortableGit-{ver}-64-bit.7z.exe" self.archiveNames[ver] = f"PortableGit-{ver}-64-bit.7z" self.targetInstallPath[ver] = os.path.join("dev-utils", "git") self.targetDigests[ver] = (["4f0c60a1d0ac23637d600531da34b48700fcaee7ecd79d36e2f5369dc8fcaef6"], CraftHash.HashAlgorithm.SHA256) self.patchLevel["2.20.0"] = 1 self.defaultTarget = ver def setDependencies(self): self.buildDependencies["dev-utils/7zip"] = None self.buildDependencies["dev-utils/wget"] = None - self.buildDependencies["dev-utils/kshim"] = None + self.buildDependencies["dev-utils/kshimgen"] = None from Package.BinaryPackageBase import * class GitPackage(BinaryPackageBase): def __init__(self): BinaryPackageBase.__init__(self) def postInstall(self): return utils.createShim(os.path.join(self.imageDir(), "dev-utils", "bin", "git.exe"), os.path.join(self.imageDir(), "dev-utils", "git", "bin", "git.exe")) def postQmerge(self): gitDir = os.path.join(CraftStandardDirs.craftRoot(), self.subinfo.targetInstallPath[self.buildTarget]) utils.system([os.path.join(gitDir, "git-cmd.exe"), "--no-cd", "--command=post-install.bat"], cwd=gitDir) return True class Package(VirtualIfSufficientVersion): def __init__(self): VirtualIfSufficientVersion.__init__(self, app="git", version="2.20.0", classA=GitPackage) diff --git a/blueprints/dev-utils/cmake/cmake.py b/blueprints/dev-utils/cmake/cmake.py index 8d3293e6f..110666817 100644 --- a/blueprints/dev-utils/cmake/cmake.py +++ b/blueprints/dev-utils/cmake/cmake.py @@ -1,68 +1,68 @@ import info class subinfo(info.infoclass): def setTargets(self): for ver in ["3.8.0", "3.8.1", "3.9.1", "3.10.2", "3.10.3", "3.11.0", "3.11.1", "3.11.3", "3.12.0", "3.12.2", "3.13.0", "3.13.2"]: majorMinorStr = '.'.join(ver.split('.')[0:2]) if CraftCore.compiler.isWindows: self.targets[ver] = f"https://www.cmake.org/files/v{majorMinorStr}/cmake-{ver}-win{CraftCore.compiler.bits}-{CraftCore.compiler.architecture}.zip" self.targetInstSrc[ver] = f"cmake-{ver}-win{CraftCore.compiler.bits}-{CraftCore.compiler.architecture}" elif CraftCore.compiler.isMacOS: self.targets[ver] = f"https://www.cmake.org/files/v{majorMinorStr}/cmake-{ver}-Darwin-{CraftCore.compiler.gnuArchitecture}.tar.gz" self.targetInstSrc[ver] = f"cmake-{ver}-Darwin-{CraftCore.compiler.gnuArchitecture}" elif CraftCore.compiler.isLinux: self.targets[ver] = f"https://cmake.org/files/v{majorMinorStr}/cmake-{ver}-Linux-x86_64.tar.gz" self.targetInstSrc[ver] = f"cmake-{ver}-Linux-x86_64" self.targetInstallPath[ver] = os.path.join("dev-utils", "cmake") self.targetDigestUrls[ver] = (f"https://cmake.org/files/v{majorMinorStr}/cmake-{ver}-SHA-256.txt", CraftHash.HashAlgorithm.SHA256) if CraftCore.compiler.isLinux and self.options.dynamic.checkForNightlies: suffix = 'zip' if CraftCore.compiler.isWindows else 'tar.gz' for ver in CraftCore.cache.getNightlyVersionsFromUrl("https://cmake.org/files/dev/?C=M;O=D;F=0", f"\d.\d.\d\d\d\d\d\d\d\d-[0-9A-Za-z]{5,8}{re.escape('-win32-x86' if OsUtils.isWin() else '-Darwin-x86_64')}"): self.targets[ver] = f"{nightlyUrl}/cmake-{ver}.{suffix}" self.targetInstSrc[ver] = f"cmake-{ver}" self.targetInstallPath[ver] = os.path.join("dev-utils", "cmake") self.description = "CMake, the cross-platform, open-source build system." self.webpage = "http://www.cmake.org/" self.patchLevel["3.13.2"] = 1 self.defaultTarget = "3.13.2" def setDependencies(self): self.buildDependencies["dev-utils/ninja"] = None - self.buildDependencies["dev-utils/kshim"] = None + self.buildDependencies["dev-utils/kshimgen"] = None def registerOptions(self): self.options.dynamic.registerOption("checkForNightlies", False) from Package.BinaryPackageBase import * from Package.MaybeVirtualPackageBase import * class Package(BinaryPackageBase): def __init__(self): BinaryPackageBase.__init__(self) def postInstall(self): binaryPath = os.path.join(self.imageDir(), "dev-utils", "cmake", "bin") if OsUtils.isMac(): binaryPath = os.path.join(self.imageDir(), "dev-utils", "cmake", "CMake.app", "Contents", "bin") for name in ["cmake", "cmake-gui", "cmcldeps", "cpack", "ctest"]: sourceBinary = os.path.join(binaryPath, f"{name}{CraftCore.compiler.executableSuffix}") targetBinary = os.path.join(self.imageDir(), "dev-utils", "bin", f"{name}{CraftCore.compiler.executableSuffix}") if os.path.exists(sourceBinary): if not utils.createShim(targetBinary, sourceBinary): return False return True def postQmerge(self): CraftCore.cache.clear() return True diff --git a/blueprints/dev-utils/kshim/kshim.py b/blueprints/dev-utils/kshim/kshim.py deleted file mode 100644 index b111c67de..000000000 --- a/blueprints/dev-utils/kshim/kshim.py +++ /dev/null @@ -1,51 +0,0 @@ -import info -from Package.CMakePackageBase import * - - -class subinfo(info.infoclass): - def setTargets(self): - self.svnTargets["master"] = "https://invent.kde.org/vonreth/kshim.git" - for ver in ["0.1.0"]: - self.targets[ver] = f"https://files.kde.org/craft/sources/libs/kshimgn/kshimgen-v{ver}.tar.xz" - self.targetInstSrc[ver] = f"kshimgen-v{ver}" - self.targetDigests["0.1.0"] = (['1a46c599ca54e112fd37c39a60e5b97b6b20997e2114fe3cd422274c75ebcd22'], CraftHash.HashAlgorithm.SHA256) - self.defaultTarget = '0.1.0' - - def setDependencies(self): - self.runtimeDependencies["dev-utils/mingw-w64"] = None - -class Package(CMakePackageBase): - def __init__(self, **args): - CMakePackageBase.__init__(self) - if self.buildTarget == "master": - self.subinfo.options.package.disableBinaryCache = True - # can't be bootstrapped - self.__botstrap = False - else: - self.__botstrap = None - - @property - def _botstrap(self): - if self.__botstrap is None: - cmakeVer = CraftCore.cache.getVersion("cmake") - self.__botstrap = not cmakeVer or cmakeVer < "3.8" - return self.__botstrap - - def configure(self): - if not self._botstrap: - return super().configure() - else: - return True - - def make(self): - if not self._botstrap: - return super().make() - else: - utils.createDir(self.buildDir()) - return utils.system([sys.executable, os.path.join(self.sourceDir(), "bootstrap.py")], cwd=self.buildDir()) - - def install(self): - if not self._botstrap: - return super().install() - else: - return utils.copyFile(os.path.join(self.buildDir(), f"kshimgen{CraftCore.compiler.executableSuffix}"), os.path.join(self.installDir(), "bin", f"kshimgen{CraftCore.compiler.executableSuffix}")) diff --git a/blueprints/dev-utils/kshimgen/kshimgen.py b/blueprints/dev-utils/kshimgen/kshimgen.py new file mode 100644 index 000000000..aae8d9ed3 --- /dev/null +++ b/blueprints/dev-utils/kshimgen/kshimgen.py @@ -0,0 +1,19 @@ +import info +from Package.BinaryPackageBase import * + + +class subinfo(info.infoclass): + def setTargets(self): + sums = {"kshimgen-0.2.0-linux-64.tar.xz":"2325dd6b436d70933fde607b538e9fc594552ddc97877017b5a297e69bbde99b", + "kshimgen-0.2.0-macos-64.tar.xz": "6fe02653ccefe1aac652dde7b9546e8a1a34f9ce912b95ed8cbafbe6c6742f52", + "kshimgen-0.2.0-windows-32.7z": "e4d25e68bef07c0e31646016a34f6d8bfd0f00568043ac151f44145b4eb4bd4c", + "kshimgen-0.2.0-windows-64.7z": "9b3f7f03bb3f885184fd9ce16fc83e976e3f44307c6d98e71aca8bb5f399e8db"} + for ver in ["0.2.0"]: + fileName = f"kshimgen-{ver}-{CraftCore.compiler.platform.name.lower()}-{CraftCore.compiler.bits}.{'7z' if CraftCore.compiler.isWindows else 'tar.xz'}" + self.targets[ver] = f"https://files.kde.org/craft/prebuilt/kshimgen/{fileName}" + self.targetDigests[ver] = ([sums[fileName]], CraftHash.HashAlgorithm.SHA256) + self.defaultTarget = '0.2.0' + +class Package(BinaryPackageBase): + def __init__(self, **args): + BinaryPackageBase.__init__(self) diff --git a/blueprints/virtual/base/base.py b/blueprints/virtual/base/base.py index 08800e187..853d6996f 100644 --- a/blueprints/virtual/base/base.py +++ b/blueprints/virtual/base/base.py @@ -1,56 +1,56 @@ import info from Package.VirtualPackageBase import * class subinfo(info.infoclass): def setTargets(self): self.targets['0.2'] = "" self.defaultTarget = '0.2' def setDependencies(self): # The order is important self.buildDependencies["core/cacert"] = None if CraftCore.compiler.isWindows: self.buildDependencies["dev-utils/7zip"] = None self.buildDependencies["dev-utils/wget"] = None self.buildDependencies["dev-utils/git"] = None - self.buildDependencies["dev-utils/kshim"] = None + self.buildDependencies["dev-utils/kshimgen"] = None self.buildDependencies["dev-utils/cmake"] = None else: self.buildDependencies["dev-utils/cmake"] = None self.buildDependencies["dev-utils/7zip"] = None self.buildDependencies["dev-utils/patch"] = None self.buildDependencies["dev-utils/sed"] = None self.buildDependencies["dev-utils/automake"] = None self.buildDependencies["dev-utils/libtool"] = None if CraftCore.compiler.isMacOS: self.buildDependencies["dev-utils/create-dmg"] = None if CraftCore.compiler.isMinGW(): self.buildDependencies["dev-utils/mingw-w64"] = None if CraftCore.settings.get("Compile", "MakeProgram", "") == "jom": self.buildDependencies["dev-utils/jom"] = None if CraftCore.settings.getboolean("Compile", "UseNinja", False): self.buildDependencies["dev-utils/ninja"] = None if CraftCore.settings.getboolean("Compile", "UseCCache", False): self.buildDependencies["dev-utils/ccache"] = None # needed by CollectionPackagerBase if (CraftCore.settings.getboolean("QtSDK", "Enabled", False) and CraftCore.settings.getboolean("QtSDK","PackageQtSDK",True)): self.buildDependencies["dev-utils/dependencies"] = None self.buildDependencies["craft/craft-blueprints-kde"] = None self.buildDependencies["craft/craft-core"] = None self.runtimeDependencies["libs/runtime"] = None if CraftCore.settings.getboolean("General", "AllowAnsiColor", False): self.buildDependencies["python-modules/coloredlogs"] = None class Package(VirtualPackageBase): def __init__(self): VirtualPackageBase.__init__(self)