- 04 Dec, 2021 3 commits
-
-
Michael Shigorin authored
...just to have it handy when it's in need next time.
-
Michael Shigorin authored
"-a arch" is not requisite either; and having bunches of empty lines in the resulting pkglists that are user visible at least within the conventional installer's alterator-pkg (groups selection) module wouldn't be nice. I chose to sacrifice empty-line separators for clarity; the really good cleanup would save *single* empty lines between chunks of non-empty ones (not at the pkglist's start or end); feel free to implement that as well.
-
Michael Shigorin authored
This has been clearly lacking while making the previous commit but the implementation isn't that clear so let it be a separate step. The problem requiring the change in subsequent processors is that these relied upon "@arch" as a flag to be inspected, and "pkg@!arch1,arch2" on arch2 needs to take out *all* of that fragment *including* arch1 mention as well. Part of the cause is difference in handling: "positive" multi-match would explode its "client" line into multiple lines to filter down the pipeline, while "negative" multi-match *has* to keep that line on a similarly single line (otherwise we'd end up with N-1 of those slipping past the filter for particular architecture thus defeating the whole purpose of "negative" matching semantics): $ echo 'pkg@!E2K,mipsel,riscv64' | sed -r ':loop; s/^((([^@]+@!)[^,]+)+),([a-zA-Z0-9_]+)/\1@!\4/; t loop' pkg@!E2K@!mipsel@!riscv64 I've tried my best to test this specific change but it still might introduce a regression in some corner case; feel free to report; looks like there's a space for improvement in m-p's automated tests department as well. So now we can do: pkg@!ARCHES1,ARCHES2,arch3,arch4 and have pkg excluded on arches mentioned; the previous approach could only offer explicit whitelists (not that it was entirely wrong but then again, we have both ExclusiveArch and ExcludeArch rpmtags in our spec files).
-
- 23 Nov, 2021 1 commit
-
-
Michael Shigorin authored
This has been inspired by a few commits that cared for package availability reasons on a particular architecture; the problem at hand is that pkglists might need to include groups of packages that are (un)available on groups of arches, and tackling that with plain pkg@arch just results in combinatorial explosion of that matrix. Arches are handled one-by-one with a few hardcoded macro substitutions. Exploding a "pkg@arch1,arch2" string into a set of: pkg@arch1 pkg@arch2 with subsequent archdep pruning would do the trick; so here's another sed oneliner that does just that: $ echo 'pkg@X86,ARM,ppc64le' | sed -r ':loop; s/^((([^@]+@)[^,]+)+),([^,]+)/\1\n\3\4/; t loop' pkg@X86 pkg@ARM pkg@ppc64le See-also: 9601a9e7 See-also: 5581dc91 See-also: http://stackoverflow.com/a/55781741/561921
-
- 01 Nov, 2019 1 commit
-
-
Anton Midyukov authored
There are use cases when having this common knob would be desirable.
-
- 23 Oct, 2019 1 commit
-
-
Michael Shigorin authored
This code started breeding within pkg.in/*/Makefile, and it was lacking both E2K (as a generic alias, not just "e2k or e2kv4") _and_ the ability to negate selection, as in "everywhere but not on any e2k"). Let's fix all of that at once, and parallelize sed execution as well; my tests with 1000-line file containing "a b c d@!E2K e@e2k f g@!X86 h i@IA32" lines show roughly 3x higher CPU load and lower execution time (~0.3 sec vs ~0.9 sec on 801-PC). And turn that code snippet into a proper filter with inline edit capability (I've dropped the exit trap as failing to mv signals a disaster anyway).
-