|
From: Friedrich L. <fl...@fl...> - 2001-09-15 00:09:33
|
Hi!
I'm suggesting to use a build systen that has the following layout
in the LFS system:
/devil-build
/scripts
base
...
freeswan
/build
00_base -> ../base
....
15_freeswan -> ../freeswan
/install
00_base -> ../base
..
15_freeswan -> ../freeswan
/src
/adsl ... sources of specific packages
/freeswan
/iso
(-> ... symlink)
Scripts would be called with the commandline options build and install
respectively.
Comments?
--
MfG / Regards
Friedrich Lobenstock
|
|
From: Heiko Z. <he...@zu...> - 2001-09-15 00:50:31
|
Looks good for me, as discussed ;-) |
|
From: Friedrich L. <fl...@fl...> - 2001-09-16 20:14:17
|
Hi!
After some discussion with Heiko over ICQ I see that first there's need for
an in-deeper description. Second I have to make some corrections because we
can not check links into the CVS.
I'd use the following filesystem hierarchy (in the LFS-system):
/build
/build/scripts ..... directory for the various scripts
/build/scripts/build ... the build script that controlls all operations
/build/scripts/create_cd_dirs ... the scripts
/build/scripts/unpack-src
/build/scripts/update-lfs
/build/scripts/openssl-0.9.6b ... eg. compile/install openssl
/build/scripts/...
/build/scripts/functions ... common functions for all scripts
/build/scripts/settings ... common settings for all scripts
/build/scripts/...
/build/scripts/.config ... the result of configuring
/build/scripts/config ... configuration files for scripts have their own config files
/build/scripts/config/config_kernel
/build/scripts/config/config_tinylogin-0.60.1
/build/scripts/config/... ... each package that is optional has a file here
/build/scripts/config/package_squid that tells the build process if this packages
/build/scripts/config/... should be added to the CD
/build/scripts/copy_base
/build/scripts/copy_libs
/build/scripts/build ..... (simulated) symlinks for build/compile process
/build/scripts/build/001unpack-src .. file containing at least one char (symlink simulation!)
/build/scripts/build/... format of filename: [0-9]{3}NAME-OF-SCRIPT
/build/scripts/build/100openssl-0.9.6b the number assures that the a scripts are
/build/scripts/build/... called in the correct order
/build/scripts/build/...
/build/scripts/install ..... (simulated) symlinks for install process
/build/scripts/install/001create_cd_dirs
/build/scripts/install/...
/build/scripts/install/100openssl-0.9.6b
/build/scripts/install/
/build/scripts/install/
/build/src/ ..... source for all packages (incl. optional)
/build/src/gmp-3.1.1.tar.gz
/build/src/modutils-2.4.8.tar.bz2
/build/src/beep-1.2.1.tar.gz
/build/src/iptables-1.2.3.tar.bz2
/build/src/libol-0.2.23.tar.gz
/build/src/zlib-1.1.3.tar.gz
/build/src/busybox-0.60.1.tar.gz
/build/src/linux-2.4.9.tar.bz2
/build/src/openssl-0.9.6b.tar.gz
/build/src/hdparm-4.1.tar.gz
/build/src/cdrecord-1.9.tar.gz
/build/src/tinylogin-0.80.tar.gz
/build/src/...
/build/dist/ ..... the final output
/build/dist/boot-cd-0.5b1.iso
/build/dist/etc.tar.gz
/build/tmp/ ..... where all the compiling and preparing is done
/build/tmp/ISO/ ... the preparations for the boot cd are made here
Now that the layout of the tree should be clear I want to explain
the function of the scripts under /build/scripts:
* select optional packages
build config
* one starts the build process with
build build
* afterwards the CD is created with
build install
* do some housework and clean up behind us:
build clean
build config:
*************
1) read directory listing /build/scripts/config/package_*
2) read file .config
3) move .config to .config.old and create empty .config
4) cycle through all scripts
4.1) displaying the user the contents of DESCRIPTION for package_xyz
4.2) user decideds yes or no (defaults to yes if variable PACKAGE_xyz == "y")
4.3) append PACKAGE_xyz=y to .config if users decision was yes
(see below for file formats)
build build:
************
1) read directory listing from /build/scripts/build/
2) execute all scripts in /build/scripts that have a corresponding
file in /build/scripts/build/ following the order in /build/scripts/build/
with the command line option $1="build"
ALSO a check for a corresponding file in /build/scripts/config/ is done.
If this file exists and OPTIONAL == "yes" then check if PACKAGE_xyz == y
build install:
**************
same as the option "build", only this time the directory /build/scripts/install/
is checked instead of /build/scripts/build/
The build script understands the command -f to specify another configfile instead
of the default .config
--- FILE-FORMATS --
format of files /build/scripts/config/package_*:
***********************************************
OPTIONAL="yes"
DESCRIPTION="Squid the standard in web-proxying. This implies that your \
firewall has a harddisk installed, where squid can put its cache."
format of file /build/scripts/.config (same format as /usr/src/linux/.config):
*******************************************************************************
PACKAGE_squid=y
PACKAGE_ftp-proxy=y
# PACKAGE_icq-proxy is not set
PACKAGE_amavis="yes"
--
MfG / Regards
Friedrich Lobenstockkk
|