summaryrefslogtreecommitdiffstats
path: root/build/aix
diff options
context:
space:
mode:
authorGraham Leggett <minfrin@apache.org>2012-02-27 23:31:32 +0100
committerGraham Leggett <minfrin@apache.org>2012-02-27 23:31:32 +0100
commite06efbc2007e391834ce2a49ca10c2fd3eee714b (patch)
tree21d06b1479d0beb0809cf762b15730b411a061fd /build/aix
parentAIX: Update the build to support AIX packages. (diff)
downloadapache2-e06efbc2007e391834ce2a49ca10c2fd3eee714b.tar.xz
apache2-e06efbc2007e391834ce2a49ca10c2fd3eee714b.zip
AIX: Add missing build scripts.
Submitted by: Michael Felt <mamfelt gmail com> git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1294372 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'build/aix')
-rw-r--r--build/aix/README66
-rw-r--r--build/aix/aixinfo16
-rwxr-xr-xbuild/aix/mkinstallp.ksh201
3 files changed, 267 insertions, 16 deletions
diff --git a/build/aix/README b/build/aix/README
index 8cc75a5903..3b87bd149c 100644
--- a/build/aix/README
+++ b/build/aix/README
@@ -1,32 +1,66 @@
The script buildaix.ksh will attempt to build a AIX installp fileset
-out of a source tree for httpd.
+out of a source tree for ASF project
REQUIREMENTS:
-fileset bos.adt.insttools
+ Fileset Level State Type Description (Uninstaller)
+ ----------------------------------------------------------------------------
+ bos.adt.insttools 5.3.7.2 C F Tool to Create installp
+ Packages
+ Fileset Level State Type Description (Uninstaller)
+ ----------------------------------------------------------------------------
+ rpm.rte 3.0.5.41 C F RPM Package Manager
-RECOMMENDED:
-Toolbox filesets zlib and zlib-devel
-Toolbox fileset coreutils
+Additional:
+Preferred: download zlib sources and copy zlib.h and zconf.h to /opt/include
+and, if configure cannot find them directly, add symbolic links from /usr/include to /opt/include
To build a package, make sure you are in the root of the source tree,
and run:
build/aix/buildaix.ksh
-## coming - argument to leave the DESTDIR results for manual
-## modifications to the template (to create seperate filesets)
-
-An AIX fileset named <PKG>.<NAME>.<version>.<architecture>.I will be
-created in the build/aix directory. Also included is the .template file.
+An AIX fileset named $PKG.$NAME.$ARCH.$VERSION.I will be
+created in the build/aix directory. the .template file created is also there.
KNOWN issues:
on AIX libtool is known to have issues with the install command.
-many of these issues can be resolved by inserting the GNU install command
-earlier in the PATH variable. Testing has shown that this may still
-have issues when installing to DESTDIR. To compensate for this
-the buildaix.ksh also does a "regular" make install before executing
-the make DESTDIR=$TEMPDIR install command
+Some of these issues have been resolved by extracting the apr/apu utilities
+from the projects (i.e. NOT using the embedded version)
+In case of problems I recommend that you install the GNU 'install' program (part of coreutils)
+If make DESTDIR=$TEMPDIR install command continues to fail, try 'make install' and then run
+the buildaix.ksh command again
TODO
+Add Copyright display/banner
Add Apache LICENSE to fileset and require acceptance
-Add test for bos.adt.insttools at start of build script
+Add special instructions for TCB - to ignore /etc/* /var/httpd/htdocs/*
+Add _config_i scripts to setup autostart
+Add _pre_i scripts to verify pre-requisites, required users/groups, etc.
+
+# This layout is intended to put customizeable data in /etc and /var
+# the file listing will be used to create an exceptions file to modify
+# the behavior of syschk checksum generation.
+# AIX layout
+<Layout AIX>
+ prefix: /opt/httpd
+ exec_prefix: /opt/httpd
+ bindir: ${exec_prefix}/bin
+ sbindir: ${exec_prefix}/sbin
+ libdir: ${exec_prefix}/lib
+ libexecdir: ${exec_prefix}/libexec
+ mandir: /usr/share/man
+ sysconfdir: /etc/httpd
+ datadir: /var/httpd
+ installbuilddir: ${datadir}/build
+ errordir: ${datadir}/error
+ htdocsdir: ${datadir}/htdocs
+ cgidir: ${datadir}/cgi-bin
+ iconsdir: ${prefix}/icons
+ manualdir: ${prefix}/manual
+ includedir: ${prefix}/include
+ localstatedir: /var/httpd
+ runtimedir: ${localstatedir}/run
+ logfiledir: ${localstatedir}/logs
+ proxycachedir: ${localstatedir}/proxy
+</Layout>
+
diff --git a/build/aix/aixinfo b/build/aix/aixinfo
new file mode 100644
index 0000000000..58ac3a1d3e
--- /dev/null
+++ b/build/aix/aixinfo
@@ -0,0 +1,16 @@
+
+PKG="ASF"
+NAME="httpd"
+ARCH="powerpc"
+VERSION="2.2.22"
+CATEGORY="application"
+VENDOR="Apache Software Foundation"
+EMAIL="dev@httpd.apache.org"
+VMMN=`build/get-version.sh mmn include/ap_mmn.h MODULE_MAGIC_NUMBER`
+REVISION=`build/get-version.sh all include/ap_release.h AP_SERVER`
+VERSION=`echo $REVISION | cut -d- -s -f1`
+RELEASE=`echo $REVISION | cut -d- -s -f2`
+if [ "x$VERSION" = "x" ]; then
+ VERSION=$REVISION
+ RELEASE=0
+fi
diff --git a/build/aix/mkinstallp.ksh b/build/aix/mkinstallp.ksh
new file mode 100755
index 0000000000..cde2179705
--- /dev/null
+++ b/build/aix/mkinstallp.ksh
@@ -0,0 +1,201 @@
+#!/usr/bin/ksh
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+# minstallp.ksh # create an installp image of ${NAME} (defined in aixinfo)
+# from TEMPDIR using mkinstallp (part of bos.adt.insttools)
+
+[[ $# == 0 ]] && echo $0: Syntax error && echo "Syntax: $0 <BaseDirectory>" && exit -1
+
+umask 022
+TEMPDIR=$1
+BASE=`pwd`
+cd ${TEMPDIR}
+[[ $? != 0 ]] && echo $0: ${TEMPDIR} -- bad directory && exit -1
+
+# clean up side-effects from DEBUG passes - usr/local might be there as
+# a circular link i.e. usr/local points at /usr/local
+# as we are not using /usr/local for ASF packaging, remove it!
+# mkinstallp seems to make usr/local -> /usr/local
+[[ -f usr/local ]] && rm -f usr/local && echo removed unexpected usr/local !!
+[[ -L usr/local ]] && rm -f usr/local && echo removed unexpected usr/local !!
+[[ -d usr/local ]] && rm -rf usr/local && echo removed unexpected usr/local !!
+
+# use the aixinfo for PKG NAME VERSION etc labels
+cd ${BASE}
+. build/aix/aixinfo
+# INFO=${BASE}/build/aix/.info
+# mkdir -p $INFO
+INFO=${BASE}/build/aix
+template=${INFO}/${PKG}.${NAME}.${VERSION}.template
+>$template
+
+# mkinstallp template definitions
+# TODO: add AIX oslevel/uname information for package filename
+package=$PKG
+name=$NAME
+vrmf=$VERSION
+release=$RELEASE
+descr="$NAME version ${VERSION} for $ARCH ${VENDOR}"
+
+# copy LICENSE information
+# TODO: setup template so that license acceptance is required
+# TODO: add Copyright Information for display during install
+mkdir -p ${TEMPDIR}/usr/swlag/en_US
+cp ${BASE}/LICENSE ${TEMPDIR}/usr/swlag/en_US/${PKG}.${NAME}.la
+
+cd ${TEMPDIR}
+# remove files we do not want as "part" possibly
+# left-over from a previous packaging
+rm -rf .info lpp_name tmp usr/lpp
+[[ $? -ne 0 ]] && echo $cmd: cleanup error && pwd && ls -ltr && exit -1
+
+#if we are going to add extra symbolic links - do it now
+[[ -r build/aix/aixlinks ]] && ksh build/aix/aixlinks
+
+# get the directory sizes in blocks
+for d in etc opt var
+do
+ if [[ -d $d/${NAME} ]]
+ then
+ set `du -s $d/${NAME}`
+ else
+ [[ -d $d ]] && set `du -s $d`
+ fi
+ # make sure the argument exists before using setting values
+ if [[ -d $d ]]
+ then
+ eval nm$d=/"$2"
+ let sz$d=$1
+ fi
+done
+
+files=./${NAME}.${VERSION}
+cd ${TEMPDIR}/..
+find ${files} -type d -exec chmod og+rx {} \;
+chmod -R go+r ${files}
+chown -R 0.0 ${files}
+
+cat - <<EOF >>$template
+Package Name: ${PKG}.${NAME}
+Package VRMF: ${VERSION}.${RELEASE}
+Update: N
+Fileset
+ Fileset Name: ${PKG}.${NAME}.rte
+ Fileset VRMF: ${VERSION}.${RELEASE}
+ Fileset Description: ${descr}
+ USRLIBLPPFiles
+ EOUSRLIBLPPFiles
+ Bosboot required: N
+ License agreement acceptance required: N
+ Name of license agreement:
+ Include license files in this package: N
+ Requisites:
+EOF
+
+[[ $szetc -ne 0 ]] && echo " Upsize: ${nmetc} $szetc;" >> $template
+[[ $szopt -ne 0 ]] && echo " Upsize: ${nmopt} $szopt;" >> $template
+[[ $szvar -ne 0 ]] && echo " Upsize: ${nmvar} $szvar;" >> $template
+echo " USRFiles" >> $template
+
+# USR part -- i.e. files in /usr and /opt
+cd ${TEMPDIR}/..
+find ${files}/usr/swlag ${files}/opt \
+ | sed -e s#^${files}## | sed -e "/^$/d" >>$template
+echo " EOUSRFiles" >> $template
+
+if [[ $szetc -gt 0 || $szvar -gt 0 ]]
+then
+INSTROOT=${TEMPDIR}/usr/lpp/${PKG}.${NAME}/inst_root
+mkdir -p ${INSTROOT}
+cd ${TEMPDIR}
+[[ $szetc -gt 0 ]] && find ./etc -type d | backup -if - | (cd ${INSTROOT}; restore -xqf -) >/dev/null
+[[ $szvar -gt 0 ]] && find ./var -type d | backup -if - | (cd ${INSTROOT}; restore -xqf -) >/dev/null
+cat - <<EOF >>$template
+ ROOT Part: Y
+ ROOTFiles
+EOF
+
+# ROOT part
+cd ${TEMPDIR}/..
+find ${files}/etc ${files}/var \
+ | sed -e s#^${files}## | sed -e "/^$/d" >>$template
+else
+# no ROOT parts to include
+cat - <<EOF >>$template
+ ROOT Part: N
+ ROOTFiles
+EOF
+fi
+cat - <<EOF >>$template
+ EOROOTFiles
+ Relocatable: N
+EOFileset
+EOF
+# man pages as seperate fileset
+cd ${TEMPDIR}
+if [[ -d usr/share/man ]]
+then
+ # manual pages, space required calculation
+ set `du -s usr/share/man`
+ szman=$1
+ descr="$NAME ${VERSION} man pages ${VENDOR}"
+ cat - <<EOF >>$template
+Fileset
+ Fileset Name: ${PKG}.${NAME}.man.en_US
+ Fileset VRMF: ${VERSION}.${RELEASE}
+ Fileset Description: ${descr}
+ USRLIBLPPFiles
+ EOUSRLIBLPPFiles
+ Bosboot required: N
+ License agreement acceptance required: N
+ Name of license agreement:
+ Include license files in this package: N
+ Requisites:
+EOF
+
+ echo " Upsize: /usr/share/man ${szman};" >> $template
+ echo " USRFiles" >> $template
+ cd ${TEMPDIR}/..
+ find ${files}/usr/share | sed -e s#^${files}## | sed -e "/^$/d" >>$template
+ cat - <<EOF >>$template
+ EOUSRFiles
+ ROOT Part: N
+ ROOTFiles
+ EOROOTFiles
+ Relocatable: N
+EOFileset
+
+EOF
+fi
+
+# use mkinstallp to create the fileset. result is in ${TEMPDIR}/tmp
+# must actually sit in TEMPDIR for ROOT part processing to succeed
+# also - need "empty" directories to exist, as they do not get copied
+# in the inst_root part
+cd ${TEMPDIR}
+mkinstallp -d ${TEMPDIR} -T ${template}
+[[ $? -ne 0 ]] && echo mkinstallp returned error status && exit -1
+
+# copy package to build/aix
+# create TOC
+cp ${TEMPDIR}/tmp/$PKG.$NAME.$VERSION.0.bff ${BASE}/build/aix
+cd ${BASE}/build/aix
+rm -f $PKG.$NAME.$VERSION.$ARCH.I
+mv $PKG.$NAME.$VERSION.0.bff $PKG.$NAME.$ARCH.$VERSION.I
+rm -f .toc
+inutoc .