Commit graph

403 commits

Author SHA1 Message Date
obache
2d7e9ef220 Add support of SSD/Linux.
* ROOT_GROUP=wheel, fixes PR#42073.
 * LOWER_VENDOR=ssd
 * adjust paths for some tools
2010-01-16 02:16:35 +00:00
joerg
5b3d5c1a9f Add LP64PLATFORMS, a list of patterns for 64bit systems.
This allows easily disabling software that is not 64bit clean.
2010-01-06 18:21:44 +00:00
obache
ad2aadb837 Interix>=5.2 have libc.so.5.2, but no higer revision exists.
So gave up to detect OS_VERSION with shlib version if libc.so.5.2 exists.
2009-12-13 08:19:45 +00:00
tron
018be612e3 Unconditionally set the default ABI to 32-Bit for Mac OS X Snow Leopard.
There are too many third party applications which don't build using
the 64-Bit ABI at the moment.

Approved by Alistair Crooks.
2009-09-24 17:24:13 +00:00
hasso
390b0c73c2 Workaround for amd64 vs x86_64 mess on DragonFly as well. 2009-09-22 19:19:29 +00:00
tron
a42e90b053 Try again to fix Mac OS X Snow Leopard ABI issue (32-bit vs. 64-bit):
1.) Always set the "ABI" variable.
2.) Default to 64-bit mode if the machine is able to run 64-bit binaries.
    This seems to match the default behavior of Xcode (Apple's toolchain).
3.) Set "LOWER_ARCH" so it automatically evalutes to the correct value
    based on the ABI we are compiling for, not on based on the kernel
    the machine is running. This even works properly if the ABI is
    set in "/etc/mk.conf" or on the command line.

Thanks a lot to OBATA Akio for providing the crucial hint to get
this working properly.
2009-09-22 09:17:50 +00:00
tron
94e100eb38 Revert last change. It doesn't work properly because the "ABI" setting
is not defined that early as we have included neither "bsd.own.mk"
nor "mk.conf" yet.

We unfortunately cannot make these adjustments later because "bsd.own.mk"
and "mk.conf" would be processed with an incorrect value for
"MACHINE_ARCH".
2009-09-21 15:28:03 +00:00
tron
66d67cdc56 Try to fix Mac OS X Snow Leopard ABI issue (32-bit vs. 64-bit):
1.) Always set the "ABI" variable.
2.) Default to 64-bit mode if the machine is able to run 64-bit binaries.
    This seems to match the default behavior of Xcode (Apple's toolchain).
3.) Set "LOWER_ARCH" based on the ABI we are compiling for, not on
    based on the kernel the machine is running.

The "gnupg" package now builds for the 64-Bit API without extra tricks.
2009-09-21 10:56:08 +00:00
tron
bbf44b1044 Add support for X.org bundled with Mac OS X Snow Leopard. 2009-09-13 13:28:46 +00:00
joerg
78ce287831 For developer mode, warn about packages without destdir support. 2009-05-23 23:48:44 +00:00
wiz
4e59ae6190 Fix previous:
Actually check what you want to check -- both for "yes" and "no", not
only for "no".
2009-05-19 09:33:53 +00:00
joerg
f2eff61d34 Sanity check that USE_DESTDIR is either yes or no after downgrading
USE_DESTDIR=full. This makes setting USE_DESTDIR=full on the command
line an explicit error as side effect.
2009-05-17 23:44:53 +00:00
joerg
c34f3d0f89 Make USE_DESTDIR=full the default value and retire the option. 2009-05-09 14:59:08 +00:00
joerg
419c5ad860 Clear USE_LANGUAGES for meta packages. 2009-04-08 23:03:14 +00:00
joerg
28475e7501 Disable CHECK_PERMS by default for meta-packages. 2009-04-08 23:02:03 +00:00
cube
403e256ff6 Merge cube-native-xorg, so that pkgsrc-current can be used with the native
X.Org found in NetBSD-current.

Thanks a lot to all who helped, especially Matthias Scheler who did
repeated tests on Mac OS X and older versions of NetBSD to make sure the
support for those platforms wouldn't be broken (or at least, not fatally,
as I would still expect a few hiccups here and there, because there is
only so much one can test in such limited time).

On the infrastructure side, this branch brings pkgconfig-builtin.mk, in
order to write very easily new builtin.mk files.  It can actually handle
more than just pkgconfig files, but it will provide a version if it finds
such a file.  x11.builtin.mk has also been made more useful and now all
existing (and future!) native-X11-related builtin.mk files should include
it.
2008-10-05 21:36:32 +00:00
tron
ed5b1cca8d X11 is located in "/usr/X11" under Mac OS X Leopard, "/usr/X11R6" is just
a symlink. Use the correct directory because the buildlink framework will
otherwise remove compiler options like "-I/usr/X11/include/pixman-1".
2008-09-16 11:40:10 +00:00
tnn
b41681c446 Simplify the logic that avoids using compat_headers during bootstrap. 2008-06-22 16:25:32 +00:00
joerg
d092c3def3 Make it more explicit that PKG_DESTDIR_SUPPORT and as side effect
META_PACKAGE must be set before including bsd.prefs.mk.
2008-06-16 15:10:48 +00:00
joerg
3ba79d294e Move META_PACKAGE logic from bsd.pkg.mk to bds.prefs.mk, otherwise it
can't define destdir support.
2008-06-12 01:09:01 +00:00
tnn
27e964b1b8 Adjust path for compat_headers. 2008-05-24 03:40:35 +00:00
tnn
83290ab733 Daniel Horecki pointed out on irc that all USE_INET6 references have been
purged from pkgsrc-wip, so remove the support code for that.
2008-05-22 15:48:13 +00:00
tnn
1fdd0b4cdd Avoid pulling in pkgtools/posix_headers when bootstrapping on HP-UX. 2008-04-16 12:28:48 +00:00
tnn
3d06b8fdd5 Kill _OPSYS_NEEDS_XPKGWEDGE. It was only used by two platforms and they
will default to USE_XPKGWEDGE anyway.
2008-02-21 04:23:58 +00:00
tnn
1984db0948 Fix a miss that made the hpux bootstrap erronously pull in posix_headers. 2008-02-07 16:43:18 +00:00
tnn
24ede5a9fa Recognise Solaris/xen as i386 2008-02-06 18:23:47 +00:00
tnn
b748976509 Simplify LOWER_OS_VERSION handling by using the :tl modifier. 2008-01-29 13:04:05 +00:00
tnn
a970f2bc58 Provide a mechanism for enabling use of pkgtools/posix_headers. 2008-01-16 03:16:39 +00:00
joerg
f30bc9ac38 If LOWER_ARCH is x86_64 on Linux, force it for MACHINE_ARCH as well.
On a Core 2 Xeon, it breaks a lot of things otherwise as it ends up as
something like "Intel(R) Core(R)".
2008-01-12 14:40:21 +00:00
rillig
d3624fdf10 Made the .include directives simpler, since the directory of the
including file is always the first in the search path.
2008-01-04 01:46:24 +00:00
rillig
21cf860699 Accept all licenses in DEFAULT_ACCEPTABLE_LICENSES if the user is only
using the += operator, not the simple = operator, in mk.conf. That way
we can mark packages as having open source licenses without disturbing
the users.
2007-10-17 10:37:43 +00:00
tnn
85c3c33db0 The previous commit needs all platforms to be correct about
separating LOWER_OPSYS and LOWER_OPSYS_VERSUFFIX, since numbers are now
removed from LOWER_OPSYS when forming MACHINE_GNU_PLATFORM.
Fix the remaining to platforms: Interix and IRIX.
2007-10-16 11:51:21 +00:00
tnn
ae9f32a8e5 OSF1 and HPUX: Separate the version component from ${LOWER_OPSYS}
into ${LOWER_OPSYS_VERSUFFIX}.
When assigning GNU_MACHINE_PLATFORM, strip numerical characters from
LOWER_OPSYS. (final component is eg. osf5.1 not osf15.1)
2007-10-16 11:34:16 +00:00
joerg
0b4fba23f9 Ignore post-hyphen parts of the Linux kernel version similiar to
DragonFly and FreeBSD. It seems like Linux people love those...
This addresses the first part of PR 37100.
2007-10-13 19:38:53 +00:00
rillig
6ea2bde2b6 I often want to know which directories pkgsrc is using. 2007-10-05 21:03:39 +00:00
abs
4b75da6235 +USE_INET6?=${IPV6_READY} rather than =, so it can be overidden 2007-09-11 18:16:38 +00:00
jlam
07dd3147c6 Convert packages that test and use USE_INET6 to use the options framework
and to support the "inet6" option instead.

