CPAM with TWW/References Manual

= Package Management System Overview = This section is about the different PMS on different OS. By understanding each PMS we can find out the differences and try to make them work together under a central and hyper PMS. The main interests of following sections are to understand how to make these PMS work with TWW HPMS.

MS Windows PMS Architecture

 * Windows installer

Commercial Packaing tools

 * Installshield

Open source Packaing tools

 * NSIS
 * MakeMSI Home
 * WiX XML Toolset

Mac OS X
Mac OSX software distribution, it is not software package management that provide complete package life-cycle mechanism. Some mechanis still missing are
 * package removal by command line.
 * package automated dependency install.
 * package depot.

Mac OSX related PMS Tools

 * installer(8)
 * repair_packages(8)
 * packagemaker(1)
 * pkgutil: is a command line tool to do package query actions.

imac:~ me$ pkgutil --pkgutil-version pkgutil: "$Id: main.m,v 1.24 2007/10/08 19:53:38 ryanc Exp $" imac:~ me$

Macport
A few notes when learning macort. Macport use TCL scripting language to automate the package creating,installation and other package management processes. emac:/opt/local/var/db/dports tjyang$ pwd /opt/local/var/db/dports emac:/opt/local/var/db/dports tjyang$ ls -lrt total 0 drwxr-xr-x   4 root    admin   136 Jan 26  2006 sources drwxr-xr-x   3 root    admin   102 Jan 26  2006 packages drwxrwxr-x  41 root    admin  1394 Feb 13 07:26 distfiles drwxr-xr-x  42 tjyang  admin  1428 Feb 13 07:26 build drwxr-xr-x  36 root    admin  1224 Feb 13 07:28 software drwxrwxr-x  40 root    admin  1360 Feb 13 07:28 receipts emac:/opt/local/var/db/dports tjyang$
 * Following are some directories path for Macport build system.

emac:~ tjyang$ ls -l /opt/local/var/db/dports/build/_opt_local_var_db_dports_sources_rsync.rsync.darwinports.org_dpupdate_dports_shells_zsh/work total 3312 drwxrwxr-x   3 root  wheel      102 Feb 13 06:46 destroot drwxr-xr-x  41 root  admin     1394 Feb 13 06:43 zsh-4.2.6 -rw-r--r--   1 root  admin  1655668 Feb 13 06:53 zsh-4.2.6.dmg drwxr-xr-x   3 root  admin      102 Feb 13 06:46 zsh-4.2.6.pkg -rw-r--r--   1 root  admin    29411 Feb 13 06:55 zsh.filelist -rw-r--r--   1 root  admin     1139 Feb 13 06:55 zsh.spec emac:~ tjyang$
 * MacPort is also a Hyper Package Management System. For example, macport can generate zsh in RPM and Mac's pkg formats.

emac:~ tjyang$ sudo port install gcc40 ---> Fetching gcc40 ---> Attempting to fetch gcc-core-4.0.4.tar.bz2 from ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.0.4/ ---> Attempting to fetch gcc-fortran-4.0.4.tar.bz2 from ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.0.4/ ---> Attempting to fetch gcc-g++-4.0.4.tar.bz2 from ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.0.4/ ---> Attempting to fetch gcc-java-4.0.4.tar.bz2 from ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.0.4/ ---> Attempting to fetch gcc-objc-4.0.4.tar.bz2 from ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.0.4/ ---> Verifying checksum(s) for gcc40 ---> Extracting gcc40 ---> Configuring gcc40 ---> Building gcc40 with target profiledbootstrap emac:~ tjyang$ cat /opt/local/var/db/dports/sources/rsync.rsync.darwinports.org_dpupdate_dports/lang/gcc40/Portfile
 * Macport developers
 * install your Darwinport PMS
 * try to build gcc-4.0
 * the building receipt(Portfile) for gcc40.
 * 1) $Id: Portfile 21750 2007-02-05 15:33:03Z mww@macports.org $

PortSystem 1.0

name                   gcc40 version                4.0.4 platforms              darwin categories             lang maintainers            mww@macports.org description            The GNU compiler collection long_description       The GNU compiler collection, including front ends for C, \ C++, Objective-C, Java and Fortran95.

