last 0.3 fixes
authorhackbard <hackbard>
Sat, 31 Jul 2004 11:20:59 +0000 (11:20 +0000)
committerhackbard <hackbard>
Sat, 31 Jul 2004 11:20:59 +0000 (11:20 +0000)
Config
doc/CHANGELOG
doc/FAI
doc/INSTALL
doc/README
misc/hdw-tools/hdw-get [new file with mode: 0644]

diff --git a/Config b/Config
index c548bed..261c813 100644 (file)
--- a/Config
+++ b/Config
@@ -7,7 +7,7 @@
 
 # start
 
 
 # start
 
-export hdw_version="cvs"       # version of hdw-linux
+export hdw_version="0.3"       # version of hdw-linux
 
 export hdw_target="default"    # which target to build 
                                # currently:    
 
 export hdw_target="default"    # which target to build 
                                # currently:    
@@ -28,7 +28,7 @@ export hdw_arch="ia32"                # which architecture to build for
                                #               sparc64 - 64bit sparc
                                #               ppc     - powerpc's
        
                                #               sparc64 - 64bit sparc
                                #               ppc     - powerpc's
        
-export hdw_arch_opt=""         # choose optimization
+export hdw_arch_opt="i686"             # choose optimization
                                # currently:    ia32    : i[3-6]86
                                #               sparc64 : sparc_v9
                                #               sparc   : sparc_v[7-8]
                                # currently:    ia32    : i[3-6]86
                                #               sparc64 : sparc_v9
                                #               sparc   : sparc_v[7-8]
index 84d9ebf..22676bb 100644 (file)
@@ -1,3 +1,14 @@
+*) 2004-07-31
+
+## last 0.3 fixes ##
+
+- updated doc/README
+- default optimization i686
+- Config -> version 0.3
+- final hdw-get fixes / changed modes -> 750
+- adapted INSTALL file
+- small updates to FAI file
+
 *) 2004-07-28
 
 - turned to cvs development version again
 *) 2004-07-28
 
 - turned to cvs development version again
diff --git a/doc/FAI b/doc/FAI
index 9a36c49..9f65bcf 100644 (file)
--- a/doc/FAI
+++ b/doc/FAI
@@ -14,3 +14,22 @@ files:
 ./doc/FAI
 
 [not finished yet]
 ./doc/FAI
 
 [not finished yet]
+
+procedure
+---------
+
+       1) install mnimal nfsroot binaries
+          (as described in INSTALL chapter 2.)
+
+               vi Config [enter default as a target, specify arch*]
+
+       note: default target is enough. you dont need to specify fai-server.
+             we are just going to install the nfsroot which will automate
+             the install process. fai-server is actually the target you will
+             need as a running system to have pxeboot/nfsutils and stuff.
+
+               ./scripts/Helper -create_dist_files
+               ./misc/hdw-tools/hdw-get dist-install /mnt/fai-root \
+                       ./distro/default
+
+       [to be continued]
index 082aad6..c8c30d2 100644 (file)
@@ -86,7 +86,7 @@ in the ./misc/hdw-tools directory.
        EOF
 
        ./scripts/Helper -create_dist_file
        EOF
 
        ./scripts/Helper -create_dist_file
-       . misc/hdw-tools/hdw-get dist-install /mnt/hdw-target \
+       ./misc/hdw-tools/hdw-get dist-install /mnt/hdw-target \
                                                ./distro/<target name>
 
        you may edit the distribution file, hdw-get should actually warn you
                                                ./distro/<target name>
 
        you may edit the distribution file, hdw-get should actually warn you
index 31b487a..77a1fec 100644 (file)
@@ -1,71 +1,58 @@
-
-Welcome to hdw - linux
+welcome to hdw - linux
 ----------------------
 
 ----------------------
 