Remaining usage of USE_INET6 was solely for the benefit of the scripts
that generate the README.html files.  Replace:

	BUILD_DEFS+=	USE_INET6
with
	BUILD_DEFS+=	IPV6_READY

and teach the README-generation tools to look for that instead.

This nukes USE_INET6 from pkgsrc proper.  We leave a tiny bit of code
to continue to support USE_INET6 for pkgsrc-wip until it has been nuked
from there as well.
2007-09-07 22:12:10 +00:00
jlam
5073c3d95d Add a "system features" framework that will eventually be used to
automatically supply missing "basic" headers and libraries from an
older system, e.g. IRIX 5.x or Interix or AIX, etc.

Example usage:

    USE_FEATURES+=      snprintf glob regex

For now, we just pull in libnbcompat to supply the missing bits.
2007-09-07 21:55:44 +00:00
joerg
e09f68cb6b Remove infrastructure side of Xorg 6.9 support. Begin to simplify
some of the cases of X11_TYPE usage -- it will stay with modular|native,
so don't bother with keeping the separation in the tool list.
2007-08-17 20:27:30 +00:00
joerg
ff4ca43fd6 Move APPENDELF definition after the reassigning of MACHINE_ARCH.
This allows cross-compiling of x86_64 from i386.
2007-08-15 13:25:47 +00:00
rillig
6ff274e50f Replaced the comment at the beginning of the file with a useful one. It
explains which variables can be used in the mk.conf file.

Removed the definition of CUT, since it is no longer used.
2007-08-13 09:03:41 +00:00
rillig
c3cfa6c470 Fixed joerg's failed try to support invoking make(1) as ./make or similar.
It had failed in the devel/ directory, since devel/bmake exists there.
2007-08-13 07:42:10 +00:00
joerg
005620851f Add core of the infrastructure support for cross-compilation.
- USE_CROSS_COMPILATION activates it, CROSS_DESTDIR specifies root of
  the target filesystem
- derive _CROSS_DESTDIR from CROSS_DESTDIR or MAKEOBJDIR
- buildlink3.mk prefixes the files to symlink with _CROSS_DESTDIR
- compiler/gcc.mk knows about the target prefix (e.g. i386--netbsdelf)
- PKG_DBDIR is prefixed with _CROSS_DESTDIR
- package-install and bin-install are not called with su
- install and strip are redirected to the tool version
- links for the target specific ar, as, ld, nm, objdump, ranlib and
  strip are added
- compiler wrapper detect if linking is requested or not
- special command sinks for CPP and CC/CXX add the cross-compile magic:
  - modify include dirs to get the target /usr/include
  - modify linker dirs and runpath to use target /usr/lib at link time,
    but keep correct rpath entries

Supported-by: Google SoC 2007
Basic tests by he@ on Sparc. Review from jlam@.
2007-08-02 18:19:31 +00:00
joerg
29777c8ec5 Begin adding some of the basic, non-intrusive pieces of the
cross-compile support.

- NATIVE_MACHINE_GNU_ARCH, NATIVE_LOWER_ARCH, NATIVE_MACHINE_ARCH,
  NATIVE_MACHINE_PLATFORM and NATIVE_MACHINE_GNU_PLATFORM work
  like the counterpars without NATIVE_ prefix. Expansion of
  NATIVE_LOWER_ARCH and NATIVE_MACHINE_ARCH is enforced early,
  so that MACHINE_ARCH can be overriden in mk.conf to specify the
  target architecture.
- Provide a default of NO for USE_CROSS_COMPILE. This will be the
  main switch to activate cross-compiling and adding it now makes
  it possible to merge more of the patches for specific packages.
- Set --build and --host when cross-compiling, the former using the
  just added variable NATIVE_MACHINE_GNU_PLATFORM.

Supported-by: Google SoC 2007
Looks good: jlam@
2007-08-01 16:14:17 +00:00
joerg
4db0539a2b Define PKGPATH earlier so that mk.conf can use it.
Requested by David Brownlee on tech-pkg.
2007-08-01 12:21:56 +00:00
joerg
2b3b6c11ab Compute OS_VERSION on AIX directly using make substitution instead of
forking a shell and sed.
2007-07-30 14:10:36 +00:00
joerg
a13b98431e Use variable substitution instead of calling external cut to
compute LOWER_OPSYS_VERSUFFIX.
2007-07-30 14:07:07 +00:00
joerg
a7702e998f Allow the code to resolve the make path to deal with a strictly
local path. E.g. running make as ./make now works.
2007-07-29 18:27:05 +00:00
joerg
910d37bad9 Remove explicit include of sys.mk, which has been made redundant by
jlam's include of bsd.own.mk in June 2002.
2007-07-29 13:17:57 +00:00
jlam
33f30156fb * Add new emulator framework in pkgsrc/mk/emulator that handles all
binary-only packages that require binary "emulation" on the native
  operating system.  Please see pkgsrc/mk/emulator/README for more
  details.

* Teach the plist framework to automatically use any existing
  PLIST.${EMUL_PLATFORM} as part of the default PLIST_SRC definition.

* Convert all of the binary-only packages in pkgsrc to use the
  emulator framework.  Most of them have been tested to install and
  deinstall correctly.  This involves the following cleanup actions:

    * Remove use of custom PLIST code and use PLIST.${EMUL_PLATFORM}
      more consistently.

    * Simplify packages by using default INSTALL and DEINSTALL scripts
      instead of custom INSTALL/DEINSTALL code.

    * Remove "SUSE_COMPAT32" and "PKG_OPTIONS.suse" from pkgsrc.
      Packages only need to state exactly which emulations they support,
      and the framework handles any i386-on-x86_64 or sparc-on-sparc64
      uses.

    * Remove "USE_NATIVE_LINUX" from pkgsrc.  The framework will
      automatically detect when the package is installing on Linux.

  Specific changes to packages include:

    * Bump the PKGREVISIONs for all of the suse100* and suse91* packages
      due to changes in the +INSTALL/+DEINSTALL scripts used in all
      of the packages.

    * Remove pkgsrc/emulators/suse_linux, which is unused by any
      packages.

    * cad/lc -- remove custom code to create the distinfo file for
	all supported platforms; just use "emul-fetch" and "emul-distinfo"
	instead.

    * lang/Cg-compiler -- install the shared libraries under ${EMULDIR}
	instead of ${PREFIX}/lib so that compiled programs will find
	the shared libraries.

    * mail/thunderbird-bin-nightly -- update to latest binary
	distributions for supported platforms.

    * multimedia/ns-flash -- update Linux version to 9.0.48 as the
	older version is no longer available for interactive fetch.

    * security/uvscan -- set LD_LIBRARY_PATH explicitly so that
	it's not necessary to install library symlinks into
	${EMULDIR}/usr/local/lib.

    * www/firefox-bin-flash -- update Linux version to 9.0.48 as the
	older version is no longer available for interactive fetch.
