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
|
This file contains the major changes between libsolv versions:
Version 0.7.27
- selected bug fixes:
* add zstd support for the installcheck tool
* add putinowndirpool cache to make file list handling in
repo_write much faster
Version 0.7.26
- selected bug fixes:
* fix evr roundtrip in testcases
* do not use deprecated headerUnload with newer rpm versions
Version 0.7.25
- selected bug fixes:
* support complex deps in SOLVABLE_PREREQ_IGNOREINST
* fix minimization not prefering installed packages in some cases
* reduce memory usage in repo_updateinfoxml
* fix lock-step interfering with architecture selection
* fix choice rule handing for package downgrades
* fix complex dependencies with an "else" part sometimes leading
to unsolved dependencies
Version 0.7.24
- selected bug fixes:
* handle learnt rules in solver_alternativeinfo()
- new features:
* support x86_64_v[234] architecture levels
* implement decision sorting for package decisionlists
Version 0.7.23
- selected bug fixes:
* fix "keep installed" jobs not disabling "best update" rules
* do not autouninstall suse ptf packages
* ensure duplinvolvedmap_all is reset when a solver is reused
* special case file dependencies in the testcase writer
- new features:
* support stringification of multiple solvables
new function: pool_solvidset2str
* new weakdep introspection interface similar to ruleinfos
new functions: solver_weakdepinfo, solver_allweakdepinfos
* support decision reason queries
new functions: solver_get_decisionlist, solver_get_decisionlist_multiple,
solver_get_learnt
* support merging of related decissions
new functions: solver_decisionlist_solvables, solver_decisionlist_merged,
solver_calc_decisioninfo_bits, solver_merge_decisioninfo_bits
* support stringification of ruleinfo, decisioninfo and decision reasons
new functions: solver_ruleinfo2str, solver_decisioninfo2str,
solver_decisionreason2str, solver_reason2str
* support better info about alternatives
new function: solver_alternativeinfo()
* new '-P' and '-W' options for testsolv to show proofs and
decision reasons
Version 0.7.22
- selected bug fixes:
* reworked choice rule generation to cover more usecases
* support SOLVABLE_PREREQ_IGNOREINST in the ordering code
- new features:
* support parsing of Debian's Multi-Arch indicator
Version 0.7.21
- selected bug fixes:
* fix segfault on conflict resolution when using bindings
* fix split provides not working if the update includes a forbidden
vendor change
- new features:
* support strict repository priorities
new solver flag: SOLVER_FLAG_STRICT_REPO_PRIORITY
* support zstd compressed control files in debian packages
* add an ifdef allowing to rename Solvable dependency members
("requires" is a keyword in C++20)
* support setting/reading userdata in solv files
new functions: repowriter_set_userdata, solv_read_userdata
* support queying of the custom vendor check function
new function: pool_get_custom_vendorcheck
* support solv files with an idarray block
* allow accessing the toolversion at runtime
Version 0.7.20
- selected bug fixes:
* fix misparsing of '&' in attributes with libxml2
* choice rules: treat orphaned packages as newest
* fix compatibility with Python 3.10
- new features:
* new SOLVER_EXCLUDEFROMWEAK job to ignore pkgs for weak dependencies
* support for environments in comps parser
Version 0.7.19
- selected bug fixes:
* fix rare segfault in resolve_jobrules() that could happen
if new rules are learnt
* fix a couple of memory leaks in error cases
* fix error handling in solv_xfopen_fd()
Version 0.7.18
- selected bug fixes:
* fixed regex code on win32
* fixed memory leak in choice rule generation
- new features:
* repo_add_conda: add flag to skip v2 packages
Version 0.7.17
- selected bug fixes:
* repo_write: fix handling of nested flexarray
* improve choicerule generation a bit more to cover more cases
* harden testcase parser against repos being added too late
* support python-3.10
* check %_dbpath macro in rpmdb code
- new features:
* handle default/visible/langonly attributes in comps parser
* support multiple collections in updateinfo parser
* add '-D' option in rpmdb2solv to set the dbpath
Version 0.7.16
- selected bug fixes:
* do not ask the namespace callback for splitprovides when writing
a testcase
* fix add_complex_recommends() selecting conflicted packages in
rare cases leading to crashes
* improve choicerule generation so that package updates are
prefered in more cases
* deal with missing repos in testcase_mangle_repo_names
Version 0.7.15
- selected bug fixes:
* fix deduceq2addedmap clearing bits outside of the map
* conda: feature depriorization first
* conda: fix startswith implementation
* move find_update_seeds() call in cleandeps calculation
- new features:
* set SOLVABLE_BUILDHOST in rpm and rpmmd parsers
* new testcase_mangle_repo_names() function
* new solv_fmemopen() function
Version 0.7.14
- added support for ed25519 signatures
- selected bug fixes:
* Support blacklisted packages in solver_findproblemrule()
* Support rules with multiple negative literals in choice rule
generation
* Also detect rpmdb.sqlite in /usr/share/rpm
Version 0.7.13
- fix solvable swapping messing up uninternalized idarrays
Version 0.7.12
- conda: support packages.conda repositories
- conda: de-priorize track features
- allow win32 to build shared lib
- selected bug fixes:
* fix ruleinfo of complex dependencies returning the wrong origin
Version 0.7.11
- ENABLE_RPMDB_LIBRPM is now the default
- selected bug fixes:
* fixed solv_zchunk decoding error if large chunks are used
* treat retracted pathes as irrelevant
* made add_update_target work with multiversion installs
Version 0.7.10
- new features:
* new rpm_stat_database() function
* new rpm_hash_database_state() function
Version 0.7.9
- new features:
* support conda constrains dependencies
Version 0.7.8
- selected bug fixes:
* support arch<->noarch package changes when creating patch
conflicts from the updateinfo data
* also support other rpm database types
- new features:
* support for SOLVER_BLACKLIST jobs that block the installation
of matched packages unless they are directly selected by an
SOLVER_INSTALL job
* libsolv now also parses the patch status in the updateinfo
parser
* new solvable_matchessolvable() function
Version 0.7.7
- selected bug fixes:
* fix updating of too many packages in focusbest mode
* fix handling of disabled installed packages in distupgrade
- new features
* new POOL_FLAG_WHATPROVIDESWITHDISABLED pool flag
Version 0.7.6
- selected bug fixes:
* fix repository priority handling for multiversion packages
* better support of inverval deps in pool_match_dep()
* support src rpms that have non-empty provides
- new features
* bindings: add get_disabled_list() and set_disabled_list()
* bindings: add whatcontainsdep()
* bindings: make the selection filters return the self object
Version 0.7.5
- selected bug fixes:
* fix favorq leaking between solver runs if the solver is reused
* fix SOLVER_FLAG_FOCUS_BEST updateing packages without reason
* be more correct with multiversion packages that obsolete their
own name
* allow building with swig-4.0.0
* lock jobs now take precedence over dup and forcebest jobs
- new features
* MSVC compilation support
Version 0.7.4
- selected bug fixes:
* repo_add_rpmdb: do not copy bad solvables from the old solv file
* fix cleandeps updates not updating all packages
- new features:
* bindings: support pool.matchsolvable(), pool.whatmatchessolvable()
pool.best_solvables() and selection.matchsolvable()
* experimental DISTTYPE_CONDA and REL_CONDA support
Version 0.7.3
- selected bug fixes:
* fixed a couple of null pointer derefs and potential memory
leaks
* made disfavoring recommended packages work if strong recommends
is enabled
* no longer disable infarch rules when they don't conflict with
the job
- new features:
* do favor evaluation before pruning allowing to (dis)favor
specific package versions
Version 0.7.2
- bug fixes:
* do not autouninstall packages because of forcebest updates
- new features:
* support rpm's new '^' version separator
* support set/get_considered_list in bindings
* new experimental SOLVER_FLAG_ONLY_NAMESPACE_RECOMMENDED flag
Version 0.7.1
- fix nasty off-by-one error in repo_write
Version 0.7.0
- soname bump to "1"
- incompatible API changes:
* bindings: Selection.flags is now an attribute
* repodata_lookup_num now works like the other lookup_num functions
- new functions:
* selection_make_matchsolvable
* selection_make_matchsolvablelist
* pool_whatmatchessolvable
* repodata_search_arrayelement
* repodata_lookup_kv_uninternalized
* repodata_search_uninternalized
* repodata_translate_dir
- new repowriter interface to write solv files allowing better
control over what gets written
- support for filtered file lists with a custom filter
- dropped support of (since a long time unused) REPOKEY_TYPE_U32
Version 0.6.35
- new configuration options:
* ENABLE_ZSTD_COMPRESSION: support zstd compression
* ENABLE_ZCHUNK_COMPRESSION: support zchunk compression
- new features:
* new repodata_set_kv() function
* new pool_solvable2id() inline function
* bindings: new str2dir, dir2str, add_dirstr repodata methods
- other changes
* new repo2solv tool replacing the old shell script
Version 0.6.34
- new features:
* also look at suggests for package ordering
Version 0.6.33
- new features:
* new Selection.clone() method in the bindings
* new pool.parserpmrichdep() method in the bindings
Version 0.6.32
- fixed bug that could make fileconflict detection very slow
in some cases
Version 0.6.31
- new configuration options:
* ENABLE_RPMDB_LIBRPM: use librpm to read the package
database
* ENABLE_RPMPKG_LIBRPM: use librpm to access information
from package headers
- new features:
* new pool_set_whatprovides function to manually change
the whatprovides data
* new selection_subtract function to remove packages of
one selection from another selection
* new selection flags SELECTION_FILTER,
SELECTION_WITH_DISABLED and SELECTION_WITH_BADARCH
* new map_invertall function to invert a bitmap
* new map_clr_at function to clear some bits
Version 0.6.30
- new features:
* many fixes and extenstions for cleandeps, e.g.
cleandeps now works for "update all packages"
* support debian packages with xz compressed control.tar
* always create dup rules for "distupgrade" jobs
* use recommends also for ordering packages
Version 0.6.29
- new features:
* support for REL_WITHOUT and REL_UNLESS dependencies
* solver_get_recommendations available in bindings
Version 0.6.28
- new features:
* new pool_best_solvables() function
Version 0.6.27
- new features:
* allow building with libxml2 instead of libexpat
* better handing of "forcebest with uninstall"
* speed improvements for "name = md5sum" dependencies
Version 0.6.26
- export solvable_matchesdep function, as we now
use it in the bindings
Version 0.6.25
- new features:
* new SOLVER_FLAG_STRONG_RECOMMENDS flag
* new SOLVER_FLAG_INSTALL_ALSO_UPDATES flag
* new matchesdep() method in bindings
* SOLVABLE_NAME selects nevr matching for
pool_whatmatchesdep and solvable_matchesdep
Version 0.6.24
- new features:
* new SOLVER_FLAG_FOCUS_BEST flag
Version 0.6.22, 0.6.23
- bug fix releases, no new features
Version 0.6.21
- new features:
* SOLVER_FAVOR and SOLVER_DISFAVOR job types
- new functions:
* selection_make_matchdepid
* pool_whatcontainsdep
* pool_parserpmrichdep
Version 0.6.20
- new features:
* filter Requires(pre,post) for installed packages
Version 0.6.13:
- new features:
* SOLVER_ALLOWUNINSTALL job type
* ordercycle introspection
- new functions:
* transaction_order_get_cycle
* transaction_order_get_cycleids
Version 0.6.12:
- new features:
* tcl bindings
- new functions:
* solv_chksum_cmp
Version 0.6.11:
- new functions:
* pool_ids2whatprovides
Version 0.6.9:
- new features:
* much improved package choosing code
* new testcase dependency format
* alternatives introspection
- new functions:
* pool_deb_get_autoinstalled
* solver_alternative2str
* solver_alternatives_count
* solver_get_alternative
* solver_rule2pkgrule
* testcase_dep2str
Version 0.6.5:
- new features:
* support yum style obsolete handling
Version 0.6.1:
- API change:
repodata_stringify() now returns the string
- new features:
* add BREAK_ORPHANS and KEEP_ORPHANS solver flags
Version 0.6.0:
- ABI change: cleaned up and reordered knownid.h
- added support for sha224/sha384/sha512
- API change in the bindings:
* dropped solvid arg from most Dataiterator
constructors
* changed Datamatch results from methods to
attributes
* automatically delete the pool if the owner
object is freed (use the disown method to
get the old behavior).
- new functions:
* pool_add_userinstalled_jobs
* solver_get_userinstalled
|