Skip to Content.
Sympa Menu

sm-commit - [SM-Commit] GIT changes to master cauldron by Justin Boffemmyer (4cd4e25ba6c9cd8f449d6f1d1f1199eae55181b3)

sm-commit AT lists.ibiblio.org

Subject: Source Mage code commit list

List archive

Chronological Thread  
  • From: Justin Boffemmyer <scm AT sourcemage.org>
  • To: sm-commit AT lists.ibiblio.org
  • Subject: [SM-Commit] GIT changes to master cauldron by Justin Boffemmyer (4cd4e25ba6c9cd8f449d6f1d1f1199eae55181b3)
  • Date: Sat, 19 May 2012 00:25:22 -0500

GIT changes to master cauldron by Justin Boffemmyer <flux AT sourcemage.org>:

ROADMAP | 106
+++++++++++++++++++++++++++++++++++++
TODO | 81 ----------------------------
cauldron/data/config/commands.conf | 9 ++-
cauldron/data/config/sorcery.conf | 2
cauldron/lib/lib.chroot | 2
cauldron/lib/lib.init | 2
cauldron/lib/lib.sorcerous | 2
cauldron/lib/libcauldron | 2
8 files changed, 119 insertions(+), 87 deletions(-)

New commits:
commit 4cd4e25ba6c9cd8f449d6f1d1f1199eae55181b3
Author: Justin Boffemmyer <flux AT sourcemage.org>
Commit: Justin Boffemmyer <flux AT sourcemage.org>

implement true library function definition tests

Functions were tested for their definition by simply testing if their
names were null (-z). This was incorrect, however, as bare-words tested
for null will always return true, making the test a no-op. The tests
have been reimplemented using bash's type mechanism, which will return
the type of the variable/name, which for a defined function would be the
word "function", but for something undefined it returns an empty string.
It also sets the return value ($?) to true or false depending on whether
the variable/name is defined.

commit 1d5e0b7bf372c2838c7121b9c4cd0446adc42b74
Author: Justin Boffemmyer <flux AT sourcemage.org>
Commit: Justin Boffemmyer <flux AT sourcemage.org>

config: correct a typo/misnaming

Had "PACKAGE" in the variable definition when it should have been "PKG",
making it disregard any current setting of the variable and always
taking the default value. Corrected to "PKG", so now it properly
respects existing/current values.

commit 1ba3549bea273ba1bff557ab53e9937f36a2e6ca
Author: Justin Boffemmyer <flux AT sourcemage.org>
Commit: Justin Boffemmyer <flux AT sourcemage.org>

renmae TODO to ROADMAP

Now that TODO is more organized and resembles a planned roadmap of when
and what will be implemented, name it as such.

commit 8cee70b645d98dc70860edb94344bfd997bbb0c8
Author: Justin Boffemmyer <flux AT sourcemage.org>
Commit: Justin Boffemmyer <flux AT sourcemage.org>

TODO: improve organization and prioritization

The previous TODO looked more like a brain dump of features planned for,
rather than actual specific planning. The implementation goals have now
been organized as release points/milestones, and are clearly separated
in terms of priority (which can always be reorganized/argued about
later).

commit 970949e19fa19af1d5c5a46efde9ba5a5a60bd02
Author: Justin Boffemmyer <flux AT sourcemage.org>
Commit: Justin Boffemmyer <flux AT sourcemage.org>

cauldron: preserve attributes when copying inittab

When we copy inittab into the init system, make sure we retain file
attributes in the new copy.

commit f96fbd2ba3172a35aceab446ab7032c334401139
Author: Justin Boffemmyer <flux AT sourcemage.org>
Commit: Justin Boffemmyer <flux AT sourcemage.org>

cauldron: config: non-recursive attribute copy

Define a copy command for preserving attributes while copying a file,
but without recursively copying the directories it was found in (which
CAULDRON_CMD_CP_EXACT does).

diff --git a/ROADMAP b/ROADMAP
new file mode 100644
index 0000000..b0a6973
--- /dev/null
+++ b/ROADMAP
@@ -0,0 +1,106 @@
+==============
+-- 0.1 --
+==============
+ - cauldron -
+* finish writing the cauldron script so it actually does the steps needed
+ - initialize build dirs using libcauldron
+ - setup sorcery in build chroot (ARCHIVE=on, etc.) via libcauldron and
+ lib.sorcerous
+ - process the stages of ISO creation via cauldron libs
+ - extra sanity checks on boot and etc in chroot (add_sauce stuff for
+ those familiar with the 0.10 series)
+ o this should be done via ward and liberror
+ - finalize and package the ISO using cauldron libs
+ - cleanup build dirs via libcauldron
+* create a man page for the cauldron command explaining how to use it and
what
+ files/env vars it uses
+* finalize code to set up the init process on the ISO (lib.init)
+ - this may need to be sensitive to what installers are present
+
+ - enchantment -
+* finalize the shell installer (trivial -- mostly done):
+ o implement the hooks to use lib.potion
+
+ - general -
+* LOTS AND LOTS OF TESTING!
+
+==============
+-- 0.2 --
+==============
+ - general -
+* More sanity checks and error testing (use liberror!)
+ - currently errors are emitted, but they aren't yet really handled -
we
+ want them handled at higher levels, because how an error is
displayed
+ to the user will partly depend on what installer they are currently
+ using, but we shouldn't really "ignore" the errors at the lower
+ levels either
+ - we need to determine at what levels which errors are really fatal,
+ which errors are warnings, and which errors are more informational
+ debug messages - once we determine all this we can start properly
+ handling, passing, or ignoring errors
+
+==============
+-- 0.3 --
+==============
+ - cauldron -
+* add optional feature to either cast from scratch for the iso/system or pick
+ up where we left off from a previous run (in case of failed spells)
+ - automatic inter-dependency resolution for the different stages of
the
+ ISO generation
+
+ - enchantment -
+* implement tab completion specific for the enchantment commands/subcommands
+ (no need for a full-blown bash-completion installation, which would add
+ bloat; implementing tab completion only for the installer would be pretty
+ small and fast)
+
+==============
+-- 0.4 --
+==============
+ - general -
+* i18n
+ - translate error messages, instructions, etc. and implement an
+ easy way of calling them based on what language is selected
+ ($ENCHANT_LANGUAGE in the config file, plus either a file
+ suffix (errorcodes.en) or a separate dir (en/errorcodes) for
+ each language supported) - the framework is mostly in place,
+ now we need translators
+ - display (fonts): fbterm + fontconfig + freetype2
+ > might be too big due to the size of the fonts, but no
+ other way to really have an internationalized ISO -
+ maybe have both a "core" ISO that lacks true i18n and
+ a full i18n ISO as official
+ - input: uim (uim-fep) + m17n-lib + m17n-db
+ > only useful if display is also in place
+
+ - enchantment -
+* net install (tftp, ssh, etc.?) called "voodoo"
+
+
+==============
+-- 0.5 --
+==============
+ - enchantment -
+* alternative installer interfaces
+ - menu installer
+ o needs to be implemented via a good abstracted API or not at
+ all - maintaining a mess of dialog calls with it's plethora
+ of command-line option requirements is a nightmare
+ - web installer (html)
+ - X installer? (xdirectfb?)
+
+
+==============
+-- 0.6 --
+==============
+- cauldron -
+* "possess" command for taking possession of a machine under another
+ distro (don't generate install media, since the host system itself will be
+ the install media)
+
+==============
+-- 1.0 --
+==============
+* No (known) bugs
+* ???
+
diff --git a/TODO b/TODO
deleted file mode 100644
index 4d247a7..0000000
--- a/TODO
+++ /dev/null
@@ -1,81 +0,0 @@
-====================================
-Things to do in order to achieve 0.1
-====================================
-
--------------------
--- cauldron --
--------------------
-* finish writing the cauldron script so it actually does the steps needed
- - setup sorcery in build chroot (ARCHIVE=on, etc.)
- - extra sanity checks on boot and etc in chroot (add_sauce stuff for
- those familiar with the 0.10 series)
- o this should be done in ward and liberror
-* write code to set up the init process on the ISO
- - this may need to be sensitive to what installers are present
-* add optional feature to either cast from scratch for the iso/system or pick
- up where we left off from a previous run (in case of failed spells)
- - automatic inter-dependency resolution for the different stages of
the
- ISO generation
-* create a man page for the cauldron command explaining how to use it and
what
- files it uses
-
--------------------
--- enchantment --
--------------------
-* still need the installers themselves to be written
- - for the shell installer, this is trivial (mostly done)
- o implement the hooks to use lib.potion
- o implement tab completion specific for the installer commands
- (no need for a full-blown bash-completion installation,
which
- would add bloat; implementing tab completion only for the
- installer would be pretty small and fast) - see 1.0 below
- - the menu installer needs to be written
- ~ Not sure if this should really be for 0.1, but a lot of
- people have asked for it already.
- o needs to be implemented via a good abstracted API or not at
- all - maintaining a mess of dialog calls with it's plethora
- of command-line option requirements is a nightmare
- - i18n
- o translate error messages, instructions, etc. and implement
an
- easy way of calling them based on what language is selected
- ($ENCHANT_LANGUAGE in the config file, plus either a file
- suffix (errorcodes.en) or a separate dir (en/errorcodes) for
- each language supported) - the framework is mostly in place,
- now we need translators
- o display (fonts): fbterm + fontconfig + freetype2
- > might be too big due to the size of the fonts, but
no
- other way to really have an internationalized ISO -
- maybe have both a "core" ISO that lacks true i18n
and
- a full i18n ISO as official
- o input: uim (uim-fep) + m17n-lib + m17n-db
- > only useful if display is also in place
-
--------------------
--- general --
--------------------
-* LOTS AND LOTS OF TESTING!
-* More sanity checks and error testing (use liberror!)
- - this is done, but could be more complete
- - currently errors are emitted, but they aren't yet really handled -
we
- want them handled at higher levels, because how an error is
displayed
- to the user will partly depend on what installer they are currently
- using, but we shouldn't really "ignore" the errors at the lower
- levels either
- - we need to determine at what levels which errors are really fatal,
- which errors are warnings, and which errors are more informational
- debug messages - once we determine all this we can start properly
- handling, passing, or ignoring errors
-
-===============================
-Things to do for 1.0 (or later)
-===============================
-
-* No (known) bugs
-* cauldron "possess" command for taking possession of a machine under another
- distro (don't generate install media, since the host system itself will be
- the install media)
-* simple tab-completion for enchantment (CLI) and all its subcommands?
-* web installer (html), X installer? (xdirectfb?)
-* net install (tftp, ssh, etc.?) called "voodoo"
-* ???
-
diff --git a/cauldron/data/config/commands.conf
b/cauldron/data/config/commands.conf
index be78ae5..866b3db 100644
--- a/cauldron/data/config/commands.conf
+++ b/cauldron/data/config/commands.conf
@@ -128,7 +128,14 @@
-f
)