2007-07-29 05:18:36 +00:00
joerg
a0378cffcb Kill code to catch Zoularis installations. It is three years old and
anyone still having such an old installation has other issues like nbawk
anyway.
2007-07-20 22:40:56 +00:00
joerg
462c1fc51c Drop trailing components like -RELEASE for FreeBSD like we do for
DragonFly. This fixes the version number of lsof as side effect.
2007-07-17 09:20:18 +00:00
rillig
36fa355d50 Add some more keywords, so that one can grep for "mk.conf" and find the
relevant code that loads the configuration.
2007-05-29 14:48:49 +00:00
rillig
4b4f995744 On Cygwin, OS_VERSION contains special characters, so it needs the :Q
operator. An example version is 1.5.24(0.156/4/2).
2007-05-07 22:16:04 +00:00
joerg
5f35b1a543 Fix last commit to really save forks at mentioned by rillig@:
OPSYS needs to be evaluated in-place, so use :=.
2007-04-17 19:45:35 +00:00
tnn
05620458c7 Save a fork() by not invoking the 'tr' utility.
XXX: the OS_VERSION stuff could use a similar cleanup, replacing
tr A-Z a-z occurences with the make :tl modifier.
2007-04-17 10:48:29 +00:00
tnn
146da1286c Teach pkgsrc about HP-UX. 2007-04-14 14:17:49 +00:00
tnn
b06ac8fff5 Set correct OBJECT_FMT on OSF1. 2007-04-11 19:09:24 +00:00
wiz
3e1a000ebc Remove unused SCRIPTDIR variable. 2007-03-01 18:21:31 +00:00
tonio
2a3096f51c Make sure MACHINE_ARCH is set to x86_64 for FreeBSD-amd64 2007-02-16 16:09:23 +00:00
joerg
64fb99a6c0 Move USE_XPKGWEDGE handling to bsd.prefs.mk. The logic depends on
X11_TYPE and some other settings which can overriden by the platform
defaults. This has the nice side effect of simplifying the handling
in bsd.prefs.mk. Discussed with and reviewed by wiz@. Keep the
documentation for USE_XPKGWEDGE in defaults/mk.conf as suggested by
salo@.
2006-12-27 14:29:45 +00:00
joerg
79c5c99c4d For modular Xorg disable xpkgwedge (will be made a hard error later).
Don't add ${X11BASE}/bin to PATH, don't include mk/x11.buildlink3.mk
when USE_X11BASE is set and don't use BUILDLINK_X11_DIR and related
magic.

OKed by wiz@
2006-12-20 01:04:46 +00:00
joerg
5b374e445d Main infrastructure for DESTDIR support.
Packages may set PKG_DESTDIR_SUPPORT to either "destdir" or
"user-destdir" to flag support for this, following the same
rules as PKG_INSTALLATION_TYPES (e.g. define before first include
of bsd.prefs.mk).

The user activates it via USE_DESTDIR. When set to "yes",
packages with "user-destdir" are handled as "destdir".
The installation of the package will not go to ${LOCALBASE},
but a subdirectory of ${WRKDIR} instead. pre/post install scripts are
not run and the package is not registered either. A binary package
can be created instead to be installed normally with pkg_add.

For "user-destdir" packages, everything is run as normal user and
ownership is supposed to be correctled by pkg_create later. Since
the current pkg_install code uses pax and it doesn't allow overwriting
owners, this does not work yet.

For "destdir" packages, installation, packaging and cleaning is run as
root.

This commit does not change the handling of DEPENDS_TARGET or
bin-install to allow recursive usage.
2006-10-09 12:25:44 +00:00
joerg
a8e7008902 Add variable to control whether the install target is run as root. 2006-10-09 11:59:08 +00:00
joerg
977a821a8f Add two variables to control whether make package and make clean
are run with elevated privileges. Remove MAKE_PACKAGE_AS_ROOT
for now, since it is not sure whether the functionality in the current
form will stay and developers should spend time on the destdir support
instead.
2006-10-09 11:44:06 +00:00
joerg
1a3ea34a13 Remove references to DESTDIR. LOCALBASE should not be altered that way,
since it is user settable and most of the time set by the user.
X11BASE follows the same reasons. For staged installations, we don't
want to register the package directly, so there's no need to prefix
PKG_DBDIR either.
2006-10-06 14:51:36 +00:00
joerg
3675902ba1 Remove XFree86. 2006-09-27 15:18:12 +00:00
joerg
7545d135e6 - Compute CHEKCK_FILES filter on the entries requested and keep it
as tight as possible. Files we don't handle shouldn't be skipped.
- fonts.alias is not created automatically, so don't remove it.
- create fonts.encoding with mkfontdir using -e X11_ENCODINGSDIR.
  On platforms not following the X11R6 loayout this might need to
  be overriden.
- Fix type1inst calls.
- Modify packages which installed fonts.alias before to actually
  include it in the PLIST and bump the revisions accordingly.
- Modify xorg-fonts* packages to use FONTS_DIRS.* to build indices
  at run time.

Discussed with wiz and jlam.
2006-09-22 21:53:56 +00:00
schwarz
cb784f6e64 cosmetic change 2006-09-10 20:19:39 +00:00
schwarz
aa38134c13 ${X11BASE} can now be set to /usr, so just do so for IRIX and OSF1. No need
for any artificial symlinking any more in bootstrap.
2006-09-10 20:14:43 +00:00
schwarz
0f4045fde0 spelling correction 2006-08-26 19:07:00 +00:00
schwarz
b309575681 X11_TYPE being undefined cannot occur thanks to the preceeding line 2006-08-26 18:55:43 +00:00
jlam
c489860d62 Whenever we invoke a recursive make, we need to ensure that the proper
environment ${PKGSRC_MAKE_ENV} is also passed along.  Create a
convenience variable RECURSIVE_MAKE that does exactly this and that
can be used in place of MAKE when invoking make recursively.

Use RECURSIVE_MAKE everywhere in pkgsrc/mk that we invoke make
recursively.
2006-07-27 21:46:45 +00:00
wiz
ad211bc06f Remove stale comment, noted by bad@ in PR 33871. 2006-07-17 18:07:06 +00:00
jlam
7a2c97d53f * Add a new stage "bootstrap-depends" that happens before all other
stages, and that installs dependencies listed in BOOTSTRAP_DEPENDS.
  The bootstrap-depends step works just like the normal depends step
  and honors the value of DEPENDS_TARGET.  It's now possible to add
  dependencies solely to facilitate fetching the distfiles, e.g.

	BOOTSTRAP_DEPENDS+=	curl-[0-9]*:../../www/curl

* Teach the tools framework about ":bootstrap" as a tools modifier
  which indicates the tool should be added as a dependency via
  BOOTSTRAP_DEPENDS.

* Add "digest" to the tools framework.

* Use USE_TOOLS+=digest:bootstrap to force pkgsrc to install digest
  before anything else.  Get rid of unused "uptodate-digest" target
  and related digest version-checking code.

* Finish the refactoring work: split checksum-related code out of
  bsd.pkg.mk and into pkgsrc/mk/checksum and replace the "checksum"
  target command list with a script that does all the real work.

