| 1 | Pkgcore Release Notes |
|---|
| 2 | ===================== |
|---|
| 3 | |
|---|
| 4 | See ChangeLog for full commit logs; this is summarized/major changes. |
|---|
| 5 | |
|---|
| 6 | pkgcore 0.2.8: |
|---|
| 7 | |
|---|
| 8 | * misc initialization fixes to syncers for when invoked via GenericSyncer. |
|---|
| 9 | If previously layman integration wasn't working for you, should now. |
|---|
| 10 | |
|---|
| 11 | * shift the misc fs property triggers to pre_merge, rather then sanity_check; |
|---|
| 12 | sanity_check should be only for "do I have what I need to even do the merge?". |
|---|
| 13 | running preinst was occasionally wiping the changes the triggers made, thus |
|---|
| 14 | allowing screwed up ebuilds with custom preinst's to slip in a portage gid |
|---|
| 15 | for merge. |
|---|
| 16 | |
|---|
| 17 | * fix a corner case for cpy join spotted by TFKyle where length calculation |
|---|
| 18 | was incorrect, leading to a trailing null slipping into the calculated |
|---|
| 19 | path. |
|---|
| 20 | |
|---|
| 21 | * fix bash parsing for a corner case for empty assigns; literally, |
|---|
| 22 | x= |
|---|
| 23 | foo='dar' |
|---|
| 24 | would incorrectly interpret x=foo, instead of x=''. |
|---|
| 25 | |
|---|
| 26 | |
|---|
| 27 | pkgcore 0.2.7: |
|---|
| 28 | |
|---|
| 29 | * layman configuration (if available) is now read for portage configuration |
|---|
| 30 | for sync URI for overlays. tar syncer is currently unsupported; others may |
|---|
| 31 | be buggy. Feed back desired (author doesn't use layman). Ticket #11. If |
|---|
| 32 | you want it disabled, add FEATURES=-layman-sync . |
|---|
| 33 | |
|---|
| 34 | * another fix for daft tarballs that try to touch cwd. |
|---|
| 35 | |
|---|
| 36 | pkgcore 0.2.6: |
|---|
| 37 | |
|---|
| 38 | * make intersecting ~ and =* atoms work again (used by pquery --revdep) |
|---|
| 39 | |
|---|
| 40 | * catch a corner case py2.5 bug where AttributeError bleeds through from |
|---|
| 41 | generic_equality. |
|---|
| 42 | |
|---|
| 43 | * Via solars prodding, finished up the remaining bits for ROOT support. |
|---|
| 44 | |
|---|
| 45 | * resolver traceback for if a requested atom is already known as insoluable. |
|---|
| 46 | Thanks to kojiro for spotting it. |
|---|
| 47 | |
|---|
| 48 | * misc bash code cleanup. |
|---|
| 49 | |
|---|
| 50 | * PATH protection has been loosened slightly to enable 'weird' eclasses that |
|---|
| 51 | are doing global PATH mangling. |
|---|
| 52 | |
|---|
| 53 | * $HOME location for building was shifted into the targeted packages |
|---|
| 54 | directory, rather then a shared within $PORTAGE_TMPDIR. |
|---|
| 55 | |
|---|
| 56 | * setgid/setuid triggers now match portage behaviour; -s,o-w mode change. |
|---|
| 57 | |
|---|
| 58 | * trigger warnings are now enabled. |
|---|
| 59 | |
|---|
| 60 | * New default trigger added; CommonDirectoryModes, checks for common |
|---|
| 61 | directories (/usr, /etc, /usr/bin, /usr/lib for example) in the merge set, |
|---|
| 62 | checking the packages specified modes for them. If not 0755, throws a |
|---|
| 63 | warning. |
|---|
| 64 | |
|---|
| 65 | * For directory on directory merging, ensure_perms (default op) was changed |
|---|
| 66 | to preserve the existing directories permissions. Generally speaking, this |
|---|
| 67 | means that later versions of an ebuild have to use post_inst to correct the |
|---|
| 68 | perms if they're incorrect- previously, the new perms/mode were forced on |
|---|
| 69 | the existing. Several common ebuilds (openssl for example) will generate |
|---|
| 70 | weird modes on common directories however (heavily restricted perms), which |
|---|
| 71 | can break things. For the time being, the default is scaled down to the |
|---|
| 72 | looser form portage does. |
|---|
| 73 | |
|---|
| 74 | * added man page generation: pquery, pmerge |
|---|
| 75 | |
|---|
| 76 | * pconfig now has a "dump-uncollapsed" command to dump the "raw" config. |
|---|
| 77 | |
|---|
| 78 | * pebuild now supports --no-auto to run just the targeted phase. |
|---|
| 79 | |
|---|
| 80 | * mass expansion of test coverage: pkgcore.restrictions.*, |
|---|
| 81 | pkgcore.util.*, pkgcore.ebuild.* |
|---|
| 82 | |
|---|
| 83 | * minor cleanup of pkgcore.test.ebuild.test_cpv to reduce redundant data sets; |
|---|
| 84 | total testcase runtime reduction by about a third. |
|---|
| 85 | |
|---|
| 86 | * diverge from unittest.TestCase to provide extra checks for normal asserts- |
|---|
| 87 | assertNotEqual for example, checks both __eq__ and __ne__ now to smoke out |
|---|
| 88 | any potential oversights in object equality implementation. |
|---|
| 89 | |
|---|
| 90 | * use nsec mtime resolution if available to match python stdlib. |
|---|
| 91 | |
|---|
| 92 | * env var PORTAGE_DEBUG for controlling how much debug info the ebuild env |
|---|
| 93 | generates is now PKGCORE_DEBUG; range is the same, 0 (none), 1 (just the |
|---|
| 94 | ebuild/eclass), 2 (1 + relevant setup code), 3 (2 + filter-env data), |
|---|
| 95 | 4 (everything). |
|---|
| 96 | |
|---|
| 97 | |
|---|
| 98 | pkgcore 0.2.5: |
|---|
| 99 | |
|---|
| 100 | * handle corner case in depend cycle processing where a package directly |
|---|
| 101 | depends upon itself; fixes processing of sys-devel/libtool specifically. |
|---|
| 102 | |
|---|
| 103 | * for pquery --attr keywords, sort by arch, not by stable/unstable. |
|---|
| 104 | |
|---|
| 105 | * correct misc corner case atom bugs; an intersection bug, miss on an invalid |
|---|
| 106 | use dep atom lacking a closure in cpy atom, verification of use chars in |
|---|
| 107 | native atom, |
|---|
| 108 | |
|---|
| 109 | * osutils extensions tests, correcting a few cpy differences in behaviour from |
|---|
| 110 | native. |
|---|
| 111 | |
|---|
| 112 | * For unpacking a tarball that doesn't have it's files in a subdir, tar will |
|---|
| 113 | occasionally try to utime the cwd resulting in a failure- uid owner for |
|---|
| 114 | WORKDIR was changed to allow tar to do the utime, thus succeed in unpacking. |
|---|
| 115 | Only visible for userpriv and with oddball packages, gnuconfig for example. |
|---|
| 116 | |
|---|
| 117 | * Cleanup of a few slow test cases; running the test suite should now be around |
|---|
| 118 | 25%-33% faster. |
|---|
| 119 | |
|---|
| 120 | |
|---|
| 121 | pkgcore 0.2.4: |
|---|
| 122 | |
|---|
| 123 | * refactoring of trigger implementations- cleanup and tests. Additionally, |
|---|
| 124 | eliminate a potential mtime based frace if the underlying fs (or python |
|---|
| 125 | version) doesn't do subsecond resolution. |
|---|
| 126 | |
|---|
| 127 | * force FEATURES into the exported ebuild env always. |
|---|
| 128 | |
|---|
| 129 | * for pmerge -p $target, which prefers reuse normally, *still* prefer the |
|---|
| 130 | highest versions, just examine vdb first, then nonvdb. |
|---|
| 131 | |
|---|
| 132 | * minor optimization in readlines usage in the backend; kills off a duplicate |
|---|
| 133 | stat call. |
|---|
| 134 | |
|---|
| 135 | * if a stale cache entry is detected, and the backend is writable, wipe the |
|---|
| 136 | cache entry. Little bit slower when detected, but saves parsing the file |
|---|
| 137 | next time around. |
|---|
| 138 | |
|---|
| 139 | |
|---|
| 140 | pkgcore 0.2.3: |
|---|
| 141 | |
|---|
| 142 | * support for ** in package.keywords |
|---|
| 143 | |
|---|
| 144 | * export preparsed SLOT to ebuild env; ebuilds shouldn't rely on this |
|---|
| 145 | since it can lead to fun metadata issues, but certain eclasses do. |
|---|
| 146 | |
|---|
| 147 | * fix exporting finalized form of RESTRICT to the build env; ticket 61. |
|---|
| 148 | |
|---|
| 149 | * fix for RESTRICT=fetch to not treat the filename as a uri. |
|---|
| 150 | |
|---|
| 151 | * expose the full make.conf environment to FETCHCOMMAND and RESUMECOMMAND- |
|---|
| 152 | ticket 58 |
|---|
| 153 | |
|---|
| 154 | * added support for make.conf defined FETCH_ATTEMPTS; max # of unique uris to |
|---|
| 155 | attempts per file before giving up, defaults to 10. |
|---|
| 156 | |
|---|
| 157 | * added int_parser type for config instantiation definitions (ConfigHint), |
|---|
| 158 | and usual introspection support. |
|---|
| 159 | |
|---|
| 160 | * fix regression limiting satisifiers for depends to installed only in corner |
|---|
| 161 | case installed bound cycles; automake/perl specifically trigger this, thus |
|---|
| 162 | most folks should have seen it if using -B. |
|---|
| 163 | |
|---|
| 164 | * Better handling of non-ascii characters in metadata.xml. |
|---|
| 165 | |
|---|
| 166 | |
|---|
| 167 | pkgcore 0.2.2: |
|---|
| 168 | |
|---|
| 169 | * The terminfo db is now used for xterm title updates. If title updates |
|---|
| 170 | worked in pkgcore 0.2 or 0.2.1 and no longer work in 0.2.2 file a bug and |
|---|
| 171 | include the TERM environment variable setting. |
|---|
| 172 | |
|---|
| 173 | * misc fixup for asserts in cpy code when debugging is enabled, and closing |
|---|
| 174 | directory fds when corner case error paths are taken (out of memory for |
|---|
| 175 | example). |
|---|
| 176 | |
|---|
| 177 | * atoms are picklable now. |
|---|
| 178 | |
|---|
| 179 | * add tests for pmaint copy (quickpkg equivalent), and add |
|---|
| 180 | --ignore-existing option to copy just pkgs that don't exist in the |
|---|
| 181 | target repo. |
|---|
| 182 | |
|---|
| 183 | * fix pmerge handling of --clean -B for automake and a few other DEPEND level |
|---|
| 184 | hard cycles. |
|---|
| 185 | |
|---|
| 186 | |
|---|
| 187 | pkgcore 0.2.1: |
|---|
| 188 | |
|---|
| 189 | * fix corner case for portage configuration support; old system (<=2004) |
|---|
| 190 | installations may have /etc/portage/sets/world, which confused pmerges |
|---|
| 191 | world updating, leading to writing bad entries. Ticket 54. |
|---|
| 192 | |
|---|
| 193 | * fix issues with distcc/ccache (ticket 55) so that they actually work. |
|---|
| 194 | |
|---|
| 195 | * fix pconfig dump traceback; ticket 56. |
|---|
| 196 | |
|---|
| 197 | |
|---|
| 198 | pkgcore 0.2: |
|---|
| 199 | |
|---|
| 200 | * glsa pkgset will now include metadata/glsa from overlays. |
|---|
| 201 | |
|---|
| 202 | * pmaint script; tool for --sync'ing, doing quickpkging, moving packages |
|---|
| 203 | between repos for repository conversions. General repository maintenance. |
|---|
| 204 | |
|---|
| 205 | * sync subsystem: supports bzr, cvs, darcs, git, mercurial (hg), rsync, |
|---|
| 206 | and subversion. |
|---|
| 207 | |
|---|
| 208 | * binpkg repositories now support modification; FEATURES=buildpkg basically |
|---|
| 209 | |
|---|
| 210 | * binpkg contents handling is significantly faster. |
|---|
| 211 | |
|---|
| 212 | * pmerge: |
|---|
| 213 | * supports --ask (thanks to nesl247/alex heck) |
|---|
| 214 | * pmerge --replace is default now; use --noreplace for original behaviour. |
|---|
| 215 | * 'installed' set was added; is a pkgset comprised of all slotted atoms from |
|---|
| 216 | the vdb; useful for pmerge -u to enable upgrades of *everything* installed. |
|---|
| 217 | * versioned-installed set was added; useful for -e, this set is compromised |
|---|
| 218 | of exact version of everything installed. |
|---|
| 219 | * added --with-built-depends, -B; resolver defaults to ignoring 'built' |
|---|
| 220 | ebuild depends (those from vdb, from binpkgs for example), this option |
|---|
| 221 | tells it to update those depends. |
|---|
| 222 | |
|---|
| 223 | * xterm titles |
|---|
| 224 | |
|---|
| 225 | * massive resolver cleanup, and general fixes. |
|---|
| 226 | |
|---|
| 227 | * rewritten plugins system, register_plugins is no longer used. |
|---|
| 228 | |
|---|
| 229 | * paludis flat_list cache read/write support. |
|---|
| 230 | |
|---|
| 231 | * portage flat_list cache write support (cache used for |
|---|
| 232 | $PORTDIR/metadata/sync) |
|---|
| 233 | |
|---|
| 234 | * pebuild/pregen/pclone_cache: heavy UI cleanup. |
|---|
| 235 | |
|---|
| 236 | * pquery: |
|---|
| 237 | * prettier printing of depends/rdepends/post_rdepends under -v |
|---|
| 238 | * print revdep reasons |
|---|
| 239 | * now requires an arg always; previously defaulted to '*', which is |
|---|
| 240 | still supported but also accessible via --all . |
|---|
| 241 | * added --maintainers-email and --maintainers-name; use case insensitive |
|---|
| 242 | regex by default for --maintainer style options. |
|---|
| 243 | |
|---|
| 244 | * added repo_id atom extension; see doc/extended-atom-syntax.rst for details. |
|---|
| 245 | short version, sys-apps/portage::gentoo would match portage *only* from |
|---|
| 246 | ``gentoo`` repository. |
|---|
| 247 | |
|---|
| 248 | * overlays now combine mirror targets from their parent repository, and |
|---|
| 249 | from their own repository data. |
|---|
| 250 | |
|---|
| 251 | * configuration subsystem: |
|---|
| 252 | * configuration: lazy section refs were added (lazy_ref), useful for when |
|---|
| 253 | the object arguement needs to be instantiated rarely (syncers for |
|---|
| 254 | repositories for example). |
|---|
| 255 | |
|---|
| 256 | * mke2fs (literal /etc/mke2fs.conf file) akin configuration format was |
|---|
| 257 | added, pkgcore.config.mke2fsformat.config_from_file . |
|---|
| 258 | |
|---|
| 259 | * expanded test coverage. |
|---|
| 260 | |
|---|
| 261 | * merged standalone test runner into setup.py; prefered way of running it is |
|---|
| 262 | ``python setup.py test`` now. |
|---|
| 263 | |
|---|
| 264 | * ongoing portage configuration support additions- |
|---|
| 265 | * FEATURES=collision-protect support |
|---|
| 266 | * INSTALL_MASK support, FEATURES noinfo, nodoc, and noman support. |
|---|
| 267 | * /etc/portage/package.* files can be directories holding seperate files |
|---|
| 268 | to collapse |
|---|
| 269 | |
|---|
| 270 | * gnu info regeneration trigger added. |
|---|
| 271 | |
|---|
| 272 | * performance improvements: |
|---|
| 273 | * cpython extensions of select os.path.* functionality; 20x boost for what |
|---|
| 274 | was converted over (stdlib's posix module is a bit inefficient). |
|---|
| 275 | |
|---|
| 276 | * cpython extension for file io in pkgcore.util.osutils: 7x faster on ENOENT |
|---|
| 277 | cases, 4x-5x on actual reading of small files (think cache files). If |
|---|
| 278 | iterating over lines of a file, use pkgcore.util.osutils.readlines- again, |
|---|
| 279 | faster then standard file object's equivalent- 3x reduction (7.6ms to 2.5ms |
|---|
| 280 | for full contents reading). |
|---|
| 281 | |
|---|
| 282 | * partial cpython reimplementation of atom code; mainly parsing, and |
|---|
| 283 | critical __getattr__ invocation (2+x faster parse). |
|---|
| 284 | |
|---|
| 285 | * partial cpython reimplementation of depset code; strictly just parsing. |
|---|
| 286 | Faster (given), but mainly is able to do optimizations to the depset |
|---|
| 287 | cheaply that python side is heavily slowed down by- ( x ( y ) ) becomes |
|---|
| 288 | ( x y ) for example. |
|---|
| 289 | |
|---|
| 290 | * chunks of restriction objects were pushed to cpython for memory reasons, |
|---|
| 291 | and bringing the instantiation cost down as low as possible (the common |
|---|
| 292 | restrict objects now are around 1-3us for new instantation, .5 to 1us |
|---|
| 293 | for getting a cached obj instead of instantiating). |
|---|
| 294 | |
|---|
| 295 | * bug corrected in base repo classes identify_candidates method; should now |
|---|
| 296 | force a full walk of the repo only when absolutely required. |
|---|
| 297 | |
|---|
| 298 | * chksuming now does a single walk over a file for all checksummers, |
|---|
| 299 | instead of one walk per checksummer- less disk thrashing, better |
|---|
| 300 | performance. |
|---|
| 301 | |
|---|
| 302 | * vdb virtuals caching; massive performance boost via reduced IO. Relies on |
|---|
| 303 | mtime checks of vdb pkg directories for staleness detection, |
|---|
| 304 | auto-regenerating itself as needed. |
|---|
| 305 | |
|---|
| 306 | * heavy profile code cleanup; should only read each common profile node once |
|---|
| 307 | now when loading up multiple profiles (pcheck). Far easier code to read |
|---|
| 308 | in addition. |
|---|
| 309 | |
|---|
| 310 | * cache eclass staleness verification now relies on mtime comparison only- |
|---|
| 311 | allows for eclasses to move between repos; matches portage behaviour. |
|---|
| 312 | |
|---|
| 313 | * pkgcore.util.caching.*, via __force_caching__ class attr in consumers, can |
|---|
| 314 | be used to force singleton instance creation/caching (error if unhashable). |
|---|
| 315 | |
|---|
| 316 | * ebuild support: |
|---|
| 317 | * PORTAGE_ACTUAL_DISTDIR was reenabled, thus cvs/svn equivalent ebuilds are |
|---|
| 318 | usable once again. |
|---|
| 319 | * fixed pkgcore's pkgcore emulation of has_version/best_version matching |
|---|
| 320 | behaviour for old style virtuals to match portages (oddity, but ebuilds |
|---|
| 321 | rely on the goofy behaviour). |
|---|
| 322 | * various fixups to unpack function; should match portage behaviour as of |
|---|
| 323 | 01/07 now. |
|---|
| 324 | * if FEATURES=test, set USE=test; if USE=test has been explicitly masked for |
|---|
| 325 | a package, disable src_test run; matches portage 2.1.2 behaviour. |
|---|
| 326 | * cleanup build directory, and unmerge directories upon finishing |
|---|
| 327 | |
|---|
| 328 | * filter-env now is accessible directly via python; pkgcore.ebuild.filter_env . |
|---|
| 329 | Needs further work prior to being usable for pcheck inspection of ebuilds, |
|---|
| 330 | but it's a good start. |
|---|
| 331 | |
|---|
| 332 | |
|---|
| 333 | pkgcore 0.1.4: |
|---|
| 334 | |
|---|
| 335 | * Compatibility with caches written by portage 2.1.2_pre3-r8. |
|---|
| 336 | |
|---|
| 337 | |
|---|
| 338 | pkgcore 0.1.3: |
|---|
| 339 | |
|---|
| 340 | * Always process "|| ( a b )" in the right order. |
|---|
| 341 | |
|---|
| 342 | * Fix disabling a flag in package.use.mask or package.use.force. |
|---|
| 343 | |
|---|
| 344 | |
|---|
| 345 | pkgcore 0.1.2: |
|---|
| 346 | |
|---|
| 347 | * Make filter_env work on hppa (and possibly more architectures) where using |
|---|
| 348 | python CFLAGS for this standalone binary does not work. |
|---|
| 349 | |
|---|
| 350 | * Fall back to plain text output if the TERM variable is unsupported. |
|---|
| 351 | |
|---|
| 352 | * Deal with dangling symlinks in binpkg repositories. |
|---|
| 353 | |
|---|
| 354 | * Fix expanding of incrementals (like USE) in make.defaults. |
|---|
| 355 | |
|---|
| 356 | * pquery: support --attr fetchables, handle extra commandline arguments as |
|---|
| 357 | -m or --expr restrictions. |
|---|
| 358 | |
|---|
| 359 | * USE deps once again allow setting a flag only if it is actually settable |
|---|
| 360 | on the target package. |
|---|
| 361 | |
|---|
| 362 | |
|---|
| 363 | pkgcore 0.1.1: |
|---|
| 364 | |
|---|
| 365 | * hang fix for test_filter_env |
|---|
| 366 | |
|---|
| 367 | * package.keywords fixes: no longer incremental, supports '*' and '~*' |
|---|
| 368 | properly |
|---|
| 369 | |
|---|
| 370 | * FEATURES="userpriv" support works again. |
|---|
| 371 | |
|---|
| 372 | * pmerge repository ordering now behaves properly; prefers src ebuilds, then |
|---|
| 373 | built pkgs; -k inverts that (previously was semi-undefined) |
|---|
| 374 | |
|---|
| 375 | * binpkg fixes: run setup phase |
|---|
| 376 | |
|---|
| 377 | * replace op fixes: force seperate WORKDIR for unmerge to protect against |
|---|
| 378 | env collisions |
|---|
| 379 | |
|---|
| 380 | * loosened category rules: allow _. chars to support cross-dev hack. |
|---|
| 381 | |
|---|
| 382 | * build fixes: make $A unique to avoid duplicate unpacks; force distdir |
|---|
| 383 | creation regardless of whether or not the pkg has any stated SRC_URI |
|---|
| 384 | (fixes cvs and subversion eclsas usage). Fix sandbox execution to chdir |
|---|
| 385 | to an existant directory (sandbox will fail if ran from a nonexistant dir). |
|---|
| 386 | |
|---|
| 387 | * change DelayedInstantiation objects to track __class__ themselves; this |
|---|
| 388 | fixes pquery to properly shutdown when ctrl+c'd (previously could swallow |
|---|
| 389 | the interrupt due to cpython isinstance swallowing KeyboardInterrupt). |
|---|
| 390 | |
|---|
| 391 | |
|---|
| 392 | pkgcore 0.1: |
|---|
| 393 | |
|---|
| 394 | Initial release. |
|---|
| 395 | |
|---|
| 396 | * Sync functionality doesn't yet exist (pmaint script will be in 0.2) |
|---|
| 397 | |
|---|
| 398 | * pmerge vdb modification requires --force; this will be disabled in 0.2, |
|---|
| 399 | mainly is in place so that folks who are just looking, don't inadvertantly |
|---|
| 400 | trigger an actual modification. |
|---|
| 401 | |
|---|
| 402 | * not all portage FEATURES are implemented; same for QA. |
|---|
| 403 | |
|---|
| 404 | * If overlays are in use, pkgcore may defer to its' seperate cache to avoid |
|---|
| 405 | pkgcore causing cache regen for portage (and vice versa); this occurs due |
|---|
| 406 | to pkgcore treating overlays as their own repo and combining them at a |
|---|
| 407 | higher level; portage smushes them all together thus rendering each subtree |
|---|
| 408 | unusable in any standalone fashion. |
|---|
| 409 | |
|---|
| 410 | * pkgcore is far more anal about blocking bad behaviour in ebuilds during |
|---|
| 411 | metadata regeneration; tree is clean, but if you do something wrong in |
|---|
| 412 | global scope, it *will* catch it and block it. |
|---|
| 413 | |
|---|
| 414 | * EBD; daemonized ebuild.sh processing (effectively), pkgcore reuses old |
|---|
| 415 | ebuild.sh processes to avoid bash startup, speeding regen up by roughly |
|---|
| 416 | 2x. |
|---|