From 8904b69b65943f04f5aeca6e10c44fd7cf78303c Mon Sep 17 00:00:00 2001 From: Chris Koeritz Date: Sun, 31 Oct 2021 19:15:56 -0400 Subject: [PATCH] tectonic tribulations edition: host preparation needed for a bit; just automates a lot of separate install instructions. planning to support windows with apt-cyg and mac with brew, but those steps are kinda hosed still. is_feisty_up lets a caller know if the system is initialized yet or not, which was needed in prep_feisty_host. functions have a couple changes, esp. a better whichable that now returns an error code instead of just not echoing text. --- readme.txt | 85 +++++++++-------- scripts/core/functions.sh | 10 +- scripts/core/is_feisty_up.sh | 26 ++++++ scripts/core/prep_feisty_host.sh | 152 +++++++++++++++++++++++++++++++ 4 files changed, 233 insertions(+), 40 deletions(-) create mode 100644 scripts/core/is_feisty_up.sh create mode 100644 scripts/core/prep_feisty_host.sh diff --git a/readme.txt b/readme.txt index e77c89ab..4b52f9ba 100644 --- a/readme.txt +++ b/readme.txt @@ -15,6 +15,8 @@ If you have stored it elsewhere, then please adapt the commands accordingly. How to get the feisty meow codebase +These steps assume that you have the "git" tool available. + | On Microsoft Windows, install the Cygwin tools as documented here: | /opt/feistymeow.org/feisty_meow/documentation/cygwin_install_list.txt (local file) or | https://feistymeow.org/feisty_meow/documentation/cygwin_install_list.txt (web) @@ -26,6 +28,11 @@ $ git clone git://feistymeow.org/feisty_meow How to load the feisty meow script environment +Prepare your host by installing the packages needed to bootstrap feisty meow. +If this fails, then you may need the manual installation steps at the end of +this file. +$ bash /opt/feistymeow.org/feisty_meow/scripts/core/prep_feisty_host.sh + Set up the feisty_meow scripts; this is only needed once, when you first get the codebase. $ bash /opt/feistymeow.org/feisty_meow/scripts/core/reconfigure_feisty_meow.sh @@ -52,26 +59,6 @@ https://feistymeow.org/feisty_meow/documentation/feisty_meow_command_reference.t ============== -How to install the feisty meow script dependencies - -A couple of perl modules are required by some of the scripts (including the -differ utility and the feisty meow customization system). They can be -installed with either apt or CPAN. - -Install using apt (on Ubuntu or Debian-based OS): -$ sudo apt install libfile-which-perl libtext-diff-perl - -Install using yum (on Centos or similar distros): -$ yum install perl-File-Which perl-Text-Diff - -or Install using perl's CPAN: -$ sudo cpan install Text::Diff File::Which - -or on Cygwin (MS-Windows), install with apt-cyg: -$ apt-cyg install perl-File-Which perl-Text-Diff - -============== - How to update the feisty meow codebase to the latest online version This assumes that a somewhat current version of feisty meow is already @@ -84,25 +71,6 @@ $ rpuffer $FEISTY_MEOW_APEX ; regenerate ============== -How to install the build dependencies for feisty meow - -These dependencies are used for building the applications, tools and tests -in the "nucleus", "octopi", "graphiq" and other C++ collections. - -| Ubuntu / Debian: -| $ sudo apt install build-essential librtmp-dev libcurl4-gnutls-dev libssl-dev - -| Centos / Redhat / Fedora: -| $ sudo yum install gcc gcc-c++ openssl-devel.x86_64 curl-devel - -The "kona" collection depends on Java version 8 or better. - -| Ubuntu: -| Set up the java PPA archive as described here: -| https://launchpad.net/~webupd8team/+archive/ubuntu/java - -============== - How to build the feisty meow codebase Run the following command to build the feisty meow libraries and applications. @@ -155,4 +123,43 @@ More information is available at the official site: https://feistymeow.org ============== +Manual Installation Steps: + +How to install the feisty meow script dependencies... + +A couple of perl modules are required by some of the scripts (including the +differ utility and the feisty meow customization system). They can be +installed with either apt or CPAN. + +Install using apt (on Ubuntu or Debian-based OS): +$ sudo apt install libfile-which-perl libtext-diff-perl + +Install using yum (on Centos or similar distros): +$ yum install perl-File-Which perl-Text-Diff + +or Install using perl's CPAN: +$ sudo cpan install Text::Diff File::Which + +or on Cygwin (MS-Windows), install with apt-cyg: +$ apt-cyg install perl-File-Which perl-Text-Diff + +How to install the build dependencies for feisty meow... + +These dependencies are used for building the applications, tools and tests +in the "nucleus", "octopi", "graphiq" and other C++ collections. + +| Ubuntu / Debian: +| $ sudo apt install build-essential librtmp-dev libcurl4-gnutls-dev libssl-dev + +| Centos / Redhat / Fedora: +| $ sudo yum install gcc gcc-c++ openssl-devel.x86_64 curl-devel + +The "kona" collection depends on Java version 8 or better. + +| Ubuntu: +| Set up the java PPA archive as described here: +| https://launchpad.net/~webupd8team/+archive/ubuntu/java + +============== + diff --git a/scripts/core/functions.sh b/scripts/core/functions.sh index c1a14c0e..207a384f 100644 --- a/scripts/core/functions.sh +++ b/scripts/core/functions.sh @@ -40,11 +40,19 @@ if [ -z "$skip_all" ]; then { to_find="$1"; shift local WHICHER="$(\which which 2>/dev/null)" +#>&2 echo "got whicher as: $WHICHER" if [ $? -ne 0 ]; then # there is no which command here. we produce nothing due to this. echo + return 2 fi - echo $($WHICHER $to_find 2>/dev/null) + local sporkenz # must be defined local here, before call, or we don't get exit value?! + sporkenz=$($WHICHER "$to_find" 2>/dev/null) +#>&2 echo "broken with this line, but here is exit val: $?" + local err=$? +#>&2 echo "got whicher as: $WHICHER" + echo $sporkenz + return $err } # makes a directory of the name specified and then tries to change the diff --git a/scripts/core/is_feisty_up.sh b/scripts/core/is_feisty_up.sh new file mode 100644 index 00000000..1f4b2d8f --- /dev/null +++ b/scripts/core/is_feisty_up.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# tells the caller if the feisty_meow scripts have been initialized +# successfully or not, as far as we can tell. +# any parameter passed will cause us to go into debugging mode. + +do_debug="$1"; shift + +if [ \ + -z "$FEISTY_MEOW_APEX" -o \ + -z "$CORE_VARIABLES_LOADED" -o \ + -z "$FEISTY_MEOW_LOADING_DOCK" \ + ]; then + if [ ! -z "$do_debug" ]; then + echo "Bailing out because a crucial Feisty Meow initialization variable is missing." + fi + exit 1 +fi + +# we got through the minimal gauntlet, so claim we're initialized. +if [ ! -z "$do_debug" ]; then + echo "Looking good for every Feisty Meow initialization variable that we check." +fi +exit 0 + + diff --git a/scripts/core/prep_feisty_host.sh b/scripts/core/prep_feisty_host.sh new file mode 100644 index 00000000..07b95ae0 --- /dev/null +++ b/scripts/core/prep_feisty_host.sh @@ -0,0 +1,152 @@ +#!/bin/bash + +# this is the feisty meow host preparation script. it installs all the packages required to run and build feisty meow scripts and applications. +# this script may still be a bit incomplete; we definitely use a lot of unix and linux tools in different scripts. + +# preconditions and dependencies--this script itself depends on: +# feisty meow +# bash +# anything else? + +#### + +# something borrowed... +function exit_on_error() { + if [ $? -ne 0 ]; then + echo -e "\n\nan important action failed and this script will stop:\n\n$*\n\n*** Exiting script..." + error_sound + exit 1 + fi +} + +#### + +# load feisty meow environment here, but first test that we *can* load it. + +#hmmm: currently, this script needs the system to have already been configured? +# that's the implication of calling launch_feisty... +# can we find that same bootstrapping code that will reconfigure first? +#more about this... +# hmmm: we need clean starty type approach! must not expect feisty to already be configured for use! +# e.g.?? $ bash /opt/feistymeow.org/feisty_meow/scripts/core/reconfigure_feisty_meow.sh +# hmmm: above ALSO ESSENTIAL TO GET RIGHT! + +PHASE_MESSAGE="Checking integrity of Feisty Meow subsystem" +if [ -z $FEISTY_MEOW_APEX ]; then + false; exit_on_error $PHASE_MESSAGE +fi + +# simple brute force check. can we go there? +pushd $FEISTY_MEOW_APEX &> /dev/null +exit_on_error locating feisty meow top-level folder +popd &> /dev/null + +# now ask feisty if it's there; should work as long as our scripts are in place. +bash $FEISTY_MEOW_APEX/scripts/core/is_feisty_up.sh +exit_on_error $PHASE_MESSAGE + +# standard load-up. +#hmmm: this will currently fail if reconfigure has never been called. +source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh" + +#### + +# first the crucial bits for scripts to work... + +PHASE_MESSAGE="installing perl file and diff modules" + +# ubuntu or debian or other apt-based OSes... +if whichable apt; then + sudo apt install libfile-which-perl libtext-diff-perl + exit_on_error $PHASE_MESSAGE +# rpm based with yum available... +elif whichable yum; then + sudo yum install perl-File-Which perl-Text-Diff + exit_on_error $PHASE_MESSAGE +# macos based... +elif [ ! -z "$IS_DARWIN" ]; then + +#hmmm: not quite right yet... + brew install blah blah? lots? + exit_on_error $PHASE_MESSAGE + +# windows-based with cygwin (or we'll fail out). +elif [ "$OS" == "Windows_NT" ]; then + +#hmmm: install apt-cyg! +# we need this to do the following step, so why not automate that? +# can we at least check for the packages we absolutely need? + +#hmmm: can we bootstrap and still survive on the basic cygwin modules if already installed? +# then we could use our huge list to get the rest! + +#hmmm: is there any other way to get the missing ones, that we need for apt-cyg? + + apt-cyg install perl-File-Which perl-Text-Diff + exit_on_error $PHASE_MESSAGE +fi + +#### + +# then the builder packages... + +PHASE_MESSAGE="installing code builder packages" + +# ubuntu or debian or other apt-based OSes... +if whichable apt; then + sudo apt install build-essential librtmp-dev libcurl4-gnutls-dev libssl-dev + exit_on_error $PHASE_MESSAGE +# rpm based with yum available... +elif whichable yum; then + sudo yum install gcc gcc-c++ openssl-devel.x86_64 curl-devel + exit_on_error $PHASE_MESSAGE +# macos based... +elif [ ! -z "$IS_DARWIN" ]; then + +#hmmm: not quite right yet... + brew install blork blork? lots? + exit_on_error $PHASE_MESSAGE + +# windows-based with cygwin (or we'll fail out). +elif [ "$OS" == "Windows_NT" ]; then + +#hmmm: unknown list needed still... + apt-cyg install fugazi combustinatorinibasil scampnific + exit_on_error $PHASE_MESSAGE +fi + +#### + +# install other external packages and whatnot. + +#hmmm: anything else to get installed? + #hmmm: java? + #hmmm: python? + #hmmm: perl itself!? + + +#### + +# get ready to finish up. + +#...finishing steps... if any. + +# all done now. +exit 0 + +#### + + +############################# +#scav line +############################# + +The "kona" collection depends on Java version 8 or better. +| Ubuntu: +| Set up the java PPA archive as described here: +| https://launchpad.net/~webupd8team/+archive/ubuntu/java + +#not needed at the moment. +#echo "bailing because script is immature. farts!" +#exit 1 + -- 2.34.1