* Make DIGEST_ALGORITHMS and PATCH_DIGEST_ALGORITHM into private
  variables by prepending them with an underscore.  Also, rename
  _PATCH_DIGEST_ALGORITHM to _PATCH_DIGEST_ALGORITHMS and adjust the
  makepatchsum target to allow that variable to contain a list of
  algorithms, all of which are used when creating the patch checksums
  for ${DISTINFO_FILE}.
2006-07-13 14:02:34 +00:00
jlam
06be53fba4 Completely nuke the concept of PKG_PHASE from pkgsrc except for the
purposes of caching MAKEVARS within bsd.pkg.mk and bsd.makevars.mk.
2006-07-10 22:59:26 +00:00
jlam
eb27d05acd Back out revision 1.172 of mk/tools/replace.mk -- we never want to
allow IMAKE to be set by anything other than the tools framework.
Modify the IRIX files so that the native imake is listed as a built-in
tool in the case where X11_TYPE is "native".  Also, move the include
of tools/default.mk a bit lower in bsd.prefs.mk so that tools.${OPSYS}.mk
files can use the value of X11_TYPE.  This should properly set and
point IMAKE to the right binary on IRIX without destroying the
configuration for platforms where IMAKE was not explicitly set, i.e.
every non-IRIX platform.
2006-07-10 22:17:58 +00:00
jlam
3058ace76f Move some variable definitions out of bsd.prefs.mk and back into
bsd.pkg.mk.  They didn't actually need to be defined in bsd.prefs.mk,
just somewhere before the "main" bsd.<phase>.mk files were included.
This moves some conditional (?=) definitions back into bsd.pkg.mk so
they won't conflict with any conditional definitions in package
Makefiles.

This should fix the "checksum" problems in lang/php-gd as noted here:

    http://mail-index.netbsd.org/pkgsrc-users/2006/06/05/0012.html

where EXTRACT_SUFX had the wrong value due to the order in while *.mk
files were included.
2006-06-06 15:28:51 +00:00
jlam
cd1230e8e3 Separate out the part of bsd.tools.mk that actually created the tools
into a new file pkgsrc/mk/tools/create.mk.  This leaves bsd.tools.mk
as a file that pulls in all of the other ones.  Also move the
tools-related targets from bsd.pkg.mk into bsd.tools.mk.

The tools cookie file has been removed, as well as hooks for
{pre,do,post}-tools.  Instead, there is now only a single public target
"tools" which may be invoked.  Invoking "tools" will always cause all
of the tools in ${TOOLS_DIR} to be created.

The "tools" step has been moved and is now just after the "depends"
step and before sources are extracted.  This is the earliest place
where the "tools" step can be taken, and it allows the created tools
to be used in all steps/phases after it, starting with "extract".  As
a consequence, we should just invoke tools by their bare names in
targets, e.g. awk, sed, patch, etc., instead of with the ${VARIABLE}
names, e.g. ${AWK}, ${SED}, ${PATCH}, etc.
2006-06-06 06:30:29 +00:00
jlam
627dc60046 Refactor "patch" code into correspondingly named subdirectory of
pkgsrc/mk.  Also get rid of the recursive make for the "patch" target.
This basically merges the "patch" phase into the "tools" phase.

There should eventually be a standalone script that can be used to
verify checksums listed in distinfo that should be used instead of
the roll-your-own code in the do-pkgsrc-patch target.
2006-06-06 04:48:19 +00:00
jlam
c78510391e Refactor "fetch" and "extract" code into correspondingly named
subdirectories of pkgsrc/mk.  Move the following files around for
locality:

	pkgsrc/mk/scripts/extract  -> pkgsrc/mk/extract/extract
	pkgsrc/mk/bsd.sites.mk     -> pkgsrc/mk/fetch/sites.mk

Also get rid of the recursive make for the "fetch" and "extract"
targets.  This basically merges the "fetch" and "extract" phases into
the "patch" phase.

There is still much more work to do to simplify the fetch code, but
this is a good start.
2006-06-06 03:05:48 +00:00
joerg
ed8841d0fd Move the default value of X11_TYPE from x11.version.mk into
bsd.prefs.mk. Add a coment to defaults/mk.conf, why the entry should
be left commented out there.
2006-06-05 17:11:37 +00:00
jlam
e5eb2c56af First pass at implementing support for package system flavors other
than pkgsrc's current one.  This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices.  This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.

The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc.  modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}.  The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work.  The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support.  Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor.  I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.

There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls.  I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.

The "depends" module is a complete overhaul of the way that we handle
dependencies.  There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed.  This
differs from the old way where dependencies were installed just before
extraction occurred.  The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies.  It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.

Future work on this project include:

    * Resolve the workflow design in anticipation of future work on
      staged installations where "package" conceptually happens before
      "install".

    * Rewrite the buildlink3 framework to not assume the use of the
      pkgsrc pkg_* tools.

    * Rewrite the pkginstall framework to provide a standard pkg_*
      tool to perform the actions, and allowing a purely declarative
      file per package to describe what actions need to be taken at
      install or deinstall time.

    * Implement support for the SVR4 package flavor.  This will be
      proof that the appropriate abstractions are in place to allow
      using a completely different set of package management tools.
2006-06-03 23:11:42 +00:00
minskim
5f391d7eae Set LOWER_OPSYS_VERSUFFIX on Darwin. 2006-03-08 01:56:46 +00:00
joerg
3152d1d992 Don't include define lower opsys version for the host name, e.g. use
i386-pc-dragonflybsd instead of i386-pc-dragonflybsd1. Saves a few
forks and execs and makes DragonFly more homogenous with NetBSD.
2006-02-02 13:46:37 +00:00
joerg
80a031e2e2 Remove branch tag from DragonFly version, so that OS_VERSION matches
autoconf's normalisation.
2006-01-12 14:57:19 +00:00
markd
f62733a6ab X11BASE defaults to /usr/openwin on Solaris, but only when using the
native X11_TYPE.  Allow X11BASE to default correctly on Solaris when
X11_TYPE= XFree86 or xorg.
2005-12-29 21:18:11 +00:00
abs
ad6b3c049a Set PATH if not already set at the top of bsd.prefs.mk, just before
using it in a test to set _MAKE. With this change pkgsrc works on
NetBSD/i386 3.0 to build with an empty environment (env -i sh).
Tested with my ~100 favourite server packages. Does not affect
the case when PATH is already set. To have a per OPSYS default path
the include of platform/${OPSYS}.mk will probably need to be at
the top of bsd.prefs.mk - arguably it should be there already.

There are bound to be assumptions made by some packages which will
be broken by an empty env, but the bulk of pkgsrc and in particular
the infrastructure works fine.
2005-12-28 01:00:46 +00:00
rillig
999f8b6e04 Applied all quoting fixes found by "pkglint --autofix". 2005-12-05 22:07:07 +00:00
wiz
9276068400 Remove handling for obsolete USE_SOCKS variable. 2005-12-02 17:08:49 +00:00
rillig
8aa9fa14c2 Prefixed the definitions for the pkgtools with ${SETENV}. Now it is
possible to use these commands in shell programs by assigning the output
of `make show-var VARNAME=PKG_DELETE` to a shell variable.
2005-11-28 21:46:47 +00:00
rillig
540fef101e Properly quote _PKG_DBDIR. 2005-11-24 13:24:10 +00:00
erh
4d2fdd7bd5 Per request, back out all the SKIP_AUDIT_PACKAGES changes.
bsd.pkg.mk:1.1758-1.1752
bsd.prefs.mk:1.210
bulk/build:1.79
defaults/mk.conf:1.93-1.92
2005-11-23 18:27:13 +00:00
erh
e2097e6bcd Improve the handling of allowed vulnerabilities. Instead of the single
ALLOW_VULNERABLE_PACKAGES settings that applies to all packages, there can
now be per-package lists of allowed vulnerability ids:
	ALLOW_VULNERABILITIES.<pkgname>=<space separated list of vulnids>

