for a dist file or patch, and let the "checksum" target do the full
digest integrity checks. Should fix a problem reported by John Klos
on tech-pkg, which I was a bit dim in analysing.
Before this fix it would include
PLIST.common
then _only_ one of the following
PLIST.${OPSYS}
PLIST.${MACHINE_ARCH:C/i[3-6]86/i386/g}
PLIST.${OPSYS}-${MACHINE_ARCH:C/i[3-6]86/i386/g}
PLIST
and then PLIST.common_end.
Now, uses all of the following PLIST files, in that order:
PLIST.common
PLIST.${OPSYS}
PLIST.${MACHINE_ARCH:C/i[3-6]86/i386/g}
PLIST.${OPSYS}-${MACHINE_ARCH:C/i[3-6]86/i386/g}
PLIST
PLIST.common_end
ensure the integrity of distfiles and dist patches. For now, the
default algorithms are SHA1 and RMD160, set as a whitespace-separated
list in the DIGEST_ALGORITHMS definition. The DIGEST_ALGORITHM
definition is deprecated.
Patchfiles will still use simply SHA1, since we are trying to detect a
binary "has this file changed", rather than proect against tampering.
In short, if someone can modify the patch file, they can modify the
distinfo file holding its digest information. This value is set in the
new PATCH_DIGEST_ALGORITHM definition.
Triggered by the breaking of SHA1, as reported in
http://www.schneier.com/blog/archives/2005/02/sha1_broken.html
PLIST.common
PLIST.${OPSYS}
PLIST
PLIST.common_end
to
PLIST.common
PLIST.${OPSYS}
PLIST.${MACHINE_ARCH:C/i[3-6]86/i386/g}
PLIST.${OPSYS}-${MACHINE_ARCH:C/i[3-6]86/i386/g}
PLIST
PLIST.common_end
Which makes it possible to remove duplicated code in some packages.
This doesn't change anything, because all affected packages define PLIST_SRC,
so this code would never be used for them.
And most of them will be fixed with the next commit.
ToDO: ${MACHINE_ARCH:C/i[3-6]86/i386/g} looks wrong and should be changed,
but thats what we allready use for MESSAGE_SRC.
<20050215182853.AC52D3C03B8@berkshire.machshav.com>
The check for a vulnerable package at package fetch time is producing
incorrect results when csh-style alternates are used in the
pkg-vulnerabilities specification of the vulnerable package - disable
the incorrect speed-up that was there previously, at the expense of
some machine cycles at build time.
error checks into labelled blocks toward the top of the file.
While here, remove the historic (now completely empty; it was replaced by
PKG_FAIL_REASON some time ago) uptodate-pkgtools target and the references
to it.
Consolidate many MAKE_ENVs and SCRIPTS_ENVs into a common block.
(CONFIGURE_ENVs to be done later.)
Introduce new variable ALL_ENV which is automatically included into all
of MAKE_ENV, SCRIPTS_ENV, and CONFIGURE_ENV; this allows much cleaner
addition of the common CC/CXX/CFLAGS/etc. variables needed by all of these.
the correct information to the +INSTALL and +DEINSTALL scripts to fix
problems with binary packages incorrectly locating the reference counts
database, e.g. /var/db.refcount.
This ensures that it's always created with the same user/group/mode
as ${WRKDIR}, so if a non-root user thinks he has permissions to remove
${WRKDIR}, then that expectation will remain true for ${PKG_DB_TMPDIR}.
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.
Convert _OPSYS_MAX_CMDLEN to a plain _OPSYS_MAX_CMDLEN_CMD variable, which
is not evaluated by a shell until CONFIGURE_ENV is expanded (and only then
if USE_LIBTOOL+GNU_CONFIGURE are both set).
A package can optionally provide an ALTERNATIVES file which contains pairs
of wrapper/alternative, one per line. The file is then used by the install
and deinstall scripts to register the alternatives and to create the
appropriate wrappers.
Make bsd.pkg.mk include this new file. This happens unconditionally to
keep all the alternatives logic in an independent file. Otherwise, some
of the stuff could have to be moved to bsd.pkg.mk, breaking consistency.
Collect many modifiable hard-to-find variables scattered throughout
bsd.pkg.mk into a common section near the top of the file. (Not necessarily
"complete", but helps to reduce HEAD-branch divergence.)
Also move its definition later in bsd.pkg.mk, so that it actually works
for compiler/*.mk (which is why those files originally had to provide
"defaults" for their variables -- they never did get evaluated).
the meta-data files are generated and stored in ${PKG_DB_TMPDIR} by
the *-install-fake-pkg targets, and then all of the contents of that
directory are simply copied into ${PKG_DBDIR}/${PKGNAME} by register-pkg.
This is intended to make (DE)INSTALL scripts be more powerful.
Currently, they have no way to keep state on their own. Now, they
can keep state in the current working directory. When invoked by
pkg_add(1), the current working directory is ${PKG_DBDIR}/${PKGNAME},
so the state files are already stored in the correct place. When
invoked by bsd.pkg.mk, the current working directory is ${PKG_DB_TMPDIR},
and any state files generated by the (DE)INSTALL scripts are copied
into the correct place by the register-pkg target.
split the fake-pkg target into three smaller pieces:
pre-install-fake-pkg - Create files in ${WRKSRC}/.pkgdb meant to be
installed into ${PKG_DBDIR}/${PKGNAME} that don't depend on
the installed files.
post-install-fake-pkg - Create files in ${WRKSRC}/.pkgdb meant to be
installed into ${PKG_DBDIR}/${PKGNAME} that may depend on the
installed files.
register-pkg - Copy the files in ${WRKSRC}/.pkgdb and create a few
additional meta-files in ${PKG_DBDIR}/${PKGNAME}.
The idea is that ${WRKSRC}/.pkgdb contains as much of the state as
possible that will be copied into ${PKG_DBDIR}/${PKGNAME}.
The INSTALL and DEINSTALL scripts generated by bsd.pkg.install.mk are
now invoked with ${WRKSRC}/.pkgdb as the working directory, so the
scripts may use the working directory to store temporary files,
regardless of whether they're invoked from bsd.pkg.mk or by pkg_add.
- Move the previous block of code down in the file so that all used variables
are defined (specially PKG_SYSCONFDIR). Fixes a problem noticed by
kristerw@'s bulk build in comms/minicom.
- Ignore diff's return code, which aborts make in NetBSD 1.6.2. Also noticed
by kristerw@'s bulk build.
- Use full paths to do the checks, instead of relative to ${PREFIX}. Less
ambiguity. Matches should be turned into regular expressions that anchor
to a whole line (tried that, but found some problems).
- Turn CHECK_FILES to NO by default. As said in the previous point, there
are still some problems that have to be fixed and minor improvements to
be done. And I have no time to fix this ATM. Yes, this definitely needs
more testing. I'm sorry for all the noise. (But hey! you should set and
try this feature locally! ;-)
to CHECK_FILES_SKIP to avoid some false positives. These directories are
created in the pre-install stage so are included in the generated file list.
The files are also added to silence some problems that may arise during
"make replace". Found by wiz@ in the gtk2 package.
packages do not install more files than expected (nor delete existing
files), aside other sanity checks in PKG_SYSCONFDIR and VARBASE.
This behavior is only enabled if PKG_DEVELOPER is set and CHECK_FILES
is YES (the default). Should let us catch problems in other systems,
as some packages install different files depending on the OS they are
being built (which is different to see).
Furthermore, since the sanity checks done in PKG_SYSCONFDIR and VARBASE
are quite agressive, only enable them when CHECK_FILES_STRICT is YES
(defaults to NO). Developers should enable this feature to detect errors,
but this can't be a default yet. Otherwise, lots of packages could be
marked broken in bulk builds (they really are, according to "cleanliness"
rules, but most of them are non-trivial to fix).
framework. The list of changes include:
* Modify compiler.mk so that "c" is always prepended to USE_LANGUAGES,
so we no longer need to say it in package Makefiles. Packages
should now append to USE_LANGUAGES instead of setting it.
* Create mk/compiler/f2c.mk which implements another pseudo-compiler
"f2c" that may be used with any C compiler backend, e.g.
PKGSRC_COMPILER= f2c ccache gcc
* Teach the various "real" compiler files, e.g., sunpro.mk, mipspro.mk,
etc., to use f2c if the native Fortran compiler isn't present.
Packages that use Fortran should now simply include the line:
USE_LANGUAGES+= fortran
in the package Makefile.
already demonstrated by imake failing.
So, instead of fiddling with PATH's value in multiple places, rely on
PREPEND_PATH to get things right. Hopefully this will DTRT. At least
several local tests have worked without problems.
and ${X11BASE}/bin to the current PATH, _prepend_ them. This way we will
pick our own binaries in favour of the system ones, in the cases where
conflicts exist. Also add a PREPEND_PATH for ${LOCALBASE}/bin.
This should fix several packages on non-NetBSD systems. For example,
ispell-spanish under Linux comes to mind, as it was using the 'ispell'
binary from /usr/bin instead of the one in /usr/pkg/bin to get its
configuration information.
Ideally, buildlink could handle this as it does for libraries, hidding
unexpected binaries ;-)
No objections in tech-pkg@ (or packages@; I don't remember the exact
list where I asked).
PKG_ERROR_CLASSES is a list of error handlers, PKG_ERROR_HANDLER.<class>,
to create. The default error handler will rethrow the exit code after
emitting an error message that may be specified per-class with
PKG_ERROR_MSG.<class>.
Create error messages for the configure and build phases that inform
the user of places to go looking for why the build didn't complete.
and groupadd commands won't follow the calling conventions of the
NetBSD useradd/groupadd. Modify the INSTALL scripts to *never* create
users or groups if there is no available ${USERADD} or ${GROUPADD}
command, but will warn the user of users and groups that need to be
created before the package can be installed.
specify (hardcoded) compilers from which we can infer the correct tag
(CC, CXX, F77). Use the following patterns to match compilers to
tags:
CC: *cc *xlc
CXX: *++ *CC
F77: *77 *fort
Bump the PKGREVISION to 1.5.10nb7 since we now infer the F77 tag from
likely Fortran compilers. Also require at least this version of
libtool when building packages that set USE_FORTRAN. This should fix
PR pkg/28661.
If we include pthread.buildlink3.mk, then build with Perl ithreads
support. Bump the PKGREVISION.
Nuke the perl58-thread package. The perl package can now be forcibly
built with thread support by setting PERL5_USE_THREADS to "yes".
load shared objects. Some platforms require pthreads to be linked
into the application if it uses dlopen() or else the applications will
core dump when they dlopen a shared module that _is_ linked with
pthread support. Including dlopen.buildlink3.mk in a package Makefile
will cause pthread.buildlink3.mk to also be included.
It is up to the package to ensure that PTHREAD_{CFLAGS,LDFLAGS,LIBS}
(defined by pthread.buildlink3.mk) are passed to the compiler when
building/linking the applications, possibly by setting PTHREAD_AUTO_VARS
to "yes" in the package Makefile.
particular packages to compile correctly. bsd.hacks.mk auto-includes
the hacks.mk file in the current directory. An example hacks file:
-------------8<-------------8<-------------8<-------------8<-------------
.if !defined(FOO_HACKS_MK)
FOO_HACKS_MK= defined
### [Sun Nov 14 02:08:31 EST 2004 : jlam]
### arm GCC 2.95.x optimisation bug tickled when compiling
### lib/funkyfile.c. Require a more recent version of GCC as a
### workaround and patch lib/funkyfile.c (patch-ae).
###
.if !empty(MACHINE_ARCH:Marm*)
PKG_HACKS+= optimisation
GCC_REQD+= 3.0
.endif
.endif # FOO_HACKS_MK
-------------8<-------------8<-------------8<-------------8<-------------
The comment which heads each individual hack should timestamp when the
hack was added and describe the bug that requires the hack. By
separating out hacks to a separate file, we should be able to simplify
package Makefiles so that they are more readable.
pthread.buildlink3.mk into a separate file, pthread.builtin.mk,
that is handled using the usual builtin.mk logic.
(2) If pthread.buildlink3.mk is included by a package Makefile, then
automatically add the necessary compiler and linker flags to
compile and link pthread-enabled/reentrant code. For native
pthreads, this means passing -pthread to the compiler and linker.
For the userland pthread replacement, we pass -D_REENTRANT and
-lpthread instead.
(3) Add PTHREAD_{CFLAGS,LDFLAGS,LIBS} in both CONFIGURE_ENV and MAKE_ENV
when pthread.buildlink3.mk is included so that the configure and
build processes can use these values. Remove these definitions
from bsd.pkg.mk since PTHREAD_* variables are all declared within
pthread.buildlink3.mk.
XXX For now, PTHREAD_LDFLAGS is a superset of PTHREAD_LIBS until
XXX packages that use use PTHREAD_LDFLAGS can be fixed.
Rather than replacing the LIBTOOL_REQD value, add two BUILD_DEPENDS lines.
That way, the higher numbered BUILD_DEPENDS wins -- allowing the version
in bsd.pkg.mk to be bumped beyond the value in the platform .mk and still
be enforced properly.
* Add FETCH_OUTPUT_ARGS (new option, defaults to "-o" with NetBSD's ftp(1))
* Use FETCH_OUTPUT_ARGS to move the file transfer to a temporary name
on ${DISTDIR}/${DIST_SUBDIR} with extension ".temp"
* If temporary file matches the checksum recorded in distinfo, move it
to the original name (removing temp file)
For example, if you want to use PKG_RESUME_TRANSFERS with wget
(pkgsrc/net/wget), the following vars should be defined in mk.conf:
FETCH_CMD=wget
FETCH_RESUME_ARGS=-c
FETCH_OUTPUT_ARGS=-O
No need to set these vars when using defaults (NetBSD's ftp(1))
specify when the pkgconfig substitutions have to be applied; defaults
to pre-configure. This is useful because some packages modify the .pc
files during the build process (adding -L flags), so they have to wait
until the build finishes to add the correct rpaths.
Also modify the regular expression in PKGCONFIG_OVERRIDE_SED to match
and fix multiple -L flags, instead of just one.
script. Since all platforms define a "reasonable" sed(1), it seems
reasonable to pass this info to ./configure as well.
While here, convert LIBS="${LIBS}" to the proper LIBS=${LIBS:Q}.
a ".bin" extraction (to be used shortly by lang/sun-jre15).
This isn't a generic EXTRACT_ENV, as the rest of the extraction tools don't
currently need such a knob. The most common use would be to set things in
the env of a binary-only distribution to make for silent or otherwise
twiddled package extraction.
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.
that all of pkgsrc can benefit from removing redundant dependencies.
The code is encapsulated in a new file reduce-depends.mk which is
included by bsd.pkg.mk after all dependencies have been specified.
the wrappers from adding extra flags to the command-line if "-v"
exists. This makes "g++ -v" return the same error code for both the
wrapper and the real executable and fixes the problem with the
libtool-base build not correctly detecting the C++ compiler and thus
not adding the CXX configuration tag to the final libtool script.
Downgrade LIBTOOL_REQD to 1.5.10 since the newest version isn't needed
with this change.
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
indicate the proper process: first read the license, then accept,
and indicate so in /etc/mk.conf:
yui% make
===> graphviz-1.12 has an unacceptable license: graphviz-license.
===> To view the license, enter "/usr/bin/make show-license".
===> To indicate acceptance, add this line to your /etc/mk.conf:
===> ACCEPTABLE_LICENSES+=graphviz-license
*** Error code 1
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.
"make package", from a nudge by Greg Oster. No objections, but lots of
mail, received from pkgsrc developers, to committing this during the
stability freeze, but I'd really like this to go in pkgsrc-2004Q3.
We no longer require that LIBTOOL_LA_FILES be defined in the package
Makefile, and the libtool archives should once again be listed in the
PLIST.
* Add a new yes/no variable "LIBTOOLIZE_PLIST" to control whether to
have bsd.pkg.mk automatically expand *.la files in PLISTs into the
true library names represented by the libtool archives.
* Rename the "transform-la" script to "print-la-libnames" which more
correctly reflects its function.
Many thanks to Todd Vierling for the original implementation and for
his contructive comments on how to improve the changes in this commit.
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.
verbose message displayed on patch failure is in fact displayed on
patch failure. It defaults to "no" if PKG_DEVELOPER is defined,
"yes" otherwise. While here, rename PKG_PATCH_FAIL to PKGSRC_PATCH_FAIL.
all of the .a, .la, .so, and .so.* files in the PLIST. This will
autogenerate the PLIST entries based on the informaion in the .la file.
This include print-PLIST support; if LIBTOOL_LA_FILES contains an
installed .la, its entries will be elided from the output PLIST template.
and applied to the package sources. The existing options are:
PATCH_DIST_STRIP - option that sets the pathname strip count.
PATCH_DIST_ARGS - the list of arguments to pass to patch(1).
The new options are:
PATCH_DIST_CAT is the command that outputs the patch to stdout.
For each of these variables, there is a patch-specific variant that
may be set, i.e. PATCH_DIST_STRIP.<patch>, PATCH_DIST_ARGS.<patch>,
PATCH_DIST_CAT.<patch>.
are set, and it'd be nice to know which ones before the default
dependencies are installed.
Create a new target "pre-install-depends" that is executed before
dependencies are installed. Move the display of BUILD_DEFS
(build-defs-message) into pre-install-depends so that they are displayed
before dependencies are installed.
Robert Elz in PR pkg/26448 (at least for now).
If you want to use it, PKG_RESUME_TRANSFERS must be set to [Yy][Ee][Ss].
While here, no need to use ${AWK} to get the size with ${WC} -c,
${WC} -c < file is enough.
Thanks to Robert Elz for suggestions, still I have to fix the problems
reported in the PR.
o Use ${WC} -c instead of using ${LS} -l, which works with
symlinks.
o Only assign -R to FETCH_RESUME_ARGS when FETCH_CMD is the
default value (NetBSD's ftp).
o Fix for www/navigator package, which uses DIST_SUBDIR.
o Replace another [ with ${TEST}.
o Print a warning when FETCH_CMD != ftp and FETCH_RESUME_ARGS
is empty (resume will not be possible).
Thanks to cube@ and tron@ for reporting/helping with the problems.
1. don't hardcode true, echo and [
2. Cope with distfiles which are located in a DIST_SUBDIR
3. Don't always assume there will be a size field in the ${DISTINFO_FILE}
XXX The refetch mods make an assumption that an exit code of 0 from a
${FETCH_CMD} means that the transfer has been completed successfully,
and this used not to be the case. I haven't tested this assumption
recently.
$http_proxy or $ftp_proxy are defined (for the moment, NetBSD's ftp(1)
doesn't support this).
While I'm here, move FETCH_CMD from bsd.pkg.mk to bsd.pkg.defaults.mk,
and add the new variable FETCH_RESUME_ARGS (-R by default with ftp(1)
from NetBSD/pkgsrc).
If you want to use wget to resume transfers, you should use something
like:
FETCH_CMD=wget
FETCH_RESUME_ARGS=-c
pre-req fails. Fixes an error noticed by Kimmo and others, where a
build would blindly continue even if the pre-requsite package wasn't
built correctly, and is fallout from the "sh -e" and make(1) changes
in NetBSD-current.
use ABI, but allows IRIX and particularly IRIX64 to find the correct libraries
especially when linking against X11 libs. Tested over several months and
multiple bulk-builds.
Change that: if it's set to YES, require devel/patch. If building
devel/patch, set _OPSYS_GPATCH_REQD to NO, as otherwise we have a
circular dependency.
with gavan@NetBSD.org at pkgsrcCon.
Within the pkgsrc infrastructure, LOCALBASE has two different meanings:
(1) where the package being built should be installed, and
(2) where to find previously installed packages.
Most instances of case (2) should be converted to use EVAL_PREFIX,
but there are some cases where this is impossible. To resolve this,
we preserve LOCALBASE to mean (2) and we create a new variable
INSTALLATION_PREFIX to mean (1).
INSTALLATION_PREFIX is meant to be set some time before bsd.pkg.mk is
included, and provides the value for PREFIX if it's defined, e.g.
NO_MTREE= yes
INSTALLATION_PREFIX= /
.include "../../mk/bsd.pkg.mk"
This allows us to remove all cases where PREFIX is explicitly set in
the package Makefile, e.g. Java VM packages, qmail, etc.
SETGIDGAME: specifies whether or not certain games are installed setgid
GAMEGRP: the group owning games if SETGIDGAME is set
GAMEOWN: the user owning games if SETFIDGAME is set
GAMEMODE: the mode to install games as
Use these to provide INSTALL_GAME (for example for PR pkg/25313), and
set them to meaningful values under NetBSD.
"yes"). So any packages that have old GNU configure script that
does not support --infodir option (while using INFO_FILES) can set
CONFIGURE_HAS_INFODIR=NO.
This was suggested by agc@ as a clearer definition.
I have used this successfully to install over 300 info files
using INFO_DIR=share/info.
Also add new variable called NO_CONFIGURE_INFODIR (as suggested
by Greg Woods) because some autoconf-style configure scripts
don't know --infodir. (The alternative is to use HAS_CONFIGURE
and add the needed CONFIGURE_ARGS.)
Please note that the info tool may not find custom INFO_DIR
unless it is configure to know it. (I will update gtexinfo
for this, but if using native info you are on your own
if you customize this.)
can include buildlink3.mk files. This change also causes work/.tools/bin
to appear after work/.buildlink/bin in the PATH, but we never relied on
this behaviour, so this side-effect should have no impact.
so that Interix can set the default mode to 0775. Then add "install_sh"
to CONFIGURE_ENV so it uses ${INSTALL}, not the package-supplied
install script (as is done for autoconf $INSTALL).
can't change at configure time. "mkdir_p" is now used by automake in place
of the traditional autoconf "INSTALL_DIR". Override mkdir_p in MAKE_FLAGS,
if GNU_CONFIGURE is set, with ${INSTALL_DATA_DIR}.
gnome1-dirs and gnome2-dirs):
- Introduce a global USE_DIRS variable, which takes pairs of names and
versions. For example, an xdg-1.1 value will request the use of the
xdg-dirs package, at least version 1.1. This variable must always be
appended to. If there are duplicates with different versions, the
one with the higher number will be picked up.
- Introduce the mk/dirs.mk file, which is automatically included by
bsd.pkg.mk when USE_DIRS is not empty. It parses the variable's value
and includes the required dirs.mk files, present in each -dirs package.
- For each -dirs package, add a dirs.mk file that defines a variable
holding the list of directories provided by it, adds a dependency on
that package, and modifies the PRINT_PLIST_AWK variable to output
comments for the directories handled by it.
- Drop some Makefile.common files that only make things difficult and
more confusing now (in favour of the new dirs.mk files). The only thing
to worry about is to keep version numbers consistent across xdg-* and
gnome*-* packages, but that will be easier to handle.
The main reason for this change is to be able to modify PRINT_PLIST_AWK in
a clean way, but I hope this will improve clarity too. Also, this simplifies
the addition of future -dirs packages (if needed) in a consistent way.
provide extra awk expressions that are used while generating the PLIST
with the print-PLIST target (before the final 'print' is done), so that
it is closer to reality. Ok'ed by wiz@ and hubertf@.
value of X11_TYPE here since it's defined in bsd.buildlink3.mk which is
included before this check. This fixes breakage for packages that set
USE_X11 due to USE_PKGSRC_XFREE86 not being defined before it's used.
been set to if it hadn't been overridden by PKG_SYSCONFDIR.<pkg>. This
can be used in /etc/mk.conf to re-override certain PKG_SYSCONFDIR.<pkg>
in /etc/mk.conf from various package Makefiles, e.g.
PKG_SYSCONFDIR.openssl= ${DFLT_PKG_SYSCONFDIR}
PKG_SYSCONFDIR.tcp_wrappers= ${DFLT_PKG_SYSCONFDIR}
installed before the normal dependency checks), on a system without
any packages installed, we can run into the problem where digest won't
install because it has already been installed as part of installing
a build dependency. This can happen if, e.g., PKGSRC_COMPILER is set
to "ccache gcc", and you try to build devel/gmake.
Change the way that the uptodate-digest target installs pkgtools/digest
by ensuring that pkgtools/digest is deinstalled just before installing
it.
libtool-base includes "Fix version_type settings for the non-NetBSD
platforms in the CXX and F77 cases." And "Pull in the fix for the
symlink vulnerability.")
Several packages have been changed to reflect the better libtool-base,
but old LIBTOOL_REQD allowed old 1.4.2 version. So new packages had
wrong library versioning like: libasprintf.so.0.0, libsvn_delta-1.so.0.0,
and libXrender.so.0.0.
Okayed by wiz@.
--recheck from re-executing the configure script by inserting "exit 0"
judiciously. This works with configure scripts generated by autoconf>=2.13
and fixes problems with running config.status on Solaris systems where
/bin/sh isn't POSIX enough.
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.
config.status. Instead, only block "config.status --recheck", which
re-executes the GNU configure script. This still allows config.status to
overwrite post-configure changes to Makefiles and config.h files, so those
changes should (properly) be applied to Makefile.in and config.h.in
instead.
relative to ${WRKSRC}. Also automaticslly set LIBTOOL_OVERRIDE if
USE_LIBTOOL is defined, as the vast majority of packages need both if they
need USE_LIBTOOL. The default LIBTOOL_OVERRIDE overrides libtool scripts
up to a directory depth of 2 within ${WRKSRC}.
Note that SHLIBTOOL_OVERRIDE must still be set manually in package
Makefiles that need it; however, it's also been changed to be a list of
shell globs relative to ${WRKSRC}.
don't want it to execute during the build phase as it might overwrite
post-configure changes we might have made to the generated files. Packages
that don't want this behaviour can simply set:
CONFIG_STATUS_OVERRIDE= # empty
in the package Makefile.
save the value of LDFLAGS, CPPFLAGS, etc. in the config.cache file.
However, they don't store the value correctly if it contains leading
spaces. This leads to sub-configure scripts that examine to cache to
error out saying that the build environment changed. Use a make
variable trick to strip off all of the leading spaces on these variables
when passing them via CONFIGURE_ENV.
to CONFIGURE_ARGS if USE_X11 is defined i.e no need to special case
xpkgwedge usage.
Please note that previously these were added to CONFIGURE_ARGS
as soon as xpkgwedge was used even if the package did not actually
defined USE_X11 or something implying it.
replaced by pkgsrc/mk/gnu-config/missing. This avoids requiring
autoconf and automake as hidden build dependencies when they're not ever
invoked by the build process.
"${MAKE}" contains forward slashes. Just pass the bare name of ${MAKE} to
the configure phase as we ensure that "make" is always calling the correct
one symlinked into the .tools directory.
use LIBTOOL_OVERRIDE. In the buildlink[23] case, that is supposed to be
the one in ${BUILDLINK_DIR}. Create new private variables _LIBTOOL and
_SHLIBTOOL to hold these paths.
building of software. For packages that use either buildlink2 or
buildlink3, this would be the wrapper script in ${BUILDLINK_DIR}.
* Garbage-collect _BLNK_WRAP_SETENV.* as those are not needed after
the above changes. Configure and make processes will automatically
find the right compilers in the PATH.
* PKGLIBTOOL and PKGSHLIBTOOL are no longer needed since LIBTOOL and
SHLIBTOOL point to the correct libtools regardless of any
USE_BUILDLINK[23] definitions.
(by checking PREPEND_PATH) and only for those phases of the build that
care about the PATH (buildlink or later). We also pass the PATH to
those same phases of the build so that executing ${CC} will work correctly
from custom {pre,do,post}-* targets that occur at buildlink time or
later.
script that invokes the correct libtool instead of using a symlink. This
fixes the problem where libtool was invoked by /bin/sh regardless of
whether libtool was built to be run by /bin/ksh instead.
They are:
o IMAKE_KERNMAN_DIR (man4 or cat4)
o IMAKE_MISCMAN_DIR (man7 or cat7)
o IMAKE_KERNMAN_SUFFIX
o IMAKE_MISCMAN_SUFFIX
Ok'ed by Hubert Feyrer in private email.
some shells can set MAIL to be the mailbox of the user, and
environment variables will override assignments in make when using
conditional assignments.
bsd.prefs.mk as it's needed in setting X11PREFIX to the correct value,
which is also done in bsd.prefs.mk. This is the follow-through to the
temporary fix in previous revision (1.141) of bsd.prefs.mk.
fetching, extracting, configuring, building, etc. of a package. We
can check what phase we're in by examining the value of ${PKG_PHASE}
and comparing against PHASES_AFTER_<phase>, which list phases that
are "greater than or equal to" <phase>.
One useful example of how to use PKG_PHASE is:
.if !empty(PHASES_AFTER_EXTRACT:${PKG_PHASE})
#
# Some variable settings or targets here that rely on dependencies to
# already be installed, or ${WRKDIR} to be created, etc., as these are
# things that should have happened by the time "make extract" is
# completed.
#
.endif
by GNU configure scripts at CONFIGURE_POSTREQ time. The new config.status
scripts merely return success. This prevents newer Makefiles from
re-running the configure script with the wrong shell environment if we've
touched some GNU autotool-related files during the patch stage.
We might want to always do this, i.e. make this opt-out instead of opt-in.
However, we start with opt-in so that no existing packages can break.