-HDW - Linux is not just another Linux distribution, it is a Distribution 
-Building Tool, made of some powerfull scripts that make the whole 
-download, build and install procedures very simple... even for newbies.
-Base packages are specially focused on networking, security and development 
-which is really convinient for intermidiate / advanced users, but without 
-forgetting about packages like XFree86, games, multimedia and office, so 
-it's a distribution for Users and Administrators :)
-
-Files in doc/ directory.
-------------------------
-
-README                 - explains some general things and how to obtain the sources
+hdw-linux is mainly a collection of shell scripts automating the process of 
+building a linux distribution from scratch. after setting up an appropriate 
+toolchain a minimal bases system is build. in case of not crosscompiling target
+specific software is rebuild by doing a chroot to the prepared base system.
+
+additionaly the scripts may help building packages on your working system. file
+and dependency lists are generated after each build. this allows easy and clean
+removement of installed software also caring for dependencies. the tool used for
+that is called hdw-get which aims to be a simple packet manager of the hdw 
+distributions.
+
+the intention is to get a scaleable build system and to provide a toolkit
+especially for developing on embedded/foreign - architecture systems. to put it
+in a nutshell, hdw is a 'build from scratch' distribution. as i started my linux
+experiences trying to automate lfs running aross rocklinux (one of the best
+dsitro and 'hacker/s' i ever met) be prepared to hit a mixture of the lfs build
+methods and a rock-like script structure (though not far as advanced as
+rocklinux).
+
+files in doc/ directory
+-----------------------
+
+README                 - this file
 BUILD          - instructions how to build hdw-linux (you want to read this!)
 BUILD          - instructions how to build hdw-linux (you want to read this!)
+INSTALL                - instructions how to install hdw-linux (read this one too!)
 TODO           - developer's todo list
 CHANGELOG      - changes made to the hdw-linux tree
 Developers     - file keeping all the hdw-linux developers
 VERSION                - containing the current version number
 License                - the GPL -- GNU Public License
 TODO           - developer's todo list
 CHANGELOG      - changes made to the hdw-linux tree
 Developers     - file keeping all the hdw-linux developers
 VERSION                - containing the current version number
 License                - the GPL -- GNU Public License
+CROSSBUILD     - some instructions on crossbuilding hdw-linux
+FAI            - instructions how to set up an fully automated instll server
 
 
-Getting hdw - linux
+getting hdw - linux
 -------------------
 
 -------------------
 
-To get the hdw-linux sources you have two ways:
-
-- Download it from our website:
-
-http://hackdaworld.dyndns.org
-
-Stable tree: 
-
-The tarballs:
-http://www.hackdaworld.dyndns.org/download/hdw-linux/hdw-linux-0.2/snapshots/
-
-Get it using cvs:
-cvs -d :pserver:anonymous@hackdaworld.dyndns.org:/hdw-linux login
-cvs -d :pserver:anonymous@hackdaworld.dyndns.org:/hdw-linux co hdw-linux-0.2
+have a look at:
+http://www.hackdaworld.dyndns.org/hdw-linux/
 
 
-Development tree:
-
-The tarballs:
-http://www.hackdaworld.dyndns.org/download/hdw-linux/hdw-linux-0.3-dev/snapshots/
-
-Get it using cvs:
-cvs -d :pserver:anonymous@hackdaworld.dyndns.org:/hdw-linux login
-cvs -d :pserver:anonymous@hackdaworld.dyndns.org:/hdw-linux co hdw-linux-0.3-dev
-
-You may also fetch the sources from a mirror:
-
-<we would apreciate some :)>
-
-If you want to add a mirror, please send an email to mike@hackdaworld.dyndns.org or hackbard@hackdaworld.dyndns.org.
-
-hdw - linux Community
+hdw - linux community
 ---------------------
 
 ---------------------
 
-We have an IRC server, so you can join our channel and get help online, or just talk with other users.
+there is an irc server, so you can join our channel and get help online, or 
+just talk with other users.
 
 
-irc server: hackdaworld.dyndns.org
+irc server: irc.hackdaworld.dyndns.org
 channel: #hackdaworld
 
 channel: #hackdaworld
 