To avoid duplication of code, audit-packages is now used to do these checks.
It can be skipped altogether by setting:
	SKIP_AUDIT_PACKAGES=yes
2005-11-16 20:59:22 +00:00
rillig
5fece5854d Removed trailing white-space. 2005-11-14 04:50:47 +00:00
rillig
7f106c7742 Reverted the change that moved the definition of MANINSTALL from mk.conf to
bsd.prefs.mk. Alistair has told me that Stoned had told him that MANINSTALL
actually belongs to mk.conf.
2005-11-13 17:40:00 +00:00
rillig
4eb7af486d Moved default definition of MANINSTALL from defaults/mk.conf to
bsd.prefs.mk, as it is not intended to be set in mk.conf.
2005-11-10 09:55:21 +00:00
rillig
8d26906833 Moved the PKG_INSTALLATION_TYPES variable from defaults/mk.conf to
bsd.prefs.mk as it is not intended to be set in mk.conf.
2005-11-10 09:48:04 +00:00
rillig
ea2aee6dc0 Added a comment that <bsd.own.mk> includes MAKECONF or /etc/mk.conf, so
that a "grep -wr mk\\.conf" will show the user where to find more
information.
2005-11-10 09:09:26 +00:00
reed
86b4fbf60c Moved the X11ROOT_PREFIX and X11BASE setting to mk/bsd.prefs.mk;
removed from mk/defaults/mk.conf.

This was needed in parts of tests of allowing a platform/${OPSYS}.mk
define is X11_TYPE.
2005-11-09 01:06:48 +00:00
tv
b1d81c0a17 Abstract [LOWER_]OS_VERSION into a ${...:sh} construct, so that other OS
blocks can override it without running the commands at all.

Move Interix [LOWER_]OS_VERSION speedup hack into bsd.prefs.mk, since it
must happen early at runtime.

While here, speed up the OS_VERSION calculation slightly for OSF1.
2005-11-01 16:30:05 +00:00
tv
14c2d04bdd Sort OPSYS pre-<sys.mk> settings section by OPSYS name. 2005-11-01 16:18:33 +00:00
tv
29a4895c65 Shorten the GNU_ARCH list by using a fallthrough variable expression
for MACHINE_GNU_ARCH.
2005-11-01 16:11:16 +00:00
dillo
c8597fd2b5 Don't add inet6 to PKG_DEFAULT_OPTIONS, it is a user settable
variable.  mk/defaults/obsolete.mk takes care of converting USE_INET6
to inet6 option.  Bug noted by schmonz.
2005-08-16 19:55:38 +00:00
wiz
5f42cf4ff3 Start documenting variables. 2005-07-28 13:07:17 +00:00
jlam
6af048ffa5 Don't bother defining a temporary _PKGSRC_USE_TOOLS variable that doesn't
actually increase readability by much.
2005-07-19 22:31:01 +00:00
jlam
b563e8eb9b There is still one small but important distinction between some of the
tools listed in USE_TOOLS -- some of them are required by the pkgsrc
infrastructure in variable assignment statements that look like:

    VARIABLE!=	${AWK} ...

These tools are actually *required* by pkgsrc to be installed on the
system before it can even work (bootstrap situation).  For these tools,
only override the "TOOL" name representing the tool if we're really
using the pkgsrc version of the tool.

We accomplish this by adding a new :pkgsrc modifier that is appended
to these tools listed in USE_TOOLS.  We also list these tools in
bsd.prefs.mk so that all packages pick them up fairly early on.
2005-07-16 22:33:18 +00:00
jlam
bf9129c41e Drop distinction between PKGSRC_USE_TOOLS and USE_TOOLS by making
PKGSRC_USE_TOOLS go away.  There is now only a single USE_TOOLS variable
that specifies all of the tools we need to build/run the package.
2005-07-15 18:27:48 +00:00
jlam
33a4d9397c Require xpkgwedge>=1.13 when used as a build dependency so that the
correct make(1) program is invoked by pkgxmkmf.
2005-06-14 07:25:24 +00:00
jlam
a72cd1c453 Include bsd.makevars.mk in bsd.prefs.mk instead of bsd.pkg.mk. This
allows the saved make variables to be re-set whenever bsd.prefs.mk is
included, and is a shortcut for the common case where a Makefile
includes both.
2005-06-01 17:05:19 +00:00
jlam
9f94b112f0 Remove the old tools framework and references to _USE_NEW_TOOLS. 2005-05-22 19:11:12 +00:00
rillig
d278d86d01 Replaced .ifdef with .if defined() and .ifnded with .if !defined(). This
will allow better error checking.
2005-05-14 01:51:52 +00:00
jlam
1c0da3d742 Make _USE_NEW_TOOLS default to "yes" to turn on using the new tools
framework.  This has been tested by successfully building a meta-package
that pulled in 81 dependencies during the installation.
2005-05-13 17:22:43 +00:00
jlam
dfb5ed0037 Make a distinction between the tools that pkgsrc needs and the tools
that a package needs.  Tools that pkgsrc needs are listed in
PKGSRC_USE_TOOLS, and tools that a package needs on top of that are
listed in USE_TOOLS.

Define "TOOL" variables, e.g. SED, AWK, MKDIR, etc.  for each of the
tools that pkgsrc needs, and "TOOLS_TOOL" variables, e.g.  TOOLS_SED,
TOOLS_AWK, TOOLS_MKDIR, etc. for each of the tools that a package
needs.  These variables contain the full command line to the real
command and arguments needed to invoke the tool.
2005-05-10 19:06:58 +00:00
jlam
03e9337879 Teach bsd.pkg.mk to create a phase-specific "makevars.mk" file that
caches variable definitions that were computed by make.  These variables
are specified by listing them in MAKE_VARS, e.g.,

	.if !defined(FOO)
	FOO!=	very_time_consuming_command
	.endif
	MAKE_VARS+=	FOO

bsd.pkg.mk will include only the one generated during the most recent
phase.  A particular phase's makevars.mk file consists of variable
definitions that are a superset of all of the ones produced in previous
phases of the build.

The caching is useful because bsd.pkg.mk invokes make recursively,
which in the example above has the potential to run the very time-consuming
command each time unless we cause FOO to be defined for the sub-make
processes.  We don't cache via MAKE_FLAGS because MAKE_FLAGS isn't
consistently applied to every invocation of make, and also because
MAKE_FLAGS can overflow the maximum length of a make variable very
quickly if we add many values to it.

One important and desirable property of variables cached via MAKE_VARS
is that they only apply to the current package, and not to any
dependencies whose builds may have been triggered by the current
package.

The makevars.mk files are generated by new targets fetch-vars,
extract-vars, patch-vars, etc., and these targets are built during
the corresponding real-* target to ensure that they are being invoked
with PKG_PHASE set to the proper value.

Also, remove the variables cache file that bsd.wrapper.mk was generating
since the new makevars.mk files provide the same functionality at a
higher level.  Change all WRAPPER_VARS definitions that were used by
the old wrapper-phase cache file into MAKE_VARS definitions.
2005-05-09 05:06:55 +00:00
jlam
b26519d8a4 * Push the imake- and xmkmf-handling into the new tools framework.
* Get rid of an explicit check for ${_IMAKE_MAKE} == ${GMAKE} in
  bsd.pkg.mk to check for whether we need to depend on gmake or not.
  Instead, we now note in Linux.mk that packages that need imake will
  also need to use gmake by setting _IMAKE_TOOLS+=gmake.

