export BUILD_SCRIPTS_PATH="$( \cd "$(\dirname "$0")" && /bin/pwd )"
#echo build scripts dir initial value: $BUILD_SCRIPTS_PATH
BUILD_SCRIPTS_PATH="$(echo $BUILD_SCRIPTS_PATH | tr '\\\\' '/' )"
+#hmmm: why four backslashes above? trying two in our unix virtual root code below.
#echo build scripts dir after chewing: $BUILD_SCRIPTS_PATH
# load in feisty meow basic scripts, if not already loaded.
##############
# 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
- echo "copied paths.ini to binary dir."
cp "$PRODUCTION_STORE/paths.ini" "$CLAM_BINARIES"
+ 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 &>/dev/null
+ if [ $? -eq 0 ]; then
+ # found cygpath, so run it now to get the dossy path of the root ('/' folder).
+ found_root="$(cygpath -w -m /)"
+ if [ $? -ne 0 ]; then
+ echo "Failure to find virtual Unix root folder with cygpath."
+ exit 1322
+ fi
+#echo "found root as '$found_root'"
+ # translate any backslashes to forward thinking slashes.
+ 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% *#define FEISTY_MEOW_VIRTUAL_UNIX_ROOT \".*$%#define FEISTY_MEOW_VIRTUAL_UNIX_ROOT \"$found_root\"%" \
+ "$FEISTY_MEOW_BINARIES/system_helper.h"
+ 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
+}
+
+function make_code {
+ make $* $BE_NOISY ${BUILD_DEFAULTS[@]}
+ if [ $? != 0 ]; then
+ echo "Failed to make on: $*"
+ exit 2323
+ fi
+}
+
+# removes pcdos eol from any scripts. that assumes that the bootstrap script
+# itself isn't polluted with them.
+function strip_cr {
+ ctrl_m=$'\015'
+ for i in $*; do
+ tempgrep="$(mktemp "$TEMPORARIES_PILE/tempgrep.XXXXXX")"
+ grep -l "$ctrl_m" "$i" >$tempgrep
+ if [ ! -z "$(cat $tempgrep)" ]; then
+ temp="$(mktemp "$TEMPORARIES_PILE/tempsed.XXXXXX")"
+ sed -e "s/$ctrl_m$//" <$i >$temp
+ mv -f $temp $i
+ fi
+ rm "$tempgrep"
+ done
+}
+
##############
# turn off sounds to avoid running the sound player that's not been built yet.
# preconditions for the build process...
-# set up our output directories etc.
-prepare_binaries_dir
-
# set a flag for this process so we can omit certain compilations as necessary.
export BOOT_STRAPPING=true
declare -a BUILD_DEFAULTS=( "BOOT_STRAPPING=t" "OPTIMIZE=t" "REBUILD=t" "DEBUG=" )
# bootstrapping is always turned on for this particular script.
# we also always optimize these builds and turn off the debug flag.
- # rebuild ensures that the new apps are made fresh: "REBUILD=t"
+ # rebuild ensures that the new applications are made fresh: "REBUILD=t"
# it can be turned off when the build bootstrapper is being tested.
# noisy can be added to spew lots of text: "NOISY=t"
# this can help with compilation issues by showing all the flags.
-function make_code {
- make $* $BE_NOISY ${BUILD_DEFAULTS[@]}
- if [ $? != 0 ]; then
- echo "Failed to make on: $*"
- exit 2323
- fi
-}
-
-# removes pcdos eol from any scripts. that assumes that the bootstrap script
-# itself isn't polluted with them.
-function strip_cr {
- ctrl_m=$'\015'
- for i in $*; do
- tempgrep="$(mktemp "$TEMPORARIES_PILE/tempgrep.XXXXXX")"
- grep -l "$ctrl_m" "$i" >$tempgrep
- if [ ! -z "$(cat $tempgrep)" ]; then
- temp="$(mktemp "$TEMPORARIES_PILE/tempsed.XXXXXX")"
- sed -e "s/$ctrl_m$//" <$i >$temp
- mv -f $temp $i
- fi
- rm "$tempgrep"
- done
-}
-
# the promote function moves a file from the exe directory into the build's
# bin directory. it performs the copy step and makes the file executable.
# the original name should just be the root of the filename without any
# 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."
}
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."
# clean out any current contents.
bash "$BUILD_SCRIPTS_PATH/whack_build.sh" clean
+# set up our output directories etc.
+prepare_clam_binaries_dir
+
# make this again so no one gets cranky.
mkdir -p "$FEISTY_MEOW_LOGS"
done
fi
-# make the clam shell scripts executable.
-chmod 755 "$CLAM_SCRIPTS"/*.sh
-chmod 755 "$CLAM_SCRIPTS"/cpp/*.sh
-#chmod 755 "$CLAM_SCRIPTS"/csharp/*.sh
-chmod 755 "$FEISTY_MEOW_SCRIPTS/generator/wrapdoze.sh"
+# 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.
popd &>/dev/null
fi
-# rebuild the version tools and other support apps.
+# rebuild the version tools and other support applications.
if [ ! -f "$CLAM_BINARIES/value_tagger$EXE_ENDING" \
-o ! -f "$CLAM_BINARIES/version_stamper$EXE_ENDING" \
-o ! -f "$CLAM_BINARIES/vsts_version_fixer$EXE_ENDING" \
make_code pre_compilation OMIT_VERSIONS=t
make_code OMIT_VERSIONS=t
-#hmmm: really this should check all the expected apps.
+#hmmm: really this should check all the expected applications.
# nice to just have an array of the things built by this guy.
if [ ! -f "$INTERMEDIATE_STORE/version_stamper$EXE_ENDING" ]; then
echo ""
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