plugging in new approach for testing
authorChris Koeritz <fred@gruntose.com>
Sun, 29 May 2022 21:39:48 +0000 (17:39 -0400)
committerChris Koeritz <fred@gruntose.com>
Sun, 29 May 2022 21:39:48 +0000 (17:39 -0400)
this doesn't make the code read any files at runtime; instead the virtual root for unix on win32 is put in a low-level header that's stored in the binaries dir along with the code.

nucleus/library/algorithms/sorts.h
nucleus/library/configuration/application_configuration.cpp
nucleus/library/configuration/application_configuration.h
nucleus/library/filesystem/filename.cpp
production/paths.ini
production/system_helper_template.h [new file with mode: 0644]
scripts/clam/cpp/variables.def
scripts/generator/produce_feisty_meow.sh

index c6e21abedc66ec69992016668e7e1ec51685db14..0b7cfc4bd9da20a2ea99656b17552ae063dc72f4 100644 (file)
@@ -18,6 +18,8 @@
 
 #include <mathematics/chaos.h>
 
+#include <system_helper.h>
+
 namespace algorithms {
 
        /*
index c8cc179fb67048e38f0fb749f4e9df1ff45d91eb..05259f1251587ecebb36fa3d7f75d35ddbfa007e 100644 (file)
@@ -24,6 +24,7 @@
 #include <mathematics/chaos.h>
 #include <structures/static_memory_gremlin.h>
 #include <textual/parser_bits.h>
+#include <system_helper.h>
 
 #ifdef __APPLE__
   #include <mach-o/dyld.h>
@@ -290,18 +291,19 @@ const astring &application_configuration::GLOBAL_SECTION_NAME() { STATIC_STRING(
 
 const astring &application_configuration::LOGGING_FOLDER_NAME() { STATIC_STRING("LogPath"); }
 
-const astring &application_configuration::WINDOZE_VIRTUAL_ROOT_NAME()
-{ STATIC_STRING("VirtualUnixRoot"); }
+//const astring &application_configuration::WINDOZE_VIRTUAL_ROOT_NAME()
+//{ STATIC_STRING("VirtualUnixRoot"); }
 
 const astring &application_configuration::DEFAULT_VIRTUAL_UNIX_ROOT()
 { STATIC_STRING("c:/cygwin"); }
 
 //////////////
 
-// static storage for virtual unix root, if used.
+// static storage for virtual unix root, if it's used.
+// we don't expect it to change during runtime, right?  that would be fubar.
+// so we cache it once we retrieve it.
 SAFE_STATIC(astring, static_root_holder, )
 
-//  we don't expect it to change during runtime, right?  that would be fubar.
 astring application_configuration::get_virtual_unix_root()
 {
 #ifdef __UNIX__
@@ -315,13 +317,13 @@ astring application_configuration::get_virtual_unix_root()
   }
 
   /*
-   read the path out of the config file, which should have been set during the
+   use the path in our system helpers header, which should have been set during the
    build process if this is really windows.
   */
-  astring virtual_root = read_item(WINDOZE_VIRTUAL_ROOT_NAME());
+///  astring virtual_root = read_item(WINDOZE_VIRTUAL_ROOT_NAME());
+  astring virtual_root = FEISTY_MEOW_VIRTUAL_UNIX_ROOT;
   if (!virtual_root) {
     // if it has no length, we didn't get our setting!  we'll limp along with a guess.
-    // also don't cache the failure value.  maybe it will wake up later!
     return DEFAULT_VIRTUAL_UNIX_ROOT();
   } else {
     static_root_holder() = virtual_root;
index 34d5775164593bd3881c9e3286a513b931b16c59..5633beae2757aaba6a668a9d6f76d018b9112954 100644 (file)
@@ -104,7 +104,7 @@ public:
   static const basis::astring &LOGGING_FOLDER_NAME();
     //!< the tag used for finding our logging path in the paths config file.
 
-  static const basis::astring &WINDOZE_VIRTUAL_ROOT_NAME();
+//  static const basis::astring &WINDOZE_VIRTUAL_ROOT_NAME();
     //!< the tag used for looking up the virtual windows path in the paths config file.
 
   static const basis::astring &DEFAULT_VIRTUAL_UNIX_ROOT();
index d12d9e7e58825b735a2f93911591abc842ed5850..4abca2ade98b462c6f75404f1e34baf54fd0b6d6 100644 (file)
 
 #include <basis/byte_array.h>
 #include <basis/functions.h>
-#include <configuration/application_configuration.h>
-/*
- hmmm: note that we are relying on forward declared code here.
- the canonical ordering for feisty's nucleus has the filesystem code come before
- the configuration code, because the configuratin library uses filesystem features.
- not sure i want to resolve this bizarritude at this time, but it points to the
- need for a virtual interface at lower level than either filesystem or configuration
- libraries, so we can emplace the need for the virtual unix root as a low-level
- dependency to be implemented later.
- */
-
 #include <textual/parser_bits.h>
+#include <system_helper.h>
 
 #include <stdio.h>
 #include <sys/stat.h>
@@ -265,13 +255,14 @@ if (inject_root) LOG("decided to inject root since path is '/'.");
 if (inject_root) LOG(astring("decided to inject root since path is compatible: ") + *this);
   }
 
-LOG(astring("after second phase root injection: ") + *this);
+LOG(astring("after second phase root injection: ") + raw());
 
   if (inject_root) {
     // inject the actual path to the unix root in front, if we know it.
     // if we don't know it, then a default path that's unlikely to work is idiotically plugged in.
-    insert(0, configuration::application_configuration::get_virtual_unix_root());
-LOG(astring("turned cygdrive path string into: ") + *this);
+    insert(0, FEISTY_MEOW_VIRTUAL_UNIX_ROOT);
+///nope configuration::application_configuration::get_virtual_unix_root());
+LOG(astring("turned cygdrive path string into: ") + raw());
   }
 #endif
 
index df2d0646c16c71fb72b00c6f0d685495414df8fb..bd804e11747dcc3448bfea1f31006a3da3b78e85 100644 (file)
@@ -1,8 +1,4 @@
 [Common]
 # default logging path that users can alter if needed.
 LogPath=$FEISTY_MEOW_GENERATED_STORE/logs
-# default location of virtual root directory for Unix.
-# replaced at runtime on windoze if cygwin is available.
-#hmmm: support msys too at some point?  very worthy as well.
-VirtualUnixRoot=c:/cygwin
 
diff --git a/production/system_helper_template.h b/production/system_helper_template.h
new file mode 100644 (file)
index 0000000..96b0177
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef SYSTEM_HELPER_GROUP
+#define SYSTEM_HELPER_GROUP
+
+//////////////
+// Name   : system helper header
+// Author : Chris Koeritz
+// Rights : Copyright (c) 2012-$now By Author
+//////////////
+// This file is free software; you can modify/redistribute it under the terms
+// of the GNU General Public License. [ http://www.gnu.org/licenses/gpl.html ]
+// Feel free to send updates to: [ fred@gruntose.com ]
+//////////////
+
+//! Isolates a few system dependencies for feisty meow runtime environment.
+
+//////////////
+
+/*
+  default location of virtual root directory for Unix.
+  the contents here are replaced at runtime on windoze if cygwin is
+  available.
+*/
+#define FEISTY_MEOW_VIRTUAL_UNIX_ROOT "c:/cygwin"
+
+// hmmm: support msys too at some point?  very worthy as well.
+
+//////////////
+
+#endif
+
index 24b8148c514168a404dba2bd26170eddde881489..b56c294b9d2b1443b33dc593f698ccf3f902db4a 100644 (file)
@@ -206,8 +206,9 @@ export DYNAMIC_LIBRARY_DIR = $(TARGETS_STORE)
 export STATIC_LIBRARY_DIR = $(TARGETS_STORE)
 
 # "HEADER_SEARCH_PATH" is where the class interface files are to be found.
-# we add the generated store folder for the build version file.
-HEADER_SEARCH_PATH = $(FEISTY_MEOW_GENERATED_STORE)/versions
+# the generated store folder is added to access the build version file.
+# the binaries are added to access the system_helper.h file.
+HEADER_SEARCH_PATH = $(FEISTY_MEOW_GENERATED_STORE)/versions $(FEISTY_MEOW_BINARIES)
 
 # "HOOPLE_HEADERS" are locations where the HOOPLE headers can be found.
 ifeq "$(HOOPLE_HEADERS)" ""
index 7466031b3cf0664d7776626805f417051e4ab89e..41e3bd544f156c9f5588cc0c669ab39b4462b37c 100644 (file)
@@ -54,17 +54,39 @@ source "$BUILD_SCRIPTS_PATH/build_variables.sh" "$BUILD_SCRIPTS_PATH/build_varia
 ##############
 
 # creates the directory for our binaries and gives it a reasonable paths configuration.
-function prepare_binaries_dir()
+function prepare_clam_binaries_dir()
 {
   # we'll store binaries here from the bootstrap process.
   if [ ! -d "$CLAM_BINARIES" ]; then
-    echo "creating binary dir now in $CLAM_BINARIES"
+    echo "creating clam binary dir now in $CLAM_BINARIES"
     mkdir -p "$CLAM_BINARIES"
+    exit_on_error "creating clam binary directory in $CLAM_BINARIES"
   fi
   if [ ! -f "$CLAM_BINARIES/paths.ini" ]; then
     cp "$PRODUCTION_STORE/paths.ini" "$CLAM_BINARIES"
-    echo "copied paths.ini to binary dir."
+    exit_on_error "copying paths.ini to $CLAM_BINARIES"
+    echo "copied paths.ini to clam binary dir."
   fi
+}
+
+# fix the system helper header up by calling cygpath to determine the cygwin
+# root, if we are on windoze and cygwin.
+function update_system_helper_header()
+{
+  # create our main binaries directory if needed.
+  if [ ! -d "$FEISTY_MEOW_BINARIES" ]; then
+    echo "creating feisty meow binary folder now in $FEISTY_MEOW_BINARIES"
+    mkdir -p "$FEISTY_MEOW_BINARIES"
+    exit_on_error "creating feisty meow binary folder in $FEISTY_MEOW_BINARIES"
+  fi
+
+  # copy up the system helper template version into the binaries directory.
+  if [ ! -f "$FEISTY_MEOW_BINARIES/system_helper.h" ]; then
+    cp "$PRODUCTION_STORE/system_helper_template.h" "$FEISTY_MEOW_BINARIES/system_helper.h"
+    exit_on_error "creating system_helper header in $FEISTY_MEOW_BINARIES"
+    echo "copied system_helper header to feisty meow binary dir."
+  fi
+
   # set the cygwin root path if we're on cygwin.
   whichable cygpath
   if [ $? -eq 0 ]; then
@@ -79,9 +101,12 @@ echo "found root as '$found_root'"
     found_root=$(echo $found_root | tr '\\' '/')
 echo "processed root is now: '$found_root'"
     # edit the entry in place to correct the default path.
-    sed -i -e "s%VirtualUnixRoot=.*%VirtualUnixRoot=$found_root%" "$CLAM_BINARIES/paths.ini" 
-echo "paths file now has:"
-cat "$CLAM_BINARIES/paths.ini" 
+    sed -i \
+        -e "s% *#define FEISTY_MEOW_VIRTUAL_UNIX_ROOT \".*$%#define FEISTY_MEOW_VIRTUAL_UNIX_ROOT \"$found_root\"%" \
+        "$CLAM_BINARIES/paths.ini" 
+    exit_on_error "updating system_helper header in $FEISTY_MEOW_BINARIES"
+echo "system helper file now has:"
+cat "$FEISTY_MEOW_BINARIES/system_helper.h"
   fi
 }
 
@@ -98,7 +123,7 @@ echo "Build bootstrap process has started."
 # preconditions for the build process...
 
 # set up our output directories etc.
-prepare_binaries_dir
+prepare_clam_binaries_dir
 
 # set a flag for this process so we can omit certain compilations as necessary.
 export BOOT_STRAPPING=true
@@ -149,7 +174,7 @@ function strip_cr {
 # NOTE: this depends on the operating system having been chosen above!
 if [ "$OPERATING_SYSTEM" = "UNIX" ]; then
   function promote {
-    prepare_binaries_dir
+    prepare_clam_binaries_dir
 
     if [ ! -f "$INTERMEDIATE_STORE/$1" ]; then
       echo "Failed to build the application $1--quitting now."
@@ -161,7 +186,7 @@ if [ "$OPERATING_SYSTEM" = "UNIX" ]; then
   }
 elif [ "$OPERATING_SYSTEM" = "WIN32" ]; then
   function promote {
-    prepare_binaries_dir
+    prepare_clam_binaries_dir
 
     if [ ! -f "$INTERMEDIATE_STORE/$1.exe" ]; then
       echo "Failed to build the application $1.exe--quitting now."
@@ -198,6 +223,9 @@ if [ -z "$SAVE_BINARIES" ]; then
   done
 fi
 
+# copy the system helper header.
+update_system_helper_header
+
 # rebuild the dependency tool.  needed by everything, pretty much, but
 # since it's from the xfree project, it doesn't need any of our libraries.
 if [ ! -f "$CLAM_BINARIES/makedep$EXE_ENDING" ]; then
@@ -268,13 +296,15 @@ echo "The build binaries have been re-created (or were already present)."
 if [ -z "$JUST_BOOTSTRAP_APPS" ]; then
   echo Cleaning up the temporary files that were built.
   bash "$BUILD_SCRIPTS_PATH/whack_build.sh" 
-#wrong!  we don't want to whack it all. clean
 
   # recreate our useful junk directories...
   mkdir -p "$FEISTY_MEOW_GENERATED_STORE"
   mkdir -p "$TEMPORARIES_PILE"
   mkdir -p "$FEISTY_MEOW_LOGS"
 
+  # re-copy the system helper header.
+  update_system_helper_header
+
   echo Now starting a normal build of the repository source code.
   pushd "$FEISTY_MEOW_APEX" &>/dev/null
   unset BUILD_DEFAULTS