* Push the definition of MAKE_PROGRAM from bsd.pkg.mk into make.mk where
  it's closer to related code.
2005-05-02 21:10:02 +00:00
jlam
44aa477d54 Remove the need for ${FIND} in the top-level make. 2005-05-02 05:16:21 +00:00
jlam
60da9f8bc9 net/qmail has been taught to not need expr and wc in the top-level make. 2005-04-30 15:07:57 +00:00
jlam
c368f44eea Split replace.mk into two parts, one of which is included by bsd.prefs.mk
to provide "TOOL" definitions for tools used by a top-level make process
(usually because it uses them in a != variable definition).  This allows
USE_TOOLS to be defined before bsd.prefs.mk is included by a package
Makefile, where USE_TOOLS lists the additional (non-default) tools that
are required to build the package.

Also, drop the fallback to existing "TOOL" definitions because we now
have TOOLS_PLATFORM.* for each platform in pkgsr/mk/tools/tools.*.mk.
2005-04-30 04:35:54 +00:00
tv
b84f322557 Per discussion on tech-pkg, use USE_X11 (not USE_IMAKE) to add X11BASE/bin;
and put LOCALBASE/bin later in the variable (so it shows up *earlier* in
the resultant $PATH).
2005-04-08 20:11:53 +00:00
tv
fe3c1321bf USE_BUILDLINK3 is no longer optional (and cannot be turned off). Per mail
to tech-pkg:

=====

* USE_BUILDLINK3=YES will be unconditional.  (In fact, USE_BUILDLINK3 will
  be ignored altogether by mk/; but see below.)

* NO_BUILDLINK and NO_WRAPPER will be ignored by mk/.  If a build happens,
  these phases will happen.

* The existing NO_BUILD will imply the previous NO_BUILDLINK and NO_WRAPPER.
  If no build happens, those phases are not needed.

* NO_TOOLS will be ignored by mk/.  The tools phase, which provides much
  more than just the C compiler, will always happen regardless of package.
  This will make metapackage builds only slightly slower, in trade for far
  less user error.
2005-03-24 17:46:00 +00:00
grant
0fe4c2184a define GNU_ARCH for rs6000 and set OBJECT_FMT correctly for AIX. 2005-02-19 01:28:14 +00:00
grant
581576f963 add bits for AIX to correctly set MACHINE_ARCH and OS_VERSION, so that
MACHINE_GNU_PLATFORM is set to something sane. tested with AIX 4.3.3
and 5.1.
2005-02-17 07:11:59 +00:00
tv
4b3f94acc8 Migrate several USE_* logic blocks, previously sprinkled liberally
throughout bsd.pkg.mk, to labelled blocks in bsd.pkg.use.mk.
2005-02-11 16:11:36 +00:00
tv
974ce33409 Cleanup: wrapper-defs.mk is no longer optional; remove its conditional.
(...and if it were optional, it should have been an .sinclude anyway.)

Sanity: If mk/platform/${OPSYS}.mk is missing, don't assume NetBSD is it.
pkgsrc now depends on a valid platform file for an OS, so require it.
(Still includes NetBSD.mk, but sets PKG_FAIL_REASON.)
2005-01-27 04:16:47 +00:00
tv
bcce274c8b Move the PREPEND_PATH for LOCALBASE/bin (and optionally X11BASE/bin) to a
spot that will come before compiler.mk (in bsd.prefs.mk).  Previously,
LOCALBASE/bin was appearing earlier in the path than work/.<compiler>/bin,
which could cause the Wrong Thing to happen.
2005-01-27 04:05:08 +00:00
grant
919cb8bddb add framework support for Tru64 and the Compaq C compiler.
patches provided by Tobias Nygren <tnn at netilium dot org> with
minor changes by me.
2004-11-20 04:37:08 +00:00
wiz
e8cb326b9f Add DragonFlyBSD support, provided by Todd Willey on tech-pkg. 2004-10-31 22:05:02 +00:00
martti
827682d60f Added missing / 2004-10-20 05:42:55 +00:00
ben
056dbbb3f1 Translate MACHINE_ARCH and LOWER_ARCH from ppc to powerpc in the case of
Linux, to be more consistent with other platforms.
2004-10-19 23:16:47 +00:00
jlam
b74c7e3473 Make PKGSRCDIR a read-only value. This avoids problems where the user
decides to set PKGSRCDIR to a relative path as seen in several old PRs
and which prompted the original switch to make PKGSRCDIR private in
revision 1.881 of bsd.pkg.mk.
2004-10-07 13:42:26 +00:00
jlam
0f9ae0638a Remove _PKGSRCDIR now that we have PKGSRCDIR (as per previous commit). 2004-10-07 03:03:09 +00:00
jlam
17c3aafac1 * Make PKGSRC_TOPDIR a private variable by renaming it to _PKGSRC_TOPDIR,
as it's only used internally by bsd.prefs.mk.

* Make _PKGSRCDIR a public variable by renaming it to PKGSRCDIR.
  Also, generate its value from ${_PKGSRC_TOPDIR} so it's less fragile
  than the old method of stripping off the last two components of
  ${.CURDIR}.  PKGSRCDIR may now be used after bsd.prefs.mk is defined.

* Change all references to _PKGSRCDIR to PKGSRCDIR.
2004-10-07 02:01:37 +00:00
jlam
f8946737f1 Climb up the directory tree to find the top, instead of guessing where
the top and searching on the way down.  Thanks Gavan!
2004-10-06 20:59:40 +00:00
jlam
dffc19378a Reorganize some of the files under pkgsrc/mk:
(1) defs.${OPSYS}.mk --> platform/${OPSYS}.mk.

The "platform" subdirectory is where all of the ${OPSYS}-specific
infrastructure logic should reside.

    (2) bsd.pkg.defaults.mk --> defaults/mk.conf
        bsd.pkg.obsolete.mk --> defaults/obsolete.mk

Renaming bsd.pkg.defaults.mk to defaults/mk.conf is to mimic the way
that NetBSD has /etc/rc.conf as well as /etc/defaults/rc.conf, where
the latter is a full list of user-settable variables, and the two
files share the same name to reinforce the fact /etc/defaults/rc.conf
can be directly copied in place as /etc/rc.conf.  This is the same
relationship shared by defaults/mk.conf and /etc/mk.conf.
2004-10-06 20:51:47 +00:00
jlam
430f3b2ae5 Move some wrapper definitions into a separate file wrapper-defs.mk that is
included by bsd.prefs.mk.  This allows the following variables to be used
before bsd.wrapper.mk is included:

	WRAPPER_DIR		WRAPPER_SRCDIR
	WRAPPER_BINDIR		WRAPPER_SHELL
	WRAPPER_TMPDIR
2004-09-27 12:05:53 +00:00
jlam
48816eb26f Define PKGSRC_TOPDIR as the path to the top of the pkgsrc tree relative
to the Makefile on which make is invoked.  Use it instead of doing the
same dance for finding defs.${OPSYS}.mk and bsd.pkg.defaults.mk.
2004-09-27 12:00:56 +00:00
jlam
1d55af8fb2 Initial commit of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3 into
mk/wrapper.  The buildlink3 code is modified to simply hook its
transformations into the wrapper script framework.

The wrapper script framework has some new features:

