* bootstrap no longer needs regex.h

* support environment variables CP, GREP, ID, MKDIR, TEST, TOUCH, XARGS to
  allow specification on non-standard tools (needed on IRIX 5)
* preserve compiler/linker flags if set
This commit is contained in:
schwarz 2006-08-26 15:42:27 +00:00
parent 79d60be97e
commit 0b9cc38f3e
2 changed files with 47 additions and 64 deletions

View file

@ -1,4 +1,4 @@
$NetBSD: README.IRIX5.3,v 1.3 2006/08/05 14:57:19 schwarz Exp $
$NetBSD: README.IRIX5.3,v 1.4 2006/08/26 15:42:27 schwarz Exp $
Installing pkgsrc on IRIX 5.3 requires some preparation.
First, if necessary, get the IRIX 5.3 IDO (cc etc.) from SGI at
@ -14,23 +14,12 @@ Furthermore, get Y2k patches from e.g.
ftp://ftp.mayn.de/pub/really_old_stuff/irix/oldstuff/ if you haven't
installed them already.
To date, pkgsrc expects the SGI IDO cc and might run into problems when
using gcc.
With IDO cc and the necessary supporting tools and development files
installed you can run bootstrap to create the essential pkgsrc tools,
notably bmake. Once this is done you will find mk.conf.example to start
your mk.conf pkgsrc configuration file from. You might want to add
CFLAGS+=-O2 (or if you are using an R4K machine -O2 -mips2)
and
DBG=
Unfortunately many of IRIX 5.3's native tools do not provide
functionalitites that pkgsrc expects. It is therefore necessary to install
the respective GNU tools for cp, grep, id, mkdir, test, touch, which,
and xargs. To avoid conflicts you might want to do so under a different
directory hierarchy than pkgsrc (in the following example
--prefix=/usr/local is assumed). Obtain and install the following GNU
software:
directory hierarchy than pkgsrc (in the following example /usr/local is
assumed). Obtain and install the following GNU software:
- GNU findutils (4.2.23 is known to install)
- GNU grep (2.5.1a works, but you have to apply the patch from
pkgsrc/textproc/grep/patches/patch-ab; either do so manually by editing the
@ -42,50 +31,23 @@ makeinfo; just proceed with make install)
configure)
- GNU which (2.16 works; be sure to configure with CC="cc -Xcpluscomm")
These tools can be installed independently of bootstrapping. To make them
accessible to pkgsrc make sure your mk.conf contains something like this:
To date, pkgsrc expects the SGI IDO cc and might run into problems when
using gcc.
With IDO cc and the necessary supporting tools and development files
installed you can run bootstrap to create the essential pkgsrc tools,
notably bmake:
env CP=/usr/local/bin/cp GREP=/usr/local/bin/grep ID=/usr/local/bin/id MKDIR="/usr/local/bin/mkdir -p" TEST=/usr/local/bin/test TOUCH=/usr/local/bin/touch XARGS="/usr/local/bin/xargs -r" ./bootstrap
Add the nedessary arguments such as --prefix= as necessary.
You might also want to set the CFLAGS, CPPFLAGS, or LDFLAGS.
For the IDO cc CFLAGS=-O2 (or CFLAGS="-O2 -mips2" if you are using an R4K
machine) is recommended.
.if exists(${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}id)
TOOLS_PLATFORM.id=${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}id
.else
TOOLS_PLATFORM.id=/usr/local/bin/id
.endif
.if exists(${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}mkdir)
TOOLS_PLATFORM.mkdir=${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}mkdir -p
.else
TOOLS_PLATFORM.mkdir=/usr/local/bin/mkdir -p
.endif
.if exists(${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}grep)
TOOLS_PLATFORM.grep=${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}grep
.else
TOOLS_PLATFORM.grep=/usr/local/bin/grep
.endif
.if exists(${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}cp)
TOOLS_PLATFORM.cp=${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}cp
.else
TOOLS_PLATFORM.cp=/usr/local/bin/cp
.endif
.if exists(${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}test)
TOOLS_PLATFORM.test=${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}test
.else
TOOLS_PLATFORM.test=/usr/local/bin/test
.endif
.if exists(${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}touch)
TOOLS_PLATFORM.touch=${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}touch
.else
TOOLS_PLATFORM.touch=/usr/local/bin/touch
.endif
.if exists(${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}xargs)
TOOLS_PLATFORM.xargs=${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}xargs -r
.else
TOOLS_PLATFORM.xargs=/usr/local/bin/xargs -r
.endif
TYPE=/usr/local/bin/which
IRIX 5.3 IDO does not come with a C++ compiler. For packages that require
C++ you can get the GNU C++ compiler, g++, which is part of the gcc
distribution. Gcc 3.4.4 is known to bootstrap on IRIX 5.3. To activate it,
add the following lines to your mk.conf:
add the following lines to your mk.conf after bootstrapping:
CXX=g++
USE_TOOLS+=cxx

View file

