Subject: bin/10654: pkg_install/Makefile.inc includes bits that host cross-build
To: None <gnats-bugs@gnats.netbsd.org>
From: None <cgd@sibyte.com>
List: netbsd-bugs
Date: 07/21/2000 18:32:17
>Number: 10654
>Category: bin
>Synopsis: pkg_install/Makefile.inc includes bits that host cross-build
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: bin-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Jul 21 18:33:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: Chris Demetriou
>Release: NetBSD-current as of 2000-07-21
>Organization:
>Environment:
mostly irrelevant, but: cross-compiling NetBSD from Solaris.
>Description:
The determination and use of 'OPSYS' in usr.sbin/pkg_install/Makefile.inc
(1) uses an absolutely undocumented variable to set the 'operating
system being compiled for' (hey, i thought this was a NetBSD
source tree!), and (2) determines that variable (uname) in a way
that breaks cross-compilation.
The right think here isn't to document or check for the variable
more carefully. This is a NetBSD source tree, and that means
that it's being compiled for NetBSD. if you want to do magic
for compiling for other operating systems, do it in a way that
doesn't break NetBSD native or cross builds (and doesn't require
any additional cross-build setup; we _already_ require way too much,
and it's not adequately documented). (This whole random use of
host programs like uname thang reminds me of the joys of attempting
to cross-compile random linux user-land packages!)
Additionally, while the CHMOD, CHOWN, and CHGRP defintions may be
'nice,' they're stylistically very bad. If there's the need
to hard-code a specific path to a program to execute (and,
really, unless something's very wrong there shouldn't be),
then it should be gotten from <paths.h> rather than being hard-coded
in a makefile.
>How-To-Repeat:
read pkg_install/Makefile.inc. try to cross-build from a solaris
host.
Look for any statement about definition or use of "OPSYS" and
find none. Realize that since you're compiling NetBSD, such a
check shouldn't be necessary.
While you're there, notice the hard-coded paths.
>Fix:
nuke the non-NetBSD cases from the Makefile.
fix the code which needs hard-coded paths to either:
* not need it (i.e., try a default path if absolutely
necessary), or
* use paths.h as a last resort.
>Release-Note:
>Audit-Trail:
>Unformatted: