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!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
glibc starting with commit glibc-2.30~85
(elf: Refuse to dlopen PIE objects [BZ #24323])
no longer supports preloading of PIE objects.
Workaround this by swapping the target object and the preloading
PIE object when possible.
Reported-by: ALT beekeeper
Reported-by: Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
When hasher generates an src.rpm from pkg.tar, it sets $SOURCE_DATE_EPOCH
according to pkg.tar's specfile modification time which in turn is set to
the corresponding commit time.
When hasher builds from an src.rpm, it sets $SOURCE_DATE_EPOCH according
to the src.rpm's RPMTAG_BUILDTIME.
This changes helps to connect these two stages, setting the
RPMTAG_BUILDTIME of the generated src.rpm to $SOURCE_DATE_EPOCH.
Co-Authored-by: Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
- find-package, shebang.req: introduced RPM_FINDPACKAGE_MANDATORY=1.
When an interpreter is invoked by name, as in "#!/usr/bin/env python32",
and is missing, this will now force the dependency on /usr/bin/python32.
* build/parsePrep.c (doPatch): Do not pass null pointer to sprintf.
(doAutopatchMacro): Do not pass null pointer to strcmp.
Fixes: 9c18a402 ("Make %autopatch and %patch accept -pg")
- Generate requirements on binaries used in systemd service files
(by Anton V. Boyarshinov)
- Made %autopatch and %patch accept -pg (by Vladimir D. Seleznev).
- Fixed build with new gettext.
* parsePrep.c (doPatch): Change strip argument type to const char *.
(doPatchMacro, doAutopatchMacro): Change opt_p variable type to char *,
change checking of opt_p: it can be either a number or a 'g' symbol
assuming that -pg is a valid option for patch command.
Mechanically substitute _IO_off64_t with off64_t using
$ git grep -Fwl _IO_off64_t |xargs -r sed -i s/_IO_off64_t/off64_t/g
This follows glibc-2.28~574 and fixes build with glibc >= 2.28.
Spec files have a lot of metadata about a project. However one of the
most key components is the upstream version control system which was
notably lacking.
Resolve this by adding a "VCS" key. There is no specification
for contents of this key, given that the set of version control
systems (and features thereof) are not well-defined. However,
recommendations are:
* git: This URL should be in a form that can be passed to "git clone",
with the additional feature that an optional fragment identifier "#foo"
denotes a branch or tag.
%autopatch is a directive to apply all patches, it supports -p<num> and
-F<num> options
%autopatch was initially introduced in rpm.org with version 4.11 but with
different implementation.
The previous attempt to fail build in case of syntax errors
and unknown dependency qualifiers made in commit
rpm-4.8.0-beta1-385-gbf2bc18ebb325f081ade65adc2fbb6858f0b8396
missed the following classes of erroneous dependencies:
Requires(,) -- erroneously treated as Requires(),
Requires(;) -- erroneously treated as Requires(),
Requires(,pre) -- erroneously treated as Requires(),
Requires(;pre) -- erroneously treated as Requires(),
Requires(pre,) -- erroneously treated as Requires(pre),
Requires(pre,,postun) -- erroneously treated as Requires(pre),
Requires(pre,,junk) -- erroneously treated as Requires(pre),
Requires(pre;postun) -- erroneously treated as Requires(pre),
Requires(pre;junk) -- erroneously treated as Requires(pre).
Found by code inspection.
Fixes: bf2bc18ebb32 ("Always fail build on unknown dependency qualifiers")
(cherry picked from rpm.org commit aafb861846db97d78964e98d603b4e6cd88ed3ae)
The two last cases listed above have already been fixed by commit
f7280d8302.
It's always annoying when important information such as compilation
options used for build is not available in build logs just because
silent build rules are enabled by default.
Fix this for the case of build rules generated by configure
by disabling silent rules.
- Fixed deps optimization "due to repentancy": if subpkg A requires subpkg B,
and B has a dependency on C, a weaker dependency on C is removed from A
(say, without an epoch or disttag).
compare_deps() was simply called with a wrong argument (an illegal value
for this parameter); so it returned a meaningful result only if
the compared deps were identical. (Always, since the inception in f5ed7f870a .)
Example where the dep was not optimized out:
Name: test-epoch-repentancy
Version: 1
Release: alt1
Summary: test-epoch-repentancy
License: public domain
Group: Other
Requires: %name-sub = %EVR
Requires: foo = 1-alt1
BuildArch: noarch
%description
%summary
%package sub
Summary: sub
Group: Other
Requires: foo = 0:1-alt1
%description sub
%summary
%files
%files sub
%changelog
* Wed Feb 27 2019 Ivan Zakharyaschev <imz@altlinux.org> 1-alt1
- initial build for ALT Linux Sisyphus.
(cherry picked from commit 492396b532660f4debc46e96eb306f07a3261d66)
# Conflicts:
# build/interdep.c
- Reverted one of the changes (for disttag-unaware tools compatibility)
from 4.0.4-alt127 (useful in rare cases, but bad for external dependencies
on virtual Provides when interpreted by the old rpm):
+ %EVR macro (for intersubpackage deps) upgraded to include %disttag
- Always fix interpackage deps that need Epoch or Disttag (ALT#36180).
(This completes the improvement of 4.0.4-alt100.63.)
- Made deps optimization more aware of disttag:
+ build/reqprov.c: made addReqProv() aware of the disttag of
the package (affects deps optimization).
+ add disttag to struct availablePackage (like buildtime; affects
rpm -U & interdep.c)
[rpm-4.13.0.1-alt5 alike]
+ Implemented DistTag support when comparing package versions (with
help by Vladimir D. Seleznev).
[rpm-4.13.0.1-alt6 alike]
+ rpmEVRcmp() (and hence rpmRangesOverlap()) made asymmetric w.r.t.
underspecified release. (Provides: N = V can't anymore satisfy
Requires: N = V-R.) (with help of Vladimir D. Seleznev)
These are the cases where even the release was not needed (so, the
disttag is not needed, too), or one case where the filename is
contructed (and it doesn't include the disttag).
Now grep -Ee 'headerNVR[^D]' will show the remaining non-trivial
cases, where adapting to disttags may be needed.
- Implemented DistTag support when comparing package versions (with
help by Vladimir D. Seleznev). (It's necessary for the correctness
of checking dependencies after we introduced parseEVRD().)
(Affects rpmbuild, too, when optimizing deps.)
- Dirty hacked to make upgrade packages between branches possible (by
Vladimir D. Seleznev; probably, dead code for rpm-build without rpm-install.)
[rpm-4.13.0.1-alt6 alike]
- rpmEVRcmp() (and hence rpmRangesOverlap()) made asymmetric w.r.t.
underspecified release. (Provides: N = V can't anymore satisfy
Requires: N = V-R. Affects rpmbuild, too, when optimizing deps.)
(with help of Vladimir D. Seleznev)
- rpmRangesOverlap() optimized (can run ca. 30% faster).
In a constraint (Requires, Conflicts), some components of E:V-R:D may
be unspecified; here are the sensible possibilities:
V
E:V-R
E:V-R:D
Remember that the DistTag represents the ID of a particular build. (V
represents a particular upstream version. E:V-R represents a
particular source package release.)
To satisfy a requirement, only the specified components must be
checked.
So, if the requirement doesn't specify a DistTag, then we don't have
to check the DistTag to satisfy it.
If the requirement does specify a DistTag, then if it is an "equals"
requirement, then only the same DistTag can satisfy it. (I.e., we want
that particular build.)
A "less" (or "greater") requirement of a DistTag basically makes no
sense, because the build IDs are not ordered. So, such a requirement
cannot be satisfied, if it has come to checking the DistTag, i.e. the
EVRs have been equal. (It cannot be satisfied by a package with an
equal EVR and any DistTag value, but can be satisfied by a package
with EVR which is strictly less or greater.)
What does the last part mean for "Requires" and "Conflicts"?
Requires: N>E:V-R:D would have the same effect as Requires: N>E:V-R
Conflicts: N>E:V-R:D would have the same effect as Conflicts: N>E:V-R
i.e., a conflict would not disallow packages with the specified E:V-R,
but a different DistTag. (We can't do any better, unless there is a
"not-equals" type of requirement in RPM.)
Commit message author: Ivan Zakharyaschev <imz@altlinux.org>
Commit is based on 6cb615d6112a2ca841481d8153ba652d512a2f23 of
git://git.altlinux.org/gears/r/rpm.git
(cherry picked from commit d169679410a0d02a731addb8b526ecbc8a3a56fc)
This completes the intention of de77ec4556
"build/interdep.c: fix interpackage dependencies automatically":
> ...This change also downgrades "dependency needs Epoch" error to warning
> because it automatically adds strict dependencies.
However, the dependency pkg1->pkg2 was not fixed (if it needed an epoch
or disttag) if pkg1 was already considered to have a strict transitive
dependency on pkg2 (perhaps, via another pkg3: if pkg1->pkg3 and
pkg3->pkg2 deps have already been fixed and added as strict ones).
Then, if pkg3 was a part of a cycle, the pkg1->pkg2 dep wasn't
optimized out. So, it was left untouched, not in the nice format of a
strict dep (i.e., missing an epoch or a disttag).
This was not dangerous, because the strictness was guaranteed by the
transitive dependency, but it was not nice, and was inconvenient for
tools which happen to compare the dep versions as whole strings (say,
for rpm and apt optimizations, or for disttag-unaware old rpm or apt).
- rpmEVRcmp() (and hence rpmRangesOverlap()) made asymmetric w.r.t.
underspecified release. (Provides: N = V can't anymore satisfy
Requires: N = V-R. Look out for unmets!)
(with help of Vladimir D. Seleznev)
- rpmRangesOverlap() optimized (can run ca. 30% faster).