Ship 0.8 fog/freistellen and fix Windows CI for friends
Some checks are pending
Windows Release / windows-x86_64 (push) Waiting to run

Publish the portable zip to public Forgejo from the private GitHub
builder, and force Ninja so MSVC 195 deps build without CMake 4.2.
This commit is contained in:
copilot 2026-10-25 18:07:47 +01:00
parent 97b136de3b
commit 1c1d63f376
46 changed files with 1748 additions and 156 deletions

View file

@ -509,8 +509,58 @@ class ConanSkia(ConanFile):
return [fw + ".framework" for fw in frameworks]
def build(self):
# Optional: reuse a finished out/conan from a prior local build
# (avoids re-hitting googlesource + full ninja). Path = .../out/conan
reuse_out = os.environ.get("SKIA_REUSE_OUT")
if reuse_out and os.path.isdir(reuse_out):
import shutil
dst = join(self.source_folder, "out", "conan")
os.makedirs(join(self.source_folder, "out"), exist_ok=True)
if os.path.isdir(dst):
shutil.rmtree(dst)
shutil.copytree(reuse_out, dst)
return
# activate-emsdk fails on Windows for some reason.
os.environ["GIT_SYNC_DEPS_SKIP_EMSDK"] = "1"
# Default git-sync-deps fans out one thread per dep and hits
# googlesource HTTP 429. Serialize + retry before syncing.
replace_in_file(
self,
join(self.source_folder, "tools", "git-sync-deps"),
"""def multithread(function, list_of_arg_lists):
anything_failed = False
threads = []
def hook(args):
nonlocal anything_failed
anything_failed = True
threading.excepthook = hook
for args in list_of_arg_lists:
thread = threading.Thread(None, function, None, args)
thread.start()
threads.append(thread)
for thread in threads:
thread.join()
if anything_failed:
raise Exception("Thread failure detected")
""",
"""def multithread(function, list_of_arg_lists):
import time
for args in list_of_arg_lists:
last_err = None
for attempt in range(6):
try:
function(*args)
last_err = None
break
except Exception as e:
last_err = e
time.sleep(min(60, 2 ** attempt))
if last_err is not None:
raise last_err
""",
strict=True,
)
self.run("python3 tools/git-sync-deps")
del os.environ["GIT_SYNC_DEPS_SKIP_EMSDK"]
@ -585,9 +635,21 @@ class ConanSkia(ConanFile):
buildenv = VirtualBuildEnv(self).vars()
if cc := buildenv.get("CC", default=None):
cc = buildenv.get("CC", default=None)
cxx = buildenv.get("CXX", default=None)
# Fall back to tools.build:compiler_executables when VirtualBuildEnv
# did not inject CC/CXX (common with only profile [conf]).
try:
executables = self.conf.get("tools.build:compiler_executables", default={}) or {}
except Exception:
executables = {}
if not cc:
cc = executables.get("c")
if not cxx:
cxx = executables.get("cpp")
if cc:
args += f"cc=\"{cc}\"\n"
if cxx := buildenv.get("CXX", default=None):
if cxx:
args += f"cxx=\"{cxx}\"\n"
if ar := buildenv.get("AR", default=None):
args += f"ar=\"{ar}\"\n"