IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an
email to Administrator. User accounts are meant only to access repo
and report issues and/or generate pull requests.
This is a purpose-specific Git hosting for
BaseALT
projects. Thank you for your understanding!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
This should facilitate library upgrades, e.g. glibc-prthread.
Consider that we upgrade gcc-* and glibc-* packages; and glibc
has new subpackage glibc-pthread (with libpthread and librt
shared libraries).
Old order was:
D: ========== tsorting packages (order, #predecessors, #succesors, tree, depth)
D: 0 0 14 0 0 glibc-preinstall-2.8.90-alt3
D: 1 1 21 0 1 glibc-core-2.8.90-alt3
D: 2 1 9 0 2 cpp4.3-4.3.2-alt5
D: 3 1 5 0 2 libgcc4.3-4.3.2-alt5
D: 4 2 13 0 3 glibc-pthread-2.8.90-alt3
D: 5 2 20 0 4 glibc-core-debug-2.8.90-alt3
D: 6 2 17 0 4 glibc-gconv-modules-2.8.90-alt3
D: 7 2 16 0 4 glibc-locales-2.8.90-alt3
D: 8 2 15 0 4 glibc-nss-2.8.90-alt3
D: 9 2 12 0 4 glibc-timezones-2.8.90-alt3
D: 10 2 11 0 4 glibc-utils-2.8.90-alt3
D: 11 2 10 0 5 iconv-2.8.90-alt3
D: 12 8 22 0 6 glibc-2.8.90-alt3
D: 13 4 19 0 7 glibc-devel-2.8.90-alt3
D: 14 1 18 0 8 glibc-devel-static-2.8.90-alt3
D: 15 4 8 0 8 gcc4.3-4.3.2-alt5
D: 16 1 4 0 2 libgfortran4.3-4.3.2-alt5
D: 17 2 3 0 3 libgfortran4.3-devel-4.3.2-alt5
D: 18 3 6 0 4 gcc4.3-fortran-4.3.2-alt5
D: 19 2 2 0 3 libstdc++4.3-4.3.2-alt5
D: 20 2 1 0 4 libstdc++4.3-devel-4.3.2-alt5
D: ========== successors only (presentation order)
D: 21 3 7 0 5 gcc4.3-c++-4.3.2-alt5
Note that #succesors value is actually changed using the package index
in the input list of packages (on the command line): earlier packages
have higher values. This is called "successors from tsort are processed
in presentation order". E.g. when choosing to upgrade between cpp4.3,
libgcc4.3, and libgfortran4.3, cpp4.3 gets upgraded first. (The
collation is probably due to using shell glob on the command line.)
The problem is that, in cpp4.3 %post-script, some pthread-dependent
code might be called, and pthread shared library is simply mssing
at that point (after glibc-core upgrade and before glibc-pthread
install).
New order is:
D: ========== tsorting packages (order, #predecessors, #succesors, tree, depth)
D: 0 0 1 0 0 glibc-preinstall-2.8.90-alt3
D: 1 1 17 0 1 glibc-core-2.8.90-alt3
D: 2 1 3 0 2 libgcc4.3-4.3.2-alt5
D: 3 2 8 0 3 glibc-pthread-2.8.90-alt3
D: 4 2 2 0 4 glibc-gconv-modules-2.8.90-alt3
D: 5 2 2 0 4 glibc-nss-2.8.90-alt3
D: 6 2 1 0 5 iconv-2.8.90-alt3
D: 7 2 1 0 4 glibc-locales-2.8.90-alt3
D: 8 2 1 0 4 glibc-timezones-2.8.90-alt3
D: 9 2 1 0 4 glibc-utils-2.8.90-alt3
D: 10 8 1 0 5 glibc-2.8.90-alt3
D: 11 4 4 0 6 glibc-devel-2.8.90-alt3
D: 12 2 1 0 3 libstdc++4.3-4.3.2-alt5
D: 13 2 1 0 4 libstdc++4.3-devel-4.3.2-alt5
D: 14 1 1 0 2 cpp4.3-4.3.2-alt5
D: 15 4 2 0 3 gcc4.3-4.3.2-alt5
D: 16 1 1 0 2 libgfortran4.3-4.3.2-alt5
D: 17 2 1 0 3 libgfortran4.3-devel-4.3.2-alt5
D: ========== successors only (presentation order)
D: 18 2 0 0 4 glibc-core-debug-2.8.90-alt3
D: 19 1 0 0 7 glibc-devel-static-2.8.90-alt3
D: 20 3 0 0 4 gcc4.3-fortran-4.3.2-alt5
D: 21 3 0 0 4 gcc4.3-c++-4.3.2-alt5
Note that #succesors now indicates the number of immediate successors;
libgcc4.3 now has 3 immediate successors (glibc-pthread, gcc4.3, and
libstdc++4.3), while cpp4.3 and libgfortran4.3 have only one immediate
successor.
Also removed tools/rpmsort.c.
> The are various serial representations of a partially ordered set.
>
> The default is what I call "chainsaw", always emit the node that has
> the most children. The "chainsaw" heuristic tries to emit nodes that
> are depended upon as early as possible to localize interactions
> amongst packages, but really should be
> Always emit the node of the largest sub-tree.
> rather than the number of immediate children. I call this "buzzsaw".
>
> Anaconda has the constraint of changing cd's during install. So
> "presentation" ordering preserves the arrival ordering into a
> transaction set. Too bad that "presentation" ordering is often
> incorrect because of no loop analysis first.
https://lists.dulug.duke.edu/pipermail/rpm-devel/2005-June/000468.html
- build/reqprov.c: when folding duplicate dependencies, Requires(pre)
or Requires(post) should not opimitze out bare Requires
- build/files.c: execute find-requires before find-scriptlet-requires
- 0common-files.req.list: added /etc/rc.d/init.d (service)
Both "Requires(post): foo" and "Requires: foo" should be kept.
The first dependency is only for %post-script: after the package
is installed, rpm allows to remove "foo" (though apt-get does not).
This is only a quick fix, perhaps the code should be rewritten.
For instance, if with have both "Requires(pre): foo" and
"Requires(post): foo", those can be folded into single
"Requires(pre,post): foo".
1) In Linux, execve(2) does not split shebang arguments, which implies
that effectively only one argument can be passed to the interpreter.
However, some interpreters, esp. perl, can do a magic here, which is
to split its arguments.
2) Neither /usr/bin/env can split arguments, and no magic is possible
at all.
3) Interpreter path (or name) must not end with <CR>, otherwise execve
(resp. /usr/bin/env) is deemed to fail. However, some interpreters,
esp. perl, can strip trailing <CR> in its command line options.
- lib.req: use CanonPath() to deal with RPATH like $ORIGIN/../lib
- fixup-{libtool,pkgconfig}: quote substitution text (Dmitry V. Levin, #11437)
- pdeath_execute.c: remove X_OK check, use execvp(3)
- rpm: in %post-script, remove /var/cache/apt/*.bin
Both (F_OK|X_OK) cannot be tested at the same time, which means that
X_OK is X_OK for directories, too. And anyway there's a huge period
of time between X_OK test and exec. So I remove the test which cannot
be performed reliably. As a bonus, I also replace execv() with execvp().
Both (F_OK|X_OK) cannot be tested at the same time, which means that
X_OK is X_OK for directories, too. And anyway there's a huge period
of time between X_OK test and exec. So I remove the test which cannot
be performed reliably. As a bonus, I also replace execv() with execvp().