# XXX Accumulate commit message during each operation, so that a final
# commit operation will have a sensible message with all of the
# previous operations.
# XXX Fail if uid is 0, or perhaps != CVS meta files owner, to catch
# the case of invoking these targets as root.
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.
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.
PATCHFILES nor DISTFILES, make fetch would complain about an unbuildable
dependency. Fix this by explicitly checking that _ALLFILES is not empty.
Reported by Sean Boudreau.
target by pkgsrc. This new target computes checksums only up until
the extract phase is complete.
The "checksum" target is now a target that can always be run by the
user at any time, regardless of the presence of the work directory.
These changes were proposed in PR pkg/36603 by Robert Elz.
README.html generation are broken. It will not find vulnerabilities in any
packages that have complex names in the pkg-vulnerabilties file.
e.g. php{4,5}-perl and sun-{jdk,jre}15
Post pkg_install-20070714 this is now fixed and only currently known
vulnerabilities are shown in the generated README.html files for packages.
You will need to update to pkg_install>=20070714 to get this fix.
provided in the distinfo file for those distfiles, rather than checking
specifically for the ones listed in _DIGEST_ALGORITHMS. If a distinfo
file actually provides checksums for other algorithms, e.g. TIGER,
then go ahead and verify them too.
run now at any time up until the "extract" phase completes, and the
"checksum" target no longer keeps a state (cookie) file.
From the checksum.mk file comments:
We do not actually wish to create a cookie file for the completion
of the checksum phase because we want to be able to detect if
any of the files have changed right up until the distfiles are
extracted. Therefore, we use the presence of the cookie file
from the "extract" phase to determine whether we need to continue
to verify checksums.
This addresses PR pkg/36262 and PR pkg/36603.
of an emulated operating system. Instead of proliferating things like
SUSE_VERSION_REQD, NETBSD_VERSION_REQD, SOLARIS_VERSION_REQD, etc., a
package can say:
EMUL_REQD= suse>=9.1 netbsd>=2.0 solaris>=10
all in one, succinct line.
a separate emulator-opsys.mk file.
The emulator-opsys.mk file defines EMUL_DISTRO and the various *EMUL*DIR*
variables, as well as any opsys-specific variables.
Include this file within compat_netbsd/Makefile.common so that the
*EXEC_FMT variables (defined by the compat*/emulator.mk files) are
defined. This fixes the build of compat* packages.
XXX emulator-opsys.mk will go away in the near future as we do more
XXX appropriate information hiding.
matches the native operating system. Use it in place of checking
whether EMUL_DISTRO matches "native-*" as EMUL_DISTRO is no longer
defined after bsd.prefs.mk is included.
This should fix PR pkg/36823 by Robert Elz.
pkgsrc/emulator/compat* and pkgsrc/emulator/netbsd32_compat* packages
to provide the necessary shared libraries to run dynamically linked
NetBSD binaries from the days of yore.
* Add some additional compat* packages for completeness:
compat15, compat20, compat30
* Modify the compat* packages so that "compatNM" only provides files
that aren't in "NetBSD-N.(M+1)". For example, compat12 only provides
files that don't exist in NetBSD-1.3.x, compat13 only provides files
that don't exist in NetBSD-1.4.x, etc.
As a result, if you are running NetBSD-3.0/alpha and want to run a
1.3 dynamically linked binary, there is an automatic dependency
chain that causes the following packages to be installed:
compat13, compat14, compat15, compat16, compat20
There are some deviations from this dependency chain on platforms
that have changed executable formats, e.g. i386, m68, sparc, etc.
However, in general pkgsrc will require that you have the necessary
COMPAT_* options in your kernel to match the installed compat*
packages. This restriction is an artificial one imposed by pkgsrc,
but allows for a single set of distfiles to be used on all versions
of NetBSD.
* Provide compat* package support for every supported architecture
of NetBSD. Verily, it is now possible to run 1.2 binaries on
NetBSD-1.5.3/pc532 by installing the compat12 package from pkgsrc.
Rejoice, one and all!
* The netbsd32_compat* packages mirror the corresponding compat*
packages for use by sparc64 and x86_64 to allow running 32-bit
binaries with COMPAT_NETBSD32 kernel support. The "extras" packages
supply the additional shared libraries from the corresponding release
of NetBSD so that the set of files in /emul/netbsd32 will be complete.
* pkgsrc/emulators/compat_netbsd contains infrastructure files shared
by all of the compat* packages.
check-shlibs. This allows more stricter detection (e.g. it checks
whether the package links against a build dependency). It also checks
whether the rpath contains wrkdir references (like qt3-libs). It depends
on readelf and is only available for ELF systems for now. To test it,
add USE_CHECK_SHLIBS_ELF to mk.conf.
Supported-by: Google SoC 2007
at the very least with AIX 5.3 directly and for older, wrapper should
take care.
Provide some more sane defaults for XLC and bail out explicitly if
XLCBASE can't be determined.
a distfile or a pkgsrc patch. It's simple, cleaner, less magic, etc.
(duh!).
While here, I notice that _CHECKSUM_CMD was already being defined in
mk/checksum/checksum.mk (as it should be), so update the definition
from mk/patch/patch.mk and remove it from patch.mk.
- check-perms.mk was not DESTDIR aware, prefix files before passing it
to the directory extraction
- PKG_FILELIST_CMD was calling pkg_info, which is fine for normal
installation, but fails of course for DESTDIR. Just drop the @ lines
from ${_DEPENDS_PLIST} and use that.
- To make he former work, ensure that _flavor-generate-metadata is part
of _INSTALL_ALL_TARGETS. It was normally a dependency of
_flavor-register, but that is skipped for DESTDIR.
- Remove ${_DEPENDS_PLIST} when running install-clean.
instead only remove the files generated by _flavor-generate-metadata.
This should preserve the +INSTALL and +DEINSTALL scripts (which are
created during the "build" phase") across a "make update" or a "make
deinstall".
first stripping them of NetBSD RCS ID tags. Use the checksum script
in the patch module to verify patch checksums instead of hand-coding
a miniature version of the checksum script in the do-pkgsrc-patches
target.
the makefile and simply handle it in the shell code. This allows for
appending to PKG_OPTIONS_DEPRECATED_WARNINGS in a makefile even after
bsd.options.mk is included.
shell command that is run via the RUN macro. This makes the output a
little more verbose, but when you have the need to set PKG_DEBUG_LEVEL
that high, you can probably need the extra help you get from this
change.
ALL_ENV as well. This ensures that any locale settings are
overridden and the output matches what pkgsrc expects.
This should fix some of the strange bootstrap issues seen over
time that were seemingly fxied by USE_NATIVE_GCC=yes.
than in work/.pkgdb, so as not to lose them in install-clean.
Because of this, put them back explicitly.
(Fixes 'make replace loses +REQUIRED_BY', and also the unreported
'make replace loses +INSTALLED_INFO'.)
telling him to accept a license:
- if MAKECONF is set, use that
- if this is NetBSD and a non-bootstrap make is used, take /etc/mk.conf
- otherwise use ${PREFIX}/etc/mk.conf.
Issues reported by Michael Neumann on DragonFly's user list.
contains files that are generated during the "install" phase. This
should fix the problem where PLIST modifications were ignored if the
PLIST was modified between a "make deinstall" and a "make reinstall".
been replaced which might have had an ABI change. In practice, a
package is considered to maybe have had an ABI change if the version
changes. Introduce a new tag unsafe_depends_strict, which is
unconditionally set on depending packages whenever make replace is
done.
This will cut down considerably on the amount of rebuilding required
with pkg_rolling-replace, while still guaranteing that packages are
rebuilt if there was an ABI change in a dependency.
+INSTALLED_INFO is present, to avoid complaint from pkg_admin (see
pkg/36741). Separate tag removal into a separate target, and use
STEP_MSG and _PKG_DEBUG properly.
fixing up the required-by file. The invariant on unsafe_depends (on
which pkg_rolling-replace depends) is once again maintained, but now
cleanly, rather than assuming that all tags are cleared.
(proposed on tech-pkg with no objections, and concurrence from tnn@)
of the interpreter as the filetype when a file starts with #!
This unfortunately breaks SUBST handling. For now, use a dummy that
claims that every file is a text file.
installed. Idea from one of joerg@'s patches.
Fix 'make readme' and make README.html' targets for individual packages.
Issue reported by Gary Thorpe and David Lord in pkgsrc-users@
before replacing it, and restore it when the new package is installed.
This saves any state information that should be carried over to the
new package, e.g. automatic=yes.
XXX Still need to do the same when "un-replacing".
PKGVULNDIR; else extract the current setting using audit-packages -Q and use
that. In addition to this mkreadme can still be called with -V to specify
a pkg-vulnerabilities file that will override any automatic detection.
- 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@.
shell script. Just specify everything on the command line. Also,
since shlib-type is a plain-old shell script with no bells and whistles,
we can safely run it with "sh" and not "${SH}", which is necessary
because "${SH}" isn't defined at this point.
behavior of just appending to the file without cvs update (or cvs edit
if not writable), for the convenience of those committing multiple
package updates at once. To implement this, split the
update/cat/commit into elementary targets and compose them to form the
user-exposed targets, spiff up the comments, and rationalize .PHONY
usage.
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@
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.
changes-entry now does cvs update (and cvs edit if needed), and adds
the line. This target will behave the same way (with extra CVS
traffic) if the file is up to date, and will be omre useful if
CHANGES-YYYY is not up to date.
commit-changes-entry depends on changes-entry and also commits. This
target has no behavior changes.
Rename _CCE_FOO variables to PKGSRC_CHANGES_FOO, and merge with
existing varables.
We may need a changes-entry-no-update, or a new name for what
changes-entry does now. Given how infrequently CHANGES-YYYY is up to
date when I want to add, I believe the new behavior will be welcome to
almost everyone.
plist module, it was being "defined" too late, and the pkginstall module
never created any +SHLIBS scripts. Sidestep the tools problems with
SHLIB_TYPE by pretending they don't exist (for now).
XXX SHLIB_TYPE needs to be re-thought or removed altogether.
We can't use our own imake to check for builtin packages so disable the
check and always report that no builtin implementation exists.
No objections on tech-pkg@
former set several USE_TOOLS lines that were being missed by bsd.tools.mk.
Rearrange the +SHLIBS code so that bsd.tools.mk can now be included
after bsd.pkginstall.mk again. The +SHLIBS code has now been moved
over to the plist module, which is so far the repository for all of
the shlib-type handling.
This should fix the problem with fonts handling being broken.
CVSREAD=t, and should result in unchanged behavior with writable
files. Split _CCE_CHANGES definition into _CCE_CHANGES_{DIR/BASE} to
facilitate above.
Use lower case to be consistent with existing license names.
Declare that free/open licenses do not have -license at the end.
Better articulate rationale for default choice.
Add x11 license (also called mit).
Note 'wait and see' stance towards gnu-gpl-v3.
on platforms that need it.
XXX Right now, if the platform needs it, then it runs for every package.
XXX This needs to be fixed to only run for packages that install shared
XXX libraries.
* Move mk/plist/shlib-type to mk/scripts.
* Move definition of SHLIB_TYPE from mk/plist/plist.mk to bsd.pkg.mk.
* Move inclusion of bsd.pkginstall.mk below bsd.tools.mk so that it
can use SHLIB_TYPE. This is necessary because SHLIB_TYPE's value
is the result of evaluating a command, and the command needs "TOOL"
definitions provided by bsd.tools.mk.
allowing PLIST_SRC to be overridden in a package Makefile.
It's now possible to do:
PLIST_SRC= ${PLIST_SRC_DFLT} ${WRKDIR}/PLIST_DYNAMIC
and still use the default PLIST.* fragment handling.
+INSTALL and +DEINSTALL scripts:
PKGINSTALL_VERBOSE
A list of scriptlets that will be verbose and output a message
noting the actions taken.
* "all" is a special value that implies all of the other items
* "fonts" for +FONTS
* "info-files" for +INFO_FILES
Default value: "all" for PKG_DEVELOPERs, empty otherwise.
* Be "one-liner brief" when doing the default actions. For example,
the info files output now looks like:
gmake-3.81: registering info file /usr/pkg/info/make.info
We retain the current verbosity for the CHECK-* actions.
We fix GNU configure script stupidity by directly replacing the stock
install-sh script provided by the software with the BSD install-compatible
sysutils/install-sh script.
A new package-settable variable comes to life:
INSTALL_SH_OVERRIDE is a list of files relative to WRKSRC which
should be overridden by the install-sh script from
sysutils/install-sh. If not defined or set to "no", then
no files are overridden.
Possible values: no, defined, undefined.
Default value: defined when GNU_CONFIGURE is defined, undefined
otherwise.
Get rid of the install_sh tool, which is no longer needed.
accepting the license"; that sounds too close to a contract issue.
Pkgsrc's license framework is merely about not building a package with
a license not on the ok list by accident, and is not intended to have
any contractual effects.
Split comment about 'package user" into separate concepts of
installing binary packages and running programs in packages.
Add XXX about how DEFAULT_ACCEPTABLE_LICENSES relates to the initial
value of ACCEPTABLE_LICENSES.
the owner of all installed files is a non-root user. This change
affects most packages that require special users or groups by making
them use the specified unprivileged user and group instead.
(1) Add two new variables PKG_GROUPS_VARS and PKG_USERS_VARS to
unprivileged.mk. These two variables are lists of other bmake
variables that define package-specific users and groups. Packages
that have user-settable variables for users and groups, e.g. apache
and APACHE_{USER,GROUP}, courier-mta and COURIER_{USER,GROUP},
etc., should list these variables in PKG_USERS_VARS and PKG_GROUPS_VARS
so that unprivileged.mk can know to set them to ${UNPRIVILEGED_USER}
and ${UNPRIVILEGED_GROUP}.
(2) Modify packages to use PKG_GROUPS_VARS and PKG_USERS_VARS.
For now, DragonFly and FreeBSD use the libc version, it is not reentrant,
but thread-safe. NetBSD 3.0+ and Darwin 8.0+ use libresolv from base
(the BIND9 resolver), all other fall back to net/bind9. Feel free to add
your favorite platform if it has a thread-safe resolver in base.
Modify mail/libspf-alf, mail/milter-greylist, mail/spamdyke and
net/nocol accordingly. Testing on !DragonFly and feedback from tron@
This can currently only be set to 'clean' which will result in a
priveleged 'make clean' operation in case any package builds result
in files under ${WRKSRC} that are owned by root.
This is useful for certain packages e.g. python (on NetBSD) and ezm3
and possibly more.
But actually, the default didn't change because EMACS_TYPE is set to
emacs21 in pkgsrc/mk/defaults/mk.conf.
I will clean up all Emacs Lisp packages to be emacs22-capable, then change
the default.
a "^" to the beginning to anchor the expression. No change in the ouput
but on SunOS-5.9 it runs up to 90,000 times faster on some files (probably
much less of an improvement on some, maybe more improvement on others).
Committed during the freeze as bulk builds that call 'make debug' were
unusable.
well-audited as NetBSD's /usr/bin/su. Change the default
SETUID_ROOT_PERMS to 4511 to raise the bar slightly on finding
vulnerabilities in setuid-root binaries.
appropriately again based on the value of _BOOTSTRAP_VERBOSE. This
code was lost in revision 1.27.
This should again suppress the output during "mirror-distfiles" in the
case where the bootstrap dependency is already installed.