[Scummvm-git-logs] scummvm-sites director-buildbot -> 4833e2bd5207d239dabc5b6f0c68337b915bd0c9
sev-
noreply at scummvm.org
Fri Jul 3 20:19:20 UTC 2026
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm-sites' repo located at https://api.github.com/repos/scummvm/scummvm-sites .
Summary:
4833e2bd52 IMAGEDIFF: Sync with server
Commit: 4833e2bd5207d239dabc5b6f0c68337b915bd0c9
https://github.com/scummvm/scummvm-sites/commit/4833e2bd5207d239dabc5b6f0c68337b915bd0c9
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2026-07-03T22:19:04+02:00
Commit Message:
IMAGEDIFF: Sync with server
Changed paths:
director/build_factory.py
director/screenshot_diff.py
director/targets.py
imagediff/config.py
imagediff/main.py
imagediff/templates/target.html
master.py
diff --git a/director/build_factory.py b/director/build_factory.py
index 211d784..461ab75 100644
--- a/director/build_factory.py
+++ b/director/build_factory.py
@@ -12,7 +12,9 @@ default_step_kwargs: dict[str, Any] = {"logEnviron": False}
default_env: dict[str, str] = {
"SDL_VIDEODRIVER": "dummy",
"SDL_AUDIODRIVER": "dummy",
- "ASAN_OPTIONS": "detect_leaks=1:abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1,fast_unwind_on_malloc=0",
+ #"ASAN_OPTIONS": "detect_leaks=1:abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1,fast_unwind_on_malloc=0",
+ # Remove fast_unwind_on_malloc as a test to see if buildtimes improve.
+ "ASAN_OPTIONS": "detect_leaks=1:abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1",
}
diff --git a/director/screenshot_diff.py b/director/screenshot_diff.py
index 4259b5c..3526be0 100644
--- a/director/screenshot_diff.py
+++ b/director/screenshot_diff.py
@@ -17,16 +17,9 @@ EXIT_DIFF = 1
EXIT_NO_BASELINE = 2
EXIT_ERROR = 3
-_repo_root = os.path.dirname(os.path.dirname(__file__))
-_imagediff_dir = os.path.join(_repo_root, "imagediff")
_seen_prefixes_name = ".screenshot_prefixes_seen"
-# imagediff/imagediff.py does `from config import SCREENSHOTS_DIR` at module
-# level, so imagediff/ must be on sys.path before we import it.
-if _imagediff_dir not in sys.path:
- sys.path.insert(0, _imagediff_dir)
-
-import imagediff as _imagediff # imagediff/imagediff.py
+from imagediff import imagediff as _imagediff # imagediff/imagediff.py
def _seen_prefixes_path(screenshots_dir: str, target: str, build: str) -> str:
diff --git a/director/targets.py b/director/targets.py
index 8a07925..d4c62a7 100644
--- a/director/targets.py
+++ b/director/targets.py
@@ -89,7 +89,9 @@ def generate_builder(target: TestTarget, workernames: list[str]) -> BuilderConfi
command=[
"rsync",
"-av",
+ "--no-o",
"--delete",
+ "--link-dest", os.path.join(base_dir, to_directory),
os.path.join(base_dir, to_directory),
target.directory,
],
diff --git a/imagediff/config.py b/imagediff/config.py
index 785893b..db8eaf1 100644
--- a/imagediff/config.py
+++ b/imagediff/config.py
@@ -1,4 +1,7 @@
import os
+from dotenv import load_dotenv
+
+load_dotenv()
SCREENSHOTS_DIR = os.environ.get("SCREENSHOTS_DIR", "./screenshots/")
CACHE_DIR = os.environ.get("CACHE_DIR", "./cache/")
diff --git a/imagediff/main.py b/imagediff/main.py
index 8ab7c94..488a6c1 100644
--- a/imagediff/main.py
+++ b/imagediff/main.py
@@ -1,6 +1,5 @@
import os
import json
-import sys
import base64
from io import BytesIO
@@ -10,11 +9,8 @@ from config import SCREENSHOTS_DIR
from flask import Flask, render_template, jsonify, url_for, send_from_directory, request
-_imagediff_dir = os.path.dirname(__file__)
-if _imagediff_dir not in sys.path:
- sys.path.insert(0, _imagediff_dir)
-
-from config import CACHE_DIR, SCREENSHOTS_DIR
+from imagediff.config import CACHE_DIR, SCREENSHOTS_DIR
+from imagediff.imagediff import image_diff, encode_image, movie_diff
app = Flask(__name__)
@@ -119,7 +115,7 @@ def unescape_string(s: str) -> str:
hi = next(s_iter, None)
return orig_name
-def decode_string(orig: str) -> str:
+def decode_string2(orig: str) -> str:
"""
Decode punyencoded strings
"""
@@ -137,6 +133,15 @@ def decode_string(orig: str) -> str:
st = orig[4:].encode("ascii").decode("punycode")
return unescape_string(st)
+def decode_string(orig: str) -> str:
+ """
+ Decode punyencoded strings
+ """
+ if not orig.startswith("xn--"):
+ return orig
+
+ st = orig[4:].encode("ascii").decode("punycode")
+ return unescape_string(st)
# cache functions
def get_cache_page_path(target, page):
@@ -244,6 +249,8 @@ def collect_movie_frames(target_path, builds):
for file in build_files[build]:
if not os.path.isfile(os.path.join(target_path, build, file)):
continue
+ if "-" not in file:
+ continue
movie_name, frame_part = file.rsplit("-", 1)
@@ -610,7 +617,7 @@ def target_data_api(target):
'target': target,
'builds': display_builds,
'movies': movies,
- 'display_movies': [decode_string(m) for m in movies],
+ 'display_movies': [print(f"DEBUG movie: {repr(m)}") or decode_string(m) for m in movies],
'continuous_bars': continuous_bars,
'urls': urls
}
@@ -803,4 +810,4 @@ def screenshots(filename):
return send_from_directory(SCREENSHOTS_DIR, filename)
if __name__ == '__main__':
- app.run(debug=True, port=5001)
+ app.run(debug=True, host = '0.0.0.0', port=5002)
diff --git a/imagediff/templates/target.html b/imagediff/templates/target.html
index e9c4438..63df20e 100644
--- a/imagediff/templates/target.html
+++ b/imagediff/templates/target.html
@@ -157,7 +157,15 @@
// Build API URL
const target = '{{ target }}';
- const apiUrl = `/api/target_data/${encodeURIComponent(target)}?page={{ page }}`;
+ // const apiUrl = `{{ url_for('target_data_api', target=target) }}?page={{ page }}`;
+ // const apiUrl = `{{ url_for('target_data_api', target=target) }}?page={{ page }}`;
+ const basePath = window.location.pathname.replace(/\/target\/[^/]*$/, '');
+ const apiUrl = `${basePath}/api/target_data/${encodeURIComponent(target)}?page={{ page }}`;
+ console.log('pathname:', window.location.pathname, 'basePath:', basePath);
+
+
+
+
// Start timestamp for calculating loading time
const startTime = new Date().getTime();
diff --git a/master.py b/master.py
index 17ded75..636d127 100644
--- a/master.py
+++ b/master.py
@@ -9,6 +9,9 @@ from buildbot.plugins import schedulers, util, worker
from environs import Env
from twisted.python import log
+env = Env()
+env.read_env()
+
from director.build_factory import build_factory
from director.discord import DiscordStatusPush
from director.lingo_factory import lingo_factory
More information about the Scummvm-git-logs
mailing list