pkgsrc Change Log
What We Did Last Summer
Jörg Sonnenberger
libnbcompat magic (I)
- Added SHA256 / SHA512
- Fixed SHA256 / SHA512 for strict alignment platforms
- Check that vsnprintf returns expected output bytes
- New (v)snprintf with vfprintf to /dev/null and vsprintf
libnbcompat magic (I)
- Dropped buildlink3.mk, optional PIC version
- A BSDish getopt can be required (optreset)
- USE_FEATURES= asprintf err glob
Infrastructure cleanup
- Remove USE_MTREE, keep single mtree file for print-PLIST
- Drop PKG_TOOLS_PREFIX handling — never remove system programs!
- Don't safe guard against Zoularis use
- 3 years of bmake development merged
pkg_install cleanup (I)
- Remove mtree support:
- pkg_create refuses to create such packages
- pkg_add ignores mtree files
- Remove support for required scripts in pkg_add
- Don't leak memory in Dewey — after a few thousand times it hurts
- Made pkg_add look for best match for missing dependency, not the version built against
pkg_install cleanup (II)
- Remove master/slave mode in pkg_add
- Remove extract-in-place option in pkg_add
- Remove preserve option in pkg_add
- pkg_create uses libarchive, proper owner/group information for DESTDIR
- pkg_info uses libarchive and libfetch: much faster for archive operations
digest
- Use AC_C_BIGENDIAN to unbreak HP-UX/Itanium and simplify the code
- Still not sure how to deal with autoconf 2.62 and Universal Builds
- Tiger has the largest hash — allocate enough space to not crash
- Tiger output for the empty file was wrong
- SHA512 had a subtile bug when size of last block = size of short fragment
Spring cleaning (I)
- GNOME 1.x
- BIND 4.x
- MySQL 4.0 — 4.1 got ressurrected
- Blackdown and Sun JDK/JRE 1.3
Spring cleaning (II)
- SuSE 9.1
- Firefox / Thunderbird 1.5
- Python 2.0 and 2.2
- Xorg 6.9 (good bye, releng: 2007/09/24 - 2007/09/28 - 2008/01/17)
Bootstrapping (I)
- Support to create a shiny, clickable MacOS X bootstrap package
- Universal build exposed link order issues in tnftp with libedit
- xargs(1) replacement for Interix: direct exit on empty input
- Split bootstrap:
- Bootstrap bmake, pkg_admin, pkg_create (register-only) and pkg_info first
- Rebuild using normal pkgsrc magic with WRKOBJDIR set
Bootstrapping (II)
- Conditionally build and install pdksh (OSF/1, Solaris)
- Merged mkbinary into bootstrap itself
- Saner default values: varbase and pkgdb based on prefix
- When looking for programs, don't match directories in PATH
- Dropped mtree
Bootstrapping (III)
- Preperations for further cleanup:
- ftp is real tool now
- pax no longer part of USE_TOOLS by default
- fetch and extract depend on right tools
- pkgsrc itself supports case-insensitivity after repo moves
Fetching and checksumming
- Share code between checksum and patch module
- checksum target can always be called
- Verify all provided checksums, not just default list
- Don't bail out if DISTDIR is invalid and neither PATCHFILES nor DISTFILES are needed
- Separate NO_CHECKSUM from FAILOVER_FETCH
- Replace DIST_SUBDIR=. with DIST_SUBDIR=, it breaks PKG_RESUME_TRANSFER
Performance updates
- mk: Don't expand LOCALPATCHES if it isn't said — bad if /net has autofs...
- pkg_install: Bail out fast if literal part of a pattern can't match -> "pkg_admin audit" 92% faster
- wrapper: Load cache only once and use a shell function later -> 75% for long command lines
- mk: Variable substition to compute LOWER_OPSYS_VERSUFFIX instead of forks
CHECK framework (I)
- New shlib backend for ELF platforms:
- Works for DESTDIR and cross-compiling
- Can detect linkage against build dependency
- WRKDIR leaks via RPATH
- Default on NetBSD, DragonFly and FreeBSD
- CHECK_PERMS uses generated PLIST and supports DESTDIR
- No portability checks for bash scripts
CHECK framework (II)
- CHECK_INTERPRETER part of PKG_DEVELOPERS
- CHECK_INTERPRETER needs to look inside ${DESTDIR} as well
- Optional check that binaries are not stripped
- Fake ${HOME} and extend WRKDIR reference check for it
Dependency handling
- Check pkg_install first, try install/update it if out-dated
- For bulk builds record pkg_install dependency if out-dated
- Remember all dependencies and exact versions
- Prepend build and runtime dependencies directly to PLIST, not via pkg_create -P/-T
- Shorter output, but includes type of dependency
make replace and pkg_rolling_replace (I)
- unsafe_depends == a dependency might have had an ABI change
- "make replace" always sets unsafe_depends_strict on dependencies
- "make replace" has to store +REQUIRED_BY and +INSTALLED_INFO outside ${WRKDIR}/.pkgdb
make replace and pkg_rolling_replace (II)
- "pkg_admin rebuild-tree" helps to recompute +REQUIRED_BY
- Faster dependency graph logic using awk, up to 20 times faster
- "pkg_add -u" from pkg_install-renovation keeps +PRESERVE and +INSTALLED_INFO
Infrastructure additions (I)
- "make clean" with WRKOBJDIR also tries to remove the category directory
- PLIST_VARS for common task of conditional PLIST substitution
- Replace text check using file(1) with tr/wc looking for NUL bytes
- When searching for shared linkage data, skip keyword entries in PLIST: @unexec /bin/rmdir
- Fix install-sh issues with GNU configure by replacing the script with our version
Infrastructure additions (II)
- +INSTALL and +DEINSTALL are much less verbose by default
- PRIVILEGED_STAGES
- Wrapper don't print transformed command after failure
- Wrapper logging is copy&paste safe
- Fix long-standing quoting issues in the wrapper, unnoticied as -I and -L normally don't need it
Infrastructure additions (III)
- Print all files when using DESTDIR, not just those newer than the start of the build
- Call GCC with ALL_ENV when extracting version number — pkgsrc doesn't understand Brazilian Portogese
- mk/resolv.buildlink3.mk to get a thread-safe resolver
- Rebuild ldconfig-like caches where needed
- Unified emulation framework to cover NetBSD 32bit compatibility, Linux emulation etc.
Infrastructure additions (IV)
- "make package" uses temporary package + move
- Use chrpath(1) to fix up binary package instead of wrapper scripts
- GENERATE_PLIST for dynamic PLISTs, no intentionally empty PLISTs any more.
- Better group handling for unprivileged builds, can use all groups the user is in
- Ruby Gem logic
- Python Egg logic
Infrastructure additions (V)
- "make README.html" prints past and open issues using "pkg_admin audit-history"
- DESTDIR support for all Perl modules using Module::Build.
- cmake integration as tool and configure stage (USE_CMAKE=yes)
- AUTO_MKDIRS to complement INSTALLATION_DIRS
- Better diagnostic for missing CONF_FILES etc. arguments ("can't shift that many")
License work
- Started to tag packages with commented out GPL3 entries
- FOSS licenses require no -license suffix
- Make it easier to selectively remove default licenses by using a separate variable
- Improve diagnostic where the user can find mk.conf
- Al is picky about the spelling and likes the redundancy
- Ion3(tm) removal after upstream complains, questionable legal status
Cross compiling support (I)
- New variables: NATIVE_MACHINE_GNU_ARCH, NATIVE_LOWER_ARCH, NATIVE_MACHINE_ARCH,
NATIVE_MACHINE_PLATFORM and NATIVE_MACHINE_GNU_PLATFORM
- mk.conf can override MACHINE_ARCH and set USE_CROSS_COMPILE
- Overrides --host and --build argument for GNU configure
- buildlink3 uses CROSS_DESTDIR hierachy as popolated e.g. by "build.sh distribution"
Cross compiling support (II)
- package-install and bin-install are unprivileged
- Mix of native tools (gmake, pkg-config) and build.sh toolchain (as, ld, strip, ...)
- Special compiler wrapper:
- Add ${CROSS_DESTDIR}/usr/include to the include search path
- Add ${CROSS_DESTDIR}/usr/lib to the library search path
- Transform rpath options to rpath + rpath-link into ${CROSS_DESTDIR}
- pkg_add -m overrides uname based MACHINE_ARCH test