X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Fgenerator%2Fproduce_feisty_meow.sh;h=007bee3f0075b8996c37b9b20a7a0f3f85733c6e;hb=d88be084867a87d831ced0bec1169cc91654c60a;hp=cd5ed651fa89af1d20987eda530741c467850f9e;hpb=960e4d8f948ecb537970cba0bed57f1142f1f0b6;p=feisty_meow.git diff --git a/scripts/generator/produce_feisty_meow.sh b/scripts/generator/produce_feisty_meow.sh index cd5ed651..007bee3f 100644 --- a/scripts/generator/produce_feisty_meow.sh +++ b/scripts/generator/produce_feisty_meow.sh @@ -30,15 +30,16 @@ export PATH=/bin:$PATH export INCLUDED_FROM_BOOTSTRAP=true # pull in our build variables using the path to this script. -export BUILD_SCRIPTS_DIR="$( \cd "$(\dirname "$0")" && /bin/pwd )" -#echo build scripts dir initial value: $BUILD_SCRIPTS_DIR -BUILD_SCRIPTS_DIR="$(echo $BUILD_SCRIPTS_DIR | tr '\\\\' '/' )" -#echo build scripts dir after chewing: $BUILD_SCRIPTS_DIR +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. if [ -z "$FEISTY_MEOW_SCRIPTS_LOADED" ]; then - bash "$BUILD_SCRIPTS_DIR/../core/reconfigure_feisty_meow.sh" - source "$BUILD_SCRIPTS_DIR/../core/launch_feisty_meow.sh" + bash "$BUILD_SCRIPTS_PATH/../core/reconfigure_feisty_meow.sh" + source "$BUILD_SCRIPTS_PATH/../core/launch_feisty_meow.sh" fi source "$FEISTY_MEOW_SCRIPTS/core/functions.sh" @@ -48,24 +49,91 @@ source "$FEISTY_MEOW_SCRIPTS/core/functions.sh" export FEISTY_MEOW_APEX="$(unix_to_dos_path $FEISTY_MEOW_APEX)" # load in build variables based on our deduced paths. -source "$BUILD_SCRIPTS_DIR/build_variables.sh" "$BUILD_SCRIPTS_DIR/build_variables.sh" +source "$BUILD_SCRIPTS_PATH/build_variables.sh" "$BUILD_SCRIPTS_PATH/build_variables.sh" ############## # 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_BINARY_DIR" ]; then - echo "creating binary dir now in $CLAM_BINARY_DIR" - mkdir -p "$CLAM_BINARY_DIR" + if [ ! -d "$CLAM_BINARIES" ]; then + 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_BINARY_DIR/paths.ini" ]; then - echo "copied paths.ini to binary dir." - cp "$PRODUCTION_DIR/paths.ini" "$CLAM_BINARY_DIR" + if [ ! -f "$CLAM_BINARIES/paths.ini" ]; then + 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 + 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\"%" \ + "$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 +} + +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. @@ -78,9 +146,6 @@ echo "Build bootstrap process has started." # 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 @@ -94,35 +159,11 @@ 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_DIR/tempgrep.XXXXXX")" - grep -l "$ctrl_m" "$i" >$tempgrep - if [ ! -z "$(cat $tempgrep)" ]; then - temp="$(mktemp "$TEMPORARIES_DIR/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 @@ -130,26 +171,26 @@ 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_EXE_DIR/$1" ]; then + if [ ! -f "$INTERMEDIATE_STORE/$1" ]; then echo "Failed to build the application $1--quitting now." exit 1892 fi - cp "$INTERMEDIATE_EXE_DIR/$1" "$CLAM_BINARY_DIR/$1" - strip "$CLAM_BINARY_DIR/$1" - chmod 755 "$CLAM_BINARY_DIR/$1" + cp "$INTERMEDIATE_STORE/$1" "$CLAM_BINARIES/$1" + strip "$CLAM_BINARIES/$1" + chmod 755 "$CLAM_BINARIES/$1" } elif [ "$OPERATING_SYSTEM" = "WIN32" ]; then function promote { - prepare_binaries_dir + prepare_clam_binaries_dir - if [ ! -f "$INTERMEDIATE_EXE_DIR/$1.exe" ]; then + if [ ! -f "$INTERMEDIATE_STORE/$1.exe" ]; then echo "Failed to build the application $1.exe--quitting now." exit 1892 fi - cp "$INTERMEDIATE_EXE_DIR/$1.exe" "$CLAM_BINARY_DIR" - chmod 755 "$CLAM_BINARY_DIR/$1.exe" + cp "$INTERMEDIATE_STORE/$1.exe" "$CLAM_BINARIES" + chmod 755 "$CLAM_BINARIES/$1.exe" } else echo "The OPERATING_SYSTEM variable is unset or unknown. Bailing out." @@ -161,37 +202,37 @@ fi # start the actual build process now... # load in the feisty meow building environment. -source "$BUILD_SCRIPTS_DIR/build_variables.sh" "$BUILD_SCRIPTS_DIR/build_variables.sh" +source "$BUILD_SCRIPTS_PATH/build_variables.sh" "$BUILD_SCRIPTS_PATH/build_variables.sh" # clean out any current contents. -bash "$BUILD_SCRIPTS_DIR/whack_build.sh" clean +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 "$LOGS_DIR" +mkdir -p "$FEISTY_MEOW_LOGS" toolset_names=(makedep value_tagger version_stamper vsts_version_fixer write_build_config short_path sleep_ms zap_process playsound create_guid) if [ -z "$SAVE_BINARIES" ]; then for i in ${toolset_names[*]}; do - whack_name="$CLAM_BINARY_DIR/$i$EXE_ENDING" + whack_name="$CLAM_BINARIES/$i$EXE_ENDING" #echo removing "$whack_name" rm -f "$whack_name" done fi -# make the clam shell scripts executable. -chmod 755 "$CLAM_DIR"/*.sh -chmod 755 "$CLAM_DIR"/cpp/*.sh -#chmod 755 "$CLAM_DIR"/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. -if [ ! -f "$CLAM_BINARY_DIR/makedep$EXE_ENDING" ]; then +if [ ! -f "$CLAM_BINARIES/makedep$EXE_ENDING" ]; then pushd "$TOOL_SOURCES/dependency_tool" &>/dev/null make_code pre_compilation NO_DEPS=t OMIT_VERSIONS=t make_code NO_DEPS=t OMIT_VERSIONS=t - if [ ! -f "$INTERMEDIATE_EXE_DIR/makedep$EXE_ENDING" ]; then + if [ ! -f "$INTERMEDIATE_STORE/makedep$EXE_ENDING" ]; then echo "" echo "" echo "The build of the makedep tool has failed. Unknown causes... Argh." @@ -203,18 +244,18 @@ if [ ! -f "$CLAM_BINARY_DIR/makedep$EXE_ENDING" ]; then popd &>/dev/null fi -# rebuild the version tools and other support apps. -if [ ! -f "$CLAM_BINARY_DIR/value_tagger$EXE_ENDING" \ - -o ! -f "$CLAM_BINARY_DIR/version_stamper$EXE_ENDING" \ - -o ! -f "$CLAM_BINARY_DIR/vsts_version_fixer$EXE_ENDING" \ - -o ! -f "$CLAM_BINARY_DIR/write_build_config$EXE_ENDING" ]; then +# 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" \ + -o ! -f "$CLAM_BINARIES/write_build_config$EXE_ENDING" ]; then pushd "$TOOL_SOURCES/clam_tools" &>/dev/null 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_EXE_DIR/version_stamper$EXE_ENDING" ]; then + if [ ! -f "$INTERMEDIATE_STORE/version_stamper$EXE_ENDING" ]; then echo "" echo "" echo "The build of the version_stamper tool has failed. Unknown causes... Argh." @@ -231,11 +272,11 @@ if [ ! -f "$CLAM_BINARY_DIR/value_tagger$EXE_ENDING" \ fi # build a few other utilities. -if [ ! -f "$CLAM_BINARY_DIR/short_path$EXE_ENDING" \ - -o ! -f "$CLAM_BINARY_DIR/sleep_ms$EXE_ENDING" \ - -o ! -f "$CLAM_BINARY_DIR/create_guid$EXE_ENDING" \ - -o ! -f "$CLAM_BINARY_DIR/zap_process$EXE_ENDING" \ - -o ! -f "$CLAM_BINARY_DIR/playsound$EXE_ENDING" ]; then +if [ ! -f "$CLAM_BINARIES/short_path$EXE_ENDING" \ + -o ! -f "$CLAM_BINARIES/sleep_ms$EXE_ENDING" \ + -o ! -f "$CLAM_BINARIES/create_guid$EXE_ENDING" \ + -o ! -f "$CLAM_BINARIES/zap_process$EXE_ENDING" \ + -o ! -f "$CLAM_BINARIES/playsound$EXE_ENDING" ]; then pushd "$TOOL_SOURCES/simple_utilities" &>/dev/null make_code pre_compilation OMIT_VERSIONS=t make_code OMIT_VERSIONS=t @@ -254,13 +295,15 @@ echo "The build binaries have been re-created (or were already present)." # we won't do the full build if they told us to just do the bootstrap. if [ -z "$JUST_BOOTSTRAP_APPS" ]; then echo Cleaning up the temporary files that were built. - bash "$BUILD_SCRIPTS_DIR/whack_build.sh" -#wrong! we don't want to whack it all. clean + bash "$BUILD_SCRIPTS_PATH/whack_build.sh" # recreate our useful junk directories... - mkdir -p "$GENERATED_DIR" - mkdir -p "$TEMPORARIES_DIR" - mkdir -p "$LOGS_DIR" + 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