You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* soname handling has been re-written from scratch and improved substantially.
It now identifies every soname versioned library in elf executables
along with their full path. It also properly handles executables
built with *--rpath* loader options.
Previous versions relied on makepkg soname output
which, unfortunately, only lists sonames if they are also listed as a PKGBUILD dependency.
We need every soname versioned library to ensure we do the right thing
and rebuild when needed. So it was a mistake to rely on this.
Can also specify how to handle version comparisons similar to the way
package version comparisons are done (e.g. soname > major)
* Old options now deprecated
* (*--mpk-xxx*)
* (*--soname-build*) : use *--soname-comp* instead
Copy file name to clipboardExpand all lines: README.rst
+69-13
Original file line number
Diff line number
Diff line change
@@ -12,8 +12,26 @@ Tool to rebuild Arch packages based on dependency triggers.
12
12
New / Interesting
13
13
==================
14
14
15
-
* Version comparisons now use pyalpm instead of packaging
16
-
packaging.version barfs on systemd package version 255rc2.1
15
+
* Major update: soname handling has been re-written from scratch and improved substantially.
16
+
17
+
It now identifies every soname versioned library in elf executables
18
+
along with their full path. It also properly handles executables
19
+
built with *--rpath* loader options.
20
+
21
+
Previous versions relied on makepkg soname output
22
+
which, unfortunately, only lists sonames if they are also listed as a PKGBUILD dependency.
23
+
We need every soname versioned library to ensure we do the right thing
24
+
and rebuild when needed. So it was a mistake to rely on this.
25
+
26
+
Can also specify how to handle version comparisons similar to the way
27
+
package version comparisons are done (e.g. soname > major)
28
+
29
+
If you're interested, the soname info is saved into the file *.mkp_dep_soname*
30
+
31
+
* Old options now deprecated
32
+
33
+
* (*--mpk-xxx*)
34
+
* (*--soname-build*) : use *--soname-comp* instead
17
35
18
36
#################
19
37
mkpkg application
@@ -205,7 +223,7 @@ With the trigger conditions in the PKGBUID, then simply call mkpkg instead of ma
205
223
Options for mkpkg are those before any double dash *--*. Any options following *--*
206
224
are passed through to *makepkg* [#]_.
207
225
208
-
.. [#] The older style options using *--mkp-* are deprecated but are supported to ensure backward compatibility. They will be removed at some point in the future.
226
+
.. [#] The older style options using *--mkp-* are now deprecated.
209
227
210
228
Options
211
229
=======
@@ -224,9 +242,26 @@ The options currently supported by mkpkg are:
224
242
225
243
Attempts to update saved metadata files. Faster, if imperfect, alternative to rebuild.
226
244
If there is no saved metadata, and build is up to date, will try refresh the build info.
227
-
Files updated are *.mkp\_dep\_vers* and *.mkp_dep_soname*. The soname data can only be updated
228
-
if the .PKGINFO file is still in the *pkg* directory. Forcing a rebuild is the
229
-
slower alternative but is guaranteed to have information needed.
245
+
Files updated are *.mkp\_dep\_vers* and *.mkp_dep_soname*.
246
+
247
+
Note that *sonames* are found by examining any executables in the *pkg* directory.
248
+
If the *pkg* directory is empty, the refresh will not find any sonames.
249
+
250
+
* (**so-comp, --soname-comp**)
251
+
252
+
How to handle automatic soname changes. Default value is *last* - which uses the entire soname version
253
+
when comparing to what's available.
254
+
255
+
* *never* : soname dependencies are ignored
256
+
257
+
* *newer* : if soname is newer then reubild (time based)
258
+
259
+
* *keep* : if soname library is still available, then dont rebuild even if newer version(s) are available
260
+
261
+
* *vcomp* : rebuild if soname version is greater than the *vcomp* version. *vcomp* is one of *major*, *minor*, *patch*, *extra* or *last* - same as for regular depenencies.
262
+
263
+
* *neverever* : Developer option - will not rebuild even if the soname library is no longer available.
264
+
230
265
231
266
* (*--*)
232
267
@@ -236,9 +271,9 @@ The options currently supported by mkpkg are:
236
271
237
272
Configs are looked for in first in /etc/mkpkg/config and then in
238
273
~/.config/mkpkg/config. Config files are in TOML format.
239
-
e.g. to change the default soname rebuild option::
274
+
e.g. to change the default soname rebuild compare option from default of *last*::
240
275
241
-
soname_build = "newer"
276
+
soname_comp = "newer"
242
277
243
278
How mkpkg works
244
279
===============
@@ -488,6 +523,31 @@ Created by Gene C. and licensed under the terms of the MIT license.
488
523
Some history
489
524
============
490
525
526
+
Version 4.1.0
527
+
-------------
528
+
529
+
* soname rewrite
530
+
531
+
New argument for how soname changes are treated : *-so-comp, --soname-comp*.
532
+
533
+
Can be *<compare>*, *newer*, *never* or key how to compare the soname versions.
534
+
The comparison types are the same as for package dependencies described above.
535
+
Default is *last* which means the entire soname version will be compared to
536
+
whats available and rebuild will be triggered if a later version now available.
537
+
538
+
*<compare>* e.g. *>major* or *>minor*' or *last* etc.
539
+
If the last built soname was 5.1, and now available is 5.2 then
540
+
*minor* and *last* will trigger rebuild while *major* would not. *newer* triggers if the
541
+
last modify time of the library is newer.
542
+
543
+
Previous version used sonmaes produced by makepkg - however this only generates
544
+
sonames if they are listed as dependencies. We want to get every soname - so
545
+
we started over from scratch. By using our own soname generate we catch
546
+
every soname and its absolute path - this enables us to correctly treat soname
547
+
changes. This approach will also correctly deal with any *rpath* loader flags
548
+
causing executable to use shared library from path(s) specified at compile time.
549
+
550
+
491
551
Version 4.1.0
492
552
-------------
493
553
@@ -498,17 +558,13 @@ Version 4.1.0
498
558
compatibility the older *--mkp-* style arguments are honored, but the newer simpler
499
559
ones are preferred. e.g. *-v, --verb* for verbose. Help availble via *-h*.
500
560
501
-
* New argument for how soname changes are treated : *-so-bld, --soname-build*.
502
-
503
-
Can be *missing*, *newer* or *never*. Default is missing - rebuild if soname
504
-
no longer available.
505
561
506
562
* Config file now available.
507
563
508
564
Configs are looked for in /etc/mkpkg/config then ~/.config/mkpkg/config. It should
509
565
be in TOML format. e.g. to change the default soname rebuild option::
0 commit comments