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
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
|
Pkgcore Release Notes
=====================
See ChangeLog for full commit logs; this is summarized/major changes.
pkgcore 0.4.7.12: Oct 10, 2008 (2 hars after 0.4.7.11 ;)
* security fix; force cwd to something controlled for ebuild env. This
blocks an attack detailed in glsa 200810-02; namely that an ebuild invoking
python -c (which looks in cwd for modules to load) allows for an attacker
to slip something in.
pkgcore 0.4.7.11: Oct 10, 2008
* fix EAPI2 issues: default related primarily, invoke src_prepare for
>=EAPI2 instead of >EAPI2.
pkgcore 0.4.7.10: Oct 7, 2008
* fix in setup.py to install eapi/* files.
die distutils, die.
* api for depset inspection for tristate (pcheck visibility mode) is fixed
to not tell the consumer to lovingly 'die in a fire'.
* correct a failure in EAPI=2 src_uri parsing complaining about
missing checksums for nonexistant files
pkgcore 0.4.7.9: Oct 6, 2008
* eapi2 is now supported.
* DepSet has grown a temp option named allow_src_uri_file_names; this
is to support eapi 2's -> SRC_URI extension. This functionality
will under go refactoring in the coming days- as such the api addition
isn't considered stable.
* we now match the forced phase ordering portage induced via breaking
eapi compatibilty for eapi0/1.
* tightened up allowed atom syntax; repository dep is available only when
eapi is unspecified (no longer available in eapi2 in other words).
atom USE dep parsing now requires it to follow slotting- this is done to
match the other EAPI2 standard.
Beyond that, better error msgs and tighter validation.
pkgcore 0.4.7.8: August 28, 2008
* pkgcore now properly preserves ownership of symlinks on merging.
ensure_perms plugins now need to handle symlinks (lchown at the least).
* free resolver caches after resolution is finished; lower the memory
baseline for pmerge.
* fix up interface definitions for >snakeoil-0.2 dependant_methods changes.
Via these cleanups and >snakeoil-0.2, memory usage is massively decreased
for pmerge invocations.
* swallow EPIPE in pquery when stdout is closed early.
pkgcore 0.4.7.7: August 11, 2008
* Disable fakeroot tests due to odd behaviour, and the fact it's currently
unused.
* Fix installation issue for manpages for python2.4; os.path.join behaviour
differs between 2.4 and 2.5.
* Kill off large memory leak that reared it's head per pkg merge; still is
a bit of a leak remaining, but nothing near as bad as before.
pkgcore 0.4.7.6: August 10, 2008
* fix sandbox complaint when PORT_LOGDIR is enabled- sandbox requires abspath
for any SANDBOX_WRITE exemptions, if PORT_LOGDIR path includes symlinks,
force a `readlink -f` of the sandbox exemption.
http://forums.gentoo.org/viewtopic-p-5176414.html
* ticket 213; if stricter is in FEATURES, fail out if insecure rpath is
detected- otherwise, correct the entries.
* ticket 207; drop the attempted known_keys/cache optimizations, instead
defer to parent's iterkeys always. This eliminates the concurrency issue,
and simplifies staleness detection. Also kills off a tb for --newuse .
* ticket 201; pquery --restrict-revdep-pkgs wasn't behaving properly for
slot/repository/user atoms, now does.
* Correct potential segfaults in cpython version of PackageRestriction and
StrExactMatch's __(eq|ne)__ implementations.
pkgcore 0.4.7.5: July 6, 2008
* incremental_expansion and friends have grown a cpython implementation-
this speedup will show up if you are doing lots of profile work (pcheck
for example, which has to read effectively all profile).
* if the invoking user isn't part of the portage group, don't throw a
traceback due to permission denied for virtuals cache.
* correct a false positive in pkgcore.test.util.test_commandline that occurs
when snakeoil c extensions aren't enabled.
* ticket 193; follow symlinks in /etc/portage/*/ directories.
* ticket 203; functionfoo() {:;} is not function 'foo', it's 'functionfoo'.
Users shouldn't have seen this- thanks to ferdy for spotting it in an audit.
* add 'skip_if_source' option to misc. binpkg merging triggers- defaults to
True, controls whether or not if a pkg from the target_repo should be
reinstalled to the repo.
* make contentsSet.map_directory_structure go recursive-
this fixes ticket #204, invalid removal of files previously just merged.
* make --newuse work with atoms/sets
* add a cpy version of incremental_expansion
* fix longstanding bug - finalize settings from make.conf, stopping negations
from being parsed twice. Without this fix, -* in a setting will negate
random flags set after it.
* allow / in repo ids
* don't show flags from previous versions of packages in --pretend output -
it's confusing and doesn't match portage behaviour.
* fix ticket 192: ignore non-existant files in config protect checking
pkgcore 0.4.7.4: June 11, 2008
* eapi1 bug fix; check for, and execute if found, ./configure if ECONF_SOURCE
is unset.
pkgcore 0.4.7.3: May 16, 2008
* ticket #185; tweak the test to give better debug info.
* add proper handling of very, very large revision ints (up to 64 bits).
* fakeroot tests are enabled again.
* misc bug fixes; pquery --revdep traceback, vecho complaints from do*
scripts.
* explicit notice that Jason Stubbs, Brian Harring, Andrew Gaffney, and
Charlie Shepherd, Zac Medico contributions are available under either
GPL2 (v2 only) or 3 clause BSD.
Terms are in root directory under files names BSD, and GPL2.
Aside from the bash bits Harring implemented during the EBD days, the
remaining ebuild bash bits are Gentoo Foundation copyright (GPL2), and
the contributions from Marien Zwart are currently GPL2 (config bits, still
need explicit confirmation).
What that effectively means is that pkgcore as a whole currently is GPL2-
sometime in the near future, the core of pkgcore (non-ebuild bits) will be
BSD/GPL2, and then down the line the bash bits will be rewritten to be
BSD/GPL2 (likely dropping the functionality it uses down to something bash/
BSD shell compatible).
* expansion of -try/-scm awareness to installed pkgs database. Binpkg
repositories now abid by ignore_paludis_versioning also.
* ticket #184; silence disable debug-print in non build/install phases.
* handle malformed rsync timestamps more cleanly.
pkgcore 0.4.7.2: May 07, 2008
* new portage configuration feature- 'ignore-paludis-versioning'. This
directs pkgcore to ignore nonstandard -scm ebuilds instead of complaining
about them.
Note this does *not* affect the installed pkgs database- if there is a
-scm ebuild in the vdb, pkgcore *must* deal with that ebuild, else if it
silently ignores vdb -scm pkgs it can result in overwriting parts of the
-scm pkg, and other weirdness. If you've got a -scm version pkg installed,
it's strongly suggested you uninstall it unless you wish to be bound to that
nonstandard behaviour of paludis.
Finally, it's not yet covering *all* paludis version extensions- that will
be expanded in coming versions.
* pkgcore is now aware of installed -scm pkgs, and gives a cleaner error
message.
* a few versions of portage-2.2 automatically added @PKGSET items to the
world file; due to how portage has implemented their sets, this would
effectively convert the data to portage only. As such, that feature was
reversed (thank you genone); that said, a few world files have @pkgset
entries from these versions. Pkgcore now ignores it for worldfiles, and
levels a warning that it will clear the @pkgset entry.
* ticket #174; ignore bash style comments (leading #) in pkgsets, although
they're wiped on update. If folks want them preserved, come up with a way
that preserves the location in relation to what the comment is about- else
wiping seems the best approach.
* ticket #14; tweak PORT_LOGDIR support a bit, so that build, install,
and uninstall are seperated into different logs.
* added '@' operator to pmerge as an alias for --set; for example,
'pmerge @system' is the same as 'pmerge --set system'.
* fallback method of using the file binary instead of libmagic module is
fixed; ticket #183.
pkgcore 0.4.7.1: May 04, 2008
* correct a flaw in repository searching that slipped past the test harness.
effectively breaks via inverting the negate logic for any complex search.
pkgcore 0.4.7: May 03, 2008
* prepstrip was updated to match current portage semantics, minus stripping
and splitdebug functionality (we handle that via a trigger). Via this,
FEATURES=installsources and basic bincheck (pre-stripped binaries) is now
supported.
* FEATURES='strip nostrip splitdebug' are now supported in portage
configuration (trigger is pkgcore.merge.triggers.BinaryDebug).
* added cygwin ostype target for development purposes. In no shape or form
is this currently considered supported, although anyone interested in
developing support for that platform, feel free to contact us.
* in candidate identification in repository restriction matching, it was
possible for a PackageRestriction that was negated to be ignored, thus
resulting in no matches. This has been corrected, although due to
collect_package_restrictions, it's possible to lose the negation state
leading to a similar scenario (no known cases of it currently). This
codepath will need reworking to eliminate these scenarios.
* mercurial+ sync prefix is now supported for hg.
* triggers _priority class var is now priority; overload with a property if
custom functionality is needed.
pkgcore 0.4.6: April 29, 2008
* filelist sets (world file for example) are now sorted by atom comparison
rules. ticket #178.
* pquery --restrict-revdep-pkgs and --revdep-pkgs were added: they're
used to first match against possible pkgs, then do the revdep looking for
pkgs that revdep upon those specific versions. Functionality may change,
as may the outputting of it. ticket #179.
* pebuild breakage introduced in 11/07 is corrected; back to working.
* 'info' messages during merging are now displayed by default- new debug
message type was added that isn't displayed by default.
* ebuild domain now accepts triggers configuration directive.
* FEATURES=unmerge-buildpkg was added; this effectively quickpkgs a pkg
before it's unmerged so you have a snapshot of it's last state before
it is replaced.
* FEATURES=pristine-buildpkg was added; this is like FEATURES=buildpkg,
but tbzs the pkg prior to any modification by triggers. Upshot of this,
you basically have an unmodified binpkg that can be localized to the merging
host rather then to the builder. Simple example, with this if your main
system is FEATURES=strip, it tucks away a nonstripped binpkg- so that
consumers of the binary repo are able to have debug symbols if they want
them.
* FEATURES=buildsyspkg is now supported.
* FEATURES=buildpkg is now supported.
* the engine used for install/uninstall/replace is now configurable via
engine_kls attribute on the op class.
* dropped exporting of USER='portage' if id is portage. Ancient var setting,
can't find anything reliant on it thus punting it.
* add SunOS to known OS's since it's lchown suffices for our needs.
* added eapi awareness to atoms, so that an eapi1 atom only allows the
slot extension for example.
* remove a stray printf from cpy atom; visible only when repository atoms
are in use.
pkgcore 0.4.5: April 9, 2008
* fix collision unprotect trigger exceptions (typically KeyError).
ticket #165
* correct invalid passing of force keyword down when the repository isn't
frozen. Occasionally triggered user visible tracebacks in pmaint copy.
* portage broke compatibility with pkgcore a while back for our binpkgs-
for some inane reason, portage requires CATEGORY and PF in the xpak
segment. This is being removed from portage in 2.2, but in the interim
pkgcore now forces those keys into the binpkgs xpak for compatibility
with portage.
Shorter version: pmaint copy generated binpkgs work with portage again.
* cbuild/chost/ctarget are available via pquery --attr, and are written to
binpkg/vdb now.
* stat removal work: FEATURES=-metadata-cache reuses existing eclass cache
object, thus one (and only one) scan of ${PORTDIR}/eclass
* metadata, flat_hash, and paludis_flat_list cache formats configuration
arg 'label' is no longer required, and will be removed in 0.5. If they're
unspecified, pkgcore will use location as the place to write the cache at,
else it'll combine location and label.
* cdb, anydbm, sqlite, and sql_template cache backends have been removed
pending updating the code for cache backend cleanups. If interested in
these backends, contact ferringb at irc://freenode.net/#pkgcore .
pkgcore 0.4.4: April 6, 2008
* merging/replacing performance may be a bit slower in this release- the level
of stats calls went up in comparison to previous releases, with several
duplicates. This will be corrected in the next release- releasing in the
interim for bugfixes this version contains.
* add CBUILD=${CBUILD:-${CHOST}}; couple of odd ebuilds rely on it despite
being outside of PMS.
* protective trigger was added blocking unmerging of a basic set of
directories/syms; mainly /*, and /usr/*.
* when a merge passes through a symlink for path resolution, that sym is
no longer pulled in as an entry of that pkg. Originally this was done for
protective reasons, but it serves long term as a way to inadvertantly hold
onto undesired junk from the users fs, and opens the potential to unmerge
system/global symlinks when that pkg/slot's refcount hits zero.
* detection, and predicting merge locations for syms was doing an unecessary
level of stat calls; this has been reduced to bare minimum.
* ticket 159; force an realpath of CONTENTS coming from the vdb due to other
managers not always writing realpath'd entries, thus resulting in occasional
misidentification of what to remove.
* pkgcore.util.parserestrict no longer throws MalformedAtom, always
ParseError. Removes ugly commandline tracebacks for bad atoms supplied
to pmerge.
* ticket 158; honor RSYNC_PROXY for rsync syncer.
Thanks to user Ford_Prefect.
* pmerge -N now implies --oneshot.
* correct a flaw in tbz2 merging where it repeatedly try to seek in the bz2
stream to generate chksums, instead of using the on disk files for
chksumming.
* pmaint regen w/ > 1 thread no longer throws an ugly set of tracebacks upon
completion.
* binpkg repositories now tell you the offending mode, and what is needed
to correct it. No longer cares if the specified binpkg base location is
a symlink also.
* pmaint --help usage descriptions are far more useful now.
pkgcore 0.4.3: March 31, 2008
* correct a corner case where a users bash_profile is noisy, specifically
disable using $HOME/.bashrc from all spawn_bash calls.
* USE=-* in make.conf support is restored. ticket 155.
* minor tweak to package.keywords, package.use, and package.license support-
-* is properly supported now. Following portage, if you're trying to
match keywords for a pkg that are '-* x86', you must match on x86.
* pquery --attr use output for EAPI=1 default IUSE is significantly less
ugly.
* ticket #150. EAPI1 IUSE defaults fixups. stacking order is that default
IUSE is basically first in the chain, so any configuration (global, per
pkg, etc), will override if possible. Effectively, this means a default
IUSE of "-foon" is pointless, since there is no earlier USE stack to
override.
* pkgcore.ebuild.collapsed_restrict_to_data api was broken outside of a
major version bump- specifically pull_cp_data method was removed since
the lone consumer (pkgcore internals) doesn't need it, and the method
is semi dangerous to use since it only examines atoms.
pkgcore 0.4.2: March 30, 2008
* correct handling of ebuilds with explicit -r0 in filename, despite it being
implicit. Thanks to rbrown for violating gentoo-x86 policy out of the blue
w/ an ebuild that has -r0 explicit in the filename for smoking out a bug
in pkgcore handling of it. Ebuild since removed, but the KeyError issue
is corrected. (keep the bugs coming)
* minor performance optimization to binpkg merging when there is a large #
of symlink rewrites required.
* ticket #153; restore <0.4 behaviour for temporal blocker validation, rather
then invalidly relying on the initial vdb state for blocker checks. Fixes
resolution/merging of sys-libs/pam-0.99.10.0
pkgcore 0.4.1: March 20, 2008
* add tar contentsSet rewriting; tarballs sometimes leave out directories,
and don't always have the fully resolved path- /usr/lib/blah, when
/usr/lib -> /usr/lib64 *should* be /usr/lib64/blah, but tar doesn't force
this. Due to that, can lead to explosions in unpacking- this is now fixed.
* pquery --attr inherited was added; this feature may disappear down the
line, adding it meanwhile since it's useful for ebuild devs.
* adjust setup.py so that man page installation properly respects --root
* correct a corner case where a package name of 'dev-3D' was flagged as
invalid.
pkgcore 0.4: March 18, 2008
* resolver fixes: vdb loadup wasn't occuring for old style virtuals for
rdepend blockers, now forces it. It was possible for a node to be
considered usable before it's rdepends blockers were leveled- now those
must be satisfied before being able to dep on the node.
* resolver events cleanup; pmerge now gives far better info as to why a
choice failed, what it attempted to get around it, etc.
* multiplex trees now discern their frozen state from their subtrees,
and will execute the repo_op for the leftmost subtree if unfrozen.
* pquery --attr eapi was added.
* ticket 94; package.provided is now supported fully both in profiles,
and in user profile (/etc/portage/profile).
* ticket 116; ignore empty tarfile exception if the exception explicitly
states empty header.
* utter corner case compatibility- =dev-util/diffball-1.0-r0 is now the
same as =dev-util/diffball-1.0 .
* convert FETCHCOMMAND/RESUMECOMMAND support to execute spawn_bash by
default instead of trying to cut out shell; this kills off the occasional
incompatibility introduced via portage supplying make.globals.
* FEATURES=sfperms is now a trigger instead of a dyn_preinst hook.
Faster, cleaner, etc.
* delayed unpacking of binpkgs has been disabled; occasionally can lead to
quadratic behaviour in contents accessing, and extreme corner case trigger
breakages. Will be re-enabled once API has been refactored to remove
these issues.
* FEATURES=multilib-strict was converted into a trigger. Tries to
use the python bindings for file first (merge file[python]), falling
back to invoking file. Strongly suggested you have the bindings- fair bit
faster. Finally, verification now runs for binpkgs also.
* bug 137; symlink on directory merging failures where pkgcore would wipe
files it had just installed invalidly.
* correct issue in offset rewriting (was resetting new_offset to '/')-
should only be api visible, no existing consumers known.
* ebuild env lzma unpack support was broken; fixed (ticket 140).
* Additional debug output for pmerge.
* Further extending PortageFormatter to sanely handle worldfile highlights
and show repos with both id and location
* Ticket 132: Portage Formatter supports real portage colors now,
thanks to agaffney for getting the ball rolling
* Masked IUSEs were not treated right in all cases, thanks to agaffney
for report and help testing
* diefunc tracebacks beautified
pkgcore 0.3.4: Dec 26, 2007
* IUSEs were filtered, unstated were not respected though breaks with
current portage tree, so re-enabling.
Also sanely handle -flag enforcing now and kill hackish code for it.
pkgcore 0.3.3: Dec 14, 2007
* IUSE defaults are respected now, so EAPI=1 implemented
* Write slotted atoms to worldfile as portage supports this now
* Sync up with portage; add support for lzma to unpack- mirror r7991 from
portage.
pkgcore 0.3.2: Nov 3, 2007
* ticket 190746 from gentoo; basically need to force the perms of first level
directory of an unpacked $DISTDIR to ensure it's at least readable/writable.
fixes unpacking of app-misc/screen-4.0.3_p20070403::gentoo-x86 .
* ticket 118; if -u, don't add the node to world set.
* correct a corner case in python implementation of cpv comparison (just
python, cpy extension handles it correctly); bug 188449 in gentoo, basically
floats have a limited precision, thus it was possible to get truncation in
comparison with specially crafted versions.
* handle EOF/IOError on raw_input (for --ask) a bit more gracefully, ticket
108.
* cd to ${WORKDIR} if ${S} doesn't exist for test/install phases; matches
change in portage behaviour.
* Now require snakeoil version 0.2 and up- require new capability of
AtomicWriteFile, ability to specify uid/gid/perms. Via that, fixes ticket
109 (umask leaking through to profile.env).
* the 'glsa' pkgset is now deprecated in favor of 'vuln'; will remain
through till 0.4 (ticket #106).
* ticket 105/96; fix via andkit, basically a bug in einstall lead to
extra einstall opts getting dropped instead of passed through.
* compatibility fix for lha unpacking for nwere versions of lha.
* emake now invokes ${MAKE:-make}, instead of make- undocumented ebuild
req, see bug 186598 at bugs.gentoo.org.
* pmerge --verbose is now pmerge -F portage-verbose-formatter
* Stop installing pregen symlink; functionality moved to pmaint regen.
* 'pmerge --domain' was added; basically is a way to specify the domain to
use, else usees the configuration defined default domain.
* new ebuild trigger to avoid installing files into symlinked dir (get_libdir
is the friend to fix a common /usr/lib -> /usr/lib64 bug), ticket 119
pkgcore 0.3.1: June 27, 2007
* ticket 86; export FILE for portage_conf FETCHCOMMAND/RESUMECOMMAND support,
convert from spawn_bash to spawn, add some extra error detection
* Correct cleanup of unknown state ebp processors; basically discard them if
they fail in any way. Cleanup inherit error msg when under ebd.
* Correct permission issue for vdb virtuals cache.
* ticket 84; rework overlay internals so that sorting order can't accidentally
expose a version masked by a higher priority repository in an overlay stack.
pkgcore 0.3: Jun 06, 2007
* pregen has moved into pmaint regen.
* Several example scripts that show how to use the pkgcore api have been
added, among others:
- repo_list (lists repos and some of their attributes)
- changed_use (a poor man's --newuse)
- pkg_info (show maintainers and herds of a package)
- pclean (finds unused distfiles)
* Pkgcore now supports several different output formats for the buildplan.
Portage and Paludis emulation are the notable formats, though plan
category/package and the original output are also available as options.
* Portage formatter is now the default.
* Pkgcore formatter (no longer default) output was simplified to be less
noisy.
* Large grammar fixes for documentation.
* Miscellaneous pylint cleanups, including whitespace fixes.
* Most of pkgcore.util.* (mainly the non pkgcore-specific bits) have been
split out into a separate package, snakeoil. This includes the relevant cpy
extensions.
* Triggers are quieter about what they're doing by default.
* /etc/portage/package.* can now contain unlimited subdirectories and
files (ticket 71).
* livefs functionality is no longer accessible in pkgcore.fs.*; have to access
pkgcore.fs.livefs.*
* old style virtual providers from the vdb are now preferred for newer versions
over profile defined defaults.
* added profile package.use support.
* ticket 80; $REPO_LOC/profiles/categories awareness; if the file exists, the
repo uses it by default.
* resolver refactoring; report any regressions to ferringb. Integrated in
events tracking, so that the choices/events explaining the path the resolver
took are recorded- via this, we actually have sane "resolution failed due to"
messages, adding emerge -pt/paludis --show-reasons is doable without hacking
the resolver directly, spotting which pkgs need to be unmasked/keyworded for
a specific request to be satisfied, etc, all of it is doable without having
to insert code directly into the resolver. Anyone interested in adding these
featues, please talk to harring.
Worth noting, the events api and data structs for the resolver are still a
work in process- meaning the api is not guranteed to stay stable at least
till the next minor release.
* old style virtual pkgs are no longer combined into one with multiple
providers; aside from simplifying things, this fixes a few annoying resolution
failures involving virtual/modutils.
pkgcore 0.2.14: April 8, 2007
* correct potential for profile path calculation screwup.
* refactor isolated-functions.sh so all internal vars are prefixed with
PKGCORE_RC_; shift vars filter to PKGCORE_RC_.* instead of RC_.* .
If you were having problems building courier-imap (RC_VER variable),
this fixes it.
* better interop with paludis VDB environment dumps.
* treat RESTRICT as a straight depset for UI purposes (minor, but looks
better this way).
pkgcore 0.2.13: March 30, 2007
* 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: March 29, 2007
* 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: March 27, 2007
* 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: March 27, 2007
* 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: March 19, 2007
* 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: March 17, 2007
* 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: March 4, 2007
* 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: March 4, 2007
* 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: Feb 19, 2007
* 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: Feb 16, 2007
* 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: Feb 12, 2007
* 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: Jan 30, 2007
* 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: Jan 24, 2007
* 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: Jan 22, 2007
* 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: Oct 24, 2006
* Compatibility with caches written by portage 2.1.2_pre3-r8.
pkgcore 0.1.3: Oct 24, 2006
* Always process "|| ( a b )" in the right order.
* Fix disabling a flag in package.use.mask or package.use.force.
pkgcore 0.1.2: Oct 10, 2006
* 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: Oct 02, 2006
* 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: Sep 30, 2006
* 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.
|