NetBSD Problem Report #54349
From www@netbsd.org Sat Jul 6 10:01:21 2019
Return-Path: <www@netbsd.org>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
by mollari.NetBSD.org (Postfix) with ESMTPS id B49157A162
for <gnats-bugs@gnats.NetBSD.org>; Sat, 6 Jul 2019 10:01:20 +0000 (UTC)
Message-Id: <20190706100119.CC8AF7A1CF@mollari.NetBSD.org>
Date: Sat, 6 Jul 2019 10:01:19 +0000 (UTC)
From: hiroshi-hakoyama@nagano.ac.jp
Reply-To: hiroshi-hakoyama@nagano.ac.jp
To: gnats-bugs@NetBSD.org
Subject: bootstrap with --prefix fails on Solaris 10
X-Send-Pr-Version: www-1.0
>Number: 54349
>Category: pkg
>Synopsis: bootstrap with --prefix fails on Solaris 10
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: rillig
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sat Jul 06 10:05:00 +0000 2019
>Closed-Date: Sun Jul 21 20:16:22 +0000 2019
>Last-Modified: Tue Jul 23 11:30:01 +0000 2019
>Originator: Hiroshi Hakoyama
>Release: pkgsrc current
>Organization:
Nagano University
>Environment:
SunOS ec21 5.10 Generic_147147-26 sun4u sparc SUNW,Sun-Blade-1000
>Description:
bootstrap with --prefix fails on Solaris 10.
# cd /usr/pkgsrc/bootstrap
# ./cleanup
# env CFLAGS=-O2 CC=/opt/csw/gcc4/bin/gcc GCCBASE=/opt/csw/gcc4 ./bootstrap --prefix=/usr/pkg3
===> bootstrap command: ./bootstrap --prefix=/usr/pkg3
===> bootstrap started: Sat Jul 6 18:58:16 JST 2019
./bootstrap: bad substitution
>How-To-Repeat:
>Fix:
a workaround:
vi bootstrap
#! /bin/sh -> #! /usr/bin/bash
>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->feedback
State-Changed-By: bsiegert@NetBSD.org
State-Changed-When: Sun, 07 Jul 2019 09:03:11 +0000
State-Changed-Why:
Question asked
From: Benny Siegert <bsiegert@gmail.com>
To: gnats-bugs@netbsd.org
Cc: pkg-manager@netbsd.org, gnats-admin@netbsd.org, pkgsrc-bugs@netbsd.org
Subject: Re: pkg/54349: bootstrap with --prefix fails on Solaris 10
Date: Sun, 7 Jul 2019 11:01:16 +0200
On Sun, Jul 7, 2019 at 8:49 AM <hiroshi-hakoyama@nagano.ac.jp> wrote:
> ===> bootstrap started: Sat Jul 6 18:58:16 JST 2019
> ./bootstrap: bad substitution
> >Fix:
> a workaround:
>
> vi bootstrap
> #! /bin/sh -> #! /usr/bin/bash
Thank you for the report! Do you happen to know where in the file this
happens, i.e. can you get a line number?
--
Benny
From: Hiroshi Hakoyama <hiroshi-hakoyama@nagano.ac.jp>
To: gnats-bugs@netbsd.org
Cc: pkg-manager@netbsd.org,
gnats-admin@netbsd.org,
pkgsrc-bugs@netbsd.org
Subject: Re: pkg/54349: bootstrap with --prefix fails on Solaris 10
Date: Thu, 11 Jul 2019 19:31:07 +0900
Dear Benny,
/bin/sh on Solaris 10 is Bourne Shell.
> Do you happen to know where in the file this
> happens, i.e. can you get a line number?
line 501, probably.
Hiroshi
env CFLAGS=3D-O2 CC=3D/opt/csw/gcc4/bin/gcc GCCBASE=3D/opt/csw/gcc4 =
./bootstrap --prefix=3D/usr/pkg2 --varbase
# $NetBSD: bootstrap,v 1.268 2019/07/08 19:44:08 sevan Exp $
#
# Copyright (c) 2001-2011 Alistair Crooks <agc@NetBSD.org>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the =
distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED =
WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE =
DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, =
BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF =
USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE =
OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#set -x
# the following environment variables are honored:
# compiler/linker flags: CFLAGS, CPPFLAGS, LDFLAGS, LIBS
# tools: CP, GREP, ID, MKDIR, SH, TEST, TOUCH, XARGS
BOOTSTRAP_VERSION=3D20060721
# Don't let the bootstrap program get confused by a pre-existing mk.conf
# file.
MAKECONF=3D/dev/null
export MAKECONF
# No vulnerability checks since there might be an incompatible checker =
installed
NO_PKGTOOLS_REQD_CHECK=3Dyes
export NO_PKGTOOLS_REQD_CHECK
unprivileged=3Dno
preserve_path=3Dno
# where the building takes place
bootstrapdir=3D`dirname "$0"`
bootstrapdir=3D`cd "${bootstrapdir}" && pwd`
pkgsrcdir=3D`dirname "${bootstrapdir}"`
wrkdir=3D"`pwd`/work"
usage=3D"Usage: $0 "'
[ --abi [32|64] ]
[ --binary-kit <tarball> ]
[ --binary-macpkg <pkg> ]
[ --compiler <compiler> ]
[ --cwrappers <auto|yes|no> ]
[ --full ]
[ --gzip-binary-kit <tarball> ]
[ --help ]
[ --make-jobs <num> ]
[ --mk-fragment <mk.conf> ]
[ --pkgdbdir <pkgdbdir> ]
[ --pkginfodir <pkginfodir> ]
[ --pkgmandir <pkgmandir> ]
[ --prefer-pkgsrc <list|yes|no> ]
[ --prefix <prefix> ]
[ --preserve-path ]
[ --quiet ]
[ --sysconfdir <sysconfdir> ]
[ --unprivileged | --ignore-user-check ]
[ --varbase <varbase> ]
[ --workdir <workdir> ]
'
# strip / for BSD/OS, strip - for HP-UX
opsys=3D`uname -s | tr -d /-`
mkbinarykit_macpkg()
{
local macdestdir
macdestdir=3D${wrkdir}/macpkg-destdir
rm -rf ${macdestdir} || die "cleanup destdir"
mkdir -p ${macdestdir}${prefix} || die "mkdir destprefix"
rmdir ${macdestdir}${prefix} || die "rmdir destprefix"
cp -Rp ${prefix} ${macdestdir}${prefix} || die "copy prefix"
if [ ! -d ${macdestdir}${pkgdbdir} ]; then
mkdir -p ${macdestdir}${pkgdbdir} || die "mkdir =
destdbdir"
rmdir ${macdestdir}${pkgdbdir} || die "rmdir destdbdir"
cp -Rp ${pkgdbdir} ${macdestdir}${pkgdbdir} || die "copy =
dbdir"
fi
${sedprog} -e "s|%WRKDIR%|${wrkdir}|g" \
-e "s|%TARGETDIR%|${targetdir}|g" -e =
"s|%DATE%|${date}|g" \
< macpkg.pmproj.in > ${wrkdir}/macpkg.pmproj
${packagemaker} -build -proj ${wrkdir}/macpkg.pmproj -p =
"${binary_macpkg}"
}
mkbinarykit_tar()
{
# in case tar was built by bootstrap
PATH=3D"$prefix/bin:$PATH"; export PATH
cd / && tar -hcf "${binary_kit}" .$prefix .$pkgdbdir =
.$etc_mk_conf
}
mkbinarykit_tgz()
{
# in case tar was built by bootstrap
PATH=3D"$prefix/bin:$PATH"; export PATH
cd / && tar -hcf - .$prefix .$pkgdbdir .$etc_mk_conf | gzip > =
"${binary_gzip_kit}"
}
die()
{
echo >&2 "$@"
exit 1
}
echo_msg()
{
echo "=3D=3D=3D> $@"
}
# see if we're using gcc. If so, set $compiler_is_gnu to '1'.
get_compiler()
{
testcc=3D"${CC}"
# normally, we'd just use 'cc', but certain configure tools look
# for gcc specifically, so we have to see if that comes first
if [ -z "${testcc}" ]; then
save_IFS=3D"${IFS}"
IFS=3D':'
for dir in ${PATH}; do
test -z "$dir" && dir=3D.
if [ -x "$dir/gcc" ]; then
testcc=3D"$dir/gcc"
break
fi
done
IFS=3D"${save_IFS}"
fi
# Clang compiler pretends to be GCC, so we have to check that
cat >${wrkdir}/$$.c <<EOF
#ifdef __clang__
indeed
#endif
EOF
compiler_is_clang=3D`${testcc:-cc} -E ${wrkdir}/$$.c 2>/dev/null =
| grep -c indeed`
rm -f ${wrkdir}/$$.c
cat >${wrkdir}/$$.c <<EOF
#ifdef __GNUC__
#ifndef __clang__
indeed
#endif
#endif
EOF
compiler_is_gnu=3D`${testcc:-cc} -E ${wrkdir}/$$.c 2>/dev/null | =
grep -c indeed`
rm -f ${wrkdir}/$$.c
}
get_abi()
{
abi_opsys=3D$@
if [ -n "$abi" ]; then
case "$abi_opsys" in
IRIX)
die "ERROR: $abi_opsys has special ABI handling, =
--abi not supported (yet)."
;;
esac
fi
case "$abi_opsys" in
IRIX)
if [ `uname -r` -ge 6 ]; then
abi=3D`sed -e 's/.*\(abi=3D\)\([on]*[36][24]\).*/\2/' =
/etc/compiler.defaults`
isa=3D`sed -e 's/.*\(isa=3Dmips\)\([1234]\).*/\2/' =
/etc/compiler.defaults`
case "$abi" in
o32)
imakeopts=3D"-DBuildO32 -DSgiISAo32=3D$isa"
abi=3D""
;;
n32) imakeopts=3D"-DBuildN32 -DSgiISA32=3D$isa"
abi=3D"32"
;;
64 | n64)
imakeopts=3D"-DBuild64bit -DSgiISA64=3D$isa"
abi=3D"64"
;;
esac
else # IRIX before 6
abi=3D32
fi
;;
esac
}
get_machine_arch_aix()
{
_cpuid=3D`/usr/sbin/lsdev -C -c processor -S available | sed 1q =
| awk '{ print $1 }'`
if /usr/sbin/lsattr -El $_cpuid | grep ' POWER' >/dev/null 2>&1; =
then
echo rs6000
else
echo powerpc
fi
}
get_machine_arch_darwin()
{
case `uname -p` in
i386)
# Returns "i386" or "x86_64" depending on CPU
echo `uname -m`
;;
powerpc)
# sysctl mib exists on 64-bit hardware
if [ -n "`sysctl -n hw.optional.64bitops 2>/dev/null`" =
]; then
echo "powerpc64"
else
echo "powerpc"
fi
;;
esac
}
check_prog()
{
_var=3D"$1"; _name=3D"$2"
eval _tmp=3D\"\$$_var\"
if [ "x$_tmp" !=3D "x" ]; then
# Variable is already set (by the user, for example)
return 0
fi
for _d in `echo $PATH | tr ':' ' '`; do
if [ -f "$_d/$_name" ] && [ -x "$_d/$_name" ]; then
# Program found
eval $_var=3D\""$_d/$_name"\"
return 1
fi
done
die "$_name not found in path."
}
opsys_finish()
{
case "$opsys" in
IRIX)
if [ -n "$imakeopts" ]; then
echo "IMAKEOPTS+=3D $imakeopts" >> =
${TARGET_MKCONF}
fi
if [ `uname -r` -lt 6 ]; then
echo_msg "Installing fake ldd script"
run_cmd "$install_sh -c -o $user -g $group -m =
755 $pkgsrcdir/pkgtools/bootstrap-extras/files/fakeldd $prefix/sbin"
need_extras=3Dyes
echo "LDD=3D =
$prefix/sbin/fakeldd" >> ${TARGET_MKCONF}
fi
;;
Haiku)
need_extras=3Dyes
echo "LDD=3D $prefix/sbin/fakeldd" =
>> ${TARGET_MKCONF}
;;
esac
}
is_root()
{
if [ `uname -s` =3D "IRIX" ]; then
if [ `uname -r` -lt 6 -a -z "$ID" ]; then
# older version of IRIX have an id command with limited features
if [ "`$idprog`" !=3D "uid=3D0(root) gid=3D0(sys)"=
]; then
return 1
fi
return 0
fi
fi
if [ `$idprog -u` !=3D 0 ]; then
return 1
fi
return 0
}
# run a command, abort if it fails
run_cmd()
{
echo_msg "running: $@"
eval "$@"
ret=3D$?
if [ $ret -ne 0 ]; then
echo_msg "exited with status $ret"
die "aborted."
fi
}
# Some versions of mkdir (notably SunOS) bail out too easily, so use the
# install-sh wrapper instead.
mkdir_p()
{
for dir in $@; do
run_cmd "$install_sh -d -o $user -g $group $dir"
done
}
mkdir_p_early()
{
[ -d "$1" ] && return 0
mkdir -p "$1" 2> /dev/null && return 0
parent=3D`dirname "$1"`
mkdir_p_early "$parent"
if [ ! -d "$1" ] && mkdir "$1"; then
echo_msg "mkdir $1 exited with status $?"
die "aborted."
fi
return 0
}
copy_src()
{
_src=3D"$1"; _dst=3D"$2"
if [ ! -d $wrkdir/$_dst ]; then
mkdir_p $wrkdir/$_dst
fi
$cpprog -r $_src/* $wrkdir/$_dst
if [ -f $wrkdir/$_dst/config.guess ]; then
$cpprog $pkgsrcdir/mk/gnu-config/config.guess =
$wrkdir/$_dst/
fi
if [ -f $wrkdir/$_dst/config.sub ]; then
$cpprog $pkgsrcdir/mk/gnu-config/config.sub =
$wrkdir/$_dst/
fi
}
get_optarg()
{
expr "x$1" : "x[^=3D]*=3D\\(.*\\)"
}
checkarg_sane_absolute_path()
{
case "$1" in
"") ;; # the default value will be used.
*[!-A-Za-z0-9_./]*)
die "ERROR: Invalid characters in path $1 (from $2)." ;;
*/) die "ERROR: The argument to $2 must not end in /." ;;
*//* | */. | */./* | */.. | */../*)
die "ERROR: The path $1 (from $2) must be canonical." ;;
/*) [ "${3-}" =3D "may-be-symlink" ] \
|| checkarg_no_symlink_path "$1" "$2" ;;
*) die "ERROR: The argument to $2 must be an absolute =
path." ;;
esac
}
checkarg_no_symlink_path()
{
_dir=3D$1
while [ ! -d "$_dir" ]; do
_dir=3D${_dir%/*}
[ "$_dir" ] || _dir=3D"/"
done
_realdir=3D`cd "$_dir" && exec pwd`
[ "$_realdir" =3D "$_dir" ] && return
die "ERROR: The path $1 (from $2) must not contain symlinks.
Given path : $1
Resolved path: $_realdir${1##${_dir}}
Several packages assume that the given path of $2 stays the same =
when
symlinks are resolved. When that assumption fails, they will:
* not find some include files or libraries during the build =
phase
since the files from dependencies are not installed in
\${WRKDIR}/.buildlink.
* install their files into the wrong path inside =
\${WRKDIR}/.destdir,
which will fail the PLIST check during the install phase."
}
checkarg_sane_relative_path() {
case "$1" in
"") ;; # the default value will be used.
*[!-A-Za-z0-9_./]*)
die "ERROR: Invalid characters in path $1 (from $2)." ;;
/*) die "ERROR: The argument to $2 must be a relative path." =
;;
*) ;;
esac
}
bootstrap_sh=3D${SH-/bin/sh}
bootstrap_sh_set=3D${SH+set}
case "$bootstrap_sh" in
/*)
;;
*)
die "ERROR: The variable SH must contain an absolute path"
;;
esac
# On some newer Ubuntu installations, /bin/sh is a symlink to /bin/dash,
# whose echo(1) is not BSD-compatible.
# On all Debian GNU/kFreeBSD 7.0, /bin/sh is a symlink to /bin/dash, and
# use /bin/bash. bootstrap forces /bin/bash is used.
dash_echo_test=3D`$bootstrap_sh -c 'echo "\\100"'`
if [ "$opsys" !=3D "GNUkFreeBSD" ] && [ "$dash_echo_test" =3D "@" ]; =
then
{ echo "ERROR: Your shell's echo command is not BSD-compatible."
echo "ERROR: Please select another shell by setting the =
environment"
echo "ERROR: variable SH."
} 1>&2
exit 1;
fi
if [ -n "$PKG_PATH" ]; then
die "ERROR: Please unset PKG_PATH before running bootstrap."
fi
build_start=3D`date`
echo_msg "bootstrap command: $0 $@"
=3D=3D=3D> bootstrap command: ./bootstrap --prefix=3D/usr/pkg2 --varbase
echo_msg "bootstrap started: $build_start"
=3D=3D=3D> bootstrap started: Thu Jul 11 19:26:29 JST 2019
# ensure system locations are empty; we will set them later when we know
# whether they will be system wide or user specific
prefix=3D
pkgdbdir=3D
pkginfodir=3D
pkgmandir=3D
sysconfdir=3D
varbase=3D
compiler=3D""
cwrappers=3Dauto
full=3Dno
make_jobs=3D1
mk_fragment=3D
quiet=3Dno
while [ $# -gt 0 ]; do
case $1 in
--workdir=3D*) wrkdir=3D`get_optarg "$1"` ;;
--workdir) wrkdir=3D"$2"; shift ;;
--prefix=3D*) prefix=3D`get_optarg "$1"` ;;
--prefix) prefix=3D"$2"; shift ;;
--pkgdbdir=3D*) pkgdbdir=3D`get_optarg "$1"` ;;
--pkgdbdir) pkgdbdir=3D"$2"; shift ;;
--pkginfodir=3D*) pkginfodir=3D`get_optarg "$1"` ;;
--pkginfodir) pkginfodir=3D"$2"; shift ;;
--pkgmandir=3D*) pkgmandir=3D`get_optarg "$1"` ;;
--pkgmandir) pkgmandir=3D"$2"; shift ;;
--sysconfdir=3D*) sysconfdir=3D`get_optarg "$1"` ;;
--sysconfdir) sysconfdir=3D"$2"; shift ;;
--varbase=3D*) varbase=3D`get_optarg "$1"` ;;
--varbase) varbase=3D"$2"; shift ;;
--compiler=3D*) compiler=3D`get_optarg "$1"` ;;
--compiler) compiler=3D"$2"; shift ;;
--abi=3D*) abi=3D`get_optarg "$1"` ;;
--abi) abi=3D"$2"; shift ;;
--cwrappers=3D*) cwrappers=3D`get_optarg "$1"` ;;
--cwrappers) cwrappers=3D"$2"; shift ;;
--unprivileged | --ignore-user-check) unprivileged=3Dyes ;;
--prefer-pkgsrc=3D*)
prefer_pkgsrc=3D`get_optarg "$1"` ;;
--prefer-pkgsrc)
prefer_pkgsrc=3D"$2"; shift ;;
--preserve-path) preserve_path=3Dyes ;;
--mk-fragment=3D*)
mk_fragment=3D`get_optarg "$1"` ;;
--mk-fragment)
mk_fragment=3D"$2"; shift ;;
--binary-kit=3D*)
binary_kit=3D`get_optarg "$1"` ;;
--binary-kit)
binary_kit=3D"$2"; shift ;;
--gzip-binary-kit=3D*)
binary_gzip_kit=3D`get_optarg "$1"` ;;
--gzip-binary-kit)
binary_gzip_kit=3D"$2"; shift ;;
--binary-macpkg=3D*)
binary_macpkg=3D`get_optarg "$1"` ;;
--binary-macpkg)
binary_macpkg=3D"$2"; shift ;;
--make-jobs=3D*) make_jobs=3D`get_optarg "$1"` ;;
--make-jobs) make_jobs=3D"$2"; shift ;;
--full) full=3Dyes ;;
--quiet) quiet=3Dyes ;;
--help) echo "$usage"; exit ;;
-h) echo "$usage"; exit ;;
-*) echo "${0##*/}: unknown option \"$1\"" 1>&2
echo "$usage" 1>&2; exit 1 ;;
esac
shift
done
./bootstrap: cannot shift
> 2019/07/07 18:05=E3=80=81Benny Siegert =
<bsiegert@gmail.com>=E3=81=AE=E3=83=A1=E3=83=BC=E3=83=AB:
>=20
> The following reply was made to PR pkg/54349; it has been noted by =
GNATS.
>=20
> From: Benny Siegert <bsiegert@gmail.com>
> To: gnats-bugs@netbsd.org
> Cc: pkg-manager@netbsd.org, gnats-admin@netbsd.org, =
pkgsrc-bugs@netbsd.org
> Subject: Re: pkg/54349: bootstrap with --prefix fails on Solaris 10
> Date: Sun, 7 Jul 2019 11:01:16 +0200
>=20
> On Sun, Jul 7, 2019 at 8:49 AM <hiroshi-hakoyama@nagano.ac.jp> wrote:
>=20
>> =3D=3D=3D> bootstrap started: Sat Jul 6 18:58:16 JST 2019
>> ./bootstrap: bad substitution
>=20
>>> Fix:
>> a workaround:
>>=20
>> vi bootstrap
>> #! /bin/sh -> #! /usr/bin/bash
>=20
> Thank you for the report! Do you happen to know where in the file this
> happens, i.e. can you get a line number?
>=20
>=20
> --=20
> Benny
>=20
From: Hiroshi Hakoyama <hiroshi-hakoyama@nagano.ac.jp>
To: gnats-bugs@netbsd.org
Cc: pkg-manager@netbsd.org,
gnats-admin@netbsd.org,
pkgsrc-bugs@netbsd.org
Subject: Re: pkg/54349: bootstrap with --prefix fails on Solaris 10
Date: Sat, 20 Jul 2019 15:12:47 +0900
Revision 1.262 is OK.
Revision 1.263 introduced the problem.
The trouble maybe relate to the change introduce in =
checkarg_sane_absolute_path() or/and checkarg_no_symlink_path().
Hiroshi
> 2019/07/11 19:35=E3=80=81Hiroshi Hakoyama =
<hiroshi-hakoyama@nagano.ac.jp>=E3=81=AE=E3=83=A1=E3=83=BC=E3=83=AB:
>=20
> The following reply was made to PR pkg/54349; it has been noted by =
GNATS.
>=20
> From: Hiroshi Hakoyama <hiroshi-hakoyama@nagano.ac.jp>
> To: gnats-bugs@netbsd.org
> Cc: pkg-manager@netbsd.org,
> gnats-admin@netbsd.org,
> pkgsrc-bugs@netbsd.org
> Subject: Re: pkg/54349: bootstrap with --prefix fails on Solaris 10
> Date: Thu, 11 Jul 2019 19:31:07 +0900
>=20
> Dear Benny,
>=20
> /bin/sh on Solaris 10 is Bourne Shell.
>=20
>> Do you happen to know where in the file this
>> happens, i.e. can you get a line number?
>=20
> line 501, probably.
>=20
>=20
> Hiroshi
>=20
> env CFLAGS=3D3D-O2 CC=3D3D/opt/csw/gcc4/bin/gcc =
GCCBASE=3D3D/opt/csw/gcc4 =3D
> ./bootstrap --prefix=3D3D/usr/pkg2 --varbase
> # $NetBSD: bootstrap,v 1.268 2019/07/08 19:44:08 sevan Exp $
> #
> # Copyright (c) 2001-2011 Alistair Crooks <agc@NetBSD.org>
> # All rights reserved.
> #
> # Redistribution and use in source and binary forms, with or without
> # modification, are permitted provided that the following conditions
> # are met:
> # 1. Redistributions of source code must retain the above copyright
> # notice, this list of conditions and the following disclaimer.
> # 2. Redistributions in binary form must reproduce the above copyright
> # notice, this list of conditions and the following disclaimer in =
the
> # documentation and/or other materials provided with the =3D
> distribution.
> #
> # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
> # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED =3D
> WARRANTIES
> # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE =3D
> DISCLAIMED.
> # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
> # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, =
=3D
> BUT
> # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF =
=3D
> USE,
> # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON =
ANY
> # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE =
USE =3D
> OF
> # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> #
> #set -x
>=20
> # the following environment variables are honored:
> # compiler/linker flags: CFLAGS, CPPFLAGS, LDFLAGS, LIBS
> # tools: CP, GREP, ID, MKDIR, SH, TEST, TOUCH, XARGS
>=20
>=20
> BOOTSTRAP_VERSION=3D3D20060721
>=20
> # Don't let the bootstrap program get confused by a pre-existing =
mk.conf
> # file.
> MAKECONF=3D3D/dev/null
> export MAKECONF
>=20
> # No vulnerability checks since there might be an incompatible checker =
=3D
> installed
> NO_PKGTOOLS_REQD_CHECK=3D3Dyes
> export NO_PKGTOOLS_REQD_CHECK
>=20
> unprivileged=3D3Dno
>=20
> preserve_path=3D3Dno
>=20
> # where the building takes place
> bootstrapdir=3D3D`dirname "$0"`
> bootstrapdir=3D3D`cd "${bootstrapdir}" && pwd`
> pkgsrcdir=3D3D`dirname "${bootstrapdir}"`
> wrkdir=3D3D"`pwd`/work"
>=20
> usage=3D3D"Usage: $0 "'
> [ --abi [32|64] ]
> [ --binary-kit <tarball> ]
> [ --binary-macpkg <pkg> ]
> [ --compiler <compiler> ]
> [ --cwrappers <auto|yes|no> ]
> [ --full ]
> [ --gzip-binary-kit <tarball> ]
> [ --help ]
> [ --make-jobs <num> ]
> [ --mk-fragment <mk.conf> ]
> [ --pkgdbdir <pkgdbdir> ]
> [ --pkginfodir <pkginfodir> ]
> [ --pkgmandir <pkgmandir> ]
> [ --prefer-pkgsrc <list|yes|no> ]
> [ --prefix <prefix> ]
> [ --preserve-path ]
> [ --quiet ]
> [ --sysconfdir <sysconfdir> ]
> [ --unprivileged | --ignore-user-check ]
> [ --varbase <varbase> ]
> [ --workdir <workdir> ]
> '
>=20
> # strip / for BSD/OS, strip - for HP-UX
> opsys=3D3D`uname -s | tr -d /-`
>=20
> mkbinarykit_macpkg()
> {
> local macdestdir
> macdestdir=3D3D${wrkdir}/macpkg-destdir
> rm -rf ${macdestdir} || die "cleanup destdir"
>=20
> mkdir -p ${macdestdir}${prefix} || die "mkdir destprefix"
> rmdir ${macdestdir}${prefix} || die "rmdir destprefix"
> cp -Rp ${prefix} ${macdestdir}${prefix} || die "copy prefix"
>=20
> if [ ! -d ${macdestdir}${pkgdbdir} ]; then
> mkdir -p ${macdestdir}${pkgdbdir} || die "mkdir =3D
> destdbdir"
> rmdir ${macdestdir}${pkgdbdir} || die "rmdir =
destdbdir"
> cp -Rp ${pkgdbdir} ${macdestdir}${pkgdbdir} || die =
"copy =3D
> dbdir"
> fi
>=20
> ${sedprog} -e "s|%WRKDIR%|${wrkdir}|g" \
> -e "s|%TARGETDIR%|${targetdir}|g" -e =3D
> "s|%DATE%|${date}|g" \
> < macpkg.pmproj.in > ${wrkdir}/macpkg.pmproj
> ${packagemaker} -build -proj ${wrkdir}/macpkg.pmproj -p =3D
> "${binary_macpkg}"
> }
>=20
> mkbinarykit_tar()
> {
> # in case tar was built by bootstrap
> PATH=3D3D"$prefix/bin:$PATH"; export PATH
> cd / && tar -hcf "${binary_kit}" .$prefix .$pkgdbdir =3D
> .$etc_mk_conf
> }
>=20
> mkbinarykit_tgz()
> {
> # in case tar was built by bootstrap
> PATH=3D3D"$prefix/bin:$PATH"; export PATH
> cd / && tar -hcf - .$prefix .$pkgdbdir .$etc_mk_conf | gzip > =
=3D
> "${binary_gzip_kit}"
> }
>=20
> die()
> {
> echo >&2 "$@"
> exit 1
> }
>=20
> echo_msg()
> {
> echo "=3D3D=3D3D=3D3D> $@"
> }
>=20
> # see if we're using gcc. If so, set $compiler_is_gnu to '1'.
> get_compiler()
> {
> testcc=3D3D"${CC}"
> # normally, we'd just use 'cc', but certain configure tools =
look
> # for gcc specifically, so we have to see if that comes first
> if [ -z "${testcc}" ]; then
> save_IFS=3D3D"${IFS}"
> IFS=3D3D':'
> for dir in ${PATH}; do
> test -z "$dir" && dir=3D3D.
> if [ -x "$dir/gcc" ]; then
> testcc=3D3D"$dir/gcc"
> break
> fi
> done
> IFS=3D3D"${save_IFS}"
> fi
>=20
> # Clang compiler pretends to be GCC, so we have to check that
> cat >${wrkdir}/$$.c <<EOF
> #ifdef __clang__
> indeed
> #endif
> EOF
> compiler_is_clang=3D3D`${testcc:-cc} -E ${wrkdir}/$$.c =
2>/dev/null =3D
> | grep -c indeed`
> rm -f ${wrkdir}/$$.c
>=20
> cat >${wrkdir}/$$.c <<EOF
> #ifdef __GNUC__
> #ifndef __clang__
> indeed
> #endif
> #endif
> EOF
> compiler_is_gnu=3D3D`${testcc:-cc} -E ${wrkdir}/$$.c =
2>/dev/null | =3D
> grep -c indeed`
> rm -f ${wrkdir}/$$.c
>=20
> }
> get_abi()
> {
> abi_opsys=3D3D$@
>=20
> if [ -n "$abi" ]; then
> case "$abi_opsys" in
> IRIX)
> die "ERROR: $abi_opsys has special ABI =
handling, =3D
> --abi not supported (yet)."
> ;;
> esac
> fi
>=20
> case "$abi_opsys" in
> IRIX)
> if [ `uname -r` -ge 6 ]; then
> abi=3D3D`sed -e =
's/.*\(abi=3D3D\)\([on]*[36][24]\).*/\2/' =3D
> /etc/compiler.defaults`
> isa=3D3D`sed -e 's/.*\(isa=3D3Dmips\)\([1234]\).*/\2/' =
=3D
> /etc/compiler.defaults`
> case "$abi" in
> o32)
> imakeopts=3D3D"-DBuildO32 -DSgiISAo32=3D3D$isa"
> abi=3D3D""
> ;;
> n32) imakeopts=3D3D"-DBuildN32 -DSgiISA32=3D3D$isa"
> abi=3D3D"32"
> ;;
> 64 | n64)
> imakeopts=3D3D"-DBuild64bit -DSgiISA64=3D3D$isa"=
> abi=3D3D"64"
> ;;
> esac
> else # IRIX before 6
> abi=3D3D32
> fi
> ;;
> esac
> }
>=20
> get_machine_arch_aix()
> {
> _cpuid=3D3D`/usr/sbin/lsdev -C -c processor -S available | sed =
1q =3D
> | awk '{ print $1 }'`
> if /usr/sbin/lsattr -El $_cpuid | grep ' POWER' >/dev/null =
2>&1; =3D
> then
> echo rs6000
> else
> echo powerpc
> fi
> }
>=20
> get_machine_arch_darwin()
> {
> case `uname -p` in
> i386)
> # Returns "i386" or "x86_64" depending on CPU
> echo `uname -m`
> ;;
> powerpc)
> # sysctl mib exists on 64-bit hardware
> if [ -n "`sysctl -n hw.optional.64bitops 2>/dev/null`" =
=3D
> ]; then
> echo "powerpc64"
> else
> echo "powerpc"
> fi
> ;;
> esac
> }
>=20
> check_prog()
> {
> _var=3D3D"$1"; _name=3D3D"$2"
>=20
> eval _tmp=3D3D\"\$$_var\"
> if [ "x$_tmp" !=3D3D "x" ]; then
> # Variable is already set (by the user, for example)
> return 0
> fi
>=20
> for _d in `echo $PATH | tr ':' ' '`; do
> if [ -f "$_d/$_name" ] && [ -x "$_d/$_name" ]; then
> # Program found
> eval $_var=3D3D\""$_d/$_name"\"
> return 1
> fi
> done
>=20
> die "$_name not found in path."
> }
>=20
> opsys_finish()
> {
> case "$opsys" in
> IRIX)
> if [ -n "$imakeopts" ]; then
> echo "IMAKEOPTS+=3D3D =
$imakeopts" >> =3D
> ${TARGET_MKCONF}
> fi
> if [ `uname -r` -lt 6 ]; then
> echo_msg "Installing fake ldd script"
> run_cmd "$install_sh -c -o $user -g $group -m =
=3D
> 755 $pkgsrcdir/pkgtools/bootstrap-extras/files/fakeldd $prefix/sbin"
> need_extras=3D3Dyes
> echo "LDD=3D3D =3D
> $prefix/sbin/fakeldd" >> ${TARGET_MKCONF}
> fi
> ;;
> Haiku)
> need_extras=3D3Dyes
> echo "LDD=3D3D =
$prefix/sbin/fakeldd" =3D
>>> ${TARGET_MKCONF}
> ;;
> esac
> }
>=20
> is_root()
> {
> if [ `uname -s` =3D3D "IRIX" ]; then
> if [ `uname -r` -lt 6 -a -z "$ID" ]; then
> # older version of IRIX have an id command with limited =
features
> if [ "`$idprog`" !=3D3D "uid=3D3D0(root) =
gid=3D3D0(sys)"=3D
> ]; then
> return 1
> fi
> return 0
> fi
> fi
> if [ `$idprog -u` !=3D3D 0 ]; then
> return 1
> fi
> return 0
> }
>=20
> # run a command, abort if it fails
> run_cmd()
> {
> echo_msg "running: $@"
> eval "$@"
> ret=3D3D$?
> if [ $ret -ne 0 ]; then
> echo_msg "exited with status $ret"
> die "aborted."
> fi
> }
>=20
> # Some versions of mkdir (notably SunOS) bail out too easily, so use =
the
> # install-sh wrapper instead.
> mkdir_p()
> {
> for dir in $@; do
> run_cmd "$install_sh -d -o $user -g $group $dir"
> done
> }
>=20
> mkdir_p_early()
> {
> [ -d "$1" ] && return 0
> mkdir -p "$1" 2> /dev/null && return 0
> parent=3D3D`dirname "$1"`
> mkdir_p_early "$parent"
> if [ ! -d "$1" ] && mkdir "$1"; then
> echo_msg "mkdir $1 exited with status $?"
> die "aborted."
> fi
> return 0
> }
>=20
> copy_src()
> {
> _src=3D3D"$1"; _dst=3D3D"$2"
> if [ ! -d $wrkdir/$_dst ]; then
> mkdir_p $wrkdir/$_dst
> fi
> $cpprog -r $_src/* $wrkdir/$_dst
> if [ -f $wrkdir/$_dst/config.guess ]; then
> $cpprog $pkgsrcdir/mk/gnu-config/config.guess =3D
> $wrkdir/$_dst/
> fi
> if [ -f $wrkdir/$_dst/config.sub ]; then
> $cpprog $pkgsrcdir/mk/gnu-config/config.sub =3D
> $wrkdir/$_dst/
> fi
> }
>=20
> get_optarg()
> {
> expr "x$1" : "x[^=3D3D]*=3D3D\\(.*\\)"
> }
>=20
> checkarg_sane_absolute_path()
> {
> case "$1" in
> "") ;; # the default value will be used.
> *[!-A-Za-z0-9_./]*)
> die "ERROR: Invalid characters in path $1 (from $2)." =
;;
> */) die "ERROR: The argument to $2 must not end in /." ;;
> *//* | */. | */./* | */.. | */../*)
> die "ERROR: The path $1 (from $2) must be canonical." =
;;
> /*) [ "${3-}" =3D3D "may-be-symlink" ] \
> || checkarg_no_symlink_path "$1" "$2" ;;
> *) die "ERROR: The argument to $2 must be an absolute =3D
> path." ;;
> esac
> }
>=20
> checkarg_no_symlink_path()
> {
> _dir=3D3D$1
> while [ ! -d "$_dir" ]; do
> _dir=3D3D${_dir%/*}
> [ "$_dir" ] || _dir=3D3D"/"
> done
>=20
> _realdir=3D3D`cd "$_dir" && exec pwd`
> [ "$_realdir" =3D3D "$_dir" ] && return
>=20
> die "ERROR: The path $1 (from $2) must not contain symlinks.
>=20
> Given path : $1
> Resolved path: $_realdir${1##${_dir}}
>=20
> Several packages assume that the given path of $2 stays the =
same =3D
> when
> symlinks are resolved. When that assumption fails, they will:
>=20
> * not find some include files or libraries during the build =3D
> phase
> since the files from dependencies are not installed in
> \${WRKDIR}/.buildlink.
>=20
> * install their files into the wrong path inside =3D
> \${WRKDIR}/.destdir,
> which will fail the PLIST check during the install phase."
> }
>=20
> checkarg_sane_relative_path() {
> case "$1" in
> "") ;; # the default value will be used.
> *[!-A-Za-z0-9_./]*)
> die "ERROR: Invalid characters in path $1 (from $2)." =
;;
> /*) die "ERROR: The argument to $2 must be a relative =
path." =3D
> ;;
> *) ;;
> esac
> }
>=20
> bootstrap_sh=3D3D${SH-/bin/sh}
> bootstrap_sh_set=3D3D${SH+set}
>=20
> case "$bootstrap_sh" in
> /*)
> ;;
> *)
> die "ERROR: The variable SH must contain an absolute path"
> ;;
> esac
>=20
> # On some newer Ubuntu installations, /bin/sh is a symlink to =
/bin/dash,
> # whose echo(1) is not BSD-compatible.
> # On all Debian GNU/kFreeBSD 7.0, /bin/sh is a symlink to /bin/dash, =
and
> # use /bin/bash. bootstrap forces /bin/bash is used.
> dash_echo_test=3D3D`$bootstrap_sh -c 'echo "\\100"'`
> if [ "$opsys" !=3D3D "GNUkFreeBSD" ] && [ "$dash_echo_test" =3D3D "@" =
]; =3D
> then
> { echo "ERROR: Your shell's echo command is not =
BSD-compatible."
> echo "ERROR: Please select another shell by setting the =3D
> environment"
> echo "ERROR: variable SH."
> } 1>&2
> exit 1;
> fi
>=20
> if [ -n "$PKG_PATH" ]; then
> die "ERROR: Please unset PKG_PATH before running bootstrap."
> fi
>=20
> build_start=3D3D`date`
> echo_msg "bootstrap command: $0 $@"
> =3D3D=3D3D=3D3D> bootstrap command: ./bootstrap --prefix=3D3D/usr/pkg2 =
--varbase
> echo_msg "bootstrap started: $build_start"
> =3D3D=3D3D=3D3D> bootstrap started: Thu Jul 11 19:26:29 JST 2019
>=20
> # ensure system locations are empty; we will set them later when we =
know
> # whether they will be system wide or user specific
> prefix=3D3D
> pkgdbdir=3D3D
> pkginfodir=3D3D
> pkgmandir=3D3D
> sysconfdir=3D3D
> varbase=3D3D
>=20
> compiler=3D3D""
> cwrappers=3D3Dauto
> full=3D3Dno
> make_jobs=3D3D1
> mk_fragment=3D3D
> quiet=3D3Dno
>=20
> while [ $# -gt 0 ]; do
> case $1 in
> --workdir=3D3D*) wrkdir=3D3D`get_optarg "$1"` ;;
> --workdir) wrkdir=3D3D"$2"; shift ;;
> --prefix=3D3D*) prefix=3D3D`get_optarg "$1"` ;;
> --prefix) prefix=3D3D"$2"; shift ;;
> --pkgdbdir=3D3D*) pkgdbdir=3D3D`get_optarg "$1"` ;;
> --pkgdbdir) pkgdbdir=3D3D"$2"; shift ;;
> --pkginfodir=3D3D*) pkginfodir=3D3D`get_optarg "$1"` ;;
> --pkginfodir) pkginfodir=3D3D"$2"; shift ;;
> --pkgmandir=3D3D*) pkgmandir=3D3D`get_optarg "$1"` ;;
> --pkgmandir) pkgmandir=3D3D"$2"; shift ;;
> --sysconfdir=3D3D*) sysconfdir=3D3D`get_optarg "$1"` ;;
> --sysconfdir) sysconfdir=3D3D"$2"; shift ;;
> --varbase=3D3D*) varbase=3D3D`get_optarg "$1"` ;;
> --varbase) varbase=3D3D"$2"; shift ;;
> --compiler=3D3D*) compiler=3D3D`get_optarg "$1"` ;;
> --compiler) compiler=3D3D"$2"; shift ;;
> --abi=3D3D*) abi=3D3D`get_optarg "$1"` ;;
> --abi) abi=3D3D"$2"; shift ;;
> --cwrappers=3D3D*) cwrappers=3D3D`get_optarg "$1"` ;;
> --cwrappers) cwrappers=3D3D"$2"; shift ;;
> --unprivileged | --ignore-user-check) unprivileged=3D3Dyes ;;
> --prefer-pkgsrc=3D3D*)
> prefer_pkgsrc=3D3D`get_optarg "$1"` ;;
> --prefer-pkgsrc)
> prefer_pkgsrc=3D3D"$2"; shift ;;
> --preserve-path) preserve_path=3D3Dyes ;;
> --mk-fragment=3D3D*)
> mk_fragment=3D3D`get_optarg "$1"` ;;
> --mk-fragment)
> mk_fragment=3D3D"$2"; shift ;;
> --binary-kit=3D3D*)
> binary_kit=3D3D`get_optarg "$1"` ;;
> --binary-kit)
> binary_kit=3D3D"$2"; shift ;;
> --gzip-binary-kit=3D3D*)
> binary_gzip_kit=3D3D`get_optarg "$1"` ;;
> --gzip-binary-kit)
> binary_gzip_kit=3D3D"$2"; shift ;;
> --binary-macpkg=3D3D*)
> binary_macpkg=3D3D`get_optarg "$1"` ;;
> --binary-macpkg)
> binary_macpkg=3D3D"$2"; shift ;;
> --make-jobs=3D3D*) make_jobs=3D3D`get_optarg "$1"` ;;
> --make-jobs) make_jobs=3D3D"$2"; shift ;;
> --full) full=3D3Dyes ;;
> --quiet) quiet=3D3Dyes ;;
> --help) echo "$usage"; exit ;;
> -h) echo "$usage"; exit ;;
> -*) echo "${0##*/}: unknown option \"$1\"" 1>&2
> echo "$usage" 1>&2; exit 1 ;;
> esac
> shift
> done
> ./bootstrap: cannot shift
>=20
>=20
>=20
>> 2019/07/07 18:05=3DE3=3D80=3D81Benny Siegert =3D
> <bsiegert@gmail.com>=3DE3=3D81=3DAE=3DE3=3D83=3DA1=3DE3=3D83=3DBC=3DE3=3D=
83=3DAB:
>> =3D20
>> The following reply was made to PR pkg/54349; it has been noted by =3D
> GNATS.
>> =3D20
>> From: Benny Siegert <bsiegert@gmail.com>
>> To: gnats-bugs@netbsd.org
>> Cc: pkg-manager@netbsd.org, gnats-admin@netbsd.org, =3D
> pkgsrc-bugs@netbsd.org
>> Subject: Re: pkg/54349: bootstrap with --prefix fails on Solaris 10
>> Date: Sun, 7 Jul 2019 11:01:16 +0200
>> =3D20
>> On Sun, Jul 7, 2019 at 8:49 AM <hiroshi-hakoyama@nagano.ac.jp> wrote:
>> =3D20
>>> =3D3D=3D3D=3D3D> bootstrap started: Sat Jul 6 18:58:16 JST 2019
>>> ./bootstrap: bad substitution
>> =3D20
>>>> Fix:
>>> a workaround:
>>> =3D20
>>> vi bootstrap
>>> #! /bin/sh -> #! /usr/bin/bash
>> =3D20
>> Thank you for the report! Do you happen to know where in the file =
this
>> happens, i.e. can you get a line number?
>> =3D20
>> =3D20
>> --=3D20
>> Benny
>> =3D20
>=20
Responsible-Changed-From-To: pkg-manager->rillig
Responsible-Changed-By: wiz@NetBSD.org
Responsible-Changed-When: Sat, 20 Jul 2019 06:39:26 +0000
Responsible-Changed-Why:
Over to committer
State-Changed-From-To: feedback->analyzed
State-Changed-By: wiz@NetBSD.org
State-Changed-When: Sat, 20 Jul 2019 06:39:26 +0000
State-Changed-Why:
breaking commit identified
State-Changed-From-To: analyzed->closed
State-Changed-By: rillig@NetBSD.org
State-Changed-When: Sun, 21 Jul 2019 20:16:22 +0000
State-Changed-Why:
Fixed in bootstrap/bootstrap 1.269
From: "Benny Siegert" <bsiegert@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/54349 CVS commit: [pkgsrc-2019Q2] pkgsrc/bootstrap
Date: Tue, 23 Jul 2019 11:26:32 +0000
Module Name: pkgsrc
Committed By: bsiegert
Date: Tue Jul 23 11:26:32 UTC 2019
Modified Files:
pkgsrc/bootstrap [pkgsrc-2019Q2]: bootstrap
Log Message:
Pullup ticket #6010 - requested by rillig
bootstrap: Solaris 10 build fix (PR pkg/54349)
Revisions pulled up:
- bootstrap/bootstrap 1.269
---
Module Name: pkgsrc
Committed By: rillig
Date: Sun Jul 21 20:14:06 UTC 2019
Modified Files:
pkgsrc/bootstrap: bootstrap
Log Message:
bootstrap/bootstrap: fix bootstrap on Solaris 10
Fixes pkg/54349.
To generate a diff of this commit:
cvs rdiff -u -r1.266.2.1 -r1.266.2.2 pkgsrc/bootstrap/bootstrap
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.43 2018/01/16 07:36:43 maya Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2017
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.