Difference between revisions of "GNUstep and HPMS HowTO"

From GNUstepWiki
Jump to navigation Jump to search
Line 1: Line 1:
== 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.
 
 
'''CPAD:''' Cross-Plaform Application Development, a solution to enable software application developement easily for man-made imcompatiable different operating systems. Java,OpenStep and GNUstep are three example solutions.
 
 
'''CPAM:''' Cross-Platform Application Management, a solution to enable easy and consistent application management. TWW's HPMS is one of the solutions.
 
 
'''PMS:''' Package Management System. Examples: RPM,dpkg,inst,lpp,portage,Installsield,HP SD-UX.
 
 
'''PMS format:''' PMS Package Format. A file or directory to include a group of compiled binaries ,documenation or script file. This file is usually call a software pacakge. With this work done, a softare package can be better maintained. Example formats:rpm,msi,exe,ipk,pkgadd,depot and GNUstep's .app.
 
 
'''HPMS:''' Hyper Package Management System. A PMS above different PMSs and shield package developer from local PMS. It will allow package developer to consistently create and maintain software packages without knowing the detail of each PMS.
 
 
 
* 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 ====
 
* [[User:Tjyang|T.J. Yang]]
 
 
* 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. Helps are appreciated.
 
* There is a makefile to automate the TWW tools porting.
 
 
==== Linksys NSLU2 ====
 
 
==== Mac OS X ====
 
 
==== Microsoft Windows ====
 
* Unix foundation software
 
** cygwin
 
** mingw
 
** SFU
 
* PMS foundation
 
** Wix at http://sourceforge.net/projects/wix
 
 
==== 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
 
<pre>
 
[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]
 
</pre>
 
* Package build
 
** pbutils
 
<pre>
 
[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]
 
 
</pre>
 
* Package Management
 
** pkgutils
 
<pre>
 
[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]
 
</pre>
 
* 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. Goal of goal of gnustep-core-1.0.sb is to digitalize this document at http://www.gnustep.org/resources/documentation/User/GNUstep/gnustep-howto.html.
 
 
=== 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.
 
 
<pre>
 
[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]
 
 
</pre>
 
 
=== 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.
 
<pre>
 
[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]
 
 
</pre>
 
 
=== Makefile entry to automate the sb,pb and package upload to package depot ===
 
This is a snipped makefile for showing the gnustep-core-1.10 task in a makefile.
 
 
<pre>
 
#############################################################################
 
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*
 
 
</pre>
 

Revision as of 02:53, 21 February 2005