homepage               http://gcc.gnu.org/ master_sites   ftp://gcc.gnu.org/pub/gcc/releases/gcc-${version}/ \ ftp://ftp.gwdg.de/pub/linux/gcc/releases/gcc-${version}/ \ gnu:/gcc/gcc-${version} set dcore              gcc-core-${version}.tar.bz2 set dfort              gcc-fortran-${version}.tar.bz2 set dcxx               gcc-g++-${version}.tar.bz2 set djava              gcc-java-${version}.tar.bz2 set dobjc              gcc-objc-${version}.tar.bz2 distfiles              ${dcore} ${dfort} ${dcxx} ${dcxx} ${djava} ${dobjc}

checksums              ${dcore} sha1 55c664b33a4dc6b2130c47da28a1d6daab732ce9 \ ${dfort} sha1 fff9f58ff51e10dac89fb0b51ad74f5f90d5cabc \ ${dcxx} sha1 804870b31d1567e81c96a682dd9ef5a6175e8574 \ ${djava} sha1 9f0c56f4dabbe74811d40344ce0afe920798cca4 \ ${dobjc} sha1 5c5c3052796fef9e1fc4a468f6e04881c6dc9267

use_bzip2              yes

depends_lib            port:gmp port:mpfr

set major              4.0

worksrcdir             build

post-extract { file mkdir ${worksrcpath} }

configure.cmd  ${workpath}/gcc-${version}/configure configure.args --enable-languages=c,c++,java,objc,f95 \ --libdir=${prefix}/lib/${name} \ --includedir=${prefix}/include/${name} \ --infodir=${prefix}/share/info \ --mandir=${prefix}/share/man \ --with-local-prefix=${prefix} \ --with-system-zlib \ --disable-nls \ --program-suffix=-dp-${major} \ --with-gxx-include-dir=${prefix}/include/${name}/c++/ \ --with-gmp=${prefix} \ --with-mpfr=${prefix}

build.target   profiledbootstrap build.args             -j 2

post-destroot { cd ${destroot}${prefix} file delete -force share/man/man7 file delete -force share/info if {[variant_isset powerpc]} { } }

platform darwin 7 { depends_build  port:odcctools patch { reinplace "s|/usr/bin/libtool|${prefix}/bin/odlibtool|g" \ ${workpath}/gcc-${version}/gcc/config/darwin.h       } configure.args-append  --with-as=${prefix}/bin/odas \ --with-ld=${prefix}/bin/odld \ --with-ar=${prefix}/bin/odar }

platform darwin 8 { configure.env  CC=/usr/bin/gcc-4.0 CPP=/usr/bin/cpp-4.0 CXX=/usr/bin/g++-4.0 }

platform powerpc { post-destroot { system "cd ${destroot}${prefix}/include/${name} && \                       cp ../../lib/${name}/gcc/*/${version}/include/libffi/ffitarget.h ." } }

emac:~ tjyang$

== TWW HPM on Mac OS X
== This is not a TWW supported effort. emac:~ tjyang$ sb -V 1.2.10 emac:~ tjyang$ /opt/sbutils1210/lib/systype powerpc-apple-darwin8.9.0 emac:~ tjyang$

RPM PMS Architecture
---    | package header  : metadata  | --    | package payload : cpio ball | --- rpm -qp—xml gnustep-base-debuginfo-1.13.0-1suse93.i386.rpm will display the content of package header(metadata). Following is an example.
 * The logical layout of an rpm package. An rpm package contains header and payload.
 * How to see a package's metadata ?


 * How to check what kind of file digest is used in a package payload ?

Creating Your IPS depot
-bash-3.2# cat /etc/release Open Solaris 2008.05 snv_86_rc2a X86 Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms. Assembled 23 April 2008 -bash-3.2# uname -a SunOS opensolaris 5.11 snv_86 i86pc i386 i86pc -bash-3.2# -bash-3.2# ifconfig -a lo0: flags=2001000849 mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 e1000g0: flags=201004843 mtu 1500 index 2 inet 192.168.1.206 netmask ffffff00 broadcast 192.168.1.255 ether 0:c:29:97:10:e3 lo0: flags=2002000849 mtu 8252 index 1 inet6 ::1/128 -bash-3.2#
 * opensolaris host info