* Support automatically passing "ABI" flags to the compiler and linker
  depending on the value of ${ABI}.  Currently supports the SunPro
  compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
  any of 32, n32, o32, and 64.

* making UnixWare GCC accept -rpath options and silently converting
  them into an appropriate LD_RUN_PATH

* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
  when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
  (requested by <tv>).

* Much improved debugging output.  It's possible to output the wrapper
  work log in-line with normal output by setting WRAPPER_LOG to
  "stderr".

Important differences in behaviour from the old buildlink3 code include:

* Only move the -l options to the end of the command line, leaving the
  -L options in-place.

* Extend the autodetection of the libtool mode to detect "compile" and
  "uninstall".

* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
  -L/usr/lib/* was being mangled improperly.

* Remove the top-level "buildlink" target; instead, make buildlinking
  occur as part of the "wrapper" target.

* mangle and sub-mangle are only meant to transform directories in
  -I, -L, and rpath options, so remove the lines in
  buildlink3/gen-transform.sh that transformed bare directories.

* Add the ability for the libtool wrapper to be called just to unwrap
  an existing libtool archive by running:

	libtool --mode=unwrap -o libfoo.la

  The old --fix-la syntax no longer works.


20040818
========
* Initial release of a new wrapper script framework that encapsulates
  the non-buildlink-related code and moves it out of mk/buildlink3.
  These features include:

   * making MIPSpro accept GCC options
   * making MIPSpro "ucode" accept GCC options
   * making SunPro accept GCC options
   * making "ld" accept -Wl,* options and silently removing the "-Wl,"
   * (NEW) making UnixWare GCC accept -rpath options and silently
     converting them into an appropriate LD_RUN_PATH

  One major benefit of this is that the buildlink3 code is now much
  tighter and easier to understand since it concerns itself solely
  with buildlink-related details.  I haven't yet optimized the wrapper
  cache, so the new wrapper scripts may take slightly longer to execute
  than the old buildlink3 wrapper scripts, but I'll be improving this
  over time.


20040821
========
* Move the inclusion of $cmd_sink outside of the main loop in wrapper.sh
  so that the $cmd_sink script can be used to globally scan and process
  the arguments.  Move the LD_RUN_PATH code to a cmd-sink-unixware-gcc
  script.  Garbage-collect the now unused export_vars-related code.

* Add cmd-sink-aix-xlc for AIX xlc that munges -Wl,-R* into an
  appropriate -blibpath option.

* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
  when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
  (requested by <tv>).

* Move the code that converts full paths to shared libraries into the
  "-Ldir -llib" equivalents from the buildlink3 code into wrapper/logic.
  Remove the same from bsd.buildlink3.mk and gen-transform.sh.

* Move the code that checks for absolute rpaths from the buildlink3
  code into wrapper/arg-source.  Remove the same from bsd.buildlink3.mk
  and gen-transform.sh.

* Only move the -l options to the end of the command line, leaving the
  -L options in-place.

* Add more debugging code.


20040824
========
* Fix quoting problems after arguments are transformed.  Remove the
  hack that was inserted that magically made almost everything work
  because we do it the right way now.

* Move the inclusion of $logic outside of the main loop in wrapper.sh
  so that the $logic script doesn't have to worry about underflowing
  the argument buffer.

* Encapsulate the loop in wrapper.sh that fills the argument buffer
  entirely within the arg-source script.

* Move from the logic script into the arg-source script the
  transformations that merge or split arguments.

* Fix bug where skipargs was effectively being ignored if it was more
  than 1.

* Handle the whitespace in transformations in the logic script that
  turn one library option into multiple library options, e.g.
  "-lreadline" -> "-ledit -ltermcap".

* Allow you to specify an environment variable WRAPPER_SKIP_TRANSFORM
  for whether you wish to skip the transformation step in the logic
  script.  This is intended for testing purposes.

* Added check_prog() and init_lib() functions to the shell code library
  to make it more reusable outside of the wrapper framework.

* Allow the msg_log() function to output to "stdout" or "stderr".  If
  you want to have all of the logging appear on the screen, then you
  can now set WRAPPER_LOG=stderr.

* Make some of the script components not overridable on a per-wrapper
  basis.

* Add a gen-transform.sh script that generates transformation sedfiles.
  The "transform" script is used to transform arguments, while the
  "untransform" script is used to unwrap files.  Move the no-rpath
  logic from buildlink3/gen-transform.sh into wrapper/gen-transform.sh
  since it's not buildlink3-specific.

* Check for a non-empty blibpath before adding the option in
  cmd-sink-aix-xlc.

* Extend the autodetection of the libtool mode to detect "compile" and
  "uninstall".

* Add a cmd-sink-libtool script that doesn't pass linker options to
  libtool unless we're in "link" mode.

* Set _USE_RPATH to "yes" for UnixWare so that the wrappers will see the
  rpath options and convert them to a LD_RUN_PATH definition.

* Add more debugging code.


20040826
========
* Rewrite buildlink3/gen-transform.sh to produce more precise sed commands.
  Drop some unused commands from the mini-language, and add a few more
  that are more restrictive in their scope.

* Fix problem where repeated options weren't properly handled by some
  of sed commands.  It's not enough that they're "global replace",
  since some patterns match separator characters before and after each
  option.  We must repeat those patterns twice to catch all instances
  correctly.

* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
  -L/usr/lib/* was being mangled improperly.

* Remove the top-level "buildlink" target; instead, make buildlinking
  occur as part of the "wrapper" target.

* Add more debugging code.


20040828
========
* Added a head_queue function to shell-lib that returns the head of the
  named queue without popping it off the front of the queue.

* Strip consecutive, repeated library options from the command line when
  we read it in the logic script.

* Be more careful about not underflowing the argument buffer.


20040906
========
* shell-lib was moved into pkgsrc/mk/scripts; correct references to that
  file in the wrapper code.

* Use opt-sub instead of sub-mangle when protecting -I/usr/include/*
  and -L/usr/lib/* from buildlink transformations.  This avoids adding
  lines that look like "-I-I..." in the transformation sedfiles.

* mangle and sub-mangle are only meant to transform directories in
  -I, -L, and rpath options, so remove the lines in
  buildlink3/gen-transform.sh that transformed bare directories.

* Fix bug in strip-slashdot where the "." wasn't backquoted and thus
  matched all characters instead of only the "." character.

* Change the libtool wrapper to use a modified buildcmd script that
  doesn't rearrange any of the arguments.  This should fix spurious
  problems where libtool doesn't understand how to parse the command
  line when the -l options are moved to the end of the argument list.

* Fix bug in the logic script where the $cachearg and $cachedarg
  weren't being properly set at all times, which caused the cache to
  contain the wrong transformed argument.


20040907
========
* Support automatically passing "ABI" flags to the compiler and linker
  depending on the value of ${ABI}.  Currently supports the SunPro
  compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
  any of 32, n32, o32, and 64.

* Move back the code that splits absolute paths to shared libraries
  from arg-source back into logic.  This allows us to correctly skip
  splitting those paths based on the previous option.  Also add a
  sanity check that the library name in the split argument doesn't
  contain a "/" since shell globs are not as precise as REs.

* Don't transform the path given after --dynamic-linker (used by GNU
  ld for ELF linkage).

* Add the ability for the libtool wrapper to be called just to unwrap
  an existing libtool archive by running:

	libtool --mode=unwrap -o libfoo.la


20040914
========
* Add a loop in libtool-fix-la to ensure that all of the options listed
  in the dependency_libs lines of *.lai files are processed.  This fixes
  a buildlink3 leakage bug.

* Merge the gen-transform.sh scripts between buildlink3 and wrapper and
  place them all in wrapper.  This makes sense since the commands simply
  allow for many types of transformations, which buildlink3 takes
  advantage of, but there is nothing inherently buildlink-ish about
  those commands.

* Don't directly manipulate SUBST_SED.unwrap.  Instead, create the
  value of SUBST_SED.unwrap by combining several other variables
  (currently just _UNWRAP_SED) to ensure that the correct ordering is
  preserved.

* Correct some confusing debugging messages.
2004-09-21 15:01:38 +00:00
jlam
ca70938428 Replace RPATH_FLAG with LINKER_RPATH_FLAG and COMPILER_RPATH_FLAG,
which are the full option names used to set rpath directives for the
linker and the compiler, respectively.  In places were we are invoking
the linker, use "${LINKER_RPATH_FLAG} <path>", where the space is
inserted in case the flag is a word, e.g. -rpath.  The default values
of *_RPATH_FLAG are set by the compiler/*.mk files, depending on the
compiler that you use.  They may be overridden on a ${OPSYS}-specific
basis by setting _OPSYS_LINKER_RPATH_FLAG and _OPSYS_COMPILER_RPATH_FLAG,
respectively.  Garbage-collect _OPSYS_RPATH_NAME and _COMPILER_LD_FLAG.
2004-08-27 06:29:06 +00:00
jlam
85306a8348 bsd.options.mk provides boilerplate code for standard naming conventions
for handling per-package build options.

Before including this file, the following variables should be defined:

	PKG_OPTIONS_VAR
		This is a list of the name of the make(1) variables that
		contain the options the user wishes to select.  This
		variable should be set in a package Makefile.  E.g.,

			PKG_OPTIONS_VAR=	WIBBLE_OPTIONS
		or
			PKG_OPTIONS_VAR=	FOO_OPTIONS BAR_OPTIONS

	PKG_SUPPORTED_OPTIONS
		This is a list of build options supported by the package.
		This variable should be set in a package Makefile.  E.g.,

			PKG_SUPPORTED_OPTIONS=	kerberos ldap ssl

Optionally, the following variables may also be defined:

	PKG_DEFAULT_OPTIONS
		This is a list the options that should be built into
		every package, if that option is supported.  This
		variable should be set in /etc/mk.conf.

	${PKG_OPTIONS_VAR} (the variables named in PKG_OPTIONS_VAR)
		These variables list the selected build options and
		override any default options given in PKG_DEFAULT_OPTIONS.
		If any of the options begin with a '-', then that option
		is always removed from the selected build options, e.g.

			PKG_DEFAULT_OPTIONS=	kerberos ldap sasl
			PKG_OPTIONS_VAR=	WIBBLE_OPTIONS
			WIBBLE_OPTIONS=		${PKG_DEFAULT_OPTIONS} -sasl
			# implies PKG_OPTIONS == "kerberos ldap"
		or
			PKG_OPTIONS_VAR=	WIBBLE_OPTIONS
			WIBBLE_OPTIONS=		kerberos -ldap ldap
			# implies PKG_OPTIONS == "kerberos"

		This variable should be set in /etc/mk.conf.

	PKG_FAIL_UNSUPPORTED_OPTIONS
		If this is set to "yes", then the presence of unsupported
		options in PKG_OPTIONS.<pkg> (see below) causes the build
		to fail.  Set this to "no" to silently ignore unsupported
		options.  Default: "yes".

After including this file, the following variables are defined:

	PKG_OPTIONS
		This is the list of the selected build options, properly
		filtered to remove unsupported and duplicate options.

Example usage:

-------------8<-------------8<-------------8<-------------8<-------------
# Global and legacy options
.if defined(USE_OPENLDAP) || defined(USE_SASL2)
.  if !defined(PKG_OPTIONS.wibble)
.    if defined(USE_OPENLDAP) && !empty(USE_OPENLDAP:M[yY][eE][sS])
PKG_OPTIONS.wibble+=	ldap
.    endif
.    if defined(USE_SASL2) && !empty(USE_SASL2:M[yY][eE][sS])
PKG_OPTIONS.wibble+=	sasl
.    endif
.  endif
.endif

PKG_OPTIONS_VAR=	PKG_OPTIONS.wibble
PKG_SUPPORTED_OPTIONS=	ldap sasl
.include "../../mk/bsd.options.mk"

# Package-specific option-handling

###
### LDAP support
###
.if !empty(PKG_OPTIONS:Mldap)
.  include "../../databases/openldap/buildlink3.mk"
CONFIGURE_ARGS+=	--enable-ldap=${BUILDLINK_PREFIX.openldap}
.endif

###
### SASL authentication
###
.if !empty(PKG_OPTIONS:Msasl)
.  include "../../security/cyrus-sasl2/buildlink3.mk"
CONFIGURE_ARGS+=	--enable-sasl=${BUILDLINK_PREFIX.sasl}
.endif
-------------8<-------------8<-------------8<-------------8<-------------
2004-07-30 20:59:08 +00:00
xtraeme
02371f01af Only assign X11BASE=/usr/X11R6 if X11_TYPE was not defined, or
if X11_TYPE == native (by default).
2004-07-30 07:38:01 +00:00
wiz
d4e8b44315 Retire buildlink2, now that all packages using it have been converted to
buildlink3.
2004-07-06 22:49:16 +00:00
wiz
be918cc63f else exists ... -> elif exists ...
Noted by Roland Illig on tech-pkg.
2004-07-02 16:27:48 +00:00
tv
e80e896df4 PKGDIRMODE must be set *after* including defs.*. 2004-04-26 17:29:33 +00:00
tv
88a6915436 Make sure PKGDIRMODE is always set in bsd.prefs.mk so it can be checked
in lang/perl58/Makefile.  (It had been set previously only in bsd.pkg.mk.)
2004-04-25 22:42:51 +00:00
agc
c1b15d9ca1 Make USE_XPKGWEDGE default to "yes", as announced on tech-pkg@ last week. 2004-04-04 07:09:38 +00:00
tv
f425933991 Add Interix bits. 2004-03-11 17:53:16 +00:00
recht
c74a63f2fb Add LOWER_OPSYS_VERSUFFIX on FreeBSD platforms, so that the major
number is included in MACHINE_GNU_PLATFORM.
Fixes at least the build of wip/mingw-gcc.
Patch based upon the one provided by Michal Pasternak in PR 23856.
2004-03-09 20:39:50 +00:00
jlam
c40ee95964 * Move pkgsrc/mk/compiler/bsd.compiler.mk to pkgsrc/mk/compiler.mk.
Package Makefiles may now directly include compiler.mk.

* Don't include compiler.mk within bsd.prefs.mk any longer.  It was only
  included for the purposes of defining CC_VERSION.  Packages that want
  to test the value of CC_VERSION should now first include
  "../../mk/compiler.mk".  Any GCC_REQD statements in package Makefiles
  should be set before compiler.mk is included.

* Simpllfy pkgsrc/mk/compiler/*.mk files as a result of not needing to
  be included indirectly by bsd.prefs.mk.  We remove the special handling
  associated with detecting whether the file was included from within
  bsd.prefs.mk.  These files are now much more straightforward to write
  and understand.

* G/C the BSD_PREFS_MK stack mechanism as the only users (compiler/*)
  no longer need it.

* Ensure that directories are prepended to the PATH only from within
  bsd.pkg.mk.
2004-02-18 13:32:38 +00:00
jlam
01d241c9c1 Convert a debugging definition back into the real thing. 2004-02-14 11:28:28 +00:00