-# command to copy recursively, preserving as much information as possible
+# command to copy while preserving mode, ownership, and timestamps
+[[ -n "${CAULDRON_CMD_CP_PRESERVE[@]}" ]] ||
+ CAULDRON_CMD_CP_PRESERVE=(
+ "${CAULDRON_CMD_CP[@]}"
+ -a
+ )
+
+# command to copy recursively, preserving mode, ownership, and timestamps
[[ -n "${CAULDRON_CMD_CP_EXACT[@]}" ]] ||
CAULDRON_CMD_CP_EXACT=(
"${CAULDRON_CMD_CP[@]}"
diff --git a/cauldron/data/config/sorcery.conf
b/cauldron/data/config/sorcery.conf
index ea2f7bd..e7db348 100644
--- a/cauldron/data/config/sorcery.conf
+++ b/cauldron/data/config/sorcery.conf
@@ -8,7 +8,7 @@ CAULDRON_SORCERY_BRANCH="${CAULDRON_SORCERY_BRANCH:-stable}"
CAULDRON_FORCE_DOWNLOAD="${CAULDRON_FORCE_DOWNLOAD:-yes}"

# branch of sorcery to use in the ISO
-CAULDRON_SORCERY_PKG="${CAULDRON_SORCERY_PACKAGE:-sorcery-${CAULDRON_SORCERY_BRANCH}.tar.bz2}"
+CAULDRON_SORCERY_PKG="${CAULDRON_SORCERY_PKG:-sorcery-${CAULDRON_SORCERY_BRANCH}.tar.bz2}"

# URL to download sorcery from

CAULDRON_SORCERY_URL="${CAULDRON_SORCERY_URL:-http://download.sourcemage.org/sorcery/$CAULDRON_SORCERY_PKG}";
diff --git a/cauldron/lib/lib.chroot b/cauldron/lib/lib.chroot
index 2336bb4..6102d5a 100644
--- a/cauldron/lib/lib.chroot
+++ b/cauldron/lib/lib.chroot
@@ -81,7 +81,7 @@ function cauldron_chroot_init() {
then
# make sure the sorcerous library is loaded
# which provides cauldron_source_sorcery
- if [[ -z cauldron_source_sorcery ]]
+ if ! type -t cauldron_source_sorcery > "$CAULDRON_NULL"
then
cauldron_load_library lib.sorcerous
fi
diff --git a/cauldron/lib/lib.init b/cauldron/lib/lib.init
index c1de0ed..888d23e 100644
--- a/cauldron/lib/lib.init
+++ b/cauldron/lib/lib.init
@@ -27,7 +27,7 @@
function cauldron_init_setup() {
mkdir -p "$CAULDRON_ISO/etc" || return $ERR_MK_DIR

- "${CAULDRON_CMD_CP[@]}" \
+ "${CAULDRON_CMD_CP_PRESERVE[@]}" \
"$CAULDRON_DATA/$CAULDRON_ARCH/inittab" \
"$CAULDRON_ISO/etc/inittab" ||
return $ERR_CP_FILE
diff --git a/cauldron/lib/lib.sorcerous b/cauldron/lib/lib.sorcerous
index 7e36e4f..a8af267 100644
--- a/cauldron/lib/lib.sorcerous
+++ b/cauldron/lib/lib.sorcerous
@@ -141,7 +141,7 @@ function cauldron_sorcerous_install() {
return $ERR_SORCEROUS_UNPACK

# make sure the chroot library is loaded so cauldron_chroot is available
- if [[ -z cauldron_chroot ]]
+ if ! type -t cauldron_chroot > "$CAULDRON_NULL"
then
cauldron_load_library lib.chroot
fi
diff --git a/cauldron/lib/libcauldron b/cauldron/lib/libcauldron
index e269678..24523de 100644
--- a/cauldron/lib/libcauldron
+++ b/cauldron/lib/libcauldron
@@ -249,7 +249,7 @@ function cauldron_prepare() {
cauldron_chroot_init || return $?

# install sorcery into the build dir
- if [[ -z cauldron_sorcerous_install ]]
+ if ! type -t cauldron_sorcerous_install > "$CAULDRON_NULL"
then
cauldron_load_library lib.sorcerous
fi



  • [SM-Commit] GIT changes to master cauldron by Justin Boffemmyer (4cd4e25ba6c9cd8f449d6f1d1f1199eae55181b3), Justin Boffemmyer, 05/19/2012

Archive powered by MHonArc 2.6.24.

Top of Page