ya2 · news · projects · code · about

fixes for building master
authorFlavio Calva <f.calva@gmail.com>
Fri, 30 Sep 2022 18:48:53 +0000 (19:48 +0100)
committerFlavio Calva <f.calva@gmail.com>
Fri, 30 Sep 2022 18:48:53 +0000 (19:48 +0100)
pmachines/app.py
pmachines/persistent.py
pmachines/scene.py
prj.org
setup.py

index c03d7281e3ed164d29c31db1d4560086dd9c1f41..deac280af5d8ffdc96be8a84aa2f8ac7e256aad1 100755 (executable)
@@ -4,6 +4,7 @@ import simplepbr
 from importlib import import_module
 from inspect import isclass
 from sys import platform, exit
+from platform import node
 from logging import info, debug
 from os.path import exists
 from os import makedirs
@@ -311,8 +312,8 @@ class Pmachines:
             self.__fps_lst.pop(0)
         self.__fps_lst += [globalClock.average_frame_rate]
         if len(self.__fps_lst) == 4:
-            fps_threshold = 55 if cpu_count() >= 4 else 25
-            assert any(fps > fps_threshold for fps in self.__fps_lst), 'low fps %s' % self.__fps_lst
+            fps_threshold = 55 if cpu_count() >= 4 and node() != 'localhost.localdomain' else 10  # i.e. it is the builder machine
+            assert not all(fps < fps_threshold for fps in self.__fps_lst), 'low fps %s' % self.__fps_lst
         return task.again
 
     def run(self):
index 423f4a3be0c96a7ba5a26fe80cad729dd800a421..4e5002ddb19cae5073d7c83b29e9c320afcf5516 100644 (file)
@@ -14,12 +14,16 @@ class Persistent:
         #print(self.__scenes_done)
         #self.__scenes_done = self.__scenes_done[0]
         if self.__scenes_done:
-            self.__scenes_done = self.__scenes_done.strip("'")
+            if not isinstance(self.__scenes_done, list):  # empty list: []
+                self.__scenes_done = self.__scenes_done.strip("'")
         if self.__scenes_done:
-            self.__scenes_done = json.loads(self.__scenes_done)
+            if not isinstance(self.__scenes_done, list):
+                self.__scenes_done = json.loads(self.__scenes_done)
 
     def save_scene(self, name, version):
-        scenes = [scene for scene in self.__scenes_done if scene[0] != name]
+        scenes = []
+        if not isinstance(self.__scenes_done, list):  # empty list: []
+            scenes = [scene for scene in self.__scenes_done if scene[0] != name]
         self.__scenes_done = scenes + [(name, version)]
         self.__opt_file['save']['scenes_done'] = "'%s'" % json.dumps(self.__scenes_done)
         self.__opt_file.store()
index aeb05b9a7e0bd56e1782b61e77b6116285c61d47..ef0d48b6a40031132b72e2cb04fac22db2b2f9b0 100644 (file)
@@ -89,6 +89,8 @@ class Scene(DirectObject):
 
     @classmethod
     def is_done(cls, scene_name):
+        if not cls.scenes_done or len(cls.scenes_done) == 1 and not cls.scenes_done[0]:
+            return False
         return bool([(name, version) for name, version in cls.scenes_done if scene_name == name and cls.version(scene_name) == version])
 
     def _instr_txt(self):
@@ -769,7 +771,7 @@ class Scene(DirectObject):
             self._define_test_items()
             for itm in self._test_items:
                 self._pos_mgr.register(itm.name, P3dGfxMgr.pos2d_p2d(itm))
-        taskMgr.doMethodLater(.01, frame_after, 'frame after')
+        taskMgr.doMethodLater(1.4, frame_after, 'frame after')  # after the intro sequence
 
     def _define_test_items(self):
         if not self.__json_name in self.__class__.json_files:
diff --git a/prj.org b/prj.org
index 74164e7093c93fff1f600ef0447ebf5fb74b5653..eb9a0ded8f250d394a4202e9c9145797ec091d5e 100644 (file)
--- a/prj.org
+++ b/prj.org
@@ -3,16 +3,19 @@
 #+CATEGORY: pmachines
 #+TAGS: bug(b) calendar(c) waiting(w)
 
-* DOING editor
+* DOING do build; editor
 - [ ] edit level (button)
 - [ ] global level editor (title, description)
 - [ ] version is the hash of the json file
+- [ ] restore original level
+- [ ] popup if exit with an unsaved scene
 - [ ] list of scenes
 - [ ] item editor
 - [ ] new item
 - [ ] new scene
 - [ ] editing of test_items in the editor for functional tests
 - [ ] define functional tests
+* BACKLOG tooltips for buttons
 * BACKLOG teeter-tooter with constraints (real teeter tooter)
 * BACKLOG magnet, road cone, bucket
 * BACKLOG actions: rewind, prev, next
index 01e1e658dc7a1263756560083a06a9b29a549425..d77f3b5b116879fa06594c75c9cb019d136357ed 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -77,12 +77,12 @@ class BDistAppsCommand(bdist_apps):
 
     user_options = bdist_apps.user_options + [
         ('cores', None, '#cores'),
-        ('no_windows=', None, "don't build for windows"),
-        ('no_linux=', None, "don't build for linux")]
+        ('nowindows=', None, "don't build for windows"),  # letters, numbers and hypens only
+        ('nolinux=', None, "don't build for linux")]
 
     def initialize_options(self):
         super().initialize_options()
-        self.no_windows, self.no_linux = None, None
+        self.nowindows, self.nolinux = None, None
 
     def run(self):
         assets_creation_message = dedent('''NOTE: please be sure that you've already created the assets with:
@@ -99,7 +99,7 @@ class BDistAppsCommand(bdist_apps):
         system(command)
 
     def __eventually_build_appimage(self):
-        if not self.no_linux:
+        if not self.nolinux:
             appimage_builder = AppImageBuilder(self)
             filename_branch = {'master': 'alpha', 'rc': 'rc', 'stable': ''}
             branch = filename_branch[_branch()]