Ø
«
»
0 : pkgsrc Change Log
1 : libnbcompat magic (I)
2 : libnbcompat magic (I)
3 : Infrastructure cleanup
4 : pkg_install cleanup (I)
5 : pkg_install cleanup (II)
6 : digest
7 : Spring cleaning (I)
8 : Spring cleaning (II)
9 : Bootstrapping (I)
10 : Bootstrapping (II)
11 : Bootstrapping (III)
12 : Fetching and checksumming
13 : Performance updates
14 : CHECK framework (I)
15 : CHECK framework (II)
16 : Dependency handling
17 : make replace and pkg_rolling_replace (I)
18 : make replace and pkg_rolling_replace (II)
19 : Infrastructure additions (I)
20 : Infrastructure additions (II)
21 : Infrastructure additions (III)
22 : Infrastructure additions (IV)
23 : Infrastructure additions (V)
24 : License work
25 : Cross compiling support (I)
26 : Cross compiling support (II)
27 : Q&A
pkgsrc Change Log
What We Did Last Summer
Jörg Sonnenberger
joerg@NetBSD.org
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
Q&A
Questions?