GNUstep and HPMS HowTO
Documentation
Abstract
This article will explain using HPMS to package GNUstep for deploying GNUstep on different OS platform easily. Also we explore the possiblity of intergrating HPMS funcation into GNUstep to add HPMS into GNUstep.
Overview
Have you ever take a look of current computing environments on Earth from outerspace ? Seeing so many Operating Systems got created in the name of inovation(it is true in most cases). End users end up with lots of incompatible operating systems,programming languages and applications to deal with. Each OS vendor/supporter will make their OS as different as possible and label it as features. In some cases, they will spend exra efforts to make sure other OS users can't use their features. All of these actions create high maintence cost. We need a solution to deal with these diversions to avoid the chaos.
The Java environment is a good example aim to do same "things" across different incompatible paltforms. GNUstep is another example aim to provide unified and consistent programming environment for applicaiton developers.
A solution to deal with application management across different OS is needed. Given GNUstep's cross-platform declaration on application development activities, so should the application mangement activies cross-platform united.
In this project we like to use GNUstep application as an example to demostrate the benifits of using CPAM. There are currently different package sources to create GNUstep package for different OS paltforms. We will demostrate using one package source to create native package for different OS. and also using same tool to maintain GNUstep package.
Project Overview slides
TBA.
What are PMS, HPMS, CPAD and CPAM ?
In order to better describe the cross-platform package management activities, following terms are defined for easy reference.
- PMS: Package Management system is a group of software tools design to create and maintain software in a package format. Example of software tools are rpm,pkgadd,dpkg,ipkg,inst and lpp in AIX.
- CPAM: Cross-platform Application Management, is the activities to manage application on different OS platforms. The goal is to use better software solution to minimize the administration cost.
- CPAD: Cross-platform Application Developement is the activities on devloping a software that can run on different OS platforms to maxmize the software deployment.
- HPMS: Hyper Package Management System is a software tool for CPAM. It will respect and work with the local PMS to create and manage software package. When a package need to be created, the HPMS will call
- Brief introduction of a few PMS.
- RPM
- Solaris pkgadd
- HP-UX SD-UX
- GNUstep .app (What is the name of GNUstep PMS ?)
- MacOS X
- Debian dpkg
- ipkg for Embeded Linux system.
- Comparison of PMS
- Comparison of HPMS
Architecture of a HPMS
TBA.
Why doing it
- A software compiling process is very complex and need to be exact on what other software you need to compile with and how you configure the compilation flags to the compiler. This complex process can actually be digitalize into a script and be repeatable by easy commands without waiting for the guru give you a hint.
- Lots of time is spent by experienced GNUsteppers to assist new GNUsteppers with compiling the source, and this waste will continue to occur unless we resolve certain issues.
- Time can be better spent on GNUstep developement, and not on the compling and packaging process.
- Easy installation and removal of GNUstep encourges the deployment of GNUstep in corporate environments.
- The softare adn pacakge creation processes can be reproduced easliy by others with simple commands.
- Improves QA testing by generating GNUstep bug fixed instances quickly.
How
When
TBA.
Who
Technology Provider: TWW Inc. http://www.thewrittenword.com
This project is using CPAM tools created by TWW Inc.The commpany created TWW tool sets to help cross-platform open-source package creation and deployment. Currently GNUstep is not avaible in the list of their supported packages. The good thing is that we have a chance to invite steppers create the package sources together. All source of their supported packages are avaiable at ftp://support.thewrittenword.com. Those package sources need to be compiled with vendor compiler. gcc compiler is used only on RedHat plaform.
Motorola Inc. http://www.motorola.com
They have a simliar CPAM homegrown solution to deal with supporting open-source across OS platform. That tool was dropped in favor of TWW's GPL opensourced tool sets. Currently TWW HPMS tool is used in certain parts of the company.
Team member
- Put your name and contact information here if you are serious about this project.
Plan
- Introduce CPAM(Cross-Platform Application Management) tool implemented by TWW Inc. to GNUstep CPAD community
- Cross-Platform is easier said then done becuase each platform's features are barriers for others.
- Release GNUstep package source implemented by TWW CPAM.
- I will release a working package source for others to try and review.
- The package soruces can generate native package format for RHAS rpm,Solaris pkgadd and HP-UX depot formats.
- Write tutorial on learning TWW CPAM.
- I am willing to help/assist a few persons to get familliar with TWW tools if they promise to write up what they learned in a tutorial article. As you can see I am really not good on documenation work.
Integrate GNUstep developement process with TWW CPAM
Current TWW HPMS supported Systems
please see http://www.thewrittenword.com/evaluate/ for current supported OS platforms.
Porting TWW HPMS to other OS
You can help porting TWW tool to other OS, Currently following are being worked on alone. Helps are appreciated.
Linksys NSLU2
Mac OS X
Microsoft Windows
- Unix foundation software
- cygwin
- PMS foundation
FreeBSD
Debian
Package Management Process
Software engineering process include desgin and implement software via software developers to generate source codes. The source codes will then need to be built,packaged and be managed. We can divide this process into three general steps.
- Software build process(SB) and SB can be devided into following processes on a build machine
- source unpack
- source patch
- source configure
- source build to generate binary and documentation
- binary test
- binary install
- binary uninstall
- Package build (PB) process is much straight forward
- prepare the configuration script
- prepare init script to start/stop application service
- call up local PMS to pack the binary,documentation and scripts into local PMS format.
- Package Management (PKGUTIL) Process
- upload and administrate packages on package depot server.
- install
- remove
- upgrade
- auto installation upon package dependence.
TWW HPMS introduction
TWW Inc. has three tools to match the package management processes.
- Softeware build
- sbutils
[root] ls -l /opt/TWWfsw/sbutils12/bin/ total 164 -rwxr-xr-x 1 root root 38551 Dec 1 15:17 gen-sb-db -rwxr-xr-x 1 root root 44418 Dec 1 15:17 sb [root]
- Package build
- pbutils
[root] ls -l /opt/TWWfsw/pbutils11/bin/ total 186 -rwxr-xr-x 1 root root 29975 Apr 30 2004 gen-pb-db -rwxr-xr-x 1 root root 29169 Apr 30 2004 gen-pkg-db -rwxr-xr-x 1 root root 34023 Apr 30 2004 pb [root]
- Package Management
- pkgutils
[root] ls -l /opt/TWWfsw/pkgutils15/bin/ total 542 -rwxr-xr-x 1 root root 32434 Jan 25 2004 chk-pkg-updates -rwxr-xr-x 1 root root 18751 Jan 25 2004 pkg-config -rwxr-xr-x 1 root root 48281 Jan 25 2004 pkg-info -rwxr-xr-x 1 root root 70570 Jan 25 2004 pkg-inst -rwxr-xr-x 1 root other 68887 May 18 2003 pkg-inst~ -rwxr-xr-x 1 root root 35692 Jan 25 2004 pkg-rm [root]
- How to get TWW tools ?
TWW Inc.
All the TWW tools and sources of their supported packages are GPL compliant. They are freely avaiable at their ftp site ftp://support.thewrittenword.com. But their support labor and binary packages are not free of charge. We are glad TWW Inc. find a way to do open-source works and still can make a living out of it. Please support TWW Inc. if your workplace need such kind of service ( http://shopping.netsuite.com/tww ).
Examples
Following are quick examples for GNUsteppers. It is not a HellowWorld type of easy example. The package source still need to be refined
Software Build: gnustep-core-1.0.sb in a XML file
- This sb file can reproduce the build process with following command
sb gnustep-core-1.10.sb;sb -i gnustep-core-1.10.sb
- Following command will list out the software modules in a GNUstep core
[root] sb -q module-names gnustep-core-1.10.sb gnustep-base ffcall gnustep-examples gnustep-gui gworkspace gnustep-make gnustep-back [root]
- gnustep-core-1.10.sb
Note: HPUX portion of instruction is most like not correct.
[root] cat gnustep-core-1.10.sb <?xml version="1.0"?> <programs> <program name="gnustep-core" version="1.10.0" revision="1"> <module name="gnustep-make"> <build-name>gnustep-make-1.10.0</build-name> <install-name>GNUstep</install-name> <sources> <source path="src/core/gnustep-make-1.10.0.tar.gz" /> </sources> <dependencies> <depend var="GCC332R">gcc332r</depend> </dependencies> <configure> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) CFLAGS="-O2" CC_LD_RT="-R" GCCR_LIB=/opt/TWWfsw/gcc332r/lib ./configure CC="${CC:-gcc}" CFLAGS="${CFLAGS:--O2}" \ LDFLAGS="${CC_LD_RT}${GCCR_LIB}" \ --prefix=${INSTALL_PREFIX} ;; *-linux*) CFLAGS="-O2" CC_LD_RT="-R" GCCR_LIB=/opt/TWWfsw/gcc332r/lib CC=/opt/TWWfsw/gcc332/bin/gcc ./configure CC="${CC:-gcc}" CFLAGS="${CFLAGS:--O2}" \ LDFLAGS="${CC_LD_RT}${GCCR_LIB}" \ --prefix=${INSTALL_PREFIX} ;; *-solaris2.[689]) set -x CFLAGS="-O2 -mcpu=v8" CC_LD_RT="-R" CC=/opt/TWWfsw/bin/gcc GCCR_LIB=/opt/TWWfsw/gcc332r/lib ./configure CC="${CC:-gcc}" CFLAGS="${CFLAGS:--O2}" \ LDFLAGS="${CC_LD_RT}${GCCR_LIB}" \ --prefix=${INSTALL_PREFIX} ;; esac ]]> </configure> <build> ![CDATA[ ase "${SB_SYSTYPE}" in -hpux11.11) ;; -hpux10.20) make clean make ;; -linux*) ;; -solaris2.[689]) make clean make ; sac ]> </build> <install> ![CDATA[ make install make sure GNUstep.sh script can be accessd via /opt/TWWfsw/bin kdir -p ${INSTALL_PREFIX}/bin n -s ${INSTALL_PREFIX}/System/Makefiles/GNUstep.sh \ {INSTALL_PREFIX}/bin/GNUstep.sh ]> </install> <uninstall> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) ;; esac ]]> </uninstall> </module> <module name="ffcall"> <build-name>ffcall-1.9</build-name> <install-name>ffcall19</install-name> <sources> <source path="src/core/ffcall-1.9.tar.gz" /> </sources> <dependencies> <depend var="GCC332R">gcc332r</depend> </dependencies> <script-header> </script-header> <configure> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) CFLAGS="-O2 -march=1.1" CC_LD_RT="-R" GCC332R_LIB=/opt/TWWfsw/gcc332r SSL_LIB=/opt/TWWfsw/libopenssl097/lib/ XML_LIB=/opt/TWWfsw/libxml242/lib XML=/opt/TWWfsw/libxml242 ICONV=/opt/TWWfsw/libiconv16 CC=gcc ./configure CC="${CC:-gcc}" CFLAGS="${CFLAGS:--O2}" \ LDFLAGS="${CC_LD_RT}${XML_LIB}:${GCC332R_LIB}:${LDFLAGS+${LDFLAGS}}" \ --prefix=${INSTALL_PREFIX} \ --enable-shared ;; *-linux*) CFLAGS="-O2" GCC332R_LIB=/opt/TWWfsw/gcc332r SSL_LIB=/opt/TWWfsw/libopenssl097/lib/ XML_LIB=/opt/TWWfsw/libxml242/lib XML=/opt/TWWfsw/libxml242 INSTALL_PREFIX=/opt/TWWfsw/ffcall19 ./configure --prefix=${INSTALL_PREFIX} --enable-shared ;; *-solaris2.[689]) CFLAGS="-O2 -mcpu=v8" CC_LD_RT="-R" GCC332R_LIB=/opt/TWWfsw/gcc332r SSL_LIB=/opt/TWWfsw/libopenssl097/lib/ XML_LIB=/opt/TWWfsw/libxml242/lib XML=/opt/TWWfsw/libxml242 INSTALL_PREFIX=/opt/TWWfsw/ffcall19 CC=gcc ./configure CC="${CC:-gcc}" CFLAGS="${CFLAGS:--O2}" \ LDFLAGS="${CC_LD_RT}${XML_LIB}:${GCC332R_LIB}:${LDFLAGS+${LDFLAGS}}" \ --prefix=${INSTALL_PREFIX} \ --enable-shared ;; esac ]]> </configure> <build> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) gmake clean gmake ;; *-linux*) ;; *-solaris2.[689]) esac ]]> </build> <install> <![CDATA[ gmake install ]]> </install> <uninstall> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) ;; esac ]]> </uninstall> </module> <module name="gnustep-base"> <build-name>gnustep-base-1.10.1</build-name> <install-name>GNUstep</install-name> <sources> <source path="src/core/gnustep-base-1.10.1.tar.gz" /> </sources> <dependencies> <depend var="GCC332R">gcc332r</depend> <depend var="LIBXML">libxml242</depend> <depend var="LIBOPENSSL">libopenssl097</depend> <depend var="LIBEXPAT">libexpat</depend> <depend var="FFCALL">ffcall19</depend> </dependencies> <script-header> </script-header> <configure> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) CFLAGS="-O2 -march=1.1" CC_LD_RT="-Wl,+b -Wl," GCC332R_LIB=/opt/TWWfsw/gcc332r SSL_LIB=/opt/TWWfsw/libopenssl097/lib/ XML_LIB=/opt/TWWfsw/libxml242/lib XML=/opt/TWWfsw/libxml242 ICONV=/opt/TWWfsw/libiconv16 CC=gcc ;; *-linux*) #LDFLAGS="${CC_LD_RT}${GCCR_LIB}" CFLAGS="-O2" CC_LD_RT="-Wl,-rpath," GCCR_LIB=/opt/TWWfsw/gcc332r/lib CC=/opt/TWWfsw/gcc332/bin/gcc . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh export LD_LIBRARY_PATH=/opt/TWWfsw/ffcall19:/opt/TWWfsw/libopenssl097/lib:/opt/TWWfsw/gcc332r/lib:$LD_LIBRARY_PATH ./configure CC="${CC:-gcc}" CFLAGS="${CFLAGS:--O2}" \ --prefix=${INSTALL_PREFIX} \ --with-include-flags=-I/opt/TWWfsw/libtiff35/include \ --with-library-flags=-L/opt/TWWfsw/libtiff35/lib \ --with-ffi-include=/opt/TWWfsw/ffcall19/inlcude \ --with-ffi-library=/opt/TWWfsw/ffcall19/lib \ --with-libiconv-library="${ICONV}" \ --with-xml-prefix="${XML}" \ --with-openssl-include=/opt/TWWfsw/libopenssl097/include \ --with-openssl-library=/opt/TWWfsw/libopenssl097/lib \ --disable-xmltest ;; *-solaris2.[689]) CFLAGS="-O2 -mcpu=v8" CC_LD_RT="-R" GCC332R_LIB=/opt/TWWfsw/gcc332r SSL_LIB=/opt/TWWfsw/libopenssl097/lib/ XML_LIB=/opt/TWWfsw/libxml242/lib XML=/opt/TWWfsw/libxml242 ICONV=/opt/TWWfsw/libiconv16 CC=/opt/TWWfsw/bin/gcc . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh export LD_LIBRARY_PATH=/opt/TWWfsw/ffcall19:/opt/TWWfsw/libopenssl097/lib:/opt/TWWfsw/gcc332r/lib:$LD_LIBRARY_PATH ./configure CC="${CC:-gcc}" CFLAGS="${CFLAGS:--O2}" LDFLAGS="${CC_LD_RT}${XML_LIB}:${GCC332R_LIB}:${LDFLAGS+${LDFLAGS}}" \ --prefix=${INSTALL_PREFIX} \ --with-include-flags=-I/opt/TWWfsw/libtiff35/include \ --with-library-flags=-L/opt/TWWfsw/libtiff35/lib \ --with-ffi-include=/opt/TWWfsw/ffcall19/inlcude \ --with-ffi-library=/opt/TWWfsw/ffcall19/lib \ --with-libiconv-library="${ICONV}" \ --with-xml-prefix="${XML}" \ --with-openssl-include=/opt/TWWfsw/libopenssl097/include \ --with-openssl-library=/opt/TWWfsw/libopenssl097/lib \ --disable-xmltest ;; esac ]]> </configure> <build> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh export LD_LIBRARY_PATH=/opt/TWWfsw/gcc332r/lib:$LD_LIBRARY_PATH gmake clean #Turn verbose support in GNUstep's makefile system. #gmake messages=yes gmake ;; *-solaris2.[689]) . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh export LD_LIBRARY_PATH=/opt/TWWfsw/gcc332r/lib:$LD_LIBRARY_PATH gmake clean gmake ;; esac ]]> </build> <install> <![CDATA[ . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh export LD_LIBRARY_PATH=/opt/TWWfsw/gcc332r/lib:$LD_LIBRARY_PATH gmake install ]]> </install> <uninstall> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) ;; esac ]]> </uninstall> </module> <module name="gnustep-gui"> <build-name>gnustep-gui-0.9.4</build-name> <install-name>GNUstep</install-name> <sources> <source path="src/core/gnustep-gui-0.9.4.tar.gz" systype="*-solaris*" /> </sources> <dependencies> <depend var="JPEG">jpeg</depend> <depend var="UNGIF">libungif</depend> <depend var="CUPS">cups1120</depend> <depend var="TIFF">tiff</depend> <depend var="PNG">libpng12</depend> <depend var="ASPELL">aspell05</depend> </dependencies> <configure> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) CFLAGS="-O2 -mcpu=v8" CC_LD_RT="-R" JPEG_LIB=/opt/TWWfsw/jpeg/lib UNGIF_LIB=/opt/TWWfsw/libungif/lib CUPSR_LIB=/opt/TWWfsw/cups1120/lib TIFF_LIB=/opt/TWWfsw/tiff/lib PNG_LIB=/opt/TWWfsw/libpng12/lib . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh export LD_LIBRARY_PATH=/opt/TWWfsw/gcc332r/lib:$LD_LIBRARY_PATH:/opt/TWWfsw/libpng12/lib:/opt/TWWfsw/cups1120/lib export PATH=/opt/TWWfsw/cups1120/bin:${PATH} set -x ./configure CC="${CC:-gcc}" CFLAGS="${CFLAGS:--O2}" \ LDFLAGS="${CC_LD_RT}${JPEG_LIB}:${UNGIF_LIB}:/opt/TWWfsw/aspell05/lib:\ ${CUPSR_LIB}:${TIFF_LIB}:\ ${PNG_LIB}:${LDFLAGS+${LDFLAGS}}" \ --prefix=${INSTALL_PREFIX} \ --with-jpeg-include="/opt/TWWfsw/libpng12/include \ -I/opt/TWWfsw/libungif/include \ -I/opt/TWWfsw/tiff/include \ -I/opt/TWWfsw/cups1120/include \ -I/opt/TWWfsw/jpeg/include \ -I/opt/TWWfsw/libopenssl097/include" \ --with-jpeg-library="/opt/TWWfsw/libpng12/lib \ -L/opt/TWWfsw/libungif/lib \ -L/opt/TWWfsw/jpeg/lib \ -L/opt/TWWfsw/cups1120/lib \ -L/opt/TWWfsw/tiff/lib \ -L/opt/TWWfsw/libopenssl097/lib" \ --disable-gsnd ;; esac ]]> </configure> <build> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh export LD_LIBRARY_PATH=/opt/TWWfsw/gcc332r/lib:$LD_LIBRARY_PATH:/opt/TWWfsw/libpng12/lib:/opt/TWWfsw/cups1120/lib:/opt/TWWfsw/libpng12/lib gmake ;; esac ]]> </build> <install> <![CDATA[ . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh gmake install ]]> </install> <uninstall> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) ;; esac ]]> </uninstall> </module> <module name="gnustep-back"> <build-name>gnustep-back-0.9.4</build-name> <install-name>GNUstep</install-name> <sources> <source path="src/core/gnustep-back-0.9.4.tar.gz" systype="*-solaris*" /> </sources> <dependencies> </dependencies> <configure> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh export LD_LIBRARY_PATH=/opt/TWWfsw/gcc332r/lib:$LD_LIBRARY_PATH:/opt/TWWfsw/libpng12/lib:/opt/TWWfsw/cups1120/lib set -x echo $LD_LIBRARY_PATH ./configure CC="${CC:-gcc}" CFLAGS="${CFLAGS:--O2}" \ --prefix=${INSTALL_PREFIX} \ --disable-glx \ --disable-xim \ --disable-glitz \ --enable-server=x11 \ --enable-graphics=xlib \ --with-x ;; esac ]]> </configure> <build> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/TWWfsw/libungif/lib:\ /opt/TWWfsw/jpeg/lib:/opt/TWWfsw/cups1120/lib:/opt/TWWfsw/tiff/lib:\ /opt/TWWfsw/libpng12/lib gmake ;; esac ]]> </build> <install> <![CDATA[ . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh gmake install ]]> </install> <uninstall> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) ;; esac ]]> </uninstall> </module> <module name="gworkspace"> <build-name>GWorkspace-0.6.5</build-name> <install-name>GNUstep</install-name> <sources> <source path="src/core/gworkspace-0.6.5.tar.gz" /> </sources> <dependencies> </dependencies> <configure> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh export LD_LIBRARY_PATH=/opt/TWWfsw/gcc332r/lib:$LD_LIBRARY_PATH:/opt/TWWfsw/libpng12/lib:/opt/TWWfsw/cups1120/lib set -x echo $LD_LIBRARY_PATH ./configure CC="${CC:-gcc}" CFLAGS="${CFLAGS:--O2}" \ --prefix=${INSTALL_PREFIX} \ ;; esac ]]> </configure> <build> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh export LD_LIBRARY_PATH=/opt/TWWfsw/gcc332r/lib:$LD_LIBRARY_PATH:/opt/TWWfsw/libpng12/lib:/opt/TWWfsw/cups1120/lib cd FSNode;gmake install export LD_LIBRARY_PATH=/opt/TWWfsw/gcc332r/lib:$LD_LIBRARY_PATH:/opt/TWWfsw/libpng12/lib:/opt/TWWfsw/cups1120/lib cd ..; gmake ;; esac ]]> </build> <install> <![CDATA[ . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh gmake install ]]> </install> <uninstall> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) ;; esac ]]> </uninstall> </module> <module name="gnustep-examples"> <build-name>gnustep-examples-1.0.0</build-name> <install-name>GNUstep</install-name> <sources> <source path="src/core/gnustep-examples-1.0.0.tar.gz" /> </sources> <dependencies> </dependencies> <configure> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) : ;; esac ]]> </configure> <build> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh export LD_LIBRARY_PATH=/opt/TWWfsw/gcc332r/lib:$LD_LIBRARY_PATH:/opt/TWWfsw/libpng12/lib:/opt/TWWfsw/cups1120/lib cd FSNode;gmake install export LD_LIBRARY_PATH=/opt/TWWfsw/gcc332r/lib:$LD_LIBRARY_PATH:/opt/TWWfsw/libpng12/lib:/opt/TWWfsw/cups1120/lib cd ..; gmake ;; esac ]]> </build> <install> <![CDATA[ . ${INSTALL_PREFIX}/System/Library/Makefiles/GNUstep.sh gmake install ]]> </install> <uninstall> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2.[689]) ;; esac ]]> </uninstall> </module> <notes> <note type="installation"> <para> Gnustep core packges </para> </note> </notes> <changelog> </changelog> </program> </programs> [root]
Package build: gnustep-core-1.0.pb in a XML file
This pb file can reproduce the package build process with following command to generate a native package for a local PMS.
pb -1 gnustep-core-1.10.pb
Note: HPUX portion of instruction is most likely not correct.
[root] cat gnustep-core-1.10.pb <?xml version="1.0"?> <packages> <package name="gnustep-core" version="1.10" revision="1"> <package-manager name="depot"> <title>GNUstep</title> <vendor>GNU Free Software Foundation.</vendor> <description > GNUstep is a cross-platform, object-oriented framework for desktop application development. </description> <install-name>GNUstep</install-name> <pkgname-base>TWccase</pkgname-base> <version>1.10</version> <revision>1</revision> <subpkg type="conf"> </subpkg> <subpkg type="runtime"> </subpkg> </package-manager> <package-manager name="pkgadd"> <category>System Environment/Daemons</category> <title>GNUstep</title> <vendor>GNU Free Software Foundation.</vendor> <description > GNUstep is a cross-platform, object-oriented framework for desktop application development. </description> <install-name>GNUstep</install-name> <pkgname-base>GNUstp1a</pkgname-base> <version>1.10</version> <revision>1</revision> <subpkg type="runtime"> <!-- <postinstall path="pkg/postinstall-sol"/> <preremove path="pkg/preremove-sol"/> <preinstall path="pkg/preinstall-sol"/> <postremove path="pkg/postremove-sol"/> --> </subpkg> <changelog> <change date="2004 Sept 28" revision="1" author="T.J. Yang" email="tj_yang@hotmail.com"> <item><para> GNUstep core 1.10 for Solaris </para></item> </change> </changelog> </package-manager> <package-manager name="rpm4"> <category>System Environment/Daemons</category> <title>ClearCase 1.10</title> <vendor>GNU Free Software Foundation.</vendor> <description > GNUstep is a cross-platform, object-oriented framework for desktop application development. </description> <install-name>GNUstep</install-name> <pkgname-base>TWgnustep</pkgname-base> <version>1.10</version> <revision>1</revision> <subpkg type="conf"> </subpkg> <subpkg type="runtime"> <postinstall path="pkg/postinstall-linux"/> <preremove path="pkg/preremove-linux"/> <!-- <preinstall path="pkg/preinstall-sol"/> <postremove path="pkg/postremove-sol"/> --> </subpkg> <!-- <files> <file>/var/adm/atria</file> <file>/etc/rc.d/init.d/gnustep</file> </files> --> </package-manager> </package> </packages> [root]
Makefile entry to automate the sb,pb and package upload to package depot
############################################################################# gnustep-core-1.10: \ /opt/TWWfsw/gnustep-core-1.10 /opt/dist/cd/GNUstp1au gnustep-core-1.10-gen-pkg-inst gnustep-core-1.10-upload ############################################################################# /opt/TWWfsw/gnustep-core-1.10: /opt/TWWfsw/ffcall19 \ /opt/TWWfsw/GNUstep/System/Library/Makefiles \ /opt/TWWfsw/GNUstep/System/Library/Libraries/Resources/gnustep-base/Languages \ /opt/TWWfsw/GNUstep/System/Library/KeyBindings \ /opt/TWWfsw/GNUstep/System/Library/Documentation/man /opt/TWWfsw/ffcall19: ${SB} -m ffcall ${SRCDIR}/gnustep-core-1.10/gnustep-core-1.10.sb ${SB} -m ffcall -i ${SRCDIR}/gnustep-core-1.10/gnustep-core-1.10.sb /opt/TWWfsw/GNUstep/System/Library/Makefiles: ${SB} -m gnustep-make ${SRCDIR}/gnustep-core-1.10/gnustep-core-1.10.sb ${SB} -m gnustep-make -i ${SRCDIR}/gnustep-core-1.10/gnustep-core-1.10.sb /opt/TWWfsw/GNUstep/System/Library/Libraries/Resources/gnustep-base/Languages: ${SB} -m gnustep-base ${SRCDIR}/gnustep-core-1.10/gnustep-core-1.10.sb ${SB} -m gnustep-base -i ${SRCDIR}/gnustep-core-1.10/gnustep-core-1.10.sb /opt/TWWfsw/GNUstep/System/Library/KeyBindings: ${SB} -m gnustep-gui ${SRCDIR}/gnustep-core-1.10/gnustep-core-1.10.sb ${SB} -m gnustep-gui -i ${SRCDIR}/gnustep-core-1.10/gnustep-core-1.10.sb /opt/TWWfsw/GNUstep/System/Library/Documentation/man: ${SB} -m gnustep-back ${SRCDIR}/gnustep-core-1.10/gnustep-core-1.10.sb ${SB} -m gnustep-back -i ${SRCDIR}/gnustep-core-1.10/gnustep-core-1.10.sb /opt/dist/cd/GNUstp1au: ${PB} -1 ${SRCDIR}/gnustep-core-1.10/gnustep-core-1.10.pb gnustep-core-1.10-gen-pkg-inst: ${GPD} ${SRCDIR}/gnustep-core-1.10/gnustep-core-1.10.pb >> /opt/dist/cd/pkg-db.xml (cd /opt/dist/cd;zip data.zip GNUstp1a* ;${M5S} data.zip |awk '{print $$1}' > data.zip.md5) (cd /opt/dist/cd;zip -r gnustep-core-1.10.pkgadd.pkg-inst pkg-db.xml data.zip data.zip.md5; ${M5S} gnustep-core-1.10.pkgadd.pkg-inst |awk '{print $$1}' > gnustep-core-1.10.pkgadd.pkg-inst.md5) cd /opt/dist/cd;rm -f pkg-db.xml data.zip data.zip.md5 gnustep-core-1.10-upload: cd /opt/dist/cd;${RSYNC} -azpv gnustep-core-1.10.pkgadd.pkg-inst gnustep-core-1.10.pkgadd.pkg-inst.md5 root@gnustep.example.com:${DEST}/${ARCHI} cd /opt/dist/cd;rm -f /opt/dist/cd/pkg-db.xml gnustep-core-1.10.pkgadd.pkg-inst gnustep-core-1.10.pkgadd.pkg-inst.md5 gnustep-core-1.10-clean: rm -rf /opt/TWWfsw/GNUstep /opt/dist/cd/GNUstp1a*