@ -1,6 +1,6 @@
#! /bin/sh
# $NetBSD: bootstrap,v 1.80 2006/08/20 14:25:22 schwarz Exp $
# $NetBSD: bootstrap,v 1.81 2006/08/26 15:42:27 schwarz Exp $
#
#
# Copyright (c) 2001-2002 Alistair G. Crooks. All rights reserved.
@ -35,6 +35,11 @@
#
#set -x
# the following environment variables are honored:
# compiler/linker flags: CFLAGS, CPPFLAGS, LDFLAGS
# tools: CP, GREP, ID, MKDIR, TEST, TOUCH, XARGS
BOOTSTRAP_VERSION=20060721
ignorecasecheck=no
@ -193,7 +198,7 @@ opsys_finish()
is_root()
{
if [ `uname -s` = "IRIX" ]; then
if [ `uname -r` -lt 6 ]; then
if [ `uname -r` -lt 6 -a -z "$ID" ]; then
# older version of IRIX have an id command with limited features
if [ "`$idprog`" != "uid=0(root) gid=0(sys)" ]; then
return 0
@ -394,9 +399,8 @@ IRIX*)
need_mkdir=yes
# IRIX 5 does not have uint32_t typedef'd in sys/types.h
tnftpxflags="-DUINT32_T=int"
# IRIX 5 is lacking fnmatch.h and regex.h, both provided by libnbcompat
# IRIX 5 is lacking fnmatch.h needed to build mtree
needfnmatchh=yes
needregexh=yes
fi
;;
Linux)
@ -550,8 +554,16 @@ fi
check_prog awkprog awk
check_prog chmodprog chmod
check_prog cpprog cp
check_prog idprog id
if [ -n "$CP" ]; then
cpprog="$CP"
else
check_prog cpprog cp
fi
if [ -n "$ID" ]; then
idprog="$ID"
else
check_prog idprog id
fi
check_prog groupsprog groups
check_prog lnprog ln
check_prog lsprog ls
@ -661,9 +673,6 @@ run_cmd "(cd $wrkdir/libnbcompat; $shprog ./configure -C --prefix=$prefix --mand
if [ x"$needfnmatchh" = x"yes" ]; then
$lnprog -s nbcompat/fnmatch.h $wrkdir/libnbcompat/fnmatch.h
fi
if [ x"$needregexh" = x"yes" ]; then
$lnprog -s nbcompat/regex.h $wrkdir/libnbcompat/regex.h
fi
# set up an example mk.conf file
MKCONF_EXAMPLE=${wrkdir}/mk.conf.example
@ -741,7 +750,7 @@ if [ "$need_fixed_strip" = "yes" ] ; then
need_extras=yes
fi
if [ "$need_mkdir" = "yes" ]; then
if [ "$need_mkdir" = "yes" -a -z "$MKDIR" ]; then
echo_msg "Installing fixed mkdir script \"mkdir-sh\""
run_cmd "$install_sh -c -o $user -g $group -m 755 $pkgsrcdir/pkgtools/bootstrap-extras/files/mkdir-sh $prefix/bin/mkdir-sh"
echo "TOOLS_PLATFORM.mkdir?= $prefix/bin/mkdir-sh -p" >> ${MKCONF_EXAMPLE}
@ -836,6 +845,18 @@ echo_msg "Installing pkgtools"
copy_src $pkgsrcdir/pkgtools/pkg_install/files pkg_install
run_cmd "(cd $wrkdir/pkg_install; env $BSTRAP_ENV CPPFLAGS='$CPPFLAGS -I../libnbcompat -I../../libnbcompat' LDFLAGS='$LDFLAGS -L../libnbcompat -L../../libnbcompat' LIBS='-lnbcompat' $shprog ./configure -C --prefix=$prefix --sysconfdir=$sysconfdir --with-pkgdbdir=$pkgdbdir --mandir=$mandir $pkg_install_args && $bmake && $bmake install)"
# preserve compiler and tool environment variables settings
test -z "$CP" || echo "TOOLS_PLATFORM.cp?= $CP" >> ${MKCONF_EXAMPLE}
test -z "$GREP" || echo "TOOLS_PLATFORM.grep?= $GREP" >> ${MKCONF_EXAMPLE}
test -z "$ID" || echo "TOOLS_PLATFORM.id?= $ID" >> {MKCONF_EXAMPLE}
test -z "$MKDIR" || echo "TOOLS_PLATFORM.mkdir?= $MKDIR" >> ${MKCONF_EXAMPLE}
test -z "$TEST" || echo "TOOLS_PLATFORM.test?= $TEST" >> ${MKCONF_EXAMPLE}
test -z "$TOUCH" || echo "TOOLS_PLATFORM.touch?= $TOUCH" >> ${MKCONF_EXAMPLE}
test -z "$XARGS" || echo "TOOLS_PLATFORM.xargs?= $XARGS" >> ${MKCONF_EXAMPLE}
test -z "$CFLAGS" || echo "CFLAGS+= $CFLAGS" >> ${MKCONF_EXAMPLE}
test -z "$CPPFLAGS" || echo "CPPFLAGS+= $CPPFLAGS" >> ${MKCONF_EXAMPLE}
test -z "$LDFLAGS" || echo "LDFLAGS+= $LDFLAGS" >> ${MKCONF_EXAMPLE}
# opsys specific fiddling
opsys_finish