aboutsummaryrefslogtreecommitdiff
path: root/NEWS
blob: 1af2a003d7a35210b5060f5f30efe2fe98d39fa2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
Pkgcore Release Notes
=====================

See ChangeLog for full commit logs; this is summarized/major changes.

pkgcore 0.2.13:

* Added '~' to allowed shlex word chars.

* Due to amd64 /lib -> /lib64, change the default policy for sym over
  directory merging to allow it if the target was a directory.


pkgcore 0.2.12:

* Ensure PackageRestriction._handle_exceptions filters the check down to
  just strings; if running pure python, this could trigger a traceback
  via the python native native_CPV.__cmp__.

* Tweak python native native_CPV.__cmp__ to not explode if given an instance
  that's not a CPV derivative.

* Reorder ||() to use anything matched via the current state graph, aside
  from normal reordering to prefer vdb.

* default mode for ensure_dirs is now 0755.

* Work around broken java-utils-2.eclass state handling in 
  java-pkg_init_paths_; tries to access DESTTREE in setup phase, which
  shouldn't be allowed- fix is temporarily shifting the DESTTREE definition
  to pre-ebuild sourcing so that it behaves.

  Will be removed as soon as the eclass behaves is fixed.


pkgcore 0.2.11:

* COLON_SEPARATED, not COLON_SEPERATED for env.d parsing.

* fix ticket #74; "x=y@a" should parse out as 'y@a', was terminating
  early.


pkgcore 0.2.10:

* FEATURES=ccache now corrects perms as needed for when userpriv toggles.

* shift PORTAGE_ACTUAL_DISTDIR and DISTDIR definition into the initial env,
  so that evil git/subversion/cvs class can get at it globally.

* pquery --attr repo now returns the repo_id if it can get it, instead of
  the str of the repo object.

* OR grouppings in PROVIDES was explicitly disabled; no ebuild uses it, nor 
  should any.


pkgcore 0.2.9:

* convert use.mask/package.use.mask, use.force/package.use.force stacking
  to match portage behaviour- basically stack use.* and package.* per profile
  node rather then going incremental for use.*, then package.* .  If you were
  having issues with default-linux/amd64/2006.1 profile and sse/sse2 flags for
  mplayer, this ought to correct it.

* add USE conditional support to RESTRICT.

* fix noisy regression from 0.2.8 for temp declare overriding; if you saw lots
  of complaints on env restoration, corrects it.  Superficial bug, but rather
  noisy.

* Fix a bug for binpkg creation where PROVIDES gets duplicated.

* Bit more DepSet optimizations; specifically collapses AND restriction into
  the parent if it is also an AND restriction.

* make --no-auto work correctly for pebuild

* delay DISTDIR setup till unpack phase to prevent any invalid access; also
  takes care of a pebuild traceback.


pkgcore 0.2.8:

* fix bug so that 6_alpha == 6_alpha0 when native_CPV is in use; only possible
  way to have hit the bug is having all extensions disabled (CPY version gets it
  right).

* add a trigger to rewrite symlink targets if they point into ${D}

* info trigger now ignores any file starting with '.'; no more complaints about
  .keep in info dirs.

* if an ebuild has a non-default preinst and offset merging, a rescan of ${D}
  is required- offset wasn't being injected, fixed.

* if offset merging for a binpkg, reuse the original contentsSet class-
  this prevents quadratic (worst case) seeking of the tarball via preserving
  the ordering.

* if merging a binpkg and a forced decompression is needed, update the
  cset in memory instead of forcing a scan of ${D}.

* misc filter-env fixes, cleanup, and tests.

* change var attr (exported/readonly) env storage to better interop with 
  the others; internally, we still delay the var attr/shopt resetting till
  execution.

* misc initialization fixes to syncers for when invoked via GenericSyncer.
  If previously layman integration wasn't working for you, should now.

* shift the misc fs property triggers to pre_merge, rather then sanity_check;
  sanity_check should be only for "do I have what I need to even do the merge?"
  and minimal setup for the op (for example, transfering files into workdir).
  Running preinst was occasionally wiping the changes the triggers made, thus
  allowing screwed up ebuilds with custom preinst's to slip in a portage gid
  for merge.

* fix a corner case for cpy join spotted by TFKyle where length calculation
  was incorrect, leading to a trailing null slipping into the calculated
  path.

* fix bash parsing for a corner case for empty assigns; literally, 
  x=
  foo='dar'
  would incorrectly interpret x=foo, instead of x=''.


pkgcore 0.2.7:

