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!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
- Updated %config algorithm to avoid unnecessary *.rpmnew, *.rpmsave,
and *.rpmorig files (credits: Panu Matilainen, Tomas Mraz).
+ If new package keeps the same config file, updating the file on disk
is skipped (rhbz#194246). This provides limited support for replacing
config files with custom symbolic links.
+ If pre-existing file is the same as the one being installed for
the first time, backup action is suppress (rhbz#128622).
+ Backup action is also disabled but for regular files and symlinks.
- backported changes from branch 4.1:
- psm.c: in syslog messages, discriminate between no epoch and zero epoch
- transaction.c: updated conflict algorithm for overlapping paths:
exact st_mode and uid/gid match is required; md5 check is skipped
for %ghost files
- psm.c: fixed chown attempts for src.rpm introduced [with previous change]
- rpmpopt (--changelog): remove extra newline after %{CHANGELOGNAME} (jbj)
- implemented post-transaction filetriggers, loosely based on filetriggers.patch
from Mandriva Linux (see %_rpmlibdir/posttrans-filetriggers for details)
- implemented %_rpmlibdir/0ldconfig.filetrigger, so that packages with
shared libraries need not to invoke ldconfig(1) in they %%post-scriptlets
- rpmlib.req: automatically generate rpmlib(PosttransFiletriggers) dependency
for packages which provide %_rpmlibdir/*.filetrigger programs
- implemented post-transaction filetriggers, loosely based on filetriggers.patch
from Mandriva Linux (see %_rpmlibdir/posttrans-filetriggers for details)
- implemented %_rpmlibdir/0ldconfig.filetrigger, so that packages with
shared libraries need not to invoke ldconfig(1) in they %%post-scriptlets
- rpmlib.req: automatically generate rpmlib(PosttransFiletriggers) dependency
for packages which provide %_rpmlibdir/*.filetrigger programs
- implemented post-transaction filetriggers, loosely based on filetriggers.patch
from Mandriva Linux (see %_rpmlibdir/posttrans-filetriggers for details)
- implemented %_rpmlibdir/0ldconfig.filetrigger, so that packages with
shared libraries need not to invoke ldconfig(1) in they %%post-scriptlets
- implemented post-transaction filetriggers, loosely based on filetriggers.patch
from Mandriva Linux (see %_rpmlibdir/posttrans-filetriggers for details)
- implemented %_rpmlibdir/0ldconfig.filetrigger, so that packages with
shared libraries need not to invoke ldconfig(1) in they %%post-scriptlets
- 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)
- 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)
- 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
- reverted the rest of dependency optimization
- stripped redundant librpm-devel dependencies
- build/files.c: fixed a few possibilities of invalid cpio entries, including
`dir/.*' construct in %%files section (which globs `dir/.' and `dir/..',
and thus should not be used in specfiles)
- lib/psm.c: in syslog messages, discriminate between no epoch and zero epoch
- verify-elf: According to information from Kirill Shutemov,
PIE executables on ARM always contain TEXTREL, so do not check them.
- find-package: Removed bulk dependencies optimization
introduced in previous release.
- scripts: Replaced redundant paths to basic programs
with program names.
- implemented automatic dependencies for %%pre, %%preun, %%post,
and %%postun scriptlets (#7409)
- find-package: when possible, keep file-level dependencies as is,
without mapping them to package names
- find-package: relax file-level dependencies on unpackaged directories
- find-package: optimize out bulk dependencies on sh, cat, rm, mv etc.
- build/parseScript.c: optimize out RPMSENSE_INTERP dependencies on /bin/sh
- lib.req: enabled ELF_INTERP dependencies except for standard /lib/ld-linux.so.2
- functions (ValidateBuildRoot): require RPM_BUILD_ROOT path be canonical
- reqprov.c (addReqProv): implemented optimization of "self-requires"
dependencies on packaged files
- find-package, shell.req, pkgconfiglib.req, symlinks.req: do not
completely ignore dependencies on files which are under RPM_BUILD_ROOT;
that is, emit "file-level" dependencies which will be optimized out by
addReqProv() within a single subpackage, but will protect from unpackaged
files between subpackages; works best with apt-utils >= 0.5.15lorg2-alt17
- lib.req: try to emit file-level dependencies instead of "soname-level"
dependencies on private libraries (see git log for details); this can
largely reduce the need for %%add_findprov_lib_path
- reqprov.c (addReqProv): implemented optimization of "self-requires"
dependencies on packaged files
- find-package, shell.req, pkgconfiglib.req, symlinks.req: do not
completely ignore dependencies on files which are under RPM_BUILD_ROOT;
that is, emit "file-level" dependencies which will be optimized out by
addReqProv() within a single subpackage, but will protect from unpackaged
files between subpackages; works best with apt-utils >= 0.5.15lorg2-alt17
- lib.req: try to emit file-level dependencies instead of "soname-level"
dependencies on private libraries (see git log for details); this can
largely reduce the need for %%add_findprov_lib_path which is "public
provides for private libraries"
- symlinks.req: do only one single step of symlink resolution;
find-package (FindByPath): check each path component for alternatives;
this fixes the case of e.g. dependency on /usr/share/libtool/config.sub,
where '/usr/share/libtool -> libtool-1.5/' is an alternative;
we now stop at alternative directory and simply yield the dependency
on /usr/share/libtool, instead of libtool_1.5 (see also #13374)
- moved /usr/lib/rpm/functions and /usr/lib/rpm/find-package from rpm-build
to rpm, to relax e.g. rpm-build-mono dependencies
- relative.c: various fixes by Alex V. Myltsev and Dmitry V. Levin
This will allow to relax rpm-build-* dependencies, hopefully without adding
new essential dependencies to rpm (note that rpm already depends on sh and
coreutils; now this also includes grep, and possibly should include sed,
awk, and gzip).
Consider mono-mcs package, which is mono C# compiler. Recently I added
dependency on rpm-build-mono to this package, to enable automatic support
for mono dependencies whenever mono compiler is used. Now the problem
is that rpm-build-mono depends on rpm-build (via /usr/lib/rpm/functions),
and rpm-build in turn requires a lot of packages, e.g. gcc and autotools,
for the purpose of populating base build environment.
To put it another way, the problem is that it is impossible to install
mono compiler (with automatic support for mono dependencies) without also
installing gcc and stuff, which is roughly 100M of unrelated packages.
This seems like a minor problem to me, since every "devel" package (including
compilers) can conventionally require base build environment. However,
Alexander Bokovoy argues that school kids desperately need mono-mcs compiler
on their desktops without gcc and another stuff from the base build environment!
The upshot is that possibly we want to relax rpm-build-* dependencies,
so that those "support for dependencies" packages do not require
full-fledged rpm-build. The easiest way to accomplish this is to
move /usr/lib/rpm/functions from rpm-build to rpm package. I also
choose to move /usr/lib/rpm/find-package as well, along with making
/usr/lib/rpm/.provides.sh, so that rpm-build-* packages depend on
something like /usr/lib/rpm(Fatal), not just rpm.
- shell.req: implemented strong self-requires elimination within
a package; if ANY shell script defines function "foo", dependencies
on "foo" are discarded in all shell scripts throughout the package;
a warning is issued if e.g. /usr/bin/foo executable is available
- pkgconfiglib.req: new dependency generator for "Libs" field in *.pc
files; maps e.g. "-lfoo" -> /usr/lib/libfoo.so -> libfoo-devel
- implemented modular subsystem for find-requires and find-provides;
there's no separate doc yet, except for my protva2007-ru-short.pdf;
see also git changelog, especially commit 9717c128
- improved /usr/lib/rpm/find-package algorithms
- shell.req: non-executable scripts are now processed as well as executable
ones; also, more shebang variants are recognized, e.g. "#!/usr/bin/env bash"
- symlinks.req: new dependency generator for external symbolic links
- pkgconfig.req: pkg-config(1) errors no longer silently ignored
- rpm-build: decoupled rpm-build-tcl from the base build environment
'pkg-config --libs' seems to deploy dependencies recursively,
which is what I did not expect.
$ grep Requires pango.pc
Requires: glib-2.0,gobject-2.0,gmodule-no-export-2.0
$ grep Lib pango.pc
Libs: -lpango-1.0 -lm
$ pkg-config --libs-only-l pango.pc
-lpango-1.0 -lm -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
$
I need some time to devise a better implementation.
- implemented modular subsystem for find-requires and find-provides;
there's no separate doc yet, except for my protva2007-ru-short.pdf;
see also git changelog, especially commit 9717c128
- improved /usr/lib/rpm/find-package algorithms
- shell.req: non-executable scripts are now processed as well as executable
ones; also, more shebang variants are recognized, e.g. "#!/usr/bin/env bash"
- symlinks.req: new dependency generator for external symbolic links
- pkgconfig.req: pkg-config(1) errors no longer silently ignored
- pkgconfiglib.req: new dependency analyzer for "Libs" field in *.pc files;
maps e.g. "-lfoo" -> /usr/lib/libfoo.so -> libfoo-devel
There's been some discussion on the list as to which rpm-build-*
packages rpm-build should depend on.
The upshot is this:
1) The language should be widely used, and its scripts should
be found in a number of packages not specific to the language
(e.g. packages which do not require %name-devel for build).
2) rpm-build-%name scripts, along with finding dependencies,
should have the effect of syntax check. This is what makes
them beneficial for all packages, and this is the reason why
rpm-build should pick up such rpm-build-%name package.
Now I think that Tcl fails both points. Current tcl.req analyzer
simply cannot process Tcl scripts reliably, only Tcl modules.
But Tcl modules are certainly specific to the Tcl language,
and building Tcl modules apparently should involve tcl-devel.
I have just added rpm-build-tcl dependency to tcl-devel.
If too many Tcl packages break because of this change,
which is not likely, I can re-add rpm-build-tcl dependency here.
However, this will also enroll tcl into the base build system.