Example -bash-3.2# cat createdepot.ksh svcadm enable application/pkg/server svccfg -s application/pkg/server setprop pkg/port=80 svccfg -s application/pkg/server setprop pkg/inst_root=/pub svcadm refresh application/pkg/server svcadm restart application/pkg/server svcs -a |grep pkg -bash-3.2#
 * become root on opensolaris
 * mkdir /pub
 * Run following scripts

-bash-3.2# ls -lrt /pub total 21 drwxr-xr-x  2 root     root           2 May  6 21:50 trans drwxr-xr-x  2 root     root           2 May  6 21:50 file drwxr-xr-x  2 root     root           2 May  6 21:50 pkg drwxr-xr-x  2 root     root           2 May  6 21:50 updatelog drwxr-xr-x  2 root     root           3 May  6 21:50 catalog -rw-r--r--  1 root     root           0 May  6 21:50 search.dir -rw-r--r--  1 root     root        1024 May  6 21:50 search.pag -rw-r--r--  1 root     root         281 May  6 21:58 createdepot.ksh -bash-3.2# -bash-3.2# pkg set-authority -P -O http://192.168.1.206:80/ localhost -bash-3.2# pkg authority AUTHORITY                          URL opensolaris.org                    http://pkg.opensolaris.org:80/ localhost (preferred)              http://192.168.1.206:80/ -bash-3.2#
 * Check the files created under /pub
 * Check if you can browse http://depotserver:80
 * Add your depot as preferred depot and check preferred authority switch from opensolaris.org to localhost one.

Create your first IPS package
-bash-3.2# ksh -x t.ksh + pkg image-create -F -a localhost=http://192.168.1.206:80/ /pub -bash-3.2#

IRIX PMS References

 * inst

= Cross-Platform Package Management System Overview =

Home-grown
Using Makfile we can acturally create a CPAM system easily. Following is an example

OpenSolaris IPS
= Package building automation = = Distributed package building =

Distcc
Because distcc can only work with gcc, so it only can compile TWW's package source that utilize gcc compiler. This means we can use distcc to build pacakges for Redhat Linux.

How to use distcc to compile TWW's RH packages source
pkg-inst distcc /etc/init.d/TWWdistcc212 start root@t2000> grep distcc test.zone rhel3-distcc1        IN CNAME   t4001.test.com. rhel3-distcc2        IN CNAME   t4408.test.com. rhel3-distcc3        IN CNAME   t4500.test.com. rhel3-distcc4        IN CNAME   t4000.test.com. rhel3-distcc5        IN CNAME   t4001.test.com. rhel3-distcc6        IN CNAME   t4002.test.com. root@t2000> rhel3-distcc1 rhel3-distcc2 rhel3-distcc3 rhel3-distcc4 rhel3-distcc5 rhel3-distcc6
 * We will use distcc and newly released lsdistcc to compare the performance gain of compiling RH EL kernel and crosstool on using rhel3-distcc* machines are available in a subnet.
 * lsdistcc is a distcc server autodiscovery program. It relies on distcc servers being in DNS with distinctive names ending in numbers 1 through N. It is originally from http://kegel.com/distcc and will probably be included in a future release of distcc. With this helpful small lsditcc program we can dynamically assign the content of DISTCC_HOSTS to use as many available distcc hosts as possible.
 * For each OS platform you want to configure as a distcc execution node, do
 * add distcc nodes into your name server;increase the serial number;"ndc reload". After following aliases are edited in your forward zone file
 * also make sure you have a good naming for your distcc execution hosts. ${OS}-distcc%d is the good naming scheme.
 * "cc -o lsdistcc lsdistcc.c", and run a test to find out the current available RHEL3 have distcc enabled.
 * 1) lsdistcc rhel3-distcc%d


 * put "DISTCC-HOSTS := `lsdistcc rhel3-distcc%d`"in your makefile or build script.

