migrate stock user space build to new build system
[lunaix-os.git] / lunaix-os / scripts / build-tools / luna_build.py
index efe527e4ed913282b7928c617fc1636a87edcb9f..0f96e3e4dfd5901e99bf01e5a0d66b353140aff2 100755 (executable)
@@ -6,12 +6,13 @@ from lbuild.build       import BuildEnvironment
 from lbuild.scope       import ScopeProvider
 from lcfg2.builder      import NodeBuilder
 from lcfg2.config       import ConfigEnvironment
+from lcfg2.common       import ConfigNodeError
 
 from shared.export      import ExportJsonFile
 from shared.export      import ExportHeaderFile
 from shared.export      import ExportMakefileRules
 from shared.export      import restore_config_value
-from shared.scopes      import ConfigScope
+from shared.scopes      import ConfigScope, EnvScope
 from shared.build_gen   import BuildScriptGenerator
 from shared.shconfig    import shconfig
 
@@ -34,6 +35,8 @@ class LunaBuild:
         scope.subscope("ld")
         self.__lbuilder.register_scope(scope)
 
+        self.__lbuilder.register_scope(EnvScope())
+
         self.__json  = ExportJsonFile(self.__lconfig)
         self.__make  = ExportMakefileRules(self.__lconfig)
         self.__headr = ExportHeaderFile(self.__lconfig)
@@ -75,6 +78,13 @@ class LunaBuild:
             self.__headr.export(outdir / "config.h")
 
     def visual_config(self):
+        if not self.__lconfig.loaded():
+            print("no config file loaded, skipped interactive config")
+            return
+        
+        if not self.__opt.gen_config:
+            return
+        
         if not shconfig(self.__lconfig):
             print("configuration process aborted")
             exit(1)
@@ -91,8 +101,12 @@ def main():
     opts = parser.parse_args()
     builder = LunaBuild(opts)
 
-    builder.load()
-    builder.restore()
+    try:
+        builder.load()
+        builder.restore()
+    except ConfigNodeError as e:
+        print(e)
+        exit(1)
     
     builder.visual_config()