summaryrefslogtreecommitdiffstats
path: root/encap/HOWTO
diff options
context:
space:
mode:
Diffstat (limited to 'encap/HOWTO')
-rw-r--r--encap/HOWTO177
1 files changed, 177 insertions, 0 deletions
diff --git a/encap/HOWTO b/encap/HOWTO
new file mode 100644
index 000000000..488639c7f
--- /dev/null
+++ b/encap/HOWTO
@@ -0,0 +1,177 @@
+= Encap based bootstrap for bcfg2 and complete bcfg2 client toolchain =
+
+This bootstrap code is a method for getting bcfg2 (as a client),
+including all dependencies, up and running on a new platform as
+quickly as possible (from source).
+
+The latest version of this document is always available from:
+ * http://trac.mcs.anl.gov/projects/bcfg2/browser/trunk/bcfg2/encap/README
+
+For a more general overview of what this is, see:
+ * http://trac.mcs.anl.gov/projects/bcfg2/wiki/EncapPackages
+
+You can view this document with glorious Trac Wiki formatting at:
+ * http://trac.mcs.anl.gov/projects/bcfg2/wiki/EncapHowto
+ (Although that version may be out of date)
+
+You can obtain the latest version of the code from bcfg2 svn:
+ * `svn co https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2/encap`
+
+Or browse the latest version on the web via:
+ * http://trac.mcs.anl.gov/projects/bcfg2/browser/trunk/bcfg2/encap
+
+Using the encap package manager it automatically downloads, builds and
+creates encap packages for bcfg2 and dependencies to `/usr/local/encap`, and
+installs symbolic links to these packages from `/usr/local` (the usual encap
+thing).
+
+It attempts to be as self contained as possible; everything gets linked to
+under `/usr/local/lib/bcfg2`, except for bcfg2 itself and some dependent
+software, which is prefixed by `b2-` (`b2-openssl`, `b2-python` etc.).
+
+To run the bcfg2 server, you also need to install gamin, which
+supports a subset of the platforms bcfg2 client will work on, including
+GNU/Linux and FreeBSD.
+
+When using this packaging, `/etc/bcfg2.conf` is instead
+`/usr/local/etc/bcfg2.conf`.
+
+This should be considered an alpha version. Everything compiles and seems to
+work, but it has not yet been tested with a working bcfg2 repository.
+
+== Building and installing everything ==
+ 1. Make sure all of the Prerequisites (see below) are installed.
+ 1. The build user needs write access to the encap source and build
+ directories. By default, these are `/usr/local/encap` and
+ `/usr/local/src`. If you like to live dangerously, you can also just do
+ the builds as `root`.
+ 1. Run `make`. This will kick off and background the entire build process.
+ Make output will be redirected to `make.log`, and package build output
+ will go to individual log files.
+ 1. If everything goes well, try running "`bcfg2-repo-validate`". This should
+ not generate a python traceback :-)
+ 1. You now have *-encap-*.tar.gz encap packages you can distribute to other
+ machines. If you don't like the OS name encap uses automatically (esp.
+ on GNU/Linux these can be too generic), do `make rename OS=somestring`.
+
+== Prerequisites ==
+ * GNU gcc and GNU g++
+ * If you are using the gcc distributed with Solaris/x86 10, you need to
+ install the gcc bugfix at http://www.openssl.org/~appro/values.c by
+ running "ksh -f values.c" as root (or openssl will segfault)
+ * GNU make (make sure "gmake" links to GNU make on non-GNU platforms)
+ * /usr/local/man should be a directory, not a symbolic link
+ * epkg (the encap package manager)
+ * Canonical website is http://www.encap.org/epkg
+ * Mirror of epkg binaries is available at http://www.dclark.us/mirror/
+ * If built from source, first need all recommended libraries from web page
+
+You will need binaries of the GNU tools. For GNU and BSD based operating
+systems, you should be able to get these via the operating system's package
+system. For commercial operating systems, these can be obtained from:
+
+ AIX::
+ * UCLA's Public Domain Software Library for AIX at
+ http://aixpdslib.seas.ucla.edu/aixpdslib.html
+ (These are trivial to convert into encap packages)
+ * Bull AIX Freeware at http://www.bullfreeware.com/
+
+ Solaris::
+ * Freeware for Solaris at http://www.sunfreeware.com/
+ * Community Software for Solaris at http://www.blastwave.org/packages.php
+
+== Supported Platforms ==
+Below is a table of platforms that have been successfully bootstrapped using
+this code.
+
+|| OS || Vendor || Version || Arch || GCC || By || With VERSION ||
+|| AIX || IBM || 5.3 || POWER || 4.1.0 || dc || 0.7/0.8.2 ||
+|| GNU/Linux || Debian || Sarge || i386 || 3.3.5 || dc || 0.7/0.8.2 ||
+|| GNU/Linux || Debian || Sid || i386 || 4.1.2 || dc || 0.8/0.8.2 ||
+|| Solaris || Sun || 10 || Sparc || 3.4.3 || dc || 0.7/0.8.2 ||
+|| Solaris || Sun || 10 || i386 || 3.4.3 || dc || 0.7/0.8.2 ||
+
+dc: "Daniel Clark" <mailto:dclark@member.fsf.org>
+
+If you bootstrap a platform not listed above, please add a comment to:
+ * http://trac.mcs.anl.gov/projects/bcfg2/ticket/74
+so that platform can be added to the list.
+
+If you modified any of the files in this package to be able to bootstrap the
+new platform, please include either diffs or a tarball of your modified
+version in a new ticket so your changes can be incorporated into a new
+release.
+
+Any other notes, such as where you got the GNU binaries or any issues people
+should be aware of, would also be appreciated.
+
+You may want to scan all of the bootstrapped binaries and libraries with
+`ldd` (or equivalent) to make sure there are no dependencies on libraries
+other than those included with the base operating system and the libraries
+built as part of the bootstrap process.
+
+On non-GNU operating systems, libgcc and libstdc++ are a run-time
+requirement. These libraries are usually distributed with gcc/g++, so the
+bootstrap system attempts to create encap packages containing those
+libraries by copying them from the build machine. To test that this worked,
+you'll want to either temporarily remove gcc/g++ from the build machine and
+make sure everything still works, or install the bcfg2-*.tar.gz encap
+packages on a "clean" machine (without a gcc/g++ install) and test on that
+machine.
+
+Note that the doc for the encap profile format is in "man 5 encap_profile".
+
+== Release Notes ==
+ 0.1::
+ * Initial Released Version
+ * Work needs to be done to minimize size of distribution. In 0.1
+ libraries and binaries are not stripped, and there is a lot of
+ pruning that can be done of individual packages.
+
+ 0.2::
+ * Updated bcfg2 to 0.8.2pre7
+ * Updated README to point to mcs.anl.gov resources
+
+ 0.3::
+ * Updated bcfg2 to 0.8.2pre10
+
+ 0.4::
+ * Versions before this version won't work without manually fixing paths
+ * Added patches so paths actually exist, specifically:
+ * bcfg2.conf default location is /usr/local/etc
+ * epkg/encap paths changed to encap default /usr/local paths
+ * schema prefix patch (changeset 1953) applied
+ * default schema prefix changed to /usr/local/lib/bcfg2
+ * Added mirror of all packages downloaded by the profiles at
+ http://www.pobox.com/users/dclark/mirror and made mirror default for
+ those downloads
+ * Set up automatic hourly mirror of bcfg2 ftp site *.tar.gz files
+ * Mirror of other packages is manual (but deps shouldn't change often)
+
+ 0.5::
+ * Removed external download of patches as that was not working consistently;
+ replaced with patches inline the bcfg2 encap profile (.ep file)
+ * Added GNU patch dependency, both for bcfg2 patches and call from Cfg.py
+ * Fixed bcfg-repo-validate so it can find xmllint (as b2-xmllint)
+
+ 0.6::
+ * Updated bcfg2 to 0.8.2 (released version)
+ * Removed r1953 patch from bcfg2 profile, since that is included in 0.8.2
+ * Added alpha version warning
+
+ 0.7::
+ * Added Solaris support
+
+ 0.8::
+ * Added python code to fix paths; removed inline patch & GNU patch dependency
+ * Path change happens as part of install, logged to postinstall.log
+ * Changed prefix from b2 to b2- to disambiguate from system commands
+ * Fixes to make man pages easier to access
+ * Install tools as b2-example-tools-*
+ * Added some auxiliary tools under tools/ directory
+ * daemontools - cross-platform alternative to init scripts/cron
+ * ostiary - simple/secure daemon for kicking off a local script
+ * epkg Makefile - to build epkg when prebuilt binaries aren't available
+
+== Documentation Version ==
+$Id$