-Also we have a mailing list, to join it, send an email to 
-minimalist@hackdaworld.dyndns.org with the Subject: subscribe hackdaworld
-
-We hope to hear from you soon.
+there is a mailing list, join it sending an email to 
+minimalist@hackdaworld.dyndns.org
+with the subject: subscribe hackdaworld
 
 
-hdw - linux Staff
 
 
+regards,
+hdw - linux staff
diff --git a/misc/hdw-tools/hdw-get b/misc/hdw-tools/hdw-get
new file mode 100644 (file)
index 0000000..6c9987c
--- /dev/null
@@ -0,0 +1,246 @@
+#!/bin/sh
+#
+# author: hackbard@hackdaworld.dyndns.org
+#
+# hdw-tools: 
+# this is hdw-get script, used to install/remove/(update) binary packages
+# 
+
+usage()        {
+       echo
+       echo "usage:"
+       echo "$0 [install/remove] [root] [package]"
+       echo "$0 [dist-install] [root] [dist file]"
+       echo
+       echo "options:"
+       echo "-v        tell me whats going on"
+       echo "-a        auto resolve deps, do not prompt user"
+       echo "-no-dep   do not care for dependencies (used by hdw-get itself)"
+       echo
+}
+
+package="" ; inst_root=""
+d_install="" ; install=""
+verbose="" ; no_dep=""
+auto_resolve_deps=""
+
+while [ "$1" ] ; do
+       case "$1" in
+               install)        install="1" 
+                               inst_root="$2" ; package="$3" ; shift 3 ;;
+               remove)         remove="1" 
+                               inst_root="$2" ; package="$3" ; shift 3 ;;
+               dist-install)   d_install="1"  ; package="fake"
+                               inst_root="$2" ; dist_file="$3" ; shift 3 ;;
+               -v)             verbose=1 ; shift 1 ;;
+               -a)             auto_resolve_deps="1" ; shift 1 ;;
+               -no-dep)        no_dep="1" ; shift 1 ;;
+               *)              usage ; exit 1 ;;
+       esac
+done
+                       
+if [ -z "inst_root" -o -z "$package" ] ; then
+       usage ; exit 1
+fi
+       
+# read hdw-get configs
+net_addr="" ; bin_dir="" ; distf_dir=""
+if [ -f /etc/hdw-get.conf ] ; then
+       . /etc/hdw-get.conf
+       if [ -z "$hdw_version" -o -z "$hdw_arch" -o -z "$hdw_arch_opt" ] ; then
+               echo "version, arch and arch_opt need to be specified."
+               echo "adjust /etc/hdw-get.conf file"
+               exit
+       else
+               [ "$verbose" ] && echo "hdw-get.conf file looks good ..."
+       fi
+else
+       echo "/etc/hdw-get.conf file not found, aborting"
+       exit 1
+fi
+
+# create temp directory
+mkdir -p /tmp/.hdw-get
+
+# remove
+if [ "$remove" = "1" ] ; then
+       # looking for flist file
+       fl_pris=""
+       for fl_file in $inst_root/var/adm/flists/$package-[0-9]*; do
+               fl_pris="`echo $fl_file | awk -F- '{ print $NF }'` $fl_pris"
+       done
+       fl_max="0"
+       for pri in $fl_pris; do
+               if [ "$pri" = "x" ] ; then
+                       fl_max="x"
+                       break
+               fi
+               [ "$pri" -gt "$fl_max" ] && fl_max=$pri
+       done
+       fl_file="$inst_root/var/adm/flists/$package-$fl_max"
+       [ "$verbose" ] && echo "expecting flist file $fl_file"
+       if [ ! -f $fl_file ] ; then
+               echo "package $apckage is not installed (moved the flist file?)"
+               exit 1
+       fi
+
+       # care about info/dir file
+       rm -f /tmp/.hdw-get/dir* ; modify_info_dir=""
+       if [ -n "`grep usr/share/info/dir $fl_file`" ] ; then
+       modify_info_dir="1"
+       cp $inst_root/usr/share/info/dir /tmp/.hdw-get/
+       for info_obj in `grep 'usr/share/info/.*.info' $fl_file | \
+                        awk -F/ '{ print $4 }'`; do
+               info_o=`echo $info_obj | sed 's/.info//'`
+               [ "$verbose" ] && echo "deleting $info_o from info/dir"
+               grep -v \($info_o\)\. /tmp/.hdw-get/dir | \
+               grep -v ^$package\ info\ -\ added\ by\ hdw > \
+               /tmp/.hdw-get/dir~
+               mv /tmp/.hdw-get/dir~ /tmp/.hdw-get/dir
+       done
+       fi
+
+       # remove the files/dirs
+       ((supposed = 0))
+       ((counter = 0))
+       cat $fl_file | while read pkg file; do
+               ((supposed += 1))
+               if [ -e $inst_root/$file ] ; then
+                       if [ "$file" != "tmp" ] ; then
+                       if [ -d $inst_root/$file ] ; then
+                               rmdir -p $inst_root/$file > /dev/null 2>&1
+                       else
+                               rm -f $inst_root/$file > /dev/null 2>&1
+                               rmdir -p `dirname $file` > /dev/null 2>&1
+                       fi
+                       ((counter += 1))
+                       fi
+               fi
+               echo -en "\rremoved $counter from $supposed supposed files"
+       done
+       echo -en "\ndone.\n"
+
+       # reinstall info/dir file
+       if [ "$modify_info_dir" ] ; then
+               [ "$verbose" ] && echo "restoring modified info/dir file"
+               cp /tmp/.hdw-get/dir $inst_root/usr/share/info/dir
+               rm -f /tmp/.hdw-get/dir*
+       fi
+
+# install
+elif [ "$install" = "1" ] ; then
+       # does inst_root exist
+       if [ ! -d $inst_root ] ; then
+               echo
+               echo "the install directory doesnt exist, create it first"
+               echo
+               exit 1
+       fi
+
+       # does package exist?
+       pkg=`basename $package | sed 's/.tar.bz2//'`
+       if [ -f $inst_root/var/adm/flists/${pkg}-[0-9]* ] ; then
+               echo "$pkg seems to be installed, candidates:"
+               for i in $inst_root/var/adm/flists/${pkg}-[0-9]*; do
+                       echo "-> $i"
+               done
+               exit 1
+       fi
+
+       # store info/dir file
+       rm -f /tmp/.hdw-get/dir*
+       if [ -f $inst_root/usr/share/info/dir ] ; then
+               [ "$verbose" ] && echo "backing up info/dir file"
+               cp $inst_root/usr/share/info/dir /tmp/.hdw-get/
+       fi
+       
+       # check/install package
+       if [ -f $package ] ; then
+               echo "extracting `basename $package` to $inst_root ..."
+               tar --use-compress-program=bzip2 -xf $package \
+                       -C $inst_root
+               echo "done"
+       elif [ ! -z "$bin_dir" -a -f $bin_dir/${hdw_arch}-${hdw_arch_opt}/$package/$package.tar.bz2 ] ; then
+               echo "extracting $package to $inst_root ..."
+               tar --use-compress-program=bzip2 \
+               -xf $bin_dir/$package/$package.tar.bz2 -C $inst_root
+       elif [ ! -z "$net_addr" ] ; then
+               echo "getting package $package via net ..."
+               wget $net_addr/hdw-linux/hdw-linux-$hdw_version/binaries/${hdw_arch}-${hdw_arch_opt}/$package/${package}.tar.bz2 > /dev/null 2>&1
+               retval=$?
+               if [ "$retval" != "0" ] ; then
+                       echo "package not found at $net_addr, aborting ..."
+               else
+                       echo "extracting $package to $inst_root ..."    
+                       tar --use-compress-program=bzip2 \
+                               -xf ${package}.tar.bz2 -C $inst_root
+                       rm ${package}.tar.bz2
+                       echo "done"
+               fi
+       else
+               echo "sorry, package $package not found"
+               exit 1
+       fi
+
+       # merging info/dir file
+       if [ "$pkg" != "00-dirtree" ] ; then
+       fl_file=`ls -A $inst_root/var/adm/flists/$pkg-[0-9]* | tail -1`
+       if [ -n "`grep usr/share/info/dir $fl_file`" ] ; then
+               echo "" >> /tmp/.hdw-get/dir
+               echo "$pkg info - added by hdw `date`" >> /tmp/.hdw-get/dir
+               for info_obj in `grep 'usr/share/info/.*.info' $fl_file | \
+                                       awk -F/ '{ print $4 }'`; do
+                       info_o=`echo $info_obj | sed 's/.info//'`
+                       if [ -z "`grep \($info_o\)\. /tmp/.hdw-get/dir`" ]
+                       then
+                               [ "$verbose" ] && \
+                                       echo "merging $info_o to info/dir"
+                               grep \($info_o\)\. \
+                                       $inst_root/usr/share/info/dir >> \
+                                       /tmp/.hdw-get/dir
+                       fi
+               done
+       fi
+       fi
+       [ -f /tmp/.hdw-get/dir ] && \
+               cp /tmp/.hdw-get/dir $inst_root/usr/share/info/dir
+       rm -f /tmp/.hdw-get/dir
+
+       # check for runtime deps
+       #if [ -z $no_deps ] ; then
+       #       alldeps=`get_all_deps $pkg`
+       #       echo "$pkg depends on the following packages:"
+       #       for i in $alldeps; do
+       #               echo "-> $i"
+       #       done
+       #       echo "continue? [y,n]"
+       #       if [ -z $auto_resolve_deps ] ; then
+       #               read answer
+       #               if [ "$answer" = "y" ] ; then
+       #                       for i in $alldeps; do
+       #                               $0 -no-dep install $inst_root $pkg
+       #                       done
+       #               else
+       #                       echo -n "install dependencies on your own,"
+       #                       echo " things will not work without."
+       #               fi
+       #       fi
+       #fi
+               
+# dist-install
+elif [ "$d_install" = "1" ] ; then
+       # check dist file
+       if [ ! -f $dist_file ] ; then
+               echo "$dist_file not found, aborting"
+       else
+               # install all distribution related packages
+               for package in `cat $dist_file`; do
+                       # execute myelf
+                       $0 install $inst_root $package
+               done
+       fi
+fi
+
+# remove temp directory
+rm -rf /tmp/.hdw-get
+