* layman configuration (if available) is now read for portage configuration
  for sync URI for overlays.  tar syncer is currently unsupported; others may
  be buggy.  Feed back desired (author doesn't use layman).  Ticket #11.  If
  you want it disabled, add FEATURES=-layman-sync .

* another fix for daft tarballs that try to touch cwd.

pkgcore 0.2.6:

* make intersecting ~ and =* atoms work again (used by pquery --revdep)

* catch a corner case py2.5 bug where AttributeError bleeds through from
  generic_equality.

* Via solars prodding, finished up the remaining bits for ROOT support.

* resolver traceback for if a requested atom is already known as insoluable.
  Thanks to kojiro for spotting it.

* misc bash code cleanup.

* PATH protection has been loosened slightly to enable 'weird' eclasses that
  are doing global PATH mangling.

* $HOME location for building was shifted into the targeted packages 
  directory, rather then a shared within $PORTAGE_TMPDIR.

* setgid/setuid triggers now match portage behaviour; -s,o-w mode change.

* trigger warnings are now enabled.

* New default trigger added; CommonDirectoryModes, checks for common
  directories (/usr, /etc, /usr/bin, /usr/lib for example) in the merge set,
  checking the packages specified modes for them.  If not 0755, throws a 
  warning.

* For directory on directory merging, ensure_perms (default op) was changed
  to preserve the existing directories permissions.  Generally speaking, this
  means that later versions of an ebuild have to use post_inst to correct the
  perms if they're incorrect- previously, the new perms/mode were forced on
  the existing.  Several common ebuilds (openssl for example) will generate
  weird modes on common directories however (heavily restricted perms), which
  can break things.  For the time being, the default is scaled down to the
  looser form portage does.

* added man page generation: pquery, pmerge

* pconfig now has a "dump-uncollapsed" command to dump the "raw" config.

* pebuild now supports --no-auto to run just the targeted phase.

* mass expansion of test coverage: pkgcore.restrictions.*,
  pkgcore.util.*, pkgcore.ebuild.*

* minor cleanup of pkgcore.test.ebuild.test_cpv to reduce redundant data sets;
  total testcase runtime reduction by about a third.

* diverge from unittest.TestCase to provide extra checks for normal asserts-
  assertNotEqual for example, checks both __eq__ and __ne__ now to smoke out
  any potential oversights in object equality implementation.

* use nsec mtime resolution if available to match python stdlib.

* env var PORTAGE_DEBUG for controlling how much debug info the ebuild env
  generates is now PKGCORE_DEBUG; range is the same, 0 (none), 1 (just the 
  ebuild/eclass), 2 (1 + relevant setup code), 3 (2 + filter-env data),
  4 (everything).


pkgcore 0.2.5:

* handle corner case in depend cycle processing where a package directly
  depends upon itself; fixes processing of sys-devel/libtool specifically.

* for pquery --attr keywords, sort by arch, not by stable/unstable.

* correct misc corner case atom bugs; an intersection bug, miss on an invalid 
  use dep atom lacking a closure in cpy atom, verification of use chars in
  native atom,

* osutils extensions tests, correcting a few cpy differences in behaviour from
  native.

* For unpacking a tarball that doesn't have it's files in a subdir, tar will
  occasionally try to utime the cwd resulting in a failure- uid owner for 
  WORKDIR was changed to allow tar to do the utime, thus succeed in unpacking.
  Only visible for userpriv and with oddball packages, gnuconfig for example.

* Cleanup of a few slow test cases; running the test suite should now be around
  25%-33% faster.


pkgcore 0.2.4:

* refactoring of trigger implementations- cleanup and tests.  Additionally,
  eliminate a potential mtime based frace if the underlying fs (or python
  version) doesn't do subsecond resolution.

* force FEATURES into the exported ebuild env always.

* for pmerge -p $target, which prefers reuse normally, *still* prefer the
  highest versions, just examine vdb first, then nonvdb.

* minor optimization in readlines usage in the backend; kills off a duplicate
  stat call.

* if a stale cache entry is detected, and the backend is writable, wipe the
  cache entry.  Little bit slower when detected, but saves parsing the file
  next time around.


pkgcore 0.2.3:

* support for ** in package.keywords

* export preparsed SLOT to ebuild env; ebuilds shouldn't rely on this
  since it can lead to fun metadata issues, but certain eclasses do.

* fix exporting finalized form of RESTRICT to the build env; ticket 61.

* fix for RESTRICT=fetch to not treat the filename as a uri.

* expose the full make.conf environment to FETCHCOMMAND and RESUMECOMMAND-
  ticket 58

* added support for make.conf defined FETCH_ATTEMPTS; max # of unique uris to
  attempts per file before giving up, defaults to 10.

* added int_parser type for config instantiation definitions (ConfigHint),
  and usual introspection support.

* fix regression limiting satisifiers for depends to installed only in corner
  case installed bound cycles; automake/perl specifically trigger this, thus
  most folks should have seen it if using -B.

* Better handling of non-ascii characters in metadata.xml.


pkgcore 0.2.2:

* The terminfo db is now used for xterm title updates. If title updates
  worked in pkgcore 0.2 or 0.2.1 and no longer work in 0.2.2 file a bug and
  include the TERM environment variable setting.

* misc fixup for asserts in cpy code when debugging is enabled, and closing
  directory fds when corner case error paths are taken (out of memory for
  example).

* atoms are picklable now.

* add tests for pmaint copy (quickpkg equivalent), and add
  --ignore-existing option to copy just pkgs that don't exist in the
  target repo.

* fix pmerge handling of --clean -B for automake and a few other DEPEND level
  hard cycles.


pkgcore 0.2.1:

* fix corner case for portage configuration support; old system (<=2004)
  installations may have /etc/portage/sets/world, which confused pmerges
  world updating, leading to writing bad entries.  Ticket 54.

* fix issues with distcc/ccache (ticket 55) so that they actually work.

* fix pconfig dump traceback; ticket 56.


pkgcore 0.2:

* glsa pkgset will now include metadata/glsa from overlays.

* pmaint script; tool for --sync'ing, doing quickpkging, moving packages
  between repos for repository conversions. General repository maintenance.

* sync subsystem: supports bzr, cvs, darcs, git, mercurial (hg), rsync,
  and subversion.

* binpkg repositories now support modification; FEATURES=buildpkg basically

* binpkg contents handling is significantly faster.

* pmerge: 
  * supports --ask (thanks to nesl247/alex heck)
  * pmerge --replace is default now; use --noreplace for original behaviour.
  * 'installed' set was added; is a pkgset comprised of all slotted atoms from
    the vdb; useful for pmerge -u to enable upgrades of *everything* installed.
  * versioned-installed set was added; useful for -e, this set is compromised
    of exact version of everything installed.
  * added --with-built-depends, -B; resolver defaults to ignoring 'built'
    ebuild depends (those from vdb, from binpkgs for example), this option
    tells it to update those depends.

* xterm titles

* massive resolver cleanup, and general fixes.

* rewritten plugins system, register_plugins is no longer used.

* paludis flat_list cache read/write support.

* portage flat_list cache write support (cache used for
  $PORTDIR/metadata/sync)

* pebuild/pregen/pclone_cache: heavy UI cleanup.

* pquery:
  * prettier printing of depends/rdepends/post_rdepends under -v
  * print revdep reasons
  * now requires an arg always; previously defaulted to '*', which is 
    still supported but also accessible via --all .
  * added --maintainers-email and --maintainers-name; use case insensitive 
    regex by default for --maintainer style options.

* added repo_id atom extension; see doc/extended-atom-syntax.rst for details.
  short version, sys-apps/portage::gentoo would match portage *only* from
  ``gentoo`` repository.

* overlays now combine mirror targets from their parent repository, and
  from their own repository data.

* configuration subsystem:
  * configuration: lazy section refs were added (lazy_ref), useful for when
    the object arguement needs to be instantiated rarely (syncers for
    repositories for example).

  * mke2fs (literal /etc/mke2fs.conf file) akin configuration format was
    added, pkgcore.config.mke2fsformat.config_from_file.

* expanded test coverage.

* merged standalone test runner into setup.py; prefered way of running it is
  ``python setup.py test`` now.

* ongoing portage configuration support additions-
  * FEATURES=collision-protect support
  * INSTALL_MASK support, FEATURES noinfo, nodoc, and noman support.
  * /etc/portage/package.* files can be directories holding seperate files
    to collapse

* gnu info regeneration trigger added.

* performance improvements:
  * cpython extensions of select os.path.* functionality; 20x boost for what
    was converted over (stdlib's posix module is a bit inefficient).

  * cpython extension for file io in pkgcore.util.osutils: 7x faster on ENOENT
    cases, 4x-5x on actual reading of small files (think cache files).  If
    iterating over lines of a file, use pkgcore.util.osutils.readlines- again,
    faster then standard file object's equivalent- 3x reduction (7.6ms to 2.5ms
    for full contents  reading).

  * partial cpython reimplementation of atom code; mainly parsing, and
    critical __getattr__ invocation (2+x faster parse).

  * partial cpython reimplementation of depset code; strictly just parsing.
    Faster (given), but mainly is able to do optimizations to the depset
    cheaply that python side is heavily slowed down by- ( x ( y ) ) becomes
    ( x y ) for example.

  * chunks of restriction objects were pushed to cpython for memory reasons,
    and bringing the instantiation cost down as low as possible (the common
    restrict objects now are around 1-3us for new instantation, .5 to 1us
    for getting a cached obj instead of instantiating).

  * bug corrected in base repo classes identify_candidates method; should now
    force a full walk of the repo only when absolutely required.

  * chksuming now does a single walk over a file for all checksummers,
    instead of one walk per checksummer- less disk thrashing, better
    performance.

  * vdb virtuals caching; massive performance boost via reduced IO.  Relies on
    mtime checks of vdb pkg directories for staleness detection,
    auto-regenerating itself as needed.

* heavy profile code cleanup; should only read each common profile node once
  now when loading up multiple profiles (pcheck).  Far easier code to read
  in addition.

* cache eclass staleness verification now relies on mtime comparison only-
  allows for eclasses to move between repos; matches portage behaviour.

* pkgcore.util.caching.*, via __force_caching__ class attr in consumers, can
  be used to force singleton instance creation/caching (error if unhashable).

* ebuild support:
  * PORTAGE_ACTUAL_DISTDIR was reenabled, thus cvs/svn equivalent ebuilds are
    usable once again.
  * fixed pkgcore's pkgcore emulation of has_version/best_version matching
    behaviour for old style virtuals to match portages (oddity, but ebuilds
    rely on the goofy behaviour).
  * various fixups to unpack function; should match portage behaviour as of
    01/07 now.
  * if FEATURES=test, set USE=test; if USE=test has been explicitly masked for
    a package, disable src_test run; matches portage 2.1.2 behaviour.
  * cleanup build directory, and unmerge directories upon finishing

* filter-env now is accessible directly via python; pkgcore.ebuild.filter_env.
  Needs further work prior to being usable for pcheck inspection of ebuilds,
  but it's a good start.


pkgcore 0.1.4:

* Compatibility with caches written by portage 2.1.2_pre3-r8.


pkgcore 0.1.3:

* Always process "|| ( a b )" in the right order.

  * Fix disabling a flag in package.use.mask or package.use.force.


pkgcore 0.1.2:

* Make filter_env work on hppa (and possibly more architectures) where using
  python CFLAGS for this standalone binary does not work.

* Fall back to plain text output if the TERM variable is unsupported.

* Deal with dangling symlinks in binpkg repositories.

* Fix expanding of incrementals (like USE) in make.defaults.

* pquery: support --attr fetchables, handle extra commandline arguments as
  -m or --expr restrictions.

* USE deps once again allow setting a flag only if it is actually settable
  on the target package.


pkgcore 0.1.1:

* hang fix for test_filter_env

* package.keywords fixes: no longer incremental, supports '*' and '~*'
  properly

* FEATURES="userpriv" support works again.

* pmerge repository ordering now behaves properly; prefers src ebuilds, then
  built pkgs; -k inverts that (previously was semi-undefined)

* binpkg fixes: run setup phase

* replace op fixes: force seperate WORKDIR for unmerge to protect against
  env collisions

* loosened category rules: allow _. chars to support cross-dev hack.

* build fixes: make $A unique to avoid duplicate unpacks; force distdir
  creation regardless of whether or not the pkg has any stated SRC_URI
  (fixes cvs and subversion eclsas usage).  Fix sandbox execution to chdir
  to an existant directory (sandbox will fail if ran from a nonexistant dir).

* change DelayedInstantiation objects to track __class__ themselves; this
  fixes pquery to properly shutdown when ctrl+c'd (previously could swallow
  the interrupt due to cpython isinstance swallowing KeyboardInterrupt).


pkgcore 0.1:

Initial release.

* Sync functionality doesn't yet exist (pmaint script will be in 0.2)

* pmerge vdb modification requires --force; this will be disabled in 0.2,
  mainly is in place so that folks who are just looking, don't inadvertantly
  trigger an actual modification.

* not all portage FEATURES are implemented; same for QA.

* If overlays are in use, pkgcore may defer to its' seperate cache to avoid
  pkgcore causing cache regen for portage (and vice versa); this occurs due
  to pkgcore treating overlays as their own repo and combining them at a
  higher level; portage smushes them all together thus rendering each subtree
  unusable in any standalone fashion.

* pkgcore is far more anal about blocking bad behaviour in ebuilds during
  metadata regeneration; tree is clean, but if you do something wrong in
  global scope, it *will* catch it and block it.

* EBD; daemonized ebuild.sh processing (effectively), pkgcore reuses old
  ebuild.sh processes to avoid bash startup, speeding regen up by roughly
  2x.