Compiling RHEL3 kernel soucce
/usr/src/linux-2.4 ib/lib.a /usr/src/linux-2.4.21-9.EL/lib/lib.a /usr/src/linux-2.4.21-9.EL/arch/i386/lib/lib.a --end-group -o .tmp_vmlinux1 kallsyms pass 2 kallsyms pass 3 ld -m elf_i386 -T /usr/src/linux-2.4.21-9.EL/arch/i386/vmlinux.lds -e stext arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/main.o init/version.o init/do_mounts.o --start-group arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/char/drm/drm.o drivers/net/fc/fc.o drivers/net/appletalk/appletalk.o drivers/net/tokenring/tr.o drivers/net/wan/wan.o drivers/atm/atm.o drivers/ide/idedriver.o drivers/cdrom/driver.o drivers/pci/driver.o drivers/net/pcmcia/pcmcia_net.o drivers/net/wireless/wireless_net.o drivers/pnp/pnp.o drivers/video/video.o drivers/media/media.o drivers/md/mddev.o drivers/hotplug/vmlinux-obj.o drivers/isdn/vmlinux-obj.o crypto/crypto.o net/network.o /usr/src/linux-2.4.21-9.EL/arch/i386/lib/lib.a /usr/src/linux-2.4.21-9.EL/lib/lib.a /usr/src/linux-2.4.21-9.EL/arch/i386/lib/lib.a --end-group .tmp_kallsyms3.o -o vmlinux nm vmlinux | grep -v '\(compiled\)\|\(\.o$\)\|\( [aUw] \)\|\(\.\.ng$\)\|\(LASH[RL]DI\)' | sort > System.map make[1]: Leaving directory `/usr/src/linux-2.4.21-9.EL'
 * compiling linux-2.4 without help of distcc
 * 1) pwd
 * 1) make clean;time make

real   3m9.791s user   2m49.010s sys    0m20.350s 23918 Blocked                                                            [0] 23778 Compile     sun.c                                     rhel3-distcc1[0] 23782 Compile     inode.c                                   rhel3-distcc1[1] 23769 Compile     i8259.c                                   rhel3-distcc1[3] 23896 Preprocess  dev_mcast.c                               rhel3-distcc2[0] 23922 Preprocess  time.c                                    rhel3-distcc2[1] 23907 Preprocess  futex.c                                   rhel3-distcc2[2] 23927 Preprocess  sys_i386.c                                rhel3-distcc2[3] 23383 Send        rd.c                                      rhel3-distcc3[0] 23753 Send        ip_sockglue.c                             rhel3-distcc3[1] 23112 Send        usercopy.c                                rhel3-distcc3[2] 23057 Compile     sysctl_net_ether.c                        rhel3-distcc3[3] 22496 Compile     xfrm_policy.c                             rhel3-distcc4[0] 23851 Preprocess  context.c                                 rhel3-distcc4[1] 23809 Compile     proc_misc.c                               rhel3-distcc4[3] 23765 Compile     ialloc.c                                  rhel3-distcc5[0] 23885 Compile     flow.c                                    rhel3-distcc5[1] 23890 Preprocess  dev.c                                     rhel3-distcc5[2] 23911 Compile     ioport.c                                  rhel3-distcc5[3] 22772 Receive     xfrm_output.c                             rhel3-distcc6[0] 22867 Compile     mem.c                                     rhel3-distcc6[2] 22580 Compile     addr.c                                    rhel3-distcc6[3]
 * Following is a sample snapshot of "distccmon-text" output.

* compile the source with 6 distcc execution hosts. rhel3-distcc1 rhel3-distcc2 rhel3-distcc3 rhel3-distcc4 rhel3-distcc5 rhel3-distcc6 /usr/src/linux-2.4
 * 1) echo $DISTCC_HOSTS
 * pwd
 * 1) make clean;time make -j80 CC='distcc gcc'

distcc gcc -D__KERNEL__ -I/usr/src/linux-2.4.21-9.EL/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Wno-unused -fomit-frame-pointer -pipe -freorder-blocks -mpreferred-stack-boundary=2 -march=i686   -nostdinc -iwithprefix include -DKBUILD_BASENAME=xattr_acl  -DEXPORT_SYMTAB -c xattr_acl.c distcc gcc -D__KERNEL__ -I/usr/src/linux-2.4.21-9.EL/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common  -Wno-unused -fomit-frame-pointer -pipe -freorder-blocks -mpreferred-stack-boundary=2 -march=i686   -nostdinc -iwithprefix include -DKBUILD_BASENAME=solaris_acl  -DEXPORT_SYMTAB -c solaris_acl.c rm -f network.o ld -m elf_i386  -r -o network.o socket.o core/core.o ethernet/ethernet.o 802/802.o sched/sched.o netlink/netlink.o ipv4/ipv4.o xfrm/xfrm.o ipv4/netfilter/netfilter.o unix/unix.o ipv6/netfilter/netfilter.o packet/packet.o atm/atm.o netsyms.o sysctl_net.o make[2]: Leaving directory `/usr/src/linux-2.4.21-9.EL/net' make[1]: Leaving directory `/usr/src/linux-2.4.21-9.EL/net' rm -f fs.o ld -m elf_i386 -r -o fs.o open.o read_write.o devices.o file_table.o buffer.o super.o block_dev.o char_dev.o stat.o exec.o pipe.o namei.o fcntl.o ioctl.o readdir.o select.o fifo.o locks.o dcache.o inode.o attr.o bad_inode.o file.o iobuf.o dnotify.o filesystems.o namespace.o seq_file.o quota.o xattr.o dquot.o quota_v2.o aio.o dcookies.o binfmt_script.o binfmt_elf.o mbcache.o posix_acl.o xattr_acl.o solaris_acl.o proc/proc.o partitions/partitions.o ext2/ext2.o ramfs/ramfs.o hugetlbfs/hugetlbfs.o isofs/isofs.o nls/nls.o devpts/devpts.o make[2]: Leaving directory `/usr/src/linux-2.4.21-9.EL/fs' make[1]: Leaving directory `/usr/src/linux-2.4.21-9.EL/fs' make[1]: Entering directory `/usr/src/linux-2.4.21-9.EL' kallsyms pass 1 ld -m elf_i386 -T /usr/src/linux-2.4.21-9.EL/arch/i386/vmlinux.lds -e stext arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/main.o init/version.o init/do_mounts.o --start-group arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/char/drm/drm.o drivers/net/fc/fc.o drivers/net/appletalk/appletalk.o drivers/net/tokenring/tr.o drivers/net/wan/wan.o drivers/atm/atm.o drivers/ide/idedriver.o drivers/cdrom/driver.o drivers/pci/driver.o drivers/net/pcmcia/pcmcia_net.o drivers/net/wireless/wireless_net.o drivers/pnp/pnp.o drivers/video/video.o drivers/media/media.o drivers/md/mddev.o drivers/hotplug/vmlinux-obj.o drivers/isdn/vmlinux-obj.o crypto/crypto.o net/network.o /usr/src/linux-2.4.21-9.EL/arch/i386/lib/lib.a /usr/src/linux-2.4.21-9.EL/lib/lib.a /usr/src/linux-2.4.21-9.EL/arch/i386/lib/lib.a --end-group -o .tmp_vmlinux1 kallsyms pass 2 kallsyms pass 3 ld -m elf_i386 -T /usr/src/linux-2.4.21-9.EL/arch/i386/vmlinux.lds -e stext arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/main.o init/version.o init/do_mounts.o --start-group arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/char/drm/drm.o drivers/net/fc/fc.o drivers/net/appletalk/appletalk.o drivers/net/tokenring/tr.o drivers/net/wan/wan.o drivers/atm/atm.o drivers/ide/idedriver.o drivers/cdrom/driver.o drivers/pci/driver.o drivers/net/pcmcia/pcmcia_net.o drivers/net/wireless/wireless_net.o drivers/pnp/pnp.o drivers/video/video.o drivers/media/media.o drivers/md/mddev.o drivers/hotplug/vmlinux-obj.o drivers/isdn/vmlinux-obj.o crypto/crypto.o net/network.o /usr/src/linux-2.4.21-9.EL/arch/i386/lib/lib.a /usr/src/linux-2.4.21-9.EL/lib/lib.a /usr/src/linux-2.4.21-9.EL/arch/i386/lib/lib.a --end-group .tmp_kallsyms3.o -o vmlinux nm vmlinux | grep -v '\(compiled\)\|\(\.o$\)\|\( [aUw] \)\|\(\.\.ng$\)\|\(LASH[RL]DI\)' | sort > System.map make[1]: Leaving directory `/usr/src/linux-2.4.21-9.EL'

real   1m11.185s user   0m42.430s sys    0m16.110s

/usr/src/linux-2.4
 * compile the 2.4 kernel source on rhel3-distc6 (8CPU) machines locally.
 * pwd
 * 1) time make -j8

c -iwithprefix include -DKBUILD_BASENAME=apic -c -o apic.o apic.c gcc -D__KERNEL__ -I/usr/src/linux-2.4.21-9.EL/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common  -Wno-unused -fomit-frame-pointer -pipe -freorder-blocks -mpreferred-stack-boundary=2 -march=i686   -nostdinc -iwithprefix include -DKBUILD_BASENAME=nmi  -c -o nmi.o nmi.c gcc -D__KERNEL__ -I/usr/src/linux-2.4.21-9.EL/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common  -Wno-unused -fomit-frame-pointer -pipe -freorder-blocks -mpreferred-stack-boundary=2 -march=i686   -nostdinc -iwithprefix include -DKBUILD_BASENAME=io_apic  -c -o io_apic.o io_apic.c gcc -D__KERNEL__ -I/usr/src/linux-2.4.21-9.EL/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common  -Wno-unused -fomit-frame-pointer -pipe -freorder-blocks -mpreferred-stack-boundary=2 -march=i686   -nostdinc -iwithprefix include -DKBUILD_BASENAME=acpitable  -c -o acpitable.o acpitable.c rm -f video.o ld -m elf_i386  -r -o video.o dummycon.o vgacon.o font_8x8.o font_8x16.o fbmem.o fbcmap.o modedb.o fbcon.o fonts.o vesafb.o fbcon-cfb8.o fbcon-cfb16.o fbcon-cfb24.o fbcon-cfb32.o make[3]: Leaving directory `/usr/src/linux-2.4.21-9.EL/drivers/video' make[2]: Leaving directory `/usr/src/linux-2.4.21-9.EL/drivers/video' make all_targets make[2]: Entering directory `/usr/src/linux-2.4.21-9.EL/drivers' make[2]: Nothing to be done for `all_targets'. make[2]: Leaving directory `/usr/src/linux-2.4.21-9.EL/drivers' make[1]: Leaving directory `/usr/src/linux-2.4.21-9.EL/drivers' gcc -D__ASSEMBLY__ -D__KERNEL__ -I/usr/src/linux-2.4.21-9.EL/include -traditional -c head.S -o head.o gcc -D__KERNEL__ -I/usr/src/linux-2.4.21-9.EL/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Wno-unused -fomit-frame-pointer -pipe -freorder-blocks -mpreferred-stack-boundary=2 -march=i686   -nostdinc -iwithprefix include -DKBUILD_BASENAME=init_task  -c -o init_task.o init_task.c {standard input}: Assembler messages: {standard input}:289: Warning: indirect lcall without `*' {standard input}:418: Warning: indirect lcall without `*' rm -f kernel.o ld -m elf_i386 -r -o kernel.o process.o semaphore.o signal.o entry.o traps.o irq.o vm86.o ptrace.o i8259.o ioport.o ldt.o setup.o time.o sys_i386.o pci-dma.o i386_ksyms.o i387.o bluesmoke.o dmi_scan.o entry_trampoline.o doublefault.o process_timing.o pci-i386.o pci-pc.o pci-irq.o mtrr.o apm.o smp.o smpboot.o trampoline.o mpparse.o apic.o nmi.o io_apic.o acpitable.o make[1]: Leaving directory `/usr/src/linux-2.4.21-9.EL/arch/i386/kernel' make[1]: Entering directory `/usr/src/linux-2.4.21-9.EL' kallsyms pass 1 ld -m elf_i386 -T /usr/src/linux-2.4.21-9.EL/arch/i386/vmlinux.lds -e stext arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/main.o init/version.o init/do_mounts.o --start-group arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/char/drm/drm.o drivers/net/fc/fc.o drivers/net/appletalk/appletalk.o drivers/net/tokenring/tr.o drivers/net/wan/wan.o drivers/atm/atm.o drivers/ide/idedriver.o drivers/cdrom/driver.o drivers/pci/driver.o drivers/net/pcmcia/pcmcia_net.o drivers/net/wireless/wireless_net.o drivers/pnp/pnp.o drivers/video/video.o drivers/media/media.o drivers/md/mddev.o drivers/hotplug/vmlinux-obj.o drivers/isdn/vmlinux-obj.o crypto/crypto.o net/network.o /usr/src/linux-2.4.21-9.EL/arch/i386/lib/lib.a /usr/src/linux-2.4.21-9.EL/lib/lib.a /usr/src/linux-2.4.21-9.EL/arch/i386/lib/lib.a --end-group -o .tmp_vmlinux1 kallsyms pass 2 kallsyms pass 3 ld -m elf_i386 -T /usr/src/linux-2.4.21-9.EL/arch/i386/vmlinux.lds -e stext arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/main.o init/version.o init/do_mounts.o --start-group arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/char/drm/drm.o drivers/net/fc/fc.o drivers/net/appletalk/appletalk.o drivers/net/tokenring/tr.o drivers/net/wan/wan.o drivers/atm/atm.o drivers/ide/idedriver.o drivers/cdrom/driver.o drivers/pci/driver.o drivers/net/pcmcia/pcmcia_net.o drivers/net/wireless/wireless_net.o drivers/pnp/pnp.o drivers/video/video.o drivers/media/media.o drivers/md/mddev.o drivers/hotplug/vmlinux-obj.o drivers/isdn/vmlinux-obj.o crypto/crypto.o net/network.o /usr/src/linux-2.4.21-9.EL/arch/i386/lib/lib.a /usr/src/linux-2.4.21-9.EL/lib/lib.a /usr/src/linux-2.4.21-9.EL/arch/i386/lib/lib.a --end-group .tmp_kallsyms3.o -o vmlinux nm vmlinux | grep -v '\(compiled\)\|\(\.o$\)\|\( [aUw] \)\|\(\.\.ng$\)\|\(LASH[RL]DI\)' | sort > System.map make[1]: Leaving directory `/usr/src/linux-2.4.21-9.EL'

real   0m56.337s user   5m32.990s sys    0m35.860s

Sun Studio: dmake
= FAQ = = How TO =

How to automate this wiki book publishing by automated script ?
We need a perl module call "mvs", it is mediawiki client written in perl language.

me@myhost> mvs -h Usage: mvs [Options] command [Options] [filename]
 * MVS
 * Perl mvs support maillist at http://geekhive.net/cgi-bin/mailman/listinfo/www-mediawiki-client-l
 * Install mvs from cpan
 * A quick check of mvs command.

mvs -h|--help mvs --version mvs -D

mkdir wikistuff cd wikistuff

mvs [-q|-v] [-d ] [-l language_code ] [-u ] [-p ] [-w ] login

mvs [-q|-v] update [ ..] mvs [-q|-v] up [ ..]

mvs [-q|-v] [-M] [-W] -m "commit message" commit [ ..] mvs [-q|-v] [-M] [-W] -m "commit message" com [ ..]

me@myhost>

me@myhost> cat Makefile .PHONY: all all: download login: mvs login -d www.wikibooks.org -l en -u MyAccountName -p 'MyPassword' init: rm -rf CPAM_with_TWW CPAM_with_TWW.wiki clean: rm -f *~ CPAM_with_TWW/*~ download: login mvs update CPAM_with_TWW.wiki CPAM_with_TWW.wiki mvs update CPAM_with_TWW/References_Manual.wiki References_Manual.wiki mvs update CPAM_with_TWW/User_Guide.wiki User_Guide.wiki mvs update CPAM_with_TWW/Developer_Guide.wiki Developer_Guide.wiki
 * Create a makefile to automate the login,download and upload steps.
 * 1) erase the local copy first
 * 1) mvs update    local                 remote


 * 1) Check in and Commit

upload: CPAM_with_TWW.wiki CPAM_with_TWW/User_Guide.wiki CPAM_with_TWW/Developer_Guide.wiki  CPAM_with_TWW/References_Manual.wiki mvs -m "Updated with 0.26 mvs perl mediawiki client." commit CPAM_with_TWW.wiki mvs -m "Updated with 0.26 mvs perl mediawiki client." commit CPAM_with_TWW/User_Guide.wiki mvs -m "Updated with 0.26 mvs perl mediawiki client." commit CPAM_with_TWW/Developer_Guide.wiki mvs -m "Updated with 0.26 mvs perl mediawiki client." commit CPAM_with_TWW/References_Manual.wiki

me@myhost>

If you are behind corporate firewall

 * set HTTP_PROXY variable to http://fw.my.com:port if no firewall account is needed.
 * set HTTP_PROXY variable to http://MYaccount:MYpassword@fw.my.com:port if firewall account/password is needed.

= Doxygen docs of CPAM/TWW application = = GNUstep and CPAM =