build: 初始化仓库

This commit is contained in:
2026-05-01 03:38:40 +08:00
commit c47e89e20f
14 changed files with 900 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
# SPDX-FileCopyrightText: 2023 Hannah von Reth <vonreth@kde.org>
import os
import shlex
from pathlib import Path
import info
import utils
from Utils.CaseInsensitiveDict import CaseInsensitiveDict
class subinfo(info.infoclass):
def setTargets(self):
self.svnTargets["latests"] = ""
self.defaultTarget = "latests"
from Package.VirtualPackageBase import *
class Package(VirtualPackageBase):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.subinfo.shelveAble = False
def install(self):
if not self.cleanImage():
return False
environ = CaseInsensitiveDict(sorted(os.environ.items(), key=lambda t: t[0]))
if self.supportsCCACHE:
environ["CXX"] = str(CraftCore.standardDirs.craftRoot() / "dev-utils/ccache/bin" / Path(environ["CXX"]).name)
environ["CC"] = str(CraftCore.standardDirs.craftRoot() / "dev-utils/ccache/bin" / Path(environ["CC"]).name)
if CraftCore.compiler.isWindows:
scriptPath = self.imageDir() / "etc/clion-craftenv.bat"
if not utils.createDir(scriptPath.parent):
return False
with scriptPath.open("wt", encoding="UTF-8", newline="\r\n") as out:
lines = ["@echo off", "rem This file is auto generated, don't change it", "rem To update it run craft -i clion-toolchain"] + [
f"set {k}={v}" for k, v in environ.items()
]
out.write("\n".join(lines))
else:
scriptPath = self.imageDir() / "etc/clion-craftenv.sh"
if not utils.createDir(scriptPath.parent):
return False
with scriptPath.open("wt", encoding="UTF-8", newline="\n") as out:
lines = ["# This file is auto generated, don't change it", "# To update it run craft -i clion-toolchain"] + [
f"export {shlex.quote(str(k))}={shlex.quote(str(v))}" for k, v in environ.items()
]
out.write("\n".join(lines))
scriptPath = self.imageDir() / "etc/clion-craftenv.cmake"
if not utils.createDir(scriptPath.parent):
return False
with scriptPath.open("wt", encoding="UTF-8", newline="\n") as out:
lines = ["# This file is auto generated, don't change it", "# To update it run craft -i clion-toolchain"]
for k, v in environ.items():
v = v.replace("\\", "\\\\")
k = k.replace("(", "\(").replace(")", "\)")
lines.append( f"set(ENV{{{k}}} \"{v}\")")
lines.append("message(STATUS \"Craft toolchain for: $ENV{CRAFTROOT} is used\")")
out.write("\n".join(lines))
return True

50
dev-utils/micro/micro.py Normal file
View File

@@ -0,0 +1,50 @@
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
# SPDX-FileCopyrightText: 2023 Hannah von Reth <vonreth@kde.org>
import info
class subinfo(info.infoclass):
def setTargets(self):
for ver in ["2.0.12"]:
if CraftCore.compiler.platform == CraftCore.compiler.Platforms.Windows:
self.targets[ver] = f"https://github.com/zyedidia/micro/releases/download/v{ver}/micro-{ver}-win64.zip"
elif CraftCore.compiler.platform == CraftCore.compiler.Platforms.MacOS:
if CraftCore.compiler.architecture & CraftCore.compiler.Architecture.arm64:
self.targets[ver] = f"https://github.com/zyedidia/micro/releases/download/v{ver}/micro-{ver}-macos-arm64.tar.gz"
else:
self.targets[ver] = f"https://github.com/zyedidia/micro/releases/download/v{ver}/micro-{ver}-osx.tar.gz"
elif CraftCore.compiler.platform == CraftCore.compiler.Platforms.Linux:
if CraftCore.compiler.architecture & CraftCore.compiler.Architecture.arm64:
self.targets[ver] = f"https://github.com/zyedidia/micro/releases/download/v{ver}/micro-{ver}-linux-arm64.tar.gz"
else:
self.targets[ver] = f"https://github.com/zyedidia/micro/releases/download/v{ver}/micro-{ver}-linux64.tar.gz"
elif CraftCore.compiler.platform == CraftCore.compiler.Platforms.FreeBSD:
self.targets[ver] = f"https://github.com/zyedidia/micro/releases/download/v{ver}/micro-{ver}-freebsd64.tar.gz"
self.targetInstallPath[ver] = "dev-utils/micro"
self.targetInstSrc[ver] = f"micro-{ver}"
self.defaultTarget = "2.0.12"
def setDependencies(self):
self.buildDependencies["dev-utils/7zip"] = None
self.buildDependencies["core/cacert"] = None
from Package.BinaryPackageBase import *
class Package(BinaryPackageBase):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.subinfo.shelveAble = False
def postInstall(self):
return utils.createShim(
self.imageDir() / f"dev-utils/bin/micro{CraftCore.compiler.executableSuffix}",
self.imageDir() / f"dev-utils/micro/micro{CraftCore.compiler.executableSuffix}",
)
def postQmerge(self):
CraftCore.cache.clear()
return True