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!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
Recent changes:
7e7ca4b 2010-08-17 Anssi Hannula debugedit: fix incorrect error messages regarding -b and -d
e6a0b0e 2010-05-10 Roland McGrath Make debugedit -i recompute build ID only when any DWARF was actually changed.
c4b6362 2010-05-10 Roland McGrath Whitespace fixups for tools/debugedit.c
71a7dd8 2009-06-16 Panu Matilainen Add debugedit support for DWARF-3 (RhBug:505774)
- Removed --fileid query selector and Filemd5s rpmdb index (rpm.org).
- Removed ancient dependency loop whiteout mechanism (rpm.org).
- rpmdb.c: Do not exclude Requires(pre) dependencies from rpmdb index.
- Implemented %__find_{requires,provides}_filter macros (lower-level) and
%filter_from_{requires,provides} (higher-level, compatible with Fedora).
The first two macros provide general mechanism for find-requires
and find-provides filtering. Any valid command or shell syntax can
be used - the command will be executed using "eval" within find-*
script. The implementation in %___build_pre is not particular
beautiful (as it uses here-docs), but there seems to be no easy
way to quote for eval yet.
The second two commands are built on top of the first: they use
sed as a filtering tool. The implementation is compatible with Fedora:
http://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering
It can be observed that, while packages require their dependencies,
the dependencies in turn are not always required by their packages:
$ rpm -qa --requires |awk '{print$1}' |sort -u |xargs rpm -q --whatrequires >/dev/null
warning: no package requires /bin/chgrp
warning: no package requires /bin/chmod
warning: no package requires /bin/mv
warning: no package requires /etc/rc.d/init.d/postfix
warning: no package requires /sbin/pidof
warning: no package requires /sbin/post_ldconfig
warning: no package requires /usr/bin/alt-docs-genextras
warning: no package requires /usr/bin/gpasswd
warning: no package requires /usr/bin/gtk-query-immodules-2.0
warning: no package requires /usr/bin/mkfontdir
warning: no package requires /usr/sbin/alternatives-update
warning: no package requires /usr/sbin/control-dump
warning: no package requires /usr/sbin/control-restore
warning: no package requires /usr/sbin/gconf_install_schema
warning: no package requires /usr/sbin/groupadd
warning: no package requires /usr/sbin/indexhtml-update
warning: no package requires /usr/sbin/post_service
warning: no package requires /usr/sbin/useradd
warning: no package requires /usr/sbin/usermod
warning: no package requires /usr/share/php/scripts/php_postin.sh
warning: no package requires dvdrwtools-control
warning: no package requires libguile-vhttpd
warning: no package requires php5-suhosin
warning: no package requires rpmlib(CompressedFileNames)
warning: no package requires rpmlib(PartialHardlinkSets)
warning: no package requires rpmlib(PayloadFilesHavePrefix)
warning: no package requires rpmlib(PayloadIsLzma)
warning: no package requires rpmlib(SetVersions)
warning: no package requires rpmlib(VersionedDependencies)
warning: no package requires x11presetdrv
$
This is because rpm removes "install prerequisites" from rpmdb index.
As a consequence, rpm will allow (but apt will not) to remove packages
with "not required" dependencies:
$ rpm -e --test x11presetdrv
$
This is possibly wrong, and it makes dependency optimization hard (e.g.
can't merge duplicate names with different flags). Also, the code was
buggy: testing isInstallPreReq was not enough as it is not mutually
exclusive with isErasePreReq - e.g. Requries(pre,preun) dependencies
can be used in specfile.
When addFile() is called with file path obtained from specfile,
various checks must be performed, so that only valid paths can
enter the package. However, when a path is passed down to fts,
it is no longer possible to obtain ill-formed paths. So a lot
of lstat calls for intermediate path components can be saved.
This introduces new macro %_configure_platform which will normally
expand to %_target_platform. However, for noarch packages, a special
version called %_configure_platform_noarch will be used, which will use
%_host_cpu instead of mock "noarch" cpu. Suggested by Dmitry V. Levin.
This fixes %configure failures like
checking build system type... Invalid configuration `noarch-alt-linux': machine `noarch-alt' not recognized
Pushing new elements to the front tends to assign extra weight to that
elements, at the expense of other elements that are already in the cache.
The idea is then to try first-time insertion somewhere in the middle.
Further attempts suggest that the "pivot" should be closer to the end.
Cache performance for "apt-shell <<<unmet", previous commit:
hit=62375 miss=17252
Cache performance for "apt-shell <<<unmet", this commit:
hit=65085 miss=14542
callgrind results for "apt-cache unmet", 4.0.4-alt100.6:
2,215,614,910 PROGRAM TOTALS
1,126,021,045 ???:decode_set
486,259,420 ???:rpmsetcmp
147,177,041 ???:strcmp
79,769,617 ???:strlen
61,764,819 ???:0x0000000000033080'2
54,573,169 ???:memcpy
31,477,402 ???:strcpy
24,471,167 ???:pkgCache::DepIterator::AllTargets()
callgrind results for "apt-cache unmet", this commit (built in hasher):
1,502,995,357 PROGRAM TOTALS
625,132,308 ???:decode_base62_golomb
374,940,745 ???:rpmsetcmp
91,031,162 ???:strcmp
69,615,481 ???:strlen
61,764,819 ???:0x0000000000033080'2
30,928,154 ???:memcpy
26,108,178 ???:strcpy
24,471,167 ???:pkgCache::DepIterator::AllTargets()
Average user time for "apt-shell <<<unmet", 4.0.4-alt100.6:
2.55s
Average user time for "apt-shell <<<unmet", this commit (built in hasher):
1.72s
After base62+golomb decoding, most deltas are under 65536 (in Provides
versions, average delta should be around 1536). So the whole version
can be stored using short deltas, effectively halving memory footprint.
However, this seems to be somewhat slower: per-delta copying and
decode_golomb must be invoked to recover hash values. On the other
hand, this allows to increase cache size (128 -> 192). But note that,
with larger cache sizes, LRU linear search will take longer. So this is
a compromise - and apparently a favourable one.