From fdd8e5bea1b83b33ee1bec133ade79c1644944f4 Mon Sep 17 00:00:00 2001 From: cvs-fast-export Date: Wed, 20 Jul 2005 14:22:48 +0000 Subject: Synthetic commit for incomplete tag rewrite-ignore --- AUTHORS | 0 COPYING | 340 -- ChangeLog.000 | 4288 ------------------------- INSTALL | 229 -- ISSUES | 6 - Makefile.am | 3 - NEWS | 0 README | 0 TODO | 57 - aclocal.m4 | 908 ------ autogen.sh | 11 - bin/Makefile.in | 15 - bin/affect-fakeroot-perms.sh | 21 - bin/archive-conf | 101 - bin/chkcontents | 62 - bin/clean_locks | 36 - bin/db-update.py | 60 - bin/dispatch-conf | 311 -- bin/dispatch-conf-dialog | 287 -- bin/dobin | 28 - bin/doconfd | 12 - bin/dodir | 8 - bin/dodoc | 26 - bin/doenvd | 12 - bin/doexe | 26 - bin/dohard | 13 - bin/dohtml | 159 - bin/doinfo | 27 - bin/doinitd | 12 - bin/doins | 53 - bin/dojar | 54 - bin/dolib | 40 - bin/dolib.a | 7 - bin/dolib.so | 7 - bin/doman | 59 - bin/domo | 26 - bin/dopython | 23 - bin/dosbin | 27 - bin/dosed | 22 - bin/dosym | 13 - bin/ebuild | 61 - bin/ebuild-daemon.lib | 126 - bin/emake | 14 - bin/emerge | 3512 --------------------- bin/env-update | 11 - bin/env-update.sh | 219 -- bin/etc-update | 413 --- bin/find-requires | 44 - bin/fix-db.py | 175 -- bin/fixdbentries | 20 - bin/fixpackages | 14 - bin/fixvardbentries | 167 - bin/fixvirtuals | 33 - bin/fowners | 22 - bin/fperms | 22 - bin/isolated-functions.sh | 204 -- bin/md5check.py | 102 - bin/md5check.sh | 31 - bin/mirror.py | 167 - bin/newbin | 13 - bin/newconfd | 13 - bin/newdoc | 13 - bin/newenvd | 13 - bin/newexe | 13 - bin/newinitd | 13 - bin/newins | 13 - bin/newlib.a | 13 - bin/newlib.so | 13 - bin/newman | 13 - bin/newsbin | 13 - bin/pkgmerge | 59 - bin/pkgmerge.new | 84 - bin/pkgname | 17 - bin/portage_gpg_update.sh | 6 - bin/portageq | 74 - bin/prepall | 48 - bin/prepalldocs | 57 - bin/prepallinfo | 8 - bin/prepallman | 11 - bin/prepallstrip | 10 - bin/prepinfo | 58 - bin/preplib | 25 - bin/preplib.so | 10 - bin/prepman | 61 - bin/prepstrip | 46 - bin/queryhost.sh | 47 - bin/quickpkg | 146 - bin/regenworld | 93 - bin/repoman | 1475 --------- bin/test_target_graph.py | 95 - bin/xpak | 14 - cnf/dispatch-conf.conf | 31 - cnf/etc-update.conf | 71 - cnf/make.conf | 401 --- cnf/make.conf.alpha | 339 -- cnf/make.conf.amd64 | 350 --- cnf/make.conf.arm | 347 --- cnf/make.conf.hppa | 356 --- cnf/make.conf.ia64 | 318 -- cnf/make.conf.mac | 6 - cnf/make.conf.mips | 336 -- cnf/make.conf.ppc | 369 --- cnf/make.conf.ppc64 | 348 --- cnf/make.conf.s390 | 318 -- cnf/make.conf.sh | 315 -- cnf/make.conf.sparc | 353 --- cnf/make.conf.x86 | 353 --- cnf/make.conf.x86-fbsd | 311 -- cnf/make.globals | 75 - cnf/make.globals.alpha | 74 - cnf/make.globals.amd64 | 74 - cnf/make.globals.arm | 74 - cnf/make.globals.hppa | 74 - cnf/make.globals.ia64 | 74 - cnf/make.globals.mac | 74 - cnf/make.globals.mips | 74 - cnf/make.globals.ppc | 74 - cnf/make.globals.ppc64 | 74 - cnf/make.globals.s390 | 74 - cnf/make.globals.sh | 74 - cnf/make.globals.sparc | 74 - cnf/make.globals.x86 | 74 - cnf/make.globals.x86-fbsd | 72 - compile | 136 - configure.in | 105 - depcomp | 526 ---- install-sh | 325 -- man/Makefile.am | 12 - man/check-kernel.eclass.5 | 53 - man/check-reqs.eclass.5 | 55 - man/cvs.eclass.5 | 80 - man/dispatch-conf.1 | 93 - man/distutils.eclass.5 | 39 - man/ebook.eclass.5 | 75 - man/ebuild.1 | 184 -- man/ebuild.5 | 825 ----- man/emerge.1 | 569 ---- man/env-update.1 | 28 - man/etc-update.1 | 40 - man/eutils.eclass.5 | 176 -- man/fixheadtails.eclass.5 | 32 - man/flag-o-matic.eclass.5 | 84 - man/font.eclass.5 | 64 - man/fortran.eclass.5 | 53 - man/games.eclass.5 | 119 - man/horde.eclass.5 | 51 - man/libtool.eclass.5 | 48 - man/make.conf.5 | 384 --- man/perl-module.eclass.5 | 64 - man/portage.5 | 555 ---- man/python.eclass.5 | 82 - man/quickpkg.1 | 56 - man/repoman.1 | 127 - man/rpm.eclass.5 | 37 - man/ruby.eclass.5 | 47 - man/ssl-cert.eclass.5 | 54 - man/stardict.eclass.5 | 34 - man/subversion.eclass.5 | 59 - man/tla.eclass.5 | 52 - man/toolchain-funcs.eclass.5 | 112 - man/versionator.eclass.5 | 53 - man/vim-plugin.eclass.5 | 86 - man/vim.eclass.5 | 56 - missing | 360 --- mkinstalldirs | 150 - portage.txt | 296 -- portage/__init__.py | 0 portage/binpkg/__init__.py | 0 portage/binpkg/repository.py | 76 - portage/cache/__init__.py | 5 - portage/cache/anydbm.py | 69 - portage/cache/cache_errors.py | 41 - portage/cache/flat_list.py | 114 - portage/cache/fs_template.py | 74 - portage/cache/metadata.py | 110 - portage/cache/multiplex.py | 5 - portage/cache/sql_template.py | 247 -- portage/cache/sqlite.py | 67 - portage/cache/template.py | 152 - portage/cache/util.py | 92 - portage/chksum/__init__.py | 47 - portage/chksum/md5hash.py | 29 - portage/chksum/sha1hash.py | 21 - portage/config/__init__.py | 19 - portage/config/central.py | 285 -- portage/config/domain.py | 12 - portage/config/errors.py | 72 - portage/const.py | 77 - portage/ebuild/__init__.py | 5 - portage/ebuild/conditionals.py | 70 - portage/ebuild/ebuild_buildable.py | 57 - portage/ebuild/ebuild_internal.py | 1265 -------- portage/ebuild/ebuild_package.py | 89 - portage/ebuild/ebuild_repository.py | 68 - portage/ebuild/eclass_cache.py | 77 - portage/ebuild/processor.py | 455 --- portage/os_data.py | 76 - portage/package/__init__.py | 8 - portage/package/atom.py | 75 - portage/package/cpv.py | 205 -- portage/package/metadata.py | 93 - portage/repository/__init__.py | 6 - portage/repository/errors.py | 14 - portage/repository/multiplex.py | 72 - portage/repository/prototype.py | 109 - portage/repository/visibility.py | 24 - portage/restrictions/__init__.py | 5 - portage/restrictions/restriction.py | 129 - portage/restrictions/restrictionSet.py | 54 - portage/spawn.py | 385 --- portage/sync/__init__.py | 10 - portage/sync/cvs.py | 95 - portage/sync/parseuri.py | 28 - portage/sync/rsync.py | 161 - portage/sync/snapshot.py | 147 - portage/sync/syncexceptions.py | 11 - portage/transports/__init__.py | 9 - portage/transports/bundled_lib.py | 363 --- portage/transports/fetchcommand.py | 72 - portage/util/__init__.py | 1 - portage/util/currying.py | 11 - portage/util/dicts.py | 158 - portage/util/fs.py | 519 --- portage/util/misc.py | 99 - portage/util/modules.py | 22 - portage/vdb/__init__.py | 1 - portage/vdb/repository.py | 76 - pym/.gitignore | 2 - pym/Makefile.in | 24 - pym/cache/.gitignore | 2 - pym/cache/__init__.py | 0 pym/cache/anydbm.py | 64 - pym/cache/cache_errors.py | 36 - pym/cache/flat_list.py | 109 - pym/cache/fs_template.py | 66 - pym/cache/metadata.py | 105 - pym/cache/sql_template.py | 242 -- pym/cache/sqlite.py | 62 - pym/cache/template.py | 146 - pym/cache/util.py | 87 - pym/config.py | 811 ----- pym/cvstree.py | 295 -- pym/dcache.py | 154 - pym/dcdialog.py | 412 --- pym/dispatch_conf.py | 162 - pym/ebuild.py | 1263 -------- pym/eclass_cache.py | 72 - pym/elog_modules/.gitignore | 2 - pym/elog_modules/__init__.py | 0 pym/elog_modules/mod_custom.py | 16 - pym/elog_modules/mod_mail.py | 54 - pym/elog_modules/mod_save.py | 18 - pym/elog_modules/mod_syslog.py | 13 - pym/emergehelp.py | 370 --- pym/getbinpkg.py | 541 ---- pym/orig_dict_cache.py | 64 - pym/output.py | 167 - pym/portage.py | 5375 -------------------------------- pym/portage_checksum.py | 131 - pym/portage_const.py | 65 - pym/portage_contents.py | 161 - pym/portage_data.py | 84 - pym/portage_dep.py | 1040 ------ pym/portage_exception.py | 170 - pym/portage_exec.py | 382 --- pym/portage_file.py | 119 - pym/portage_gpg.py | 155 - pym/portage_localization.py | 22 - pym/portage_locks.py | 373 --- pym/portage_metadata.py | 47 - pym/portage_syntax.py | 758 ----- pym/portage_util.py | 647 ---- pym/portage_versions.py | 221 -- pym/portageq.py | 205 -- pym/set_modules/.gitignore | 2 - pym/set_modules/__init__.py | 37 - pym/set_modules/mod_filelist.py | 27 - pym/set_modules/mod_security.py | 30 - pym/set_modules/mod_system.py | 26 - pym/sync/.gitignore | 2 - pym/sync/__init__.py | 10 - pym/sync/cvs.py | 95 - pym/sync/parseuri.py | 24 - pym/sync/rsync.py | 161 - pym/sync/snapshot.py | 143 - pym/sync/syncexceptions.py | 11 - pym/transports/.gitignore | 2 - pym/transports/__init__.py | 9 - pym/transports/bundled_lib.py | 363 --- pym/transports/fetchcommand.py | 72 - pym/xpak.py | 375 --- qa/iuse/iuse.sh | 20 - qa/iuse/iuse2.py | 58 - rewrite-misc/ChangeLog | 16 - rewrite-misc/HORKED | 32 - rewrite-misc/conf_default_types | 132 - rewrite-misc/config | 45 - rewrite-misc/config.txt | 155 - rewrite-misc/default.config | 40 - rewrite-misc/example-complex.config | 55 - rewrite-misc/intro | 417 --- rewrite-misc/layout.txt | 273 -- src/Makefile.am | 16 - src/bsd-flags/PKG-INFO | 10 - src/bsd-flags/chflags.c | 161 - src/bsd-flags/setup.cfg | 6 - src/bsd-flags/setup.py | 24 - src/filter-env/Makefile.am | 3 - src/filter-env/bmh_search.c | 21 - src/filter-env/bmh_search.h | 5 - src/filter-env/posix.c | 547 ---- src/python-missingos/ChangeLog | 16 - src/python-missingos/Makefile.in | 25 - src/python-missingos/PKG-INFO | 10 - src/python-missingos/README | 15 - src/python-missingos/missingos.c | 120 - src/python-missingos/setup.cfg | 8 - src/python-missingos/setup.py | 24 - src/tbz2tool.c | 228 -- tabcheck.py | 6 - test/vertest | 143 - test/vlist | 541 ---- 322 files changed, 54413 deletions(-) delete mode 100644 AUTHORS delete mode 100644 COPYING delete mode 100644 ChangeLog.000 delete mode 100644 INSTALL delete mode 100644 ISSUES delete mode 100644 Makefile.am delete mode 100644 NEWS delete mode 100644 README delete mode 100644 TODO delete mode 100644 aclocal.m4 delete mode 100755 autogen.sh delete mode 100755 bin/Makefile.in delete mode 100644 bin/affect-fakeroot-perms.sh delete mode 100755 bin/archive-conf delete mode 100755 bin/chkcontents delete mode 100755 bin/clean_locks delete mode 100644 bin/db-update.py delete mode 100755 bin/dispatch-conf delete mode 100755 bin/dispatch-conf-dialog delete mode 100755 bin/dobin delete mode 100755 bin/doconfd delete mode 100755 bin/dodir delete mode 100755 bin/dodoc delete mode 100755 bin/doenvd delete mode 100755 bin/doexe delete mode 100755 bin/dohard delete mode 100755 bin/dohtml delete mode 100755 bin/doinfo delete mode 100755 bin/doinitd delete mode 100755 bin/doins delete mode 100755 bin/dojar delete mode 100755 bin/dolib delete mode 100755 bin/dolib.a delete mode 100755 bin/dolib.so delete mode 100755 bin/doman delete mode 100755 bin/domo delete mode 100755 bin/dopython delete mode 100755 bin/dosbin delete mode 100755 bin/dosed delete mode 100755 bin/dosym delete mode 100755 bin/ebuild delete mode 100755 bin/ebuild-daemon.lib delete mode 100755 bin/emake delete mode 100755 bin/emerge delete mode 100755 bin/env-update delete mode 100755 bin/env-update.sh delete mode 100755 bin/etc-update delete mode 100755 bin/find-requires delete mode 100755 bin/fix-db.py delete mode 100755 bin/fixdbentries delete mode 100755 bin/fixpackages delete mode 100755 bin/fixvardbentries delete mode 100755 bin/fixvirtuals delete mode 100755 bin/fowners delete mode 100755 bin/fperms delete mode 100644 bin/isolated-functions.sh delete mode 100755 bin/md5check.py delete mode 100755 bin/md5check.sh delete mode 100755 bin/mirror.py delete mode 100755 bin/newbin delete mode 100755 bin/newconfd delete mode 100755 bin/newdoc delete mode 100755 bin/newenvd delete mode 100755 bin/newexe delete mode 100755 bin/newinitd delete mode 100755 bin/newins delete mode 100755 bin/newlib.a delete mode 100755 bin/newlib.so delete mode 100755 bin/newman delete mode 100755 bin/newsbin delete mode 100755 bin/pkgmerge delete mode 100755 bin/pkgmerge.new delete mode 100755 bin/pkgname delete mode 100755 bin/portage_gpg_update.sh delete mode 100755 bin/portageq delete mode 100755 bin/prepall delete mode 100755 bin/prepalldocs delete mode 100755 bin/prepallinfo delete mode 100755 bin/prepallman delete mode 100755 bin/prepallstrip delete mode 100755 bin/prepinfo delete mode 100755 bin/preplib delete mode 100755 bin/preplib.so delete mode 100755 bin/prepman delete mode 100755 bin/prepstrip delete mode 100755 bin/queryhost.sh delete mode 100755 bin/quickpkg delete mode 100755 bin/regenworld delete mode 100755 bin/repoman delete mode 100755 bin/test_target_graph.py delete mode 100755 bin/xpak delete mode 100644 cnf/dispatch-conf.conf delete mode 100644 cnf/etc-update.conf delete mode 100644 cnf/make.conf delete mode 100644 cnf/make.conf.alpha delete mode 100644 cnf/make.conf.amd64 delete mode 100644 cnf/make.conf.arm delete mode 100644 cnf/make.conf.hppa delete mode 100644 cnf/make.conf.ia64 delete mode 100644 cnf/make.conf.mac delete mode 100644 cnf/make.conf.mips delete mode 100644 cnf/make.conf.ppc delete mode 100644 cnf/make.conf.ppc64 delete mode 100644 cnf/make.conf.s390 delete mode 100644 cnf/make.conf.sh delete mode 100644 cnf/make.conf.sparc delete mode 100644 cnf/make.conf.x86 delete mode 100644 cnf/make.conf.x86-fbsd delete mode 100644 cnf/make.globals delete mode 100644 cnf/make.globals.alpha delete mode 100644 cnf/make.globals.amd64 delete mode 100644 cnf/make.globals.arm delete mode 100644 cnf/make.globals.hppa delete mode 100644 cnf/make.globals.ia64 delete mode 100644 cnf/make.globals.mac delete mode 100644 cnf/make.globals.mips delete mode 100644 cnf/make.globals.ppc delete mode 100644 cnf/make.globals.ppc64 delete mode 100644 cnf/make.globals.s390 delete mode 100644 cnf/make.globals.sh delete mode 100644 cnf/make.globals.sparc delete mode 100644 cnf/make.globals.x86 delete mode 100644 cnf/make.globals.x86-fbsd delete mode 100755 compile delete mode 100644 configure.in delete mode 100755 depcomp delete mode 100755 install-sh delete mode 100644 man/Makefile.am delete mode 100644 man/check-kernel.eclass.5 delete mode 100644 man/check-reqs.eclass.5 delete mode 100644 man/cvs.eclass.5 delete mode 100644 man/dispatch-conf.1 delete mode 100644 man/distutils.eclass.5 delete mode 100644 man/ebook.eclass.5 delete mode 100644 man/ebuild.1 delete mode 100644 man/ebuild.5 delete mode 100644 man/emerge.1 delete mode 100644 man/env-update.1 delete mode 100644 man/etc-update.1 delete mode 100644 man/eutils.eclass.5 delete mode 100644 man/fixheadtails.eclass.5 delete mode 100644 man/flag-o-matic.eclass.5 delete mode 100644 man/font.eclass.5 delete mode 100644 man/fortran.eclass.5 delete mode 100644 man/games.eclass.5 delete mode 100644 man/horde.eclass.5 delete mode 100644 man/libtool.eclass.5 delete mode 100644 man/make.conf.5 delete mode 100644 man/perl-module.eclass.5 delete mode 100644 man/portage.5 delete mode 100644 man/python.eclass.5 delete mode 100644 man/quickpkg.1 delete mode 100644 man/repoman.1 delete mode 100644 man/rpm.eclass.5 delete mode 100644 man/ruby.eclass.5 delete mode 100644 man/ssl-cert.eclass.5 delete mode 100644 man/stardict.eclass.5 delete mode 100644 man/subversion.eclass.5 delete mode 100644 man/tla.eclass.5 delete mode 100644 man/toolchain-funcs.eclass.5 delete mode 100644 man/versionator.eclass.5 delete mode 100644 man/vim-plugin.eclass.5 delete mode 100644 man/vim.eclass.5 delete mode 100755 missing delete mode 100755 mkinstalldirs delete mode 100644 portage.txt delete mode 100644 portage/__init__.py delete mode 100644 portage/binpkg/__init__.py delete mode 100644 portage/binpkg/repository.py delete mode 100644 portage/cache/__init__.py delete mode 100644 portage/cache/anydbm.py delete mode 100644 portage/cache/cache_errors.py delete mode 100644 portage/cache/flat_list.py delete mode 100644 portage/cache/fs_template.py delete mode 100644 portage/cache/metadata.py delete mode 100644 portage/cache/multiplex.py delete mode 100644 portage/cache/sql_template.py delete mode 100644 portage/cache/sqlite.py delete mode 100644 portage/cache/template.py delete mode 100644 portage/cache/util.py delete mode 100644 portage/chksum/__init__.py delete mode 100644 portage/chksum/md5hash.py delete mode 100644 portage/chksum/sha1hash.py delete mode 100644 portage/config/__init__.py delete mode 100644 portage/config/central.py delete mode 100644 portage/config/domain.py delete mode 100644 portage/config/errors.py delete mode 100644 portage/const.py delete mode 100644 portage/ebuild/__init__.py delete mode 100644 portage/ebuild/conditionals.py delete mode 100644 portage/ebuild/ebuild_buildable.py delete mode 100644 portage/ebuild/ebuild_internal.py delete mode 100644 portage/ebuild/ebuild_package.py delete mode 100644 portage/ebuild/ebuild_repository.py delete mode 100644 portage/ebuild/eclass_cache.py delete mode 100644 portage/ebuild/processor.py delete mode 100644 portage/os_data.py delete mode 100644 portage/package/__init__.py delete mode 100644 portage/package/atom.py delete mode 100644 portage/package/cpv.py delete mode 100644 portage/package/metadata.py delete mode 100644 portage/repository/__init__.py delete mode 100644 portage/repository/errors.py delete mode 100644 portage/repository/multiplex.py delete mode 100644 portage/repository/prototype.py delete mode 100644 portage/repository/visibility.py delete mode 100644 portage/restrictions/__init__.py delete mode 100644 portage/restrictions/restriction.py delete mode 100644 portage/restrictions/restrictionSet.py delete mode 100644 portage/spawn.py delete mode 100644 portage/sync/__init__.py delete mode 100644 portage/sync/cvs.py delete mode 100644 portage/sync/parseuri.py delete mode 100644 portage/sync/rsync.py delete mode 100644 portage/sync/snapshot.py delete mode 100644 portage/sync/syncexceptions.py delete mode 100644 portage/transports/__init__.py delete mode 100644 portage/transports/bundled_lib.py delete mode 100644 portage/transports/fetchcommand.py delete mode 100644 portage/util/__init__.py delete mode 100644 portage/util/currying.py delete mode 100644 portage/util/dicts.py delete mode 100644 portage/util/fs.py delete mode 100644 portage/util/misc.py delete mode 100644 portage/util/modules.py delete mode 100644 portage/vdb/__init__.py delete mode 100644 portage/vdb/repository.py delete mode 100644 pym/.gitignore delete mode 100644 pym/Makefile.in delete mode 100644 pym/cache/.gitignore delete mode 100644 pym/cache/__init__.py delete mode 100644 pym/cache/anydbm.py delete mode 100644 pym/cache/cache_errors.py delete mode 100644 pym/cache/flat_list.py delete mode 100644 pym/cache/fs_template.py delete mode 100644 pym/cache/metadata.py delete mode 100644 pym/cache/sql_template.py delete mode 100644 pym/cache/sqlite.py delete mode 100644 pym/cache/template.py delete mode 100644 pym/cache/util.py delete mode 100644 pym/config.py delete mode 100644 pym/cvstree.py delete mode 100644 pym/dcache.py delete mode 100644 pym/dcdialog.py delete mode 100644 pym/dispatch_conf.py delete mode 100644 pym/ebuild.py delete mode 100644 pym/eclass_cache.py delete mode 100644 pym/elog_modules/.gitignore delete mode 100644 pym/elog_modules/__init__.py delete mode 100644 pym/elog_modules/mod_custom.py delete mode 100644 pym/elog_modules/mod_mail.py delete mode 100644 pym/elog_modules/mod_save.py delete mode 100644 pym/elog_modules/mod_syslog.py delete mode 100644 pym/emergehelp.py delete mode 100644 pym/getbinpkg.py delete mode 100644 pym/orig_dict_cache.py delete mode 100644 pym/output.py delete mode 100644 pym/portage.py delete mode 100644 pym/portage_checksum.py delete mode 100644 pym/portage_const.py delete mode 100644 pym/portage_contents.py delete mode 100644 pym/portage_data.py delete mode 100644 pym/portage_dep.py delete mode 100644 pym/portage_exception.py delete mode 100644 pym/portage_exec.py delete mode 100644 pym/portage_file.py delete mode 100644 pym/portage_gpg.py delete mode 100644 pym/portage_localization.py delete mode 100644 pym/portage_locks.py delete mode 100644 pym/portage_metadata.py delete mode 100644 pym/portage_syntax.py delete mode 100644 pym/portage_util.py delete mode 100644 pym/portage_versions.py delete mode 100644 pym/portageq.py delete mode 100644 pym/set_modules/.gitignore delete mode 100644 pym/set_modules/__init__.py delete mode 100644 pym/set_modules/mod_filelist.py delete mode 100644 pym/set_modules/mod_security.py delete mode 100644 pym/set_modules/mod_system.py delete mode 100644 pym/sync/.gitignore delete mode 100644 pym/sync/__init__.py delete mode 100644 pym/sync/cvs.py delete mode 100644 pym/sync/parseuri.py delete mode 100644 pym/sync/rsync.py delete mode 100644 pym/sync/snapshot.py delete mode 100644 pym/sync/syncexceptions.py delete mode 100644 pym/transports/.gitignore delete mode 100644 pym/transports/__init__.py delete mode 100644 pym/transports/bundled_lib.py delete mode 100644 pym/transports/fetchcommand.py delete mode 100644 pym/xpak.py delete mode 100644 qa/iuse/iuse.sh delete mode 100755 qa/iuse/iuse2.py delete mode 100644 rewrite-misc/ChangeLog delete mode 100644 rewrite-misc/HORKED delete mode 100644 rewrite-misc/conf_default_types delete mode 100644 rewrite-misc/config delete mode 100644 rewrite-misc/config.txt delete mode 100644 rewrite-misc/default.config delete mode 100644 rewrite-misc/example-complex.config delete mode 100644 rewrite-misc/intro delete mode 100644 rewrite-misc/layout.txt delete mode 100644 src/Makefile.am delete mode 100644 src/bsd-flags/PKG-INFO delete mode 100644 src/bsd-flags/chflags.c delete mode 100644 src/bsd-flags/setup.cfg delete mode 100644 src/bsd-flags/setup.py delete mode 100644 src/filter-env/Makefile.am delete mode 100644 src/filter-env/bmh_search.c delete mode 100644 src/filter-env/bmh_search.h delete mode 100644 src/filter-env/posix.c delete mode 100644 src/python-missingos/ChangeLog delete mode 100755 src/python-missingos/Makefile.in delete mode 100644 src/python-missingos/PKG-INFO delete mode 100644 src/python-missingos/README delete mode 100644 src/python-missingos/missingos.c delete mode 100644 src/python-missingos/setup.cfg delete mode 100755 src/python-missingos/setup.py delete mode 100644 src/tbz2tool.c delete mode 100755 tabcheck.py delete mode 100755 test/vertest delete mode 100644 test/vlist diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index e69de29..0000000 diff --git a/COPYING b/COPYING deleted file mode 100644 index d60c31a..0000000 --- a/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/ChangeLog.000 b/ChangeLog.000 deleted file mode 100644 index 06895ac..0000000 --- a/ChangeLog.000 +++ /dev/null @@ -1,4288 +0,0 @@ -# ChangeLog for Portage; the Gentoo Linux ports system -# Copyright 1999-2004 Gentoo Foundation; Distributed under the GPL v2 -# $Id: ChangeLog.000,v 1.3 2004/10/04 13:58:57 vapier Exp $ - - *** THIS IS FOR ARCHIVAL PURPOSES ONLY -- DO NOT MODIFY *** - *** THIS IS FOR ARCHIVAL PURPOSES ONLY -- DO NOT MODIFY *** - *** THIS IS FOR ARCHIVAL PURPOSES ONLY -- DO NOT MODIFY *** - *** THIS IS FOR ARCHIVAL PURPOSES ONLY -- DO NOT MODIFY *** - *** THIS IS FOR ARCHIVAL PURPOSES ONLY -- DO NOT MODIFY *** - *** THIS IS FOR ARCHIVAL PURPOSES ONLY -- DO NOT MODIFY *** - *** THIS IS FOR ARCHIVAL PURPOSES ONLY -- DO NOT MODIFY *** - *** THIS IS FOR ARCHIVAL PURPOSES ONLY -- DO NOT MODIFY *** - *** THIS IS FOR ARCHIVAL PURPOSES ONLY -- DO NOT MODIFY *** - - 21 Jan 2004; Nicholas Jones ebuild.sh: TGL's fixes - for exec/child/wait problems. Unset GREP_OPTIONS GREP_COLOR. has() and use() - no longer attempt to determine if they are to be quiet or noisy -- They - default to noisy -- useq() and hasq() are the non-verbose versions. - EBUILD_PHASE set to add a hack-ish way around global scope calls in - eclasses -- NOTHING SHOULD BE CALLED IN THE GLOBAL SCOPE. Touchup to the - inherit() code that should finally allow the removal of the ECLASS and - INHERITED settings. Removed tty (use/has) calls. Removed dirname calls -- - portage.py handles setting the dbkey filename now. - - 21 Jan 2004; Nicholas Jones emerge: Ed Catmur's - (with a little TGL added in) patch for --ask. Added a 'metadata' target - that skips the sync and only updates the cache. FEATURES="getbinpkg" added. - TGL's exit code fixes. Fixed match code for -S so it doesn't complain about - specific and double versions. Unmerge via dbpath fix. Rewrote rsync's - options that supports --verbose and --quiet operation now and can force - checksumming all files using --debug. Sort the files in the cache update - so it's a little more predictable. - - 21 Jan 2004; Nicholas Jones prepstrip: changed - --strip-debug to --strip-unneeded. - - 21 Jan 2004; Nicholas Jones getbinpkg.py: Updates to - enable HTTP/HTTPS authentication. - - 21 Jan 2004; Nicholas Jones portage.py: best_from_dict - added to grab the best entry from set of dicts using a list of the keys for - priority. jstubb's patch to fix listdir -- splits it into a cache and list - setup. jstubb's patch for varexpand to handle $VAR better. Latexer's patch - for KernelVersion code to use Makefiles instead of the version.h. Modules - are loaded from /etc/portage/modules or defaults, whichever works. Fixed - the /etc/make.profile-is-missing traceback. Spawn can be given 3 pipes to - redirect stdin,stdout,stderr to specific outputs, terminals, or files. - TGL's patch for cache functions in portage.py so that they do not cache at - inappropriate times. PORTAGE_TMPFS is now used if set as a temporary file - operation area -- recommended to actually be a ramfs/tmpfs filesystem for - speed. Genone enhanced the deprecated profile patch. - - 31 Jan 2004; Masatomo Nakano emerge: Fixed --skipfirst - bug. This closes #36880. - - 29 Jan 2004; Masatomo Nakano emerge: TGL's patch - for imporving overlay verbose. This closes #39765. - - 27 Jan 2004; Masatomo Nakano portage.py: Fixed - autouse bug. autouse were ignored. - - 21 Jan 2004; Nicholas Jones emerge: Output failed - cache updates during emerge sync. - - 21 Jan 2004; Nicholas Jones *: VDB_PATH fixes. - - 21 Jan 2004; Nicholas Jones portage.py: Only use - custom profiles when not called by repoman. ROOT never changes profile - roots, only custom/system profiles var/cache/edb/virtuals. Sandbox fix - where sandbox was creating an invalid logfile (not giving a summary) - due to a '/' in SANDBOX_LOG. Turned down the Lockfile output. Double - check the INCOMPLETE MERGE identifications as it can be caused by cache. - - 24 Jan 2004; emerge: Improved timestamp check - when 'emerge sync'. Added catching amiguous error when unmerge. - This closes #24325. - - 23 Jan 2004; emerge, portage.py: Fixed 2 bugs. - Portage doesn't read local virtuals file, which happens on only cvs - version. package is blocked by itself. - - 21 Jan 2004; Nicholas Jones portage.py, emerge: - Fix from genone for emerge's direct reading of packages and his patch - that also adds in /etc/portage/profile as a stacked profile. - - 21 Jan 2004; Nicholas Jones portage.py: Completed - inheritence capabilities for portage.config reading some files. Moved a - copy of the getvirtuals() function into settings to handle multiple - profiles properly. - -*portage-2.0.50_pre17/18/19 (21 Jan 2004): Modules for DBs and quick fixes - - 21 Jan 2004; Nicholas Jones *: Moved all references - to var/db/pkg to portage.VDB_PATH --- This will change again -- NEED TO - BE MOVED INTO A PATH/CONSTANTS SETUP. - - 21 Jan 2004; Nicholas Jones dosed: Quick fix for - the basename missing/misplaced issue. - - 21 Jan 2004; Nicholas Jones ebuild.sh: Added - /dev/console to PREDICT to attempt a workaround for a serial console - bug. dbkey is now set through portage.py/doebuild to allow for modular - db code. - - 21 Jan 2004; Nicholas Jones emerge: regen doesn't - require root anymore. Edited the timestamp check to be a little more - friendly -- delete the portdir timestamp and it won't use the alternate. - Fix some permission settings. Added some warnings in for cachedirs that - are very likely to ruin your system. Cleaned out some of the eclass code - that isnt valid any longer. - - 21 Jan 2004; Nicholas Jones portageq: Added vdb_path - as a target to get the db directory. Quickpkg uses this. - - 21 Jan 2004; Nicholas Jones portage.py: Added - load_mod() -- grabs a class/function from a module and passes it back - without loading the module into the global scope. Added unique_array() - which eliminates duplicates from an array. grab_stacked() operates like - the other grab* and getconfig functions, but takes a filename and a set - of paths that it will apply incrementally or clobbers -- for profile - inheritance. getconfig no longer exits on non-existance returns None. - Class config now should be passed a profile path and a set of incremental - values instead of using the globals -- defaults to using the globals - presently and print an error message. Adding support for module configs - as a set of strings 'class.subclass.objectmodule':'module.to.use.object' - for load_mod and the database modules. Profile inheritance started. Killed - the eclass() super-function and replaced it with class eclass_cache that - is visible and conceptually simpler -- Also uses the plugable modules. - Cleaned out the sync calls for the DBs. MASSIVE simplification of the - aux_get code -- removed memory-caching in favor of system cache (actually - faster in all cases so far -- P100 and P4-2.2G). Lockfile usage around the - cachefile. - - 21 Jan 2004; Nicholas Jones portage_db_*: Updated - the API a little but to have permissions set properly. A little more - reorganization and removed the keycount checks. - - 21 Jan 2004; Masatomo Nakano emerge: download size - should not be displayed when the package is nomerge with --tree. - - 20 Jan 2004; Masatomo Nakano portage.py: Reverted - ambiguity package fix in cpv_expand(). - - 20 Jan 2004; Masatomo Nakano emerge: Moved - backup timestamp.chk file from portage tree to PORTAGE_TMPDIR. - - 20 Jan 2004; Masatomo Nakano emerge: Reverted the - backing up the timestamp.chk fix. - - 20 Jan 2004; Masatomo Nakano emerge: Improved the - list of --tree by TGL's patch. This should close #38070. - - 20 Jan 2004; Masatomo Nakano emerge: Removed debug - message without --debug. This should close #23840. - - 19 Jan 2004; Masatomo Nakano emerge: Improved - timestamp check of rsync. This should close #37403. - - 19 Jan 2004; Masatomo Nakano portage.py: Improved - regeneration ld.so.cache. This should close #37858. - - 19 Jan 2004; Masatomo Nakano emerge: Fixed bug which - emerge doesn't block same package but different version. - (example: DEPEND="! portage.py: - Modified cpv_expand() to check package.mask. This should close #38592. - - 19 Jan 2004; Masatomo Nakano portage.py: Escaped - regualar expression for replace entry in fixdbentries(). - - 18 Jan 2004; Masatomo Nakano portage.py: - Fixed AUTOCLEAN delay problem in .50pre* by TGL's patch. This close - #38189. Fixed unmerge failture bug when 'ebuild foo-1.0.0 unmerge'. - These close #38189, #38366 - - 18 Jan 2004; Masatomo Nakano emerge, portage.py: - Fixed "ebuild /foo/bar-1.0.0.ebuild unmerge" and "emerge bar-1.0.0 unmerge" - problems. This should close #38420. - - 17 Jan 2004; Masatomo Nakano portage.py: Fixed - "!<=" style block problem. Fixed symlink with absolute path - problem in treewalk(). - -*portage-2.0.50_pre16 (13 Jan 2004): Quick Fixes -- ~arch version - - 13 Jan 2004; Nicholas Jones portage.py: Removed an - unnecessary depend call that double eclass-using ebuild's cache regen - time. - -*portage-2.0.50_pre15 (12 Jan 2004): Quick Fixes -- ~arch version - - 12 Jan 2004; Nicholas Jones portage.py: Unmerge - traceback fix. - -*portage-2.0.50_pre14 (12 Jan 2004): Quick Fixes -- ~arch version - - 12 Jan 2004; Nicholas Jones emerge: Fix for - traceback on '-S'. - - 12 Jan 2004; Nicholas Jones repoman: Fix for - traceback on --help. - - 12 Jan 2004; Nicholas Jones sandbox: Fix for - sandboxpids.tmp file accesses. - - 12 Jan 2004; Nicholas Jones portage.py: Sandbox, as - above. Catch invalid package names and print a sane message about it. - -*portage-2.0.50_pre13 (11 Jan 2004): Fixes - - 11 Jan 2004; Nicholas Jones cnf/*: Updated the - Advanced masking section to aid the reduction of user complaints and - requests for unreasable usage of ACCEPT_KEYWORDS. - - 11 Jan 2004; Nicholas Jones portage.py: A counter - fix was fixed to actually check the counters of all CP versions to ensure - the new counter is higher than all existing ones. Modified the dblink - class to have class lockfiles for the db and tmpdb dirs as well as lock - other files before editing. Reorganization of the merge code in dblink - so that the tmpdb is filled immediately after preinst and prior to the - actual FS merging -- COUNTER and CONTENTS go directly into the tmpdb - and not into the infodir. - -*portage-2.0.50_pre11/12 (09 Dec 2003): repoman/binpkg/exit conditions - - 09 Jan 2004; Nicholas Jones emerge: getbinpkgonly - fixes for emerge -G world, should behave properly now instead of using - ebuild masks. Only downloads immediately before a merge -- fetchonly now - applies to binary packages. - - 08 Jan 2004; Masatomo Nakano repoman: Ignore other - arches check in repoman when --ignore-other-arches(-I). - -*portage-2.0.50_pre10 (06 Dec 2003): API change + enhancements - - 06 Jan 2004; Nicholas Jones ebuild.sh: Fix for - dyn_preinst being called before IMAGE was set -- IMAGE is now valid - in pkg_preinst. Added suidctl for SELinux. - - 06 Jan 2004; Nicholas Jones emerge: Added -P to - initial cvs checkout. - - 06 Jan 2004; Nicholas Jones quickpkg: Fix for - the 'tar up /' problem. - - 06 Jan 2004; Nicholas Jones portage.py: Caught a - traceback generated by bad depend atoms for repoman. Fixes from genone - for package.*. Fixed the checks for doebuild calls in treewalk that was - ignoring exit conditions for ebuilds. - - 04 Jan 2004; Masatomo Nakano repoman: Added PDEPEND - dependency check. This closes #24796 - - 04 Jan 2004; Masatomo Nakano repoman, portage.py: - Added new dependency check to repoman. This closes #36887. - - 03 Jan 2004; Masatomo Nakano emerge: Modified - to specific port number in emerge sync. This closes #36994 - - 02 Jan 2004; Masatomo Nakano portage.py: Fixed - a problem that emerge doesn't block package when it's required. - It happens in .50_pre*. - - 02 Jan 2004; Masatomo Nakano portage.py: Fixed - issue with getsize() when --debug. - - 02 Jan 2004; Masatomo Nakano portage.py: Fixed - issue with virtual. This closes bug #9050, #22225, #29499. - - 01 Jan 2004; Masatomo Nakano ebuild, emerge, portage.py: - Fixed issue with not cleaning up temp directory. This closes bug #34967. - - 31 Dec 2003; Masatomo Nakano emerge: - Fixed 'emerge sync' issue which continuously connects to same host. - - 31 Dec 2003; Nicholas Jones emerge: Found the line - that was causing the package dir to be printed... It was a spawn call. - - 31 Dec 2003; Nicholas Jones portage.py: Fix for - the symlink corruption in the db from the movefile() bug. - - 29 Dec 2003; Masatomo Nakano portage.py: - Fixed bug which emerge stops when no denpendencies exist in || ( ) - by USE flags. This closes #36568. - - 29 Dec 2003; Masatomo Nakano emerge, portage.py: - Added an ambiguity package check when emerge. This closes bug #22700. - -*portage-2.0.50_pre9 (24 Dec 2003): API change + enhancements - - 24 Dec 2003; Nicholas Jones ebuild.sh: Added - PORTAGE_TMPDIR to SANDBOX_READ/WRITE to ensure it works. SpanKY's - patch for use negation added (use !foo). pkg_setup doesn't die on - a non-zero exit status. - - 24 Dec 2003; Nicholas Jones emerge: using os.uname - instead of calling out to uname. - - 24 Dec 2003; Nicholas Jones quickpkg: Added SpanKY's - patch for delayed exit/error conditions. - - 24 Dec 2003; Nicholas Jones xpak.py: chdir's added - to the getcwd fix for missing dirs. - - 24 Dec 2003; Masatomo Nakano emerge: Added OVERLAY - directories display for --verbose. - -*portage-2.0.50_pre8 (24 Dec 2003): API change + enhancements - - 22 Dec 2003; Nicholas Jones ebuild.sh: Added - /proc/self/maps to SANDBOX_PREDICT, and /dev/shm to read/write. - - 22 Dec 2003; Nicholas Jones emerge: Added automake - and autoconf versions to the output of emerge info. - - 22 Dec 2003; Nicholas Jones etc-update: Added - edit merged file option -- defaults to EDITOR var or "nano -w". - - 22 Dec 2003; Nicholas Jones portage.py: Use - os.uname instead of calling out to uname which might not exist. - -*portage-2.0.50_pre7 (22 Dec 2003): API change + enhancements - - 22 Dec 2003; Nicholas Jones ebuild.sh: patch to - quote most of the path operators that might involve spaces. - - 22 Dec 2003; Nicholas Jones portage.py: Fix for - invalid entries in package.keywords. Character chopping on mirrors - fixed again. - - 21 Dec 2003; Masatomo Nakano bin/ebuild, bin/emerge, - pym/portage.py: Changed to show disabled USE flags from use.mask when - using emerge -vp. And fixed use.mask issue. - - 20 Dec 2003; Nicholas Jones portage.py: Rewrote - match_from_list -- Simplified and made pkgcmp and match_from_list - properly compare package names. - - 20 Dec 2003; Nicholas Jones repoman: Fix for mysigs - traceback when signing. - - 20 Dec 2003; Nicholas Jones portage.py: Added - PYTHONPATH to the specials list -- created a colon_seperated list. - Fixed reset() in class config so that you can specify keeping the - pkg dictionary when resetting the values. - - 19 Dec 2003; Masatomo Nakano repoman: Added check - whether "ebuild foo.ebuild digest" succeeds. - - 19 Dec 2003; Nicholas Jones portage.py: Fix for - pkg settings being maintained after an unmerge. - - 19 Dec 2003; Nicholas Jones pym/portage_db_*: Moved - to using cPickle instead of marshal. More standardization of the API. - - 18 Dec 2003; Masatomo Nakano repoman: Added virtual - dependency check on each arch. - - 17 Dec 2003; Nicholas Jones portage.py: Fixed a - permission issue involving $T and userpriv. Lockfile touchup. - - 17 Dec 2003; Nicholas Jones portage_db_*: Added - templates and db for cache interfaces. Presently have a anydbm and a - flat file interface working. See the test for operations. - - 15 Dec 2003; Nicholas Jones emerge: Added a call - to portageq that causes python to create optimized modules prior to it - ending up inside the sandbox. Added more output and logging to sync. - - 15 Dec 2003; Nicholas Jones prepstrip: 'tree' is not - the same as 'true'. - - 15 Dec 2003; Nicholas Jones portage.py: invalid - settings in package.keywords caused a traceback -- fixed with error message. - -*portage-2.0.50_pre1 (12 Dec 2003): API change + enhancements - - 10 Dec 2003; Nicholas Jones chkcontents: Uses portage - functions to do md5sum calcs. - - 10 Dec 2003; Nicholas Jones ebuild.sh: Removed try() - as it isn't used, and was deprecated for a long while. Genone's fetching - size display added for --verbose. License display added. Added a little - debug for IUSE so we can figure out the binary package --verbose IUSE - issues that are randomly reported. XXXXXXXXXXXXXXXXXXX's 'buildsyspkg' - patch for building only system packages into tbz2s. Unmerge fix for new - settings instances. RSYNC_RATELIMIT added. - - 10 Dec 2003; Nicholas Jones portage.py: ADA path - variables added to specials for env_update. Error messaeg correction for - make.defaults syntax errors. Unmerge now uses the environment file, if it - exists, to get the complete environment back to perform unmerge operations. - load_infodir() uses pkg settings completely now. Fixed the passing of - settings in unmerge and dblink. Fixed an issue regarding unlinking lockfiles - while inside of a sandbox. - - 09 Dec 2003; Nicholas Jones ebuild.sh, *.sh: - Moved helper scripts into bin/functions and made them sourceable -- they - now will die in cases where sub-parts fail. dodoc and keepdir are now - recursive-capable. - - 09 Dec 2003; Nicholas Jones emerge: emerge.log now - set as portage:portage with 0660 perms. --debug now enables tracebacks - for dep generation instead of moving code out of the try block. - - 09 Dec 2003; Nicholas Jones g-cpan.pl: rac's patch - to get arch list from portage's list of arches in the profiles. - - 09 Dec 2003; Nicholas Jones repoman: Moved a bit of - the existing gpg code around -- it might work as is, but requires 'sign' - in features. Fixed a potential for repoman to miss updates that should - get a new manifest and commit. Fixed digest/manifest generation for - non-packagedir runs of repoman. - - 09 Dec 2003; Nicholas Jones emergehelp.py, make.conf, - getbinpkg.py: Message touch ups. - - 09 Dec 2003; Nicholas Jones portage.py: load_infodir() - uses pkg settings now instead of env and backup. Genone's custom mirror - patch included. Added some missing 'strict' flags for recursion in digest*(). - Refixed the invalidentry stuff that was lost across patch merges. Fix for - pkg-keywords from genone included. Genone's deprecated profile patch for - reporting to a user that their current profile is deprecated. Message about - missing arch.list instead of spouting invalid keywords messages. - - 08 Dec 2003; Masatomo Nakano repoman: - Added all arch dependency check. This closes bug #24160. - - 07 Dec 2003; Masatomo Nakano emerge,portage.py: - Fixed bugs. 1.--debug doesn't work 2.Portage breaks files - in /var/db/*/*. 3.No stop if dependency problem happens. - They are only cvs version problems. - - 01 Dec 2003; Masatomo Nakano emerge: Fixed bug which - always remakes info dir file. - - 29 Nov 2003; Masatomo Nakano portage.py: Fixed issue with - ebuild name rule. Fixed typo with variable name. - This closes bug #17172,#34666 - - 29 Nov 2003; Masatomo Nakano emerge: Fixed issue with - lacking the "setting" argument for pkgmerge() - - 29 Nov 2003; Masatomo Nakano emerge: fixed rsync bug. - This closes bug #34660. - - 28 Nov 2003; Nicholas Jones portage.py: Migration - to non-global settings started -- class config has new functionality and - is locked after portage is finished initializing -- changes cannot be made - to the global instance of config 'settings' -- reset() is now functional, - setcpv() loads PKGUSE from /etc/portage/package.use, load_infodir() loads - all small files (under 4k) from the vardb directory of an installed package - so that operations have the same post* settings as they had at merge time. - Begin modifications to spawn() to allow for files/pipes to be used for - IO instead of using getstatusoutput which does not take an environment - parameter like execve(). check_config_instance() ensures that the provided - parameter is a 'class config' instance -- for ensuring that everything is - being passed properly with the changes. Fix for the local FS mirror issue - where it removed the first '/' instead of the last one. doebuild() cleanups - for readability and pkguse enhancements -- also remove getstatusoutput() - usage for depend so that we don't have to modify the active environment. - Fix for symlink mtime values returned from movefile. (Nakano) SLOTMOVE - added to global update functionality to fix some issues where a package - suddenly must become slotted. portdbapi takes a root parameter instead - of using settings. Slightly more useful output from depend. binarytree() - now takes a pkgdir instead of using settings. Portage will now die if - ebuild.sh exits on a signal. - - Moved some functions around and renamed them for general use -- derived - from match2 in class portagetree: - match_to_list() find all atoms in a list that match a given package. - best_match_to_list() determines the most specific match. Needs work. - match_from_list() find all packages in a list that match a given atom. - - 28 Nov 2003; Nicholas Jones emerge: Fixed an issue - with searchdesc wanting root permissions if run as non-root. Migrated to - the non-global config class. EMERGE_FROM added for the dyn_preinst patch - -- Indicates if a merge is occuring from an ebuild or from a binary. Patch - for rsync timestamp checking from Nakano. - - 28 Nov 2003; Nicholas Jones ebuild.sh: Save PKGUSE. - Pebeneto's patch for dyn_preinst and SELinux added as a fix for binary - and ebuild merges. Added a kill for portage during the depend phase so - that portage will actually die if you control-C. - - 28 Nov 2003; Nicholas Jones *: MASSIVE set of changes - to start using locally defined 'class config' instances. This allows us to - start working on some parallelism among other things. Created this way: - mysettings = portage.config(clone=portage.settings) - - The Following functions now take a 'config' parameter: - spawn(), fetch(), digestgen(), digestcheck(), spawnebuild(), doebuild(), - merge(), dep_opconvert(), dep_check(), dblink.__init__() - - package.keywords is now implemented curtasy of genone/max. PKGUSE was - rewritten for the global config killing and is also included. X11 man - pages now found and zipped correctly. SYS.PATH fixes for the python - migration -- issue actually only shows up on 2.2 systems because of how - compiled modules are used if found regardless of the original source's - existance. - - 28 Nov 2003; Nicholas Jones tabcheck.py: An easier - way to make sure that all the python stuff is correctly using tabs and - not mixing spaces. - - 28 Nov 2003; Nicholas Jones xpak, xpak.py: Fixes - to ensure that it works if the current dir is missing and that the python - path gets set properly. - - 22 Nov 2003; Daniel Robbins portage.py: Fixed - calls in vartree method to invalidentry().... made them call call - self.dbapi.invalidentry() (there were multiple wrong method calls.) - - 10 Nov 2003; Nicholas Jones md5check.py: Checks all - digests and SRC_URIs for filenames and associated MD5s. Reports collisions - between versions/packages, missing, and extra lines in digests. - -*portage-2.0.49-r17/18 (10 Nov 2003): Fixes - - 10 Nov 2003; Nicholas Jones *: Changed portage to - be the first path in sys.path for all python scripts. Also enabled - optimizations from the scripts to ensure everything imported is built - for speed. ebuild: applied fix for the '//' root breaking the db[]. - prepstrip: etdyn quickfix - - 10 Nov 2003; Nicholas Jones portage.py: fix for - RESTRICT=nouserpriv. GENTOO_MIRRORS can have paths set to take files - from. Fixes for mishandled cache data regarding *pkgsplit(). Fixes for - '*' being returned as part of a package split. An 'invalidentry()' fix - for a traceback. Nakano's fixes for virtual removals not working properly, - sandbox violations during pkg_nofetch, || depend selection. Genone's - fixpackages speedup. - - 10 Nov 2003; Nicholas Jones ebuild.sh: PORTAGE_TMPDIR - fix for distcc. Variable passing bug patch for export_functions. Exit 1 - added for nofetch to stop sandbox violation. Nakano's --tree patch added. - Improved the unmerge messages to denote what kind of unmerge fails. Info - pages regex pattern adjusted to allow most any name for a page. - - 10 Nov 2003; Nicholas Jones repoman: genone's xml - linting additions. - - 01 Nov 2003; Robin H. Johnson pym/cvstree.py: - fix bug #32071, by properly escaping a string to not be a regex. Checked - thru entire *.py tree and found this is the only mis-use of strings that - need to be escaped. - - 31 Oct 2003; Daniel Robbins portage.py: /lib/modules - now gets "unmerge protection." This is half of the config protection - functionality. It means that anything in /lib/modules will not be deleted - when a package is unmerged (often automatically when a user merges a - kernel module ebuild for a new kernel.) This solves the "my module - disappeared!" issue. This closes bug #1477. - - 31 Oct 2003; Daniel Robbins emerge: Should no longer - spit out wacky "!!! no match found" warnings when auto-cleaning. - - 30 Oct 2003; Daniel Robbins portage.py: Only run - depscan.sh if it exists on disk. This allows Portage to run inside a stage1 - where /sbin/depscan.sh doesn't exist. - - 30 Oct 2003; Daniel Robbins portage.py: Applied fix to - allow multi-level "use? ( )" in SRC_URI, closing bug #16159. - -*portage-2.0.49-r15/16 (21 Oct 2003): Fixes - - 21 Oct 2003; Nicholas Jones fix-db.py: was broken - for python2.3 -- fixed now. - - 21 Oct 2003; Nicholas Jones portage.py: Added - lockfiles to prelink md5 checks. Fixed caching bug where cache objects - were passed back as pointers instead of copies. Added 'invalidentry' - function to handle lockfiles -- It tests/deletes them using unlockfile. - Added fix-db.py to the 'databases is broken' messages. - - 21 Oct 2003; Nicholas Jones ebuild.sh: added CDPATH - to unset. SELinux fix for sandbox. - -*portage-2.0.49-r13/14 (10 Oct 2003): Fixes - - 10 Oct 2003; Nicholas Jones *: Full adaptations - for python2.3 implemented. Installation setup for /usr/lib/portage/pym - instead of site-packages. Fix for Old-Instance unmerging which stopped - happening due to changed path names. Binaries shouldn't merge under - fetchonly. - -*portage-2.0.49-r11/12 (08 Oct 2003): Internal Only. - -*portage-2.0.49-r10 (08 Oct 2003): Fixes - - 08 Oct 2003; Nicholas Jones portage.py: Fixed a - seemingly random traceback involving lockfiles -- Categories weren't - being created before a lockfile was attempted in the category directory. - More enhancements to aid migration to python-2.3. Added writemsg() as - a general function for outputting information -- Takes an argument that - is interpreted as debug level and prints synchronisly to stderr. Yanked - domenu pending a GLEP. - -*portage-2.0.49-r9 (07 Oct 2003): Fixes - - 07 Oct 2003; Nicholas Jones portage.py: Atomic lock - updates and self.create() fixes. Counter enhancements. - -*portage-2.0.49-r8 (05 Oct 2003): - - 05 Oct 2003; Nicholas Jones *: Changed #! line to - use /usr/bin/python to aid in migration. - - 05 Oct 2003; Nicholas Jones ebuild.sh: More use/has - output fixups. - - 05 Oct 2003; Nicholas Jones emerge: General cleanups. - Added in baselayout info to emerge info. --skipfirst isn't a persistent - option on resume anymore. - - 05 Oct 2003; Nicholas Jones fix-db.py: New script to - aid in diagnosing and eventually fixing /var/db issues. It makes almost no - modifications at the moment. - - 05 Oct 2003; Nicholas Jones prepstrip: Addition of - a condition for etdyn binaries -- they list as shared objects but aren't. - - 05 Oct 2003; Nicholas Jones repoman: Added non-cvs - patch -- repoman can be used outside of cvs trees for scanning/checking. - Added a masking fix for packages that use 'arch?' dependencies. Permission - fix on stats pickle. - - 05 Oct 2003; Nicholas Jones portage.py: Subversion - directories are ignored along with CVS in listdir() when ignorecvs is set. - USE_EXPAND is fixed. Global and package counter fixes. ATOMIC VARDB moves - are now implemented -- Still need a way to recover broken operations. - Counter functions are now implemented in dbapi only. vardbapi now implements - aux_get for all possible files listed in the package's info directory. New - functions: lockfile()/lockdir(), unlockfile()/unlockdir(). - -*portage-2.0.49-r7 (26 Sep 2003): Binary package fixes + spacing issues. - - 26 Sep 2003; Nicholas Jones emerge.sh: Spacing fixes - for tab/space mixes. glob fix for getgccversion(). - - 26 Sep 2003; Nicholas Jones portage.py: Fix for binary - use flag tb. - - 26 Sep 2003; Nicholas Jones xpak.py: Fix for scan() - tb when file is invalid or shorter than XPAK header length. - -*portage-2.0.49-r6 (23 Sep 2003): SELinux, DistCC, and pretend output fixes. - - 23 Sep 2003; Nicholas Jones ebuild.sh: selinux context - fixes -- using ${T} now. DISTCC_DIR added by default and given an addwrite. - - 23 Sep 2003; Nicholas Jones emerge: gccversion() added - to help distcc and the version checking calls that break distcc permissions. - Fix for create() and the useflag passing from binary packages. When using - pkgs, is_newer_ver_installed() no longer trashes ebuild names. Don't look - for fetch restrictions with binary packages. Included a modified patch that - shows only in-slot versions for packages during pretend output -- In-slot - now shows up exactly as a single-slot package would -- New slots show up - as new packages -- proper output. Killed debug for everything except regen - which now shows the deps being regenerated. Fixed regen to ignore keywords - just like sync does already... should fix a few missing cache entry problems - on rsync1 and speed up sync times all around. - - 23 Sep 2003; Nicholas Jones portage.py: Additions for - distcc support. - - -*portage-2.0.49-r5 (19 Sep 2003): Fixes - - 19 Sep 2003; Nicholas Jones ebuild.sh: Make - DISTCC_DIR set if not defined. - - 19 Sep 2003; Nicholas Jones emerge: Fix for -U - introduced bugs with Str+None tracebacks. Mild change to log info -- Added - short pkgname before ebuild. Eclassdb changes and flush/save calls. - - 19 Sep 2003; Nicholas Jones portage.py: Unregister - signal handling after receiving the signal and resend the signal we got. - Run depscan during env-update. Migrated eclass stuff into it's own pickle. - Code for moving /var/cache/edb/dep into a pickle for each category added -- - disabled via hardcoded value presently. Removed some try blocks in favor - of detecting the cause of an error first -- Hopefully gives a little speed - up. Cache fixes and useful output added. A tbz2 moving bug where an error - was printed about files the destination existing already is now fixed. The - dircache is cleared on every unmerge now, to ensure the cache does not - interfere. bzip2 is spawned with the quiet flag now. Update list is sorted - for proper year/quarter order now. -arch isn't an invalid keywork anymore. - Generic pickle reading and writing functions added. - -*portage-2.0.49-r4 (10 Sep 2003): Fixes - - 10 Sep 2003; Nicholas Jones *: Added the facility - to incorporate binary package use flags when calculating deps. Changes in - -r2 and -r3 included quick fixes to SELinux code and the addition of - LINGUAS to USE_EXPAND. - -*portage-2.0.49-r1 (25 Aug 2003): Fixes - - 25 Aug 2003; Nicholas Jones emerge: -K traceback fix. - Made fetchonly quit traversing the merge code after fetching. - - 25 Aug 2003; Nicholas Jones portage.py: Removed - auxcache saving code -- A few bugs and caching problems need to be resolved. - Moved a block of code in aux_get inside of an existing conditional -- Should - provide a small speedup. - -*portage-2.0.49 (22 Aug 2003): GRP downloading, Selinux, General Fixes - - 22 Aug 2003; Nicholas Jones portage.py: Make - auxcache saving more friendly. - -*portage-2.0.49_pre20/21 (20 Aug 2003): Fixes + security enhancements - - 20 Aug 2003; Nicholas Jones portage.py: Fix for - auxcache saving. - -*portage-2.0.49_pre19 (20 Aug 2003): Fixes + security enhancements - - 20 Aug 2003; Nicholas Jones *: Updates to Wayne's - modifications on dispatch-conf. - - 20 Aug 2003; Nicholas Jones ebuild.sh: sfperms - added to strip permissions if set in features. selinux context support. - Nakano's cleanups for unmerge output. Added distcc and ccache versions - into emerge info's output. 'autoaddcvs' FEATURE is documented in make.conf. - - 20 Aug 2003; Nicholas Jones portage.py: Selinux code - added. No longer traceback on cp_list for categories. Added in a patch to - use a pickle for auxcache storing. Should help slow IO boxes. - -*portage-2.0.49_pre18 (15 Aug 2003): Fixes. - - 15 Aug 2003; Nicholas Jones ebuild.sh: Nakano's - fix for a glob expansion bug on a tar call. - - 15 Aug 2003; Nicholas Jones emerge: Nakano's fixes - for exiting on a signal and incorrect output for the unmerge screen. - - 15 Aug 2003; Nicholas Jones portage.py: Added in - patch to shuffle thirdparty mirrors. Nakano's fixes for digests+fetching - bugs/messages/errors. Virtual stripping fix. - - 15 Aug 2003; Nicholas Jones *: Fix to emerge -V - and related output. Typo fixes. Parent thread no longer drops root in - userpriv. 'autoaddcvs' feature now determines if portage will auto-add - files to cvs. Virtuals fix for an empty key line. Added user categories - file as /etc/portage/categories. - -*portage-2.0.49_pre17 (30 Jul 2003): Resuming/wget GRP, Sandbox updates - - 30 Jul 2003; Nicholas Jones *: GRP updates to - use RESUMECOMMAND to determine how to download GRP binaries. Adjustments - to the portage.spawn() code to try and speed it up by eliminating the - copy phase (copy-on-write forking). Massive messages for corrupt FS issues. - Movefile() checks to ensure we actually complete the moves. Killed the - broken pipe message for tbz2 extraction. - -*portage-2.0.49_pre16 (29 Jul 2003): Touchups - - 29 Jul 2003; Nicholas Jones *: Clean up the debug - output and quickfix downloading tbz2s. - -*portage-2.0.49_pre15 (29 Jul 2003): Fixes - - 29 Jul 2003; Nicholas Jones repoman: imported time. - - 29 Jul 2003; Nicholas Jones emerge: Corrected the - logic used to determine whether a package or an ebuild is used when given - the option. - - 29 Jul 2003; Nicholas Jones portage.py: Changed a - lot of calls using 'print' into sys.stderr.write() calls. Added try/except - around the source lstat to catch funky errors where the file doesn't really - exist -- Presents descriptions to users about what to do. Added more catches - for movefile() calls to ensure it dies on failures. Changed the tbz2 - extraction call to stop the 'cat: broken pipe' message. - -*portage-2.0.49_pre14/48-r7 (24 Jul 2003): Fixes and getbinpkg caching - - 22 Jul 2003; Nicholas Jones *: Typo fixes for - the ECLASS_DEPTH comparisons in ebuild.sh. Traceback fixes for blocking - packages in depclean and in pretend. Caching added to getbinpkg code -- - generation of cache supported, but cachefile is staticly located. Langs - patch from Nakano in bug #9988 included. - -*portage-2.0.49_pre13 (22 Jul 2003): Fixes - - 22 Jul 2003; Nicholas Jones doman: Doesn't gzip - .keep files now. - - 22 Jul 2003; Nicholas Jones ebuild.sh: USERLAND - fix. ** ECLASS depth tracker and additions to the new depend code. ** - - 22 Jul 2003; Nicholas Jones emerge: Fetch restriction - now adds a red F to the pretend output. Made the blockers message better. - Added 'local' to rsync excludes to allow the category to be added for admins. - - 22 Jul 2003; Nicholas Jones portage.py: Fixed a TB - caused by a missing 'strict' reference --- Needs to be fixed better. Fixed - a typo in the populate code for bintree/getbinpkg. - -*portage-2.0.49_pre11 (16 Jul 2003): GRP, General, VIDEO_CARDS/INPUT_DEVICES - - 16 Jul 2003; Nicholas Jones quickpkg: SpanKY's - friendly edition now included. - - 16 Jul 2003; Nicholas Jones portage.py: USE_EXPAND - support for expanding bash variables into USE --- VIDEO_CARDS="blah" - USE="video_cards_blah". Added a notice about fetching metadata so you - can see that it's happening. - - 16 Jul 2003; Nicholas Jones make.globals*: Added - default CHUNKSIZE for binhosts. Added defaults for USE_EXPAND which is - used to expand variables into USE from the give names. - - 16 Jul 2003; Nicholas Jones *: Debug removal. - -*portage-2.0.49_pre10 (16 Jul 2003): GRP and General Fixes - - 16 Jul 2003; Nicholas Jones *: - Quick fix for a breakage in the GRP --getbinpkg code. - -*portage-2.0.49_pre9 (16 Jul 2003): GRP and General Fixes - - 16 Jul 2003; Nicholas Jones ebuild.sh: add - LDFLAGS and ASFLAGS. Exports are only done if vars are already set. - - 16 Jul 2003; Nicholas Jones emerge: Added support for - --getbinpkg and --getbinpkgonly --- GRP complement. Fixes for blocking- - not-working bug - - 16 Jul 2003; Nicholas Jones repoman: Patch to detect - incomplete digests. - - 16 Jul 2003; Nicholas Jones portage.py: ebuild fetch - now checks md5sums (run from ebuild). Support for getbinpkg. - - 16 Jul 2003; Nicholas Jones xpak.py: Added more in- - memory operations support. - - 16 Jul 2003; Nicholas Jones getbinpkg.py: Supporting - code for binary package retrieval. - -*portage-2.0.48-r2 (29 Jun 2003): Fixes and Multiple Overlays - - 29 Jun 2003; Nicholas Jones ebuild.sh: Fixed the - commands for tar. - - 29 Jun 2003; Nicholas Jones emerge: Mode the chdir - to fix the spanky bugs down to post_emerge to fix the "can't merge an - ebuild file with an absolute path" bug. - - 29 Jun 2003; Nicholas Jones portage.py: Added function - suffix_array(array,suffix) which takes an array and adds suffix to the end - of each element. Added 'cd / ;' into the getstatusoutput() calls to ldconfig. - Added a check so that portage doesn't try to add files/dir from a non-cvs - directory. Added 'manifest' target to ebuild/portage to only adjust the - manifest. Added Multiple overlay support -- Should be fairly thorough -- - needs more debug though. Fixed portdbapi::new_protect_filename(). - -*portage-2.0.48-r2 (29 Jun 2003): Cleanups and Fixes (testing) - - 29 Jun 2003; Nicholas Jones ebuild.sh: Lots of - consistency cleanups. Added more files to the var/db data for future - use. Added more die conditions to failure points. Fixed/Hacked a fix - into the inherit-not-dieing problem. Set TMPDIR and TMP globally. Added - notice for multiple inheritance. Fixed inheritance problem with multiple - inheritance clobbering previous list of eclasses. Basic support for - multiple overlays added to ebuild.sh. - - 29 Jun 2003; Nicholas Jones emerge: SRC_URI fix for - 'rm /etc/*' problem. Spanky bug: chdir to / to avoid problems when merging - from inside a builddir that gets deleted. - - 29 Jun 2003; Nicholas Jones etc-update: Added notice - for symlinks in cfg_prot setups. - - 29 Jun 2003; Nicholas Jones repoman: complain if - FEATURES=cvs not set. - - 29 Jun 2003; Nicholas Jones portage.py: Added in - a work around for the 'USE=+useflag' users. Added support for nouserpriv - via RESTRICT. Fix the bug with ROOTs with no previous file causing a TB - from counter_tick(). Make symlinks follow config_protect just like normal - files. - - 10 Jun 2003; Daniel Robbins ebuild.sh, portage.py, - various commands in bin/, cnf/make.conf.mac, cnf/make.globals.mac: - Added preliminary Mac OS X/BSD support. - - 06 Jun 2003; Daniel Robbins ebuild.sh: new eclass - dependency implementation to totally isolate eclass dependency tweaks - from in-ebuild dependency tweaks. eclasses now absolutely do not touch - DEPEND and RDEPEND. Any dependencies added by eclasses are transferred - to another variable and added in to DEPEND and RDEPEND after the entire - ebuild has been processed, and after RDEPEND has optionally inherited a - value from DEPEND due to it being unset. The result of this change is - that inherit statements no longer need to be placed strategically in an - ebuild so that they are after the DEPEND and RDEPEND, and fix a host of - other eclass mis-use/side-effect bugs. - -*portage-2.0.48-r1 (29 May 2003): Touchups. - - 29 May 2003; Nicholas Jones ebuild.sh: Quick fixes - to a couple of rare bugs. Added some quoting to $S. Removed the DISTCC - hosts variable. Moved build-info's creation around so that it actually - works for non-portage-compiled merges. - - 29 May 2003; Nicholas Jones repoman: Quick fix for - the files-dir-not-added lack of notification. Added in a fix for a possible - security problem with the repoman commit messages and symlink-attacks. - - 29 May 2003; Nicholas Jones cnf/*: Added in a diff - from 'Danny' that contained a SYNC cleanup and expanded explanation. :) - - 29 May 2003; Nicholas Jones output.py: Fixed the - TitleBar and unset TERM issues. - - 29 May 2003; Nicholas Jones portage.py: Added new - functions to aid in determining virtuals. cpv_all() added to dbapi -- it - displays all versions instead of just package names -- cp_all() now calls - this function to gain it's data. get_provide() and get_all_provides() added - to collect PROVIDE info from vartree packages. getallcpv() added to vartree - to reference the dbapi call. Always set ignoring errors on findname now. - Cleaned up the virtuals-trimming code. Don't mention the fixpackages script - if the user doesn't have any packages. - -*portage-2.0.48 (20 May 2003): Cleanups Release. - - 20 May 2003; Nicholas Jones emerge: Tiny cleanups. - Fixed the profile information in emerge -V for symlinks that have a - trailing '/' in them. Fix 'emerge -s' filesize lookups to use a new - function finddigest() from dbapi. - - 20 May 2003; Nicholas Jones emergehelp.py: Updated. - - 20 May 2003; Nicholas Jones etc-update: Small - fixups for pager issues. Made the nothing-to-do exit message 'happier'. - - 20 May 2003; Nicholas Jones extra-functions.sh: - Beat the debian-utils requirement out of the functions. Prefers them, - but falls back to already-existing tools otherwise. - - 20 May 2003; Nicholas Jones fixpackages: 75% - overhaul to match the new handling of update code. - - 20 May 2003; Nicholas Jones quickpkg: Understands - "--help" as an option now. - - 20 May 2003; Nicholas Jones man/*: Simple updates. - - 20 May 2003; Nicholas Jones portage.py: fetch() - now calculates md5sums when doing a fetchonly. finddigest() added for - finding digests -- gets overlay digests if existing. Binary packages - are only updated when explicitly requested via fixpackages as a command - or a FEATURES setting. Clear the dircache after portage initializes to - reduce memory consumption. - -*portage-2.0.48_pre6 (12 Apr 2003): General cleanups and fixes. - - 12 May 2003; Nicholas Jones portage.py: Additions - to better handle overlay ebuilds with regard to metadata cache. aux_get - calls findname2() which returns (location,in_overlay) -- findname() is - a wrapper for findname2(). Extra debugging fixes for findname() issues. - - 12 May 2003; Nicholas Jones ebuild.sh: Code - cleanups and a chgrp/chown pass to move all portage-owned files to - root ownership -- Two pass to leave specific-group and specific-owner - settings alone. - - 12 May 2003; Nicholas Jones emerge: code cleanups - and comment touchups. - - 12 May 2003; Nicholas Jones emergehelp.py: Updates - for --debug, --digest, and --skipfirst. - - 12 May 2003; Nicholas Jones g-cpan.pl: Added more - arches to the KEYWORDS. Made it copy files back to distfiles. - - 12 May 2003; Nicholas Jones prepstrip: Removed ${D} - from the outputted filenames during stripping. - - 12 May 2003; Nicholas Jones man/* cnf/*: - documentation updates. - -*portage-2.0.48_pre5 (29 Apr 2003): Cleanups and polish. - - 29 Apr 2003; Nicholas Jones portage.py: Another - typo fix. - -*portage-2.0.48_pre4 (28 Apr 2003): Cleanups and polish. - - 28 Apr 2003; Nicholas Jones portage.py: Quick fix - for a traceback/typo in the 'emerge -C' code. - -*portage-2.0.48_pre3 (28 Apr 2003): Cleanups and polish. - - 28 Apr 2003; Nicholas Jones portage.py: listdir() - now takes care of non-existance errors instead of propagating them --- can - take EmptyOnError=1 as a param to return [] instead of None. All calls to - portage's listdir() have been updated to the new conventions. listdir() - ignores .# files from cvs now when ignorecvs=1 is set. Fixes for another - world-depleting bug. If findname() is passed a virtual, it now informs - the user to report a bug, instead of weird tracebacks. Added code in - dblink::unmerge() to remove stale virtual entries when set under trimworld. - - 28 Apr 2003; Nicholas Jones etc-update: enabled the - diff pager again. - - 28 Apr 2003; Nicholas Jones emerge: --changelog - implies --pretend. Spelling fixes. Added --skipfirst to allow the first - package in a resume operation to be skipped over --- allows -e to rebuild - almost everything, even under weird circumstances. Located another missed - world-file-depleting bug in unmerge() calls. Included a patch to fix an - off-by-one bug in depclean. - - 27 Apr 2003; Nicholas Jones portage.py: Fix for - listdir() running on a non-existant dir -- returns None. Sets generated - files to the portage group -- Manifest & digests. Some coloring additions. - Handling of 'strict' features added. TEMPORARY addition of 'manifest' USE - flag so this can go mainstream now. Fixes in doebuild() to get unmerge - working again for ebuild. Debug code added to findname to help figuring - out the seemingly random tracebacks -- suspect is pkgsplit(). Unmasking - code for package.mask added in -- works just like mask, and can override - specific versions or ranges -- One per line: /etc/portage/package.unmask. - Security fix for python cPickle code -- mtimedb could create arbitrary - execution of code bug. Global update notices/info. Fixes for loops over - listdir() that depended upon raised errors to determine code flow. - - 27 Apr 2003; Nicholas Jones cvstree.py: Added in - 'removed' status checks. - - 27 Apr 2003; Nicholas Jones repoman: Added in more - cvs checks. /space/cvsroot is now complained about. - - 27 Apr 2003; Nicholas Jones emerge: Added in - PORTAGE_CALLER support to identify it as a 'do_update()' candidate. - - 27 Apr 2003; Nicholas Jones dodoc: Check sizes to - prevent 0 byte files from being added. - -*portage-2.0.48_pre2 (10 Apr 2003): Digests & Repoman - - 16 Apr 2003; Nicholas Jones repoman: Added CVS/Root - checks to ensure Manifests will be correct. Fixed local use-flag bug. - Commented out the no-stable code, as it can't be implemented well as is. - - 16 Apr 2003; Nicholas Jones prepstrip: Fixed a - problem where files were not being stripped. - - 16 Apr 2003; Nicholas Jones ebuild.sh: Added in - a call to 'make -n' when under the --debug flag. - -*portage-2.0.48_pre1 (10 Apr 2003): Digests & Repoman - - 10 Apr 2003; Nicholas Jones prepstrip: fix it so - that it actually strips and provides reasonable info. - - 10 Apr 2003; Nicholas Jones repoman: Added short - option for pretend. Added pretend capability to the majority of the - commit code. Bug fix for local IUSE code. Added in support for removed - cvs files. - - 10 Apr 2003; Nicholas Jones portage.py: Changed - 'manifest' to 'Manifest'. Removed the requirement that Manifests exist -- - complain about it, but only die if 'strict' is set. - -*portage-2.0.47-r15 (09 Apr 2003): New digests/manifests, touchups. - - 09 Apr 2003; Nicholas Jones bin/*: Fixes for Cross- - compiling. - - 09 Apr 2003; Nicholas Jones repoman: Quick touchups - in the category- and repository-level manifest calls. - - 09 Apr 2003; Nicholas Jones cnf/*: Added/sync'd - PORTAGE_NICENESS. - - 09 Apr 2003; Nicholas Jones portage.py: Fixed hole - in the listdir code that occured on cache expiration in the -r14 changes. - -*portage-2.0.47-r14 (09 Apr 2003): - - 09 Apr 2003; Nicholas Jones bin/*: Removed DEBUGBUILD - in favor of FEATURES/RESTRICT settings of nostrip. - - 09 Apr 2003; Nicholas Jones ebuild: Removed root - restriction so that digests can be made as non-root. - - 09 Apr 2003; Nicholas Jones emerge: Added niceness - - 09 Apr 2003; Nicholas Jones repoman: Added the - nostable/allmasked check in. Small cleanups. Move to 'manifests' instead - of enhanced digests. Added filters on $Id and $Header. Fixed commitmsg - and added short options. - - 09 Apr 2003; Nicholas Jones cvstree.py: More features - added. pathdata() provides dir or file info. isadded() gives cvs status. - - 09 Apr 2003; Nicholas Jones portage.py: listdir() - enhancements. Debug removal. Broke up the digest creation functions to - make them a little more generic. Added manifest code into the digest - calls. Moved code in doebuild() around to allow for non-root calls for - devs and repoman. Added 'PORTAGE_CALLER' env var to prevent repeated - running of unnecessary functions. - -*portage-2.0.47-r13 (02 Apr 2003): Fixes & Security -- Repoman+Digests - - 02 Apr 2003; Nicholas Jones emerge: Added debug to - the dep selection code in depgraph. - - 02 Apr 2003; Nicholas Jones cvstree.py: Added new - module to handle cvs information without having to ask 'cvs status' many - times to determine file locations. - - 02 Apr 2003; Nicholas Jones repoman: Major fix ups - to ease the introduction of enhanced digests. Intelligent cvs queries - and use of the new cvstree module for information about files in the tree. - Auto-digests, auto-fetches trivial cvs changes, detects changelogs that - exist but have not been added to cvs, and detects '*' in KEYWORDS. - - 02 Apr 2003; Nicholas Jones *: A typo fix or two. - prepstrip: fixup for sed's issues with '\000' (made it \001). - -*portage-2.0.47-r12 (27 Mar 2003): Fixes & Security -- Repoman+Digests - - 27 Mar 2003; Nicholas Jones portage.py: Moved all - initialization error messages to stderr.write() calls so that the output - doesn't get mixed will called data. Added a warning about not being in - the portage group. Color touchups. Digest path fixups. - - 27 Mar 2003; Nicholas Jones repoman: Significant - additions to the commit code to nicely handle the changes for enhanced - digests. Added --commitmsg and --commitmsgfile flags to allow easier - scripting. Added a REPOMAN environment variable to prevent portage from - running do_updates(). Added 'grouplist' which makes groupings of subparts - from a list of parts. Added do* functions to manage the recursion into - the dirs of the repository. - - 27 Mar 2003; Nicholas Jones xpak.py: Change from - lstat to stat... We're not concerned with links. Return 0 on not found. - - 27 Mar 2003; Nicholas Jones portageq: added new - functions: best_visible, mass_best_visible, all_best_visible. - - 27 Mar 2003; Nicholas Jones emerge: Added '--digest' - to force recreation of digests from the command line. Fixed portage version - comparisions for the 'update portage please' notices. - - 27 Mar 2003; Nicholas Jones ebuild.sh: Added an - extra rm of the 'successful' file. - - 26 Mar 2003; Alain Penders portageq: added - mass_best_version method to help GUIs resolve best versions. - -*portage-2.0.47-r11 (22 Mar 2003): Fixes & Security -- Winding up 2.0 series. - - 22 Mar 2003; Nicholas Jones portage.py: listdir() - now is capable of recursive calls and listing only files. Used in new - additions to digestgen() and digestcheck() for ebuilds and files/* -- - listdir(dir,recursive=0,filesonly=0). Digests now must contain all files - from files/ and also the ebuild -- non-archives are prefixed with '/'. - Full tbz2 fixes are now implemented... They can take a while to perform - so status thingies are provided. update_ents() provides a batch-update - as it would take rediculous amounts of time otherwise. - - 22 Mar 2003; Nicholas Jones : fixpackages calls - portageexit() to save the mtimedb state so it actually works. :) - - 22 Mar 2003; Nicholas Jones emerge: Added - 'xtermTitle' calls to emergelog to set the title during phases of merging. - Added more emergelog calls to provide more specific information. - - 22 Mar 2003; Nicholas Jones : Added two scripts to - aid portage. 'fixdbentries' takes (old, new, path) and does an inteligent - sed on all the db entries that should be changed. Used by global moves and - in the tbz2 fixes. 'fixpackages' expires the updates timestamp and reloads - portage to force do_updates() to run. Added missing Header lines. - - 22 Mar 2003; Nicholas Jones xpak.py: Correct off-by-8 - bug in last commit. infosize does not contain the full size... Offset - begins _after_ the marker -- Added xpaksize for complete offset from EOF. - - 22 Mar 2003; Nicholas Jones portage.py: Fix for - die-on-wheel-group-missing bug. The logfiles don't cause the counter - to be incremented and now match the merged package's COUNTER value. - get_counter_tick_core(root) does not increment the counter. Sandbox is - now working in all enabled cases, instead of just usersandbox. /var/db - and binaries (assuming they are RW) are now updated to contain the proper - info --- Added a 'fixdbentries' script to perform the updates to the data, - and added a 'move_ent' function to class binarytree (not fakedbapi). Added - a 'ebuild does not exist' error for the case of ebuilds in a wrongly named - directory. Added a notice for invalid tbz2's. Removed the 'make.defaults' - missing notice :-/. Duplicated the bintree creation so that it would be - available for do_update(). Catch when 'updates' is missing from mtimedb. - - 22 Mar 2003; Nicholas Jones output.py: Added xterm - title bar function to set the titles... xtermTitle(mystring). Only set - if using color and terminal is [axE]term. - - 22 Mar 2003; Nicholas Jones repoman: Additions - courtesy of Gerk and Vladamir... Checks all portage variables. Runs - a check against invalid (but still parsable) syntax errors in names. - Checks for invalid IUSE from use.desc and use.local.desc. Checks that - licenses are valid. Checks for legal keywords with a default set or - keywords.desc, if available. 'missingvar' tests moved to aux_get() calls. - - 22 Mar 2003; Nicholas Jones prepstrip: Added test - to allow cross-compile-stripping to work properly. Rewrite the script to - be whitespace-aware and recursively process directories at level 1. - - 22 Mar 2003; Nicholas Jones prepallstrip: Removed - all code from this script and made it a call to "prepstrip $D". - - 22 Mar 2003; Nicholas Jones g-cpan.pl: Add in chomps - for the portageq calls. - - 22 Mar 2003; Nicholas Jones emerge: Allow - --fetchonly of block'd packages. - - 22 Mar 2003; Nicholas Jones ebuild.sh: Cleanups and - corrections for sandbox which has been disabled and broken for a couple - revisions now. use_{enable,with} die messages removed as they are in sub- - shells when used and won't kill the merge --- Moved to echo >&2. - - 21 Mar 2003; Nicholas Jones xpak.py: Updates to make - the xpak code self-sustaining. Added basic documentation to the functions - and a description of the format in the comments at the top of the module. - -*portage-2.0.47-r10 (13 Mar 2003): Fixes -- Winding up 2.0 series. - - 13 Mar 2003; Nicholas Jones portage.py: Less strict - check of permissions when fixing permissions for userpriv -- only requires - 02070 and group portage instead of 02770 for check. - - 13 Mar 2003; Nicholas Jones g-cpan.pl: Fix to the - call to portageq. - - 13 Mar 2003; Nicholas Jones etc-update: Fix for - deleted files in a CONFIG_PROTECT situation. - - 13 Mar 2003; Nicholas Jones emerge: fix for keepwork - and keeptemp ** MUST ENSURE THAT CLEAN CLEANS BEFORE A FULL MERGE. - - 12 Mar 2003; Nicholas Jones emerge: Added more - conditions on rsync -- Proper error detection. Rsync failures will not - cause a cache regeneration. Portage no longer considers masked portages - candidates for 'An update to portage'. - -*portage-2.0.47-r9 (10 Mar 2003): Fixes -- cvs-src, ebuild.sh, repoman - - 10 Mar 2003; Nicholas Jones make.conf*: Adjusted - the LOGDIR message and change the default location to /var/log/portage. - - 10 Mar 2003; Nicholas Jones repoman: One more fix - for the PORTDIR setting -- '/usr/portage' was matching '/usr/portage.cvs'. - - 10 Mar 2003; Nicholas Jones etc-update: Added the - capability to automerge all files in the list -- with out without prompts. - - 10 Mar 2003; Nicholas Jones emerge: Added messages - on failure to create a depgraph -- Helps with bad DEPEND detection. Made - 'emerge sync' stop if it fails, and not update cache. - - 10 Mar 2003; Nicholas Jones ebuild.sh: added an - external extra_functions.sh file with extra functions for portage -- - it is flag-o-matic and pieces of eutils presently. Removed libdir/incdir - from einstall(). Added 'keepwork' to keep the source code after a package - is merged. Removed the 'local' declaration of ROOT in dyn_install() -- - this fixes has_version in src_install(). Fixed the sourcing of environment - so that variables are peristent across stages of a merge. Removed the - SANDBOX vars from the environment file, as that upsets SANDBOX. - - 10 Mar 2003; Nicholas Jones portage.py: Fixes to - permission problems with cvs-src and ccache (removed nested try's). Log - counter fix -- One log per package now. - -*portage-2.0.47-r8 (02 Mar 2003): Fixes -- cvs-src, ebuild.sh, repoman - - 02 Mar 2003; Nicholas Jones *: Fixes to eclass - errors and messages -- raise on not found. emerge --debug works for - ebuilds with syntax errors now -- needs better implimentation though, - debug=0 in params can't be used due to scope limits. - - 28 Feb 2003; Nicholas Jones *: reorg ebuild.sh again - to ensure that aliases are expanded properly. Repoman now determines the - proper PORTDIR to set when loading portage to scan the cvs tree. portage.py - fixes for cvs-src permission problems with userpriv. - -*portage-2.0.47-r7 (27 Feb 2003): Quick fix for eerror() problem. - -*portage-2.0.47-r6 (26 Feb 2003): Drop deprecated warnings for new syntax. - - 26 Feb 2003; Alain Penders emerge: Drop deprecated - warnings for new syntax. Don't make people switch to the new syntax - until it's agreed on by everyone. - -*portage-2.0.47-r5 (26 Feb 2003): Wicked Fast, BugFree v3.1, UserPriv - - 26 Feb 2003; Nicholas Jones *: Update docs and help - again to drop --system and --world, and pull them from emerge's command - line. General cleanups. - - 26 Feb 2003; Nicholas Jones emerge/portage.py: Fixes - to the cache directory permissions -- all dirs are properly owned by group - portage now. Add CCACHE_SIZE setting so we set a value for ccache. If the - dirs are set to the wrong perms, make sure they get changed recursively. - - 26 Feb 2003; Nicholas Jones ebuild.sh: Rearraged the - code blocks so that they are easier to follow -- no more code in between - functions. All code follows function definitions now. - -*portage-2.0.47-r4 (25 Feb 2003): Wicked Fast, BugFree v3, UserPriv - - 25 Feb 2003; Nicholas Jones *: Update docs and help - to match the deprecation of actions without '--' preceding them. - - 25 Feb 2003; Nicholas Jones portage.py: Message - updates. Fix secpass for portage user. Set PORTAGE_GID for ebuild.sh to - use regardless of GID in use (wheel/portage). Only try and delete things - in PORTAGE_TMPDIR if we have perms to do it... see secpass note. Moved the - cachedir creation after settings in created so that we can use spawn instead - of system for the calls to 'chown/chmod -R'. Fix the note on make.defaults. - Fix for the 404 catcher in the fetch code. - - 25 Feb 2003; Nicholas Jones emerge: Move all actions - into '--action' form -- Notify of deprecated usages. Moved the functions - from the top of emerge down below the command line parser for readability. - Kill FEATURES=noauto if we're running emerge -- it can break things. Make - -U imply -u so people aren't confused. --debug now enables all debug - variables in portage. Fix wheel/portage group requirements messages. Get - the current portage version when doing rsync via the portage tree's files - and not the loaded cache so that it is aware of changes immediately instead - of the next run. - - 25 Feb 2003; Nicholas Jones ebuild.sh: Try to change - to good a good path at the start of the ebuild to prevent operations from - happening in places like home. After the ebuild's install phase, check to - see if any unsafe perm combo's exist and die if they do. Fix permissions - on the cachedir as we're changing them to root:portage. &> on environment - file prevented it from actually creating the file -- changed to 2>. Change - 'true' to 'exit 0' to be a bit more explicit about what we're doing. - - 24 Feb 2003; Alain Penders repoman: Added nested/sub-shell - die testing. - - 23 Feb 2003; Alain Penders : Added bin/portageq tool to - provide access to portage internal information without using APIs that - are changing. All tools that currently access portage information by - importing portage.py and poking around in it should switch to using this - tool instead. Changed some tools in bin/ to use it, so those won't break - either. - -*portage-2.0.47-r3 (17 Feb 2003): Wicked Fast, BugFree v2, UserPriv - - 22 Feb 2003; Nicholas Jones bin/: added dispatch-conf - and db-fix.pl to the bins. Looking at dispatch-conf to replace etc-update - written by Jeremy Wohl (bug 14079). db-fix.pl is a rescue tool that Blizzy - wrote up to recreate/repair counter files in the DB -- shouldn't be needed - anymore as portage fixes the counter at every load of the counter, but we - will hang on to it just in case. - - 22 Feb 2003; Nicholas Jones portage.py: moved the - wheelgid references to portage_gid references. Wheel is being deprecated. - Added notice to baselayout message that group portage controls everything - now. Killed the BASH_ENV settings -- moved the reference to /etc/portage/ - in case it's desired in some way -- This fixes AROUND ONE HUNDRED reports - on 2.0.47-r2. Try/catch invalid tbz2's -- should fix a couple bad tarball - bugs. Make the prelink call spawn'd without sandbox. buildpkg/userpriv - fix via actionmap (Jasmin Buchert; bug 16106). - - 22 Feb 2003; Nicholas Jones emerge: --upgradeonly - added from jrray's patch; added some slot handling. --deep got a short - flag 'D'. 'info' can be run by non-root. '--quiet' kills all but package - names on searches. Basic slot detection added to the pretend output so - that it doesn't always say downgrade. Ignore block list when fetching. - Can use RSYNC_EXCLUDEFROM to select a from for rsync to --exclude-from; - (Michael Sterrett; Bug 15882). 'emerge rsync' deletes the dbcachedir - before it begins updates. Catch exceptions during rsync cache regen. - - 22 Feb 2003; Nicholas Jones ebuild.sh: General fixes - to the spelling of things. 'cd $PORT_TMPDIR' corrected to the actual vars - name. Stripping distcc from PATH if it is there before portage sets it. - Same with ccache. If we try to compile with out unpacking, complain. Make - sure to chown files to user portage. - - 22 Feb 2003; Nicholas Jones cnf/*: CFLAGS notes, - pentium4 breaks things. Added more descriptions for FEATURES. Added - RSYNC_EXCLUDEFROM description. - - 22 Feb 2003; Nicholas Jones *: Updates to the - copyright headers. - -*portage-2.0.47-r2 (17 Feb 2003): Wicked Fast, BugFree, UserPriv - - 18 Feb 2003; Alain Penders portage-2.0.47-r2.ebuild: - If $PORTAGE_TEST is set, skip the beeps/delay messages. Needed to make - the regression test scripts bearable :-) - - 17 Feb 2003; Nicholas Jones portage.py: Fixed the - depcache code once again -- ebuild and cache were never set to the same - mtimes. Removed last os.system() call. - - 17 Feb 2003; Nicholas Jones repoman: catdir fix. - Added 'emerge-webrsync' from gentoolkit so users can use snapshots on - initial installs. - - 17 Feb 2003; Nicholas Jones emergehelp.py: Updated - it to the current calls and conventions. Added comments about etc-update - and emerge-webrsync. - - 17 Feb 2003; Nicholas Jones emerge: Changed the - search code around to use compiled re's instead of .lower() searches. - Trivial touchups in spacing. Only write worldfile if not --pretend. Fix - losing-packages-to-be-merged during merge bug. Allow options to change - in a --resume call so that --buildpkg and such may be added. - - 17 Feb 2003; Nicholas Jones ebuild.sh: Added a - PREROOTPATH to allow special paths to be added prior to root and ebuild's - required pathes. ${S} is now generated prior to sourcing an ebuild so - that it is available in the ebuild at source-time, as opposed to in the - phases. - -*portage-2.0.47-r1 (16 Feb 2003): Wicked Fast + UserPriv - - 16 Feb 2003; Nicholas Jones portage.py: Changed a - few os.system calls to spawn calls. Added userpriv in features check to - spawn. HOME is now placed in BUILD_PREFIX/homedir when userpriv is enabled. - Valid command for doebuild() moved to the top of the function. Reorganized - the directory creation code in doebuild(). HOME is cleaned for every merge - if in userpriv. LOG_COUNTER fix for the per-ebuild logs -- Only one value - is used per $PF now. - - 16 Feb 2003; Nicholas Jones emerge: Adjusted options - to remove --autoclean and make it on-by-default unless killed in FEATURES - with 'noclean'. Removed debug for --resume. Added RSYNC_TIMEOUT as some - dialup and other users are experiencing problems with rsync never finishing - a connection. Added check at the end of an rsync to notify the user when - a new version of portage is available. Added --pretend capability/fix to - the --resume code. No resume data and a --resume is no longer a failure. - - 16 Feb 2003; Nicholas Jones ebuild.sh: Updates to - logic of ${T}/successful handling to allow proper cleaning. dyn_clean() - will do a recursive dir removal after cleaning specific files. Recursive - chown removed. CCACHE_DIR handled in portage.py now. Removed a few comments - and unnecessary checks. - - 16 Feb 2003; Nicholas Jones cnf/*: added comments - on FEATURES=noclean,noauto,userpriv,usersandbox - - 15 Feb 2003; Nicholas Jones emerge: Alain changed - the .config() call in the search class to a .settings[] -- Speedup. - - 14 Feb 2003; Nicholas Jones portage.py: Added - resume to mtimedbkeys. - - 14 Feb 2003; Nicholas Jones emerge: --columns - flag to support column output in --pretend. --resume support added - to restart portage with the package list with which it stopped -- data - is stored in mtimedb. Added '--verbose' to 'emerge info' to display - all variables in settings. - - 13 Feb 2003; Nicholas Jones ebuild.sh: Fix to - distcc and ccache to prevent them from calling themselves if they - catch themselves in the path -- double path problem. - - 13 Feb 2003; Nicholas Jones portage.py: Fixes to - the aux_get() code for metacache updates to eclass deps. Debug output - removal. - - 13 Feb 2003; Nicholas Jones emerge: More fixes - to the calls to aux_get() for metacache code. Rearranged the option and - action arrays. Added --nospinner flag. - - 13 Feb 2003; Nicholas Jones emerge: Reorg of flags. - Addition of --noconfmem to prevent portage from yanking already-merged - config files. Extra message in --version about missing gcc and sourcing - /etc/profile to get it. Yanked the majority of the rsync cachedb update - code -- Moved it to aux_get. - - 13 Feb 2003; Nicholas Jones portage.py: Typo fixes. - aux_get() now has a metacachedb param for using metadata cache over the - initial call to doebuild() -- Should speed up rsync users regen time. - Added support for --noconfmem via settings["NOCONFMEM"] in treewalk(). - Added sys.exit(1) on failure to move files during merge. Comment - realignment. - - 11 Feb 2003; Nicholas Jones portage.py: Fix the - depcache code by adding in a missing stat call after regeneration. - Call portageexit() in exithandler() so that mtimedb gets written out - on cancelled runs. Add in --quiet option. Currently only kills the - processing messages on emerge regen. - - 11 Feb 2003; Nicholas Jones ebuild.sh: Fix the - eclass code to remove the double inherits cause by eclasses managing - that on their own. - -*portage-2.0.46-r12 (07 Feb 2003): Fixups - - 07 Feb 2003; Nicholas Jones portage.py: Move - logdir check/generation code so that it's created before 'clean'. Fix - the usemask/archkeys bug and a related bug with the var enabled. Fix - to movefile() code to ensure symlinks are handled properly. - - 07 Feb 2003; Nicholas Jones ebuild.sh: Make per- - ebuild logs use the counter to get a chronological list instead of a - timestamp based one. - - 07 Feb 2003; Nicholas Jones emerge: If a package - is requested to be updated but is not merged, still add it to world. - - 07 Feb 2003; Nicholas Jones *: Update to help. - Mostly comments on --verbose. Clarification on make.conf* mirrorselect. - -*portage-2.0.46-r11 (04 Feb 2003): Fixups - - 04 Feb 2003; Nicholas Jones ebuild.sh: distcc - fixups along with ccache fixups from the bug 13897 effort. Added more - varaibles to the build data output. Allow CC/CXX to be set if they are - not set in environment. - - 04 Feb 2003; Nicholas Jones portage.py: Removed an - unnecessary call to os.unlink() in movefile that resulted in it failing - when moving files across devices. HTML 404 catcher -- if the distfile is - a reasonable size, and it's got .*(not found|404).* in it - it will be deleted and the next mirror persued. - -*portage-2.0.46-r10 (03 Feb 2003): Feature/Function Cleanups - - 03 Feb 2003; Nicholas Jones portage.py: Added - quotes to fallback checksum code to ensure it works on space-containing - filenames. Error message added in writedict. Worldfile-depleeting bug - fixed -- 'emerge -e world'+AUTOCLEAN would cause every package in world - to be removed from the worldfile to be removed. - - 03 Feb 2003; Nicholas Jones make.conf: updated the - commentary about AUTOCLEAN. - - 03 Feb 2003; Nicholas Jones etc-update: Added in - automerge functionality for trivial changes. Comments and whitespace - are just merged without asking when it's enabled. - - 03 Feb 2003; Nicholas Jones emerge: redundant cmd - line flags warning. Show enabled/disabled USE flags on -vp (Masatomo - Nakano). Missing changelog fix for --changelog. Added an rsync timeout - of 60 seconds and a message on fail due to timeout. - - 03 Feb 2003; Nicholas Jones ebuild.sh: CC/CXX fix - to override profile.env settings. FEATURES=distcc support to get past - profile.env's CC settings/lockdown. If CBUILD is defined, it is appended - to econf's output in a --build= statement. Added .unpacked marker to - the unpack code to ensure a proper unpack phase. - - 01 Feb 2003; Nicholas Jones portage.py: Adjusted - the arch.list code to be a general masking setup. /etc/make.profile/ - and /etc/portage/ have use.mask files that are concatenated. On fetch, - if downloader reports failure, then check that filesize ebuild.sh/portage.py: - eclass fixups for newdepend issues where newdepend operates on RDEPEND - prior to it being set to default by ebuild.sh. Repoman fix for multi- - arch failures by excluding /usr/portage/profiles/arch.list entries from - consideration, excluding $ARCH. - -*portage-2.0.46-r9 (14 Jan 2003): portage restart fix - 15 Jan 2003; Nicholas Jones emerge: fixed the - missing tabs from the cvs diff backport. - -*portage-2.0.46-r8 (14 Jan 2003): touchup KV{,ERS} for public stable - -*portage-2.0.46-r7 (14 Jan 2003): Backport from cvs and fixes. - portage-2.0.46* :: EXCUDES ALL PORTIONS RELATING SPECIFICALLY TO USERPRIV - - 14 Jan 2003; Nicholas Jones portage.py: Persistant - KV and KVERS on depend calls. Sandbox violation of do_upgrade() caught. - - 14 Jan 2003; Nicholas Jones emerge: --buildpkg - touchups and forward porting of some of 2.0.46-r6. Restart on -r0/proper - versions of portage due to VERSION not matching pkgsplit output fixed. - - 14 Jan 2003; Nicholas Jones ebuild.sh: 20% speedup - in dep generation by removing all external app calls. Moved KVERS to - portage to make it persistent during dep calls. Other code moved into - conditionals based on $*!=depend. chmod's swaped with umask. - - 11 Jan 2003; Jack Morgan cnf/make.conf.sparc: - updated make.conf.sparc to add CFLAGS for sparc32 and sparc64 - - 08 Jan 2003; Nicholas Jones bin/g-cpan.pl: - Added from bug 3450 -- Creates and merges perl module ebuilds on-the-fly - from cpan and merges them. - - 08 Jan 2003; Mark Guertin cnf/make.conf.ppc: - updated make.conf.ppc to remove G3 options for CFLAGS and other - small tweaks - -*portage-2.0.47 (06 Jan 2003): UserPriv - - 06 Jan 2003; Nicholas Jones portage.py: - Forced HOME to BUILD_PREFIX regardless of user. Added in a 'rm -Rf' notice - to readonly-fs/Full-Disk notices. Disabled the usepkg on buildpkg function - of portage. digraph.hasallzeros() added -- Determines if tree is zero depth. - - 06 Jan 2003; Nicholas Jones cnf/*: Added in the - PORT_LOGDIR option and description. Also added a GENTOO_MIRRORS section - back into the make.conf* files so that users are aware that they need to - specify ibiblio. Killed the linefeeds in the sparc conf. - - 06 Jan 2003; Nicholas Jones emerge: options and - actions fixup. Added new short options and long options. --buildpkgonly - now works and restricts the process to deplists of zero depth. Updated - the help for portage, and created a seperate shorthelp function with - the terse, options-only, versions of the regular help. Fixed the env_update - call after --fetchonly runs. - - 06 Jan 2003; Nicholas Jones ebuild.sh: - touchups to the user priv and logging code to kill the invalid user - messages when portage:portage doesn't exist on the system. - -*portage-2.0.47_pre4 (03 Jan 2003): UserPriv Works + Per-Ebuild logging - - 04 Jan 2003; Nicholas Jones portage.py: - tokenize() fixups to remedy the || reduce problems. - - 04 Jan 2003; Nicholas Jones prepall: - Fixup for '//' problem. - - 03 Jan 2003; Nicholas Jones ebuild.sh: - Support for per-ebuild logging via PORT_LOGDIR variable. ebuild.sh - now can do usermode compiles _and_ maintain the enviroment with a - few minor restrictions like changing portage variables. - -*portage-2.0.47_pre3 (02 Jan 2003): Forward port of fixes & New fixes - - 02 Jan 2003; Nicholas Jones emerge: - tbz2 handling improved -- checks current, pkgdir/All/x, pkgdir/x. - -r0 removal on current ver to stop people from complaining about it. - More info added to 'emerge info' output. - - 02 Jan 2003; Nicholas Jones portage.py: - Spaces in filenames fix for prelink-capable systems. Exception caused - by invalid or unsatisfiable '||' dependancies caught and warned about. - auxdbkey order fix. dbcachedir now ensures a '/' before the cache dir. - - 02 Jan 2003; Nicholas Jones prep*: - Fixes from Azarah to make the included files more proper. - - 26 Dec 2002; Phil Bordelon man/emerge.1: - Added documentation of the --deep option. - -*portage-2.0.46-r5 (30 Dec 2002): Touchups and sparc confs - - 30 Dec 2002; Nicholas Jones *: - fix for prelink unmerge problems. small touches to outputs. - sparc configs added. Azarah's fixups for the prep* scripts. - Changes to 'emerge info' output. tbz2 prefixes PKGDIR/All if the - tbz2 doesn't exist in the current dir. - -*portage-2.0.46-r3 (24 Dec 2002): Backport of fixes in 2.0.47_pre2 - -*portage-2.0.47_pre2 (24 Dec 2002): Feature: userpriv compiles - - Tokenizer fixup courtasy of Evgeny Roubinchtein. unalias -a in ebuild.sh. - Moved the help() to emergehelp.py. prepallman fixup for missed symlinks. - More info provided for portage-user-missing message. FEATURES=sandboxuser - not provides sandbox in compile phase along with userpriv. mtimedb - exception should actually be caught now. - -*portage-2.0.47_pre1 (21 Dec 2002): Feature: userpriv compiles - - 21 Dec 2002; Nicholas Jones *: - ebuild.sh: portage user setup. dyn_setup is always run before calls to - unpack,compile,install. emerge: infodirs cleanup, traceback on invalid - dir fix. Proper regen on info change. portage.py: uid/gid discovery and - check code. PRELINK_PATH and PRELINK_PATH_MASK added and renamed. Made - HOME set to BUILD_PREFIX when HOME is unset. Patched in UserPriv compile - code and checks and complaints to ensure smooth integration. Reorganized - chown calls to ensure things get set right for userpriv and not. Sandbox: - UID check to prevent non-root errors patched in. - -*portage-2.0.46-r2 (18 Dec 2002): Feature Stable Release Prelink + Bug Fixes - - 18 Dec 2002; Nicholas Jones portage.py, emerge: - Traceback fix for blocking packages in the restart check in emerge. Added - missing import for commands in portage.py. - -*portage-2.0.46 (18 Dec 2002): Feature Stable Release Prelink + Bug Fixes - - 18 Dec 2002; Nicholas Jones portage.py: - PRELINK_MASK adds ignore paths for prelink.conf. Error message - adjustments for appearance/readability. auxdbkey changes. - - 18 Dec 2002; Nicholas Jones emerge: - --changelog displays changelogs of packages on update. gcc version - fix for --version. Missing indent in masked output corrected. Some - color additions. Prelink code removed -- Users can do it instead. - - 18 Dec 2002; Nicholas Jones ebuild.sh: - use_{enable,with}() work now. Rearranged auxdbkeys again. - - 17 Dec 2002; Martin Schlemmer bin/ebuild.sh: - Regenerate /lib/cpp and /usr/bin/cc in pkg_setup if they are not - files to ease the broken pkg_postrm() some gcc have. - -*portage-2.0.46_pre2 (15 Dec 2002): Feature Prerelease: prelink - - 15 Dec 2002; Nicholas Jones emerge/portage.py: - Fixups. PRELINK_MASK code. 'prelink -af' in post_emerge(). - - 15 Dec 2002; Mark Guertin cnf.make.conf.ppc: - updated incorrect CFLAG option and appended -mabi=altivec info - -*portage-2.0.46_pre1 (15 Dec 2002): Feature Prerelease: prelink - - 15 Dec 2002; Nicholas Jones portage.py: Counter - fixups. Prelink code. - - 15 Dec 2002; Nicholas Jones bin/f*: Made them - loop over multiple files instead of just doing one. - - 13 Dec 2002; Nicholas Jones emerge/portage.py: - Added disabled prelink code. Needs a little more work. Gave portage the - ability to restart on upgrades to the portage version. Ebuilds for prior - versions will intentionally die on upgrade. USE=build disables it so - bootstrap isn't affected. - -*portage-2.0.45-r5 (13 Dec 2002): Feature addition: PDEPEND+fixes - - 13 Dec 2002; Nicholas Jones emerge/portage.py: - Added restart on portage upgrade code and adjusted ebuild to accomplish - this until version matches -r5. - -*portage-2.0.45-r4 (11 Dec 2002): Feature addition: PDEPEND - - 11 Dec 2002; Nicholas Jones ebuild.sh/portage.py: - Added [CDEPEND, PDEPEND, REBUILD] to auxdbkeys and updated ebuild.sh. - Prevented autoclean on fetchonly. - - 11 Dec 2002; Nicholas Jones emerge: - Added support for PDEPEND. Rewrote some dep handling variables for - readability and ease of use. - -*portage-2.0.45-r3 (09 Dec 2002): Touchups. - - 09 Dec 2002; Nicholas Jones ebuild.sh: Fixed - use_enable() and use_with() so that they actually work -- also don't - have to specify 2nd parameter, 1st is assumed. - - 09 Dec 2002; Nicholas Jones emerge: Added previous - version/downgrade messages to --pretend. Extra message to notify of dep - calculation failure as bad deps can exit portage without error. - - 09 Dec 2002; Nicholas Jones portage.py: Attempt - at fixing the sandbox-crashes-missing-HOME bug. Added a try/catch around - the virts/'del x' code to prevent tracebacks on boxes without a virtuals - file. - - 06 Dec 2002; Nicholas Jones emerge: Fixed 'xfrom' - variable-used-before-assignment message on masked ebuilds. - - 06 Dec 2002; Nicholas Jones portage.py: Disabled - writes to DBs when sandbox is enabled. - - 03 Dec 2002; Nicholas Jones portage.py: Fixed a - nice bug where python was writing 'L' at the end of long() types for - mtimes. - -*portage-2.0.45 (02 Dec 2002): More bug fixes for stable. - - 02 Dec 2002; Nicholas Jones portage.py, output.py: - Added several color options and functions to output.py. 'DO NOT EDIT' - notices added to .env generated profile settings files. Touchups and - nofetch() call for restricted fetches. Moved some file IO code for - SLOTs into a try/catch. { mtimedb fixups. Eclass aux_get() error fix. - aux_get() error fix via try/catch with magically-missing ebuild when - doing stat on it. Enabled full eclass()/inherit code. Added code to - flushmtimedb() entries by key name. } <-- aux_get() fixups. Made - starttime into a long... time.time() is apparently overflowing int(). - - 02 Dec 2002; Nicholas Jones bin/*: - prep*: Fixed missed man pages and corrected loops to be fairly complete - in the included files. quickpkg: Loop to do each in $@ (Peter Sharp). - - 02 Dec 2002; Nicholas Jones emerge: - Yank '++' from searches and make it '\+\+' so that it works. Reformated - 'all ebuilds are masked' message to be a little more obvious. env_update() - AFTER autoclean... not in autoclean -- Fixes ldconfig issues. Typo fixes. - - 02 Dec 2002; Nicholas Jones ebuild.sh: - Added has(), general use()-like function -- 'has this_thing $VAR' returns - shell true or false. Added has_version(), portage call to determine if - a specified DEPEND-atom is installed -- 'has_version ">=mozilla-1.2"' - returns shell true or false. Added best_version(), portage call to - get the best/most-recently-merged version of a DEPEND-atom statement -- - 'best_version ">=mozilla-1.0"' prints a string. pkg_nofetch() displays - SRC_URIs by default on RESTRICT -- Can be redefined to display custom - messages. die() on unpack() failure added. Courtasy of SpanKY: Added - use_with() and use_enable() for --with-thing and --enable-thing. - 'use_with gd libgd' would print --with-libgd if gd was in USE and - --without-libgd if not. - - 19 Nov 2002; Martin Schlemmer cnf/etc-update.conf: - Add 'menu' config item and note about it needing dev-utils/dialog, as - a lot of users do not know about this nifty feature. - - 14 Nov 2002; Phil Bordelon man/emerge.1: - Cleaned up the more recent edits to the man page to more closely - match the previous format, fix various typos, and so on. Expanded - the REPORTING BUGS section, and made the PACKAGE MASKING part of the - NOTES a stand-alone section. - -*portage-2.0.44 (11 Nov 2002): bug fixes and 1.2 rescue/install setup - - 11 Nov 2002; Nicholas Jones *: - bin/*: fixes for spaces-in-filename issues, lots of quotes added. conf/*: - touched up comments and warning. Added RSYNC_RETRIES. ebuild.sh: exit now - reports the failing ebuild's $CATEGORY/$PF. Added EXTRA_ECONF to econf(). - emake: added EXTRA_EMAKE. emerge: RSYNC_RETRIES curtasy of Christopher - Sharp. Random comment fixes. portage.py: Random touchups. KV extraction - fixup for new ROOTs. ARCH missing in profile fix. Fix for packages/All - missing dir traceback. INFOPATH/INFODIR fix. Added INFOPATH to specials. - portage.py: Touchups to the mtimedb-touching code. Fixes for the broken - os.path.normpath() leading '//' bug. Added a modified chuck of Phoen][x's - dist size patch. - - 09 Nov 2002; Nicholas Jones portage.py: - Fixups for KV. - - 08 Nov 2002; Nicholas Jones emerge: - Fix for missing-glibc-bug in --version. - - 08 Nov 2002; Nicholas Jones portage.py: - Fix for cfgdictfile traceback when ROOT != '/'. Fix for missing kernel - headers -- checks usr/src/linux, then /usr/include, then if merging - from sys-kernel ignore error. - - 07 Nov 2002; Nicholas Jones portage.py: - Fix (part 2) for the USE="-*" arch-missing problem. - - 03 Nov 2002; Nicholas Jones portage.py: - eclass() function uses a caching and cPickle storing method to determine - currency of eclass-derived depcache entries. All previous methods are - already removed. eclass_save() is called via store() now. Stripped some - cruft from aux_get(). Error message touchups. - - 03 Nov 2002; Nicholas Jones emerge: - A couple message touchups. - - 29 Oct 2002; Nicholas Jones emerge: - Moved the autoclean section under the --pretend check so it doesn't flip - out when running '-f'. Preliminary support for binary-only methods. - --usepkgonly (implies --usepkg) to force errors is binaries don't exist. - - 27 Oct 2002; Daniel Robbins new*: changed "&&" to "||" - to provide even better protection against mis-use of these commands. - -*portage-2.0.43 (27 Oct 2002): Bug fix release - - 27 Oct 2002; Nicholas Jones emerge: - AUTOCLEAN="yes" on by default. Added in a clean phase after the merge - phase so clashing library versions do not remain installed when ldconfig - is run. This should close up the symlinks-being-removed bugs. - - 27 Oct 2002; Nicholas Jones cnf/*: - Miscelaneous typo fixes. Added PORTDIR_OVERLAY description in make.conf. - - 26 Oct 2002; J Robert Ray portage.py: - Don't act like the download failed if after successfully downloading - a file its size doesn't match the file size in the digest. Treat - this as a mismatched digest condition instead. - - 26 Oct 2002; Nicholas Jones portage.py: - Reversed the defaults on env_update() so it does a full ldconfig instead - of a non-symlink ldconfig. Fixed the typo in the 'invalid conf' notices. - -*portage-2.0.42 (24 Oct 2002): Bug fix release - - 24 Oct 2002; Nicholas Jones make.defaults.5: - Removed this file. It is horribly out of date and completely - wrong to boot. Users shouldn't be modifying the 3 lines in this file - anyway. They are obvious if you understand conf and defaults. - - 24 Oct 2002; Nicholas Jones emerge: - Added missing return statements to select_dep() that caused unmet packages - to be ignored. Touchups to 'emerge info' and 'emerge --version' output. - Added --delete to --delete-after so that it actually deletes in rsync. - - 24 Oct 2002; Nicholas Jones portage.py: - Warning touchups. Replaced constants (9) to index("INHERITED"). - - 23 Oct 2002; Nicholas Jones bin/new*: - Fix for "running as a root user" bug... code does 'rm -rf /' if - variables aren't defined in environment... That's a bad thing. - - 23 Oct 2002; Nicholas Jones portage.py: - Possible fix for the aux_get() issues and IUSE. - - 22 Oct 2002; Nicholas Jones portage.py: - noauto got lost in some weird conflicts of .38, added it back. - - 22 Oct 2002; Nicholas Jones emerge: - Primitive logging via emergelog(). countdown(N,str) function does N second - countdowns of the action 'str'. Error messages on dependency traceback - via try/except on select_dep(). Removed the 'unavailable' warning. Message - updates. Added logging of basic actions to /var/log/emerge.log. Added - package/to-go counter. 'emerge info' displays a number of useful variables - that is good for bug reports. - - 22 Oct 2002; Nicholas Jones prepallstrip: - Bug 9508, fix for MSB architectures strip. Previous check assumed only - LSB objects could/should be stripped. (*LSB -> *SB) [Joky@#gentoo-sparc] - -*portage-2.0.41 (20 Oct 2002): Bug fix release - - 20 Oct 2002; Nicholas Jones portage.py: - stickies=[] lists the variables that will be kept/used as sticky vars, - not yet implimented. Fixed several relative symlink bugs by adding - abssymlink() to portage to determine real/absolute targets. env_update() - modified to fix bug 9308 symlinks bug. Bug 8348, request for error messages - instead of tracebacks/dies on parse errors, now caught on a per file basis - for system config files, includes descriptive messages. Fix for missing - profile traceback in new prepend'd-arch code. Typo fixes in symlink code. - DISABLED 'KEYWORD="" == available' code, DEFAULT IS MASKED NOW. Major - update to masking code, CONFIG_PROTECT can be layered with _MASKs, and - update_protect() now sets the self.protect* variables. Condensed and - reordered the unmerge code, now checks existance, cfgprotect, then mtimes. - - 20 Oct 2002; Nicholas Jones emerge: - Bug 8767: Added 'buildpkg' to FEATURES to specify always-buildpkg. - Updated the --version output to display profile and gcc version. - Bug 8083: Eliminate spinner when terminal is not a tty. Bug 7688: - fixed search vs. searchdesc differences by adding 'cat/pack' split. - Bug 9308: Symlinks were being killed by ldconfig, fixed by changing - how/when ldconfig was allowed to set symlinks. rsync command touchups, - --delete-after so that a failed rsync won't leave a user - without/with-few packages in portage. More warnings to depclean. - - 20 Oct 2002; Nicholas Jones ebuild.sh: - Added die to gzip in unpack() - - 20 Oct 2002; Nicholas Jones make.conf*: - Added in useful variables and descriptions+warnings of their uses. - - 20 Oct 2002; Nicholas Jones make.globals*: - Added in large "do not edit" message. - - 16 Oct 2002; Nicholas Jones portage.py: - Fixed an mtimes issue. --update on a package might yank non-cfgprot - files during the clean-phase because they didn't have mtimes updated. - - 15 Oct 2002; Nicholas Jones portage.py: - Added 'IUSE' to the auxdbkey list. Fixed random aux_get() errors - caused by random empty files in the dep cache. - - 15 Oct 2002; Nicholas Jones ebuild.sh - Actually committed the --host portion of econf. - - 15 Oct 2002; Martin Schlemmer portage.py, missingos.c: - Remove testsandbox.sh, and comment code in portage.py that still - used it to no real use. Add another '\' to the 'missingos_mknod__doc__' - string in src/python-missingos/missingos.c to fix failure with gcc-3.3. - -*portage-2.0.40 (13 Sep 2002): Bug fix release - - 15 Oct 2002; Nicholas Jones portage.py, emerge: - emerge depclean -- Removes all packages that are not explicitly or - dependency merged. - - 15 Oct 2002; Nicholas Jones ebuild.sh: - depend now prints IUSE. Doesn't do anything with it yet. - unpack() -- unzip silently overwrites files (). - econf() -- now specifies '--host=${CHOST}' - - 15 Oct 2002; Nicholas Jones make.globals: - Touch ups + warning. - - 15 Oct 2002; Brandon Low etc-update: - Make etc-update find all the same CONFIG_PROTECT files as portage - by importing it's settings from portage. - -*portage-2.0.39 (13 Sep 2002): Bug fix release - - 13 Oct 2002; Nicholas Jones portage.py: - Bug 5926 -- If the fetchonly AND pretend flags are specified, then - portage should give a list of all the SRC_URIs so that they can be - downloaded or sent into another app. Made sandbox display name in - 'ps' as '[$PF] sandbox'. - - 13 Oct 2002; Nicholas Jones emerge: - Bug 5926 -- See portage.py for today. (emerge -pf) - Typo fixes. - - 13 Oct 2002; Nicholas Jones ebuild.sh: - Added -q to unzip to make it quiet like the others. - Bug 6033 -- Fix for infinate loop in eclasses in portage overlay. - - 12 Oct 2002; Daniel Robbins portage.py: fix for - doebuild() so that our rsync mirror will contain full digests and not just - partial digests for x86. - - 12 Oct 2002; Nicholas Jones emerge: - Added --progress to rsync. This puts the file progress meters - back on. Users have requested this, and it's not detrimental. - Just creates a lot of output, as the man page says: "It gives - bored users something to look at." - - 12 Oct 2002; Nicholas Jones portage.py: - Bug 6361 -- Added checking on directories to ensure that we can - write to them before we try and traceback. Also added pieces to - functions so that return conditions are propagated back to emerge - so that it actually dies on errors. Message on condition details - restart process. - - 11 Oct 2002; Nicholas Jones make*globals: - Removed the tomcat configs from CONFIG_PROTECT - - 11 Oct 2002; Nicholas Jones doman: - Bug 8208 -- Added flags and auto-location support for 'x' manpages. - Added not-an-man-page message. - - 11 Oct 2002; Nicholas Jones dohtml: - Bug 8208 -- Added 'js' to the include list, and added '-A' as an - append flag. '-a' was a filter-down-to. - - 11 Oct 2002; Nicholas Jones portage.py: - Bug 8964 -- Fix for read-only traceback in digestgen(). - Bug 8949 -- Fix for read-only traceback in doebuild() - Bug 8284 -- Prepend ARCH _after_ use order processing. Prevents -* - from killing the ARCH flag. Bug 7596 -- Set an mtime of 0 into - CONTENTS if the file already exists on the FS. Allows the entry - to be in the CONTENTS file. Condensed the protect/protect-mask - code into one function in class dblink. Revised code to allow - multi-level protects and masks. - - 10 Oct 2002; Nicholas Jones emerge: - Bug 8552 -- typo fixes - - 10 Oct 2002; Mark Guertin cnf/make.conf.ppc : - Fixed type in reccomended CFLAGS for generic ppc (was 02, corrected - to O2) - - 09 Oct 2002; Nicholas Jones portage.py: - Fixed a bug where files less than 2 characters in /etc/env.d - weren't checked correctly, and tracebacked env_update() - - 07 Oct 2002; Martin Schlemmer ebuild.sh: - Also set $TMP, as MDK among distros sets this, and it causes - breakage during bootstrap. This should close bug #8101. - - 07 Oct 2002; Mark Guertin man/ebuild.5 : - Updated the man page to include missing functions in portage - - 05 Oct 2002; Mark Guertin cnf/make.conf cnf/make.conf.ppc: - Fixed typo (missing "/") in make.conf and make.conf.ppc, bug #7944 - - 28 Sep 2002; Daniel Robbins ebuild.sh: remove - deprecated "ld.so" from newdepend. - -*portage-2.0.38 (25 Sep 2002): Bug fix release - - 25 Sep 2002; Daniel Robbins emerge: now "emerge world" - and "emerge system" don't replace packages. This closes bug #8282. - - 21 Sep 2002; Daniel Robbins portage-2.0.38.ebuild: - Added additional perm check for /var/cache/edb/dep dirs and fixed perm - settings in the ebuild's pkg_postinst(); this should close bug #7719. - - 21 Sep 2002; Daniel Robbins portage.py: Added - carpaski's patch to add PF to the sandbox's argv[0], closing bug #8141. - - 19 Sep 2002; Daniel Robbins emerge: tweaked emerge so - that "--pretend" displays don't show "N" all the time. - - 19 Sep 2002; Daniel Robbins ebuild.sh: tweaked help to - not list deprecated options. - - 25 Sep 2002; Maik Schreiber cnf/make.globals, - cnf/make.globals.ppc: Added /opt/jakarta/tomcat/conf to CONFIG_PROTECT. Note - by drobbins: this will be removed soon when this gets moved to an /etc/env.d - file in the tomcat package. - -*portage-2.0.37 (19 Sep 2002): Gentoo Linux 1.4_rc1 version - - 10 Sep 2002; Mark Guertin cnf/make.conf.ppc : Backed down - CFLAGS from -O3 to -O2 on ppc as -O3 has proven to be unreliable on all - PowerPC-based machines - - 09 Sep 2002; Daniel Robbins emerge: new parameterized - create() engine, security pass fixes ("emerge" as non-root doesn't print - "root access required" but shows help instead), emerge --pretend output fixes - ("to /" lines are dropped and only displayed if installation root != "/".) - New (and currently unofficial and undocumented) "--deep" and "--selective" - options that correspond to their respective create() parameters. Using - "--deep" will enable "deep emerging" -- updating all deps even if the parent - doesn't need updating. The new parametrized create() is also much cleaner - than the previous incarnation. - - 09 Sep 2002; Daniel Robbins portage.py: os.chdir() -> - chdir() fix, enhanced fetch() digest corruption handling. - - 06 Sep 2002; Mark Guertin cnf/make.globals.ppc : - Updated make.globals.ppc to reflect new CFLAGS for 1.4 release - -*portage-2.0.36 (04 Sep 2002): Gentoo Linux 1.4_rc1 version - - 04 Sep 2002; Daniel Robbins emerge: "--onlydeps" was - mostly broken since the most recent emerge code restructure. Now fixed, - closing bug #7442. - - 04 Sep 2002: Daniel Robbins etc-update.conf: added - missing etc-update config file. - - 04 Sep 2002: Daniel Robbins portage.py: removed error - detection based on return value for pkg_preinst() and friends when called - from merge() and unmerge(), since the value can be unreliable due to the && - shell construct, depmod -a returning a non-zero value, etc. Also fixed - env_update() to treat CONFIG_PROTECT and CONFIG_PROTECT_MASK correctly. - -*portage-2.0.35 (03 Sep 2002) - - 03 Sep 2002: Daniel Robbins etc-update, - man/etc-update.1: new program for updating config files. - - 03 Sep 2002; Daniel Robbins ebuild.sh: upgraded - inherit() to support $PORTDIR_OVERLAY, closing bug #6033. - - 03 Sep 2002; Daniel Robbins emerge: calls to "cvs" now - use "-z3" compression option, closing bug #5982. - - 03 Sep 2002; Daniel Robbins ebuild.sh: symlinks to - .tbz2's in the $PKGDIR/All directory (from $PKGDIR/$CATEGORY) are now - relative, closing bug #6881. - - 03 Sep 2002; Daniel Robbins ebuild.sh: einstall now - sees "GNUmakefile", closing bug #4895. - - 03 Sep 2002; Daniel Robbins ebuild.sh: typo fixes, - closing bug #7263. - - 03 Sep 2002; Daniel Robbins portage.py: /var/tmp - creation now works even if /tmp already exists, closing bug #7376. - - 02 Sep 2002; Daniel Robbins emerge: fixed a logic error - that resulted in non-root emerge failure. This closes bug #7389. - -*portage-2.0.34 (01 Sep 2002) - - 01 Sep 2002; Daniel Robbins : portage.py, ebuild.sh: - Azarah's ebuildsh() removed, various other little fixes like pkg_preinst and - friends not dying on non-zero return codes. - - 01 Sep 2002; Martin Schlemmer ebuild.sh: add a custom - version of the esyslog() function to fix the "Red Star" bug if no logger is - running. - -*portage-2.0.33_p1 (30 Aug 2002): urgent fix - - 31 Aug 2002; Dan Armak ebuild.sh: comment out the if - clause that only executed inherit() conditional on $PORTAGE_RESTORE_ENV. It - didn't work and broke portage 2.0.33 as far as inheriting ebuilds goes. - -*portage-2.0.33 (30 Aug 2002) - - 30 Aug 2002; Daniel Robbins : some additional clean-ups - for the make.conf(.ppc) files. - - 30 Aug 2002; Daniel Robbins emerge: emerge search would - die when aux_get() raised a KeyError; we now catch and handle this exception. - This closes bug #7280. - - 29 Aug 2002; Daniel Robbins portage.py: fixed typo in - move_ent() code that messed up moving packages into previously non-existant - category directories in /var/db/pkg. - - 30 Aug 2002; Mark Guertin cnf/make.conf.ppc : Updated - cnf/make.conf.ppc with new CFLAGS for 1.4 release - -*portage-2.0.32 (29 Aug 2002) - - 29 Aug 2002; Daniel Robbins emerge: favorites weren't - working since 2.0.30; they're working again now. This closes bug #7225. - - 29 Aug 2002; Phil Bordelon emerge.1: Added a small - blurb regarding what to do when emerge --update [world|system] fails because - of new features such as || and ?. Hopefully this will assuage the fairly - common questions regarding this. - -*portage-2.0.31 (29 Aug 2002) - - 28 Aug 2002; Daniel Robbins portage.py: fixed a config - file protection logic bug detected and identified by Azarah. It basically - broke most config file updates and has been broken for around six months. - Very surprised no one had encountered this issue before. - - 28 Aug 2002; Daniel Robbins emerge: improved error - messages when an unsatisfiable dependency is encountered. Now lets you know - if there are masked packages that would satisfy the dep. - - 28 Aug 2002; Daniel Robbins emerge: emerging .tbz2 - packages and .ebuilds by name now works; this was broken in 2.0.30. - -*portage-2.0.30 (28 Aug 2002) - - 28 Aug 2002; Daniel Robbins portage.py, emerge: rewrote - gettimeval() as cpv_counter() and updated it to handle corrupt COUNTER files, - closing bug #6763. - - 28 Aug 2002; Daniel Robbins emerge: "emerge search" now - displays information for masked packages if possible, closing bug #6823. - - 28 Aug 2002; Daniel Robbins emerge: fixed an old gbevin - bug where "emerge search" wouldn't show packages whose version string was - only one character long, ie. "foo-3". This closes bug #6800. - - 28 Aug 2002; Daniel Robbins portage.py: added a missing - call to flatten() in dep_check(), allowing recursive sublists in dependencies - and SRC_URI variables to work; this closes bugs #7104, #7116, #7122. - - 28 Aug 2002; Daniel Robbins doman: fixed some typos, - closing bug #7152. - - 28 Aug 2002; Daniel Robbins portage.py, emerge: major - work to emerge: reworked the internal code organization to make depgraph code - easier to understand; unified two code paths so that ebuild/.tbz2 choices - when "--usepkg" should now be eternally consistent; tweaked portage.py so - that dep_expand()'s dbapi argument is optional. In the process of all this, - isolated and fixed bug #4508. - - 27 Aug 2002; Martin Schlemmer portage.py: if the dep - cache is stale, it is possible that aux_get() will call doebuild(depend) to - regenerate it again. This call will cause $T to be set to "", which will - break anything that needs $T to be set to a writable location inside the - sandbox, so we need to set $T to a valid value again. - - 27 Aug 2002; Daniel Robbins portage.py: improved error - handling/detection of bad pkgsplit() and catpkgsplit() calls; should close - bug #6803, #6853. - - 26 Aug 2002; Daniel Robbins emerge: fix so that "emerge - prune rsync" doesn't complain that you are trying to rsync and prune at the - same time. This closes bug #6785. - - 26 Aug 2002; Daniel Robbins doman fixes; should work - for pre-gzipped man-pages and man-pages with multiple "."s in their name. - Closes bugs #6770, #6917 - - 25 Aug 2002; Martin Schlemmer emerge: fixed an - indentation problem of the 'else:' at line 1304. - - 20 Aug 2002; Daniel Robbins emerge: removed stray - "DEBUG:" output, closing bug #6732. - -*portage-2.0.29 (18 Aug 2002) - - 18 Aug 2002; Daniel Robbins emerge, portage.py, - ebuild.sh: making some effort to make output cleaner and less cluttered, - particularly with error handling. - - 18 Aug 2002; Daniel Robbins emerge: updated so that - "emerge --inject foo-1.0" fails instead of injecting "null/foo-1.0"; fixed - error in help; "emerge --inject" and "emerge" with no specified files or - package classes prints out a small warning and exits. Closes bug #6353. - - 18 Aug 2002; Daniel Robbins portage.py: movefile() - didn't like bind mounts due to a peculiar quality -- according to their - ST_DEV stat() information, they are on the same filesystem, so rename() - should work, but it doesn't. We now fall back to copy if rename() doesn't - work. Closes bug #6468. - - 18 Aug 2002; Daniel Robbins ebuild.sh: made significant - enhancements and fixes to ebuild.sh's error-handling code. Errors in - src_unpack(), src_compile(), src_install() and others should now be correctly - detected. Also downgraded our use() function since we are not implementing - extended USE functionality. Closes bug #6393. - - 18 Aug 2002; Daniel Robbins portage.py: portdb's - cp_all() now skips "CVS" directories, closing bug #6662. - - 18 Aug 2002; Daniel Robbins portage.py: aux_get(): - exception handler to print informative message when encountering wacky cache - entries that we just can't fix (for some reason.) - - 17 Aug 2002; Daniel Robbins ebuild.sh: removed - deprecated "ld.so" dependency from Dan Armak's newdepend() function. - - 17 Aug 2002; Daniel Robbins portage.py: doebuild() - running in "depend" mode will set $T to "" to prevent a parent's $T from - being inherited; this is important when we run custom portage code from - inside an ebuild (such as pkg_postinst)... it allows dep caching to not - break. Closes bug #6484. - -*portage-2.0.28 (17 Aug 2002) - - 16 Aug 2002; Daniel Robbins emerge: return errors when - two actions like "world" and "system" are specified on the command-line, or - when "system" or "world" are combined with package names. Closes bug #6492. - - 16 Aug 2002; Daniel Robbins portage.py: bad string was - causing pkg_prerm() and pkg_postrm() to not be called; now fixed. This - closes bug #6493. - - 16 Aug 2002; Daniel Robbins emerge: now calls - env-update() after an unmerge() run (to fix library paths, links, etc.) - Closes bug #6511. - - 16 Aug 2002; Daniel Robbins doman: now handles already- - gzipped man pages correctly, closing bug #6544. - - 16 Aug 2002; Daniel Robbins emerge: fixed a bug where a - dep specified on the command-line with --usepkg would use an old package if - it happened to match the dep. Now, it will use the ebuild instead, just like - how deps of deps are treated. - -*portage-2.0.27 (06 Aug 2002) - - 07 Aug 2002; Daniel Robbins portage.py: removed some - beta extended USE functionality to speed up regenerate(); as we are likely - not going to need extended USE for a good while. - - 07 Aug 2002; Daniel Robbins portage.py: ebuild.sh now - supports "config" (pkg_config) again. - - 06 Aug 2002; Dan Armak ebuild.sh: change debug-print() - to exit if $T is not defined, i.e. if emerge is running in dependency - detection mode and isn't actually emerging everything. This fixes bug #4932 - (the "eclass-debug.log is created in /" problem). - - 06 Aug 2002; Nicholas Jones ebuild.sh: Fixed a - case-check problem that prevented tar.Z from being un-tar'd. This closes bug - #6126. - - 06 Aug 2002; Martin Schlemmer portage.py, ebuild.sh: - Remove "setup" from 'sandboxactive' in portage.py, as we are not running - pkg_setup() in a sandbox anymore. Move the restoring of the old env code - to be the first thing in ebuild.sh, just to ensure we dont mess anything - up when greping/awking during saving it. - -*portage-2.0.26 (06 Aug 2002) - - 06 Aug 2002; Daniel Robbins portage.py: on unmerge, - entries are now removed from the world file if 1) the dependency refers to - the cat/pkg being unmerged, and 2) the dependency matches the current version - being unmerged, and 3) unmerging this package will leave no other packages on - this system that will match this world entry. This closes bug #3409. - - 06 Aug 2002; Daniel Robbins portage.py: new global - update support. You can now add an entry to a file in - /usr/portage/profiles/updates/, something like "move x11-base/xfree - x11-base/xfree86". Portage will then update the /var/db/pkg db on user's - boxes so that any xfree packages are renamed to xfree86; it will also update - the world and virtuals files appropriately. We are naming the update files - "3Q-2002", etc. -- for third quarter in 2002. This way, we don't bog - Portage down by having it run through all our directives. It will only look - at update files whose mtimes have changed. Closes bug #4753, #5463, - - 06 Aug 2002; Daniel Robbins ebuild.sh: tweaked Azarah's - environment-saving patch to not be enabled when $T is not defined -- this - closes bug #6070 and should speed up dep calculations too. Also tweaked - ebuild.sh so that pkg_setup() is run *outside* of the sandbox. This is - important because piping stuff around tends to require temp files to be - created; pkg_setup() being in the sandbox prevents this from happening. - - 06 Aug 2002; Martin Schlemmer ebuild.sh : Unset - esave_ebuild_env in esave_ebuild_env(), otherwise the sourced copy messes - saving of the environment. - - 05 Aug 2002; Phil Bordelon emerge.1: Updated the man - page to match the current version of 2.0.25. - - 05 Aug 2002; Phil Bordelon emerge.1: Updated the man - page to match the current version of 2.0.25. - -*portage-2.0.25 (05 Aug 2002) - - 05 Aug 2002; Daniel Robbins src/sandbox/Makefile: - removed -march=i386 added in Azarah's patch; breaks things for PPC, Sparc. - - 05 Aug 2002; Daniel Robbins emerge: logic error fix for - description searching, closing bug #6031. - -*portage-2.0.24 (04 Aug 2002) - - 04 Aug 2002; Daniel Robbins output.py, emerge: rewrote - our output.py module (it was weird) and tweaked emerge so that colorization - will be disabled if NOCOLOR is set to "yes" or "true" *or* if sys.stdout isn't - a tty. This means that if you pipe things to "less", colorization will get - automatically disabled. Yay! This closes bug #5714, - - 04 Aug 2002; Daniel Robbins ebuild.sh: default - src_compile now properly uses "die" instead of "return 1." This closes bug - #2981. - - 04 Aug 2002; Daniel Robbins portage.py: "=foo/bar-1.0*" - now matches "foo/bar-1.0_{alpha|beta|pre|rc}{int}" but not - "foo/bar-1.1_{alpha_beta_pre_rc}{int}". This closes bug #5874; gcc-3.2_pre - is now considered a "3.2" rather than a very late "3.1" when doing "*" - matching. - - 04 Aug 2002; Daniel Robbins ebuild.sh: Applied - carpaski's patch to allow "unpack" to also handle regular .gz or .bz2 files; - in which case the unpacked files are placed directly in ${WORKDIR}. Closing - bug #5867. - - 04 Aug 2002; Daniel Robbins portage.py: tweaked - exithandler() to only do its sandbox clean-up if we happen to be the root - user. Closes bug #5859. - - 04 Aug 2002; Daniel Robbins emerge: search now lists - masked packages correctly. Closes bug #5854 (pending QA verification.) - - 04 Aug 2002; Phil Bordelon emerge.1: The emerge man page - now reflects the fact that emerge sync|rsync always does a --clean now. Also - bumped the release number to 2.0.23. - - 03 Aug 2002; Martin Schlemmer portage.py, emerge.sh, - sandbox.c libsandbox.c: Updated sandbox.c and libsandbox.c to use an internal - env variable, $SANDBOX_ACTIVE to determine if sandbox should really be active - or not. With it only checking $SANDBOX_ON, some instances NOT running in a - sandbox, but that set SANDBOX_ON while an actual sandbox was running, caused - the sandbox to activate for this process. Added in support for a more phased - calls to ebuild.sh again. This is this time done with support to save the - current environment of ebuild.sh to the next call that should handle problems - with pkg_setup() setting env variables. Closes bugs #5853, #5817, #5950. - -*portage-2.0.23 (01 Aug 2002) - - 01 Aug 2002; Daniel Robbins portage.py: - ${ROOT}var/cache/edb and friends will get created if they don't exist, - closing bug #5813. - - 01 Aug 2002; Daniel Robbins emerge: rewrote the emerge - search code, making it fully API-compliant and much more streamlined and - compact. This rewrite should fix the problem where emerge search doesn't - support Portage overlays (bug #5783.) - - 31 Jul 2002; Phil Bordelon emerge.1: Documented the - fact that emerge clean does not remove unslotted ebuilds. Bumped the man - page revision number to 2.0.22. - -*portage-2.0.22 (29 Jul 2002) - - 29 Jul 2002; Daniel Robbins portage.py: fetch() didn't - handle resuming downloads properly when the first attempt aborted - prematurely. The fall back to the alternate location would not resume the - download. This should now be fixed. Closes bug #5655. - - 29 Jul 2002; Daniel Robbins portage.py, ebuild.sh: I - had some code in spawn() from one of Azarah's patches that I forgot to - remove; it caused the sandbox to be disabled all the time. I removed this - code, and then I tweaked ebuild.sh so that the sandbox runs in a "deny by - default" configuration. Before, you could add lines to the main ebuild - (outside of a function) and it would bypass the sandbox; no more. Closes - bugs #5740, #5744. - - 29 Jul 2002; Daniel Robbins emerge: --help and - --version now work for non-root users as they should. --clean has been - deprecated. This closes bug #5658. - -*portage-2.0.21 (28 Jul 2002) - - 28 Jul 2002; Daniel Robbins portage.py, emerge: Added - beta "Portage tree overlay" support. By setting PORTDIR_OVERLAY to point to - a local directory tree, you can cause Portage to look for ebuilds in - PORTDIR_OVERLAY first before consulting the regular PORTDIR. Using this - feature, it's possible to have your PORTDIR set up to rsync but still be able - to have locally-created ebuilds in your PORTDIR_OVERLAY tree. For example, - you would place your ebuild in PORTDIR_OVERLAY/sys-apps/foo/. - - 27 Jul 2002; Daniel Robbins portage.py: another - dep_opconvert() USE-handling bug-fix. Working OK for Azarah now. - - 27 Jul 2002; Daniel Robbins portage.py: small logic - error fix in dep_opconvert() to fix up USE handling. - - 27 Jul 2002; Daniel Robbins emerge: security modes now - work correctly; root access now required for merging. The new security pass - code was missing a check that is now present. - -*portage-2.0.20 (27 Jul 2002) - - 27 Jul 2002; Daniel Robbins portage.py, emerge, - repoman: Rewrote a good deal of our dependency-checking code, including all - of dep_opconvert(). Results? repoman will now auto-enable all USE variables - (even ! use variables will get enabled) resulting in thorough checks of all - specified dependencies. DEPEND="foo? bar : oni" and DEPEND="foo? ( bar oni ) - : ( meep barf )" now works correctly. DEPEND="|| ( foo bar oni )" now works - correctly and will try to satisfy "foo" (the first package) if none are - installed. DEPEND="!foo? ( bar )" now works correctly; it was not working - before. This should generally mean that our dependency system is now working - as expected. - - 27 Jul 2002; Daniel Robbins portage.py: changed - counter_tick() method so that bulk of code is in the counter_tick_code() - helper function; then created a new method for fakedbapi that calls - counter_tick(). This fixes "--emptytree" issues with emerge, since emerge - still expects counter_tick() to exist as a method. - - 27 Jul 2002; Daniel Robbins portage.py, emerge: removed - a DEBUG: print and a stray "raise IndexError" that I used for debugging. - -*portage-2.0.19 (26 Jul 2002) - - 26 Jul 2002; Daniel Robbins portage.py: Portage is now - eclass-friendly when it comes to regenerating cache entries. This closes bug - #4843. - - 26 Jul 2002; Daniel Robbins portage.py, emerge: Closed - bug #5524. Packages "emerge inject"ed will no longer get auto-cleaned - indiscriminantly. Injected packages now have an official COUNTER so that - emerge clean doesn't get confused and schedule the package for removal. Also - modularized and improved the counter-handling functions and changed the - counter update method so that systems with XFS filesystems that die - unexpectedly will no longer get corrupted COUNTER files. This should solve - the an entire class of "my counter is corrupt" issues for XFS users. - - 26 Jul 2002; Daniel Robbins portage.py: added exception - handler to getcontents() so that it will gracefully ignore (with a warning) - corrupt CONTENTS file lines. This closes bug #5464. - - 26 Jul 2002; Daniel Robbins emerge: fixed a single-line - indentation error that resulted in "emerge clean" ignoring some files. This - closes bug #5597,#4364. - - 25 Jul 2002; Daniel Robbins emerge: --noreplace is now - off by default and works again; --onlydeps appears to be working again; and - merge() will merge things as specified in display(), which was not the case - before (I rolled 2.0.18 before fixing a few things I forgot about) - -*portage-2.0.18 (25 Jul 2002) - - 25 Jul 2002; Daniel Robbins portage.py: Close bug - #5580; pkg_setup() now gets called during all build-related stages. - - 24 Jul 2002; Daniel Robbins portage.py, emerge: rewrote - create() function, closing bug #5469. Also added freeze() and melt() methods - to portdbapi to enhance performance. create() is now extensively commented - and even understandable. - - 24 Jul 2002; Daniel Robbins emerge: the "rsync --clean" - option has been deprecated. Cleaning is now on by default, closing bug - #5527. - - 24 Jul 2002; Daniel Robbins portage.py, make.globals: - It should now be safe to do what Spider did in the gconf ebuild and add - CONFIG_PROTECT and CONFIG_PROTECT_MASK to /etc/env.d entries. Both variables - are now incremental, just like USE, and you can use "-path" to turn a path - off, or add CONFIG_PROTECT{_MASK}="path" to *add* a path to the list (this - will not overwrite "parent" settings. Also added "/etc/env.d/" to - CONFIG_PROTECT_MASK in /etc/make.globals. Also, very importantly, /etc/env.d - is now hard-coded into CONFIG_PROTECT_MASK as it was in earlier versions of - Portage and cannot be removed. - - 24 Jul 2002: Daniel Robbins emerge, portage.py: two - fixes; first, I removed xcache.p support from portage.py. The code was - designed based on the false theory that directory mtimes are updated whenever - an object inside that directory is modified. That is not the case -- it - happens when the directory listing itself changes. Also fixed overly verbose - emerge merging error. - - 23 Jul 2002; Phil Bordelon emerge.1: Updated the man - page to match some changes in the latest version of portage, along with some - fixes recommended by drobbins. - -*portage-2.0.17 (23 Jul 2002) - - 23 Jul 2002; Daniel Robbins portage.py: fixed a bug - pointed out by trance -- dep_nomatch() was still using the old (deleted) - match() function. Now it's using a new match() method. - -*portage-2.0.16 (22 Jul 2002) - - 22 Jul 2002; Daniel Robbins portage.py: changed xcache - behavior so that the cache gets totally thrown away when the masks are - updated. Also revamped carpaski's code so we can avoid loading xcache from - disk if we simply plan to throw it away. This necessitated the creation of a - new file in /var/cache/edb: mtimes. This file stores mtimes for various - important filesystem objects. Also added support to not regenerate the GNU - info directory index if the mtime on /usr/share/info has not changed since - previous invocation. - - 22 Jul 2002; Daniel Robbins portage.py, emerge: moved - security handling code from emerge to portage.py; also moved group "wheel" - check to portage.py. Added additional security checks and permissions fixes - to the cache handling functions. - - 22 Jul 2002: Daniel Robbins emerge: fixed a bug - reported by woodchip related to merging packages. When using --usepkg, a - package wouldn't be used if there was a newer unmasked version of the ebuild - available, even if the package in question was the right selection. - - 22 Jul 2002; Daniel Robbins emerge: fixed create() code - and consolidated some functions. My goal is to simplify the emerge code - until it's clean, at which point we can begin adding new features to emerge - like more SLOT-friendly decision making. - - 22 Jul 2002; Daniel Robbins portage.py: was able to - remove 130 or so lines of code by depreciating the match() function (replaced - by the match2() method.) I also rennovated the binarytree code to take - advantage of fakedbapi. - - 22 Jul 2002; Nicholas Jones portage.py: added the - xcache.p fix and updated the version to 2.0.16pre (from 2.0.12) -- Also added - in a try/except inside the store() (atexit) for xcache.p to give hints - instead of tracebacks. - - 22 Jul 2002; Nicholas Jones emerge: added the - description searching code and added a spinner to the search. - - 21 Jul 2002; Phil Bordelon emerge.1: Finished the - rewrite of the emerge man page. - - 21 Jul 2002; Phil Bordelon emerge: Readded the sync - help to the list of help options now that emerge --help sync works again. - -*portage-2.0.15 (16 Jul 2002) - - 15 Jul 2002; Daniel Robbins emake: no longer falls back - to plain old "make" if parallel make fails. I believe it's best to fix the - problem (turn parallel make off in the ebuild) rather than tweak emake to - avoid it. - - 15 Jul 2002; Daniel Robbins emerge: rewrote some code, - cleaning things up and removing redundant functions. Starting to - de-cruftify. - - 15 Jul 2002; Daniel Robbins emerge: fix for permissions - when updating the cache using server-generated entries. - -*portage-2.0.14 (15 Jul 2002) - - 15 Jul 2002; Daniel Robbins ebuild.sh: ccache bug fix; - removed extra "!". Ccache should now get enabled properly. Also, INHERITED - variable is now getting added to the dep cache entries for future - eclass-friendly caching. - - 15 Jul 2002: Daniel Robbins portage.py: Portage now - *persistently* caches xmatch() calculations. This appears to speed things up - but we will need to limit the size of the new xcache.p in future versions of - Portage. - - 15 Jul 2002; Daniel Robbins portage.py, emerge: Portage - now has keyword-based masking enabled. It also has server-side caching - enabled to eliminate "emerge pre-Calculating dependencies... delay" for - end-users. There is now an undocumented "regen" option for emerge that tells - Portage to ensure that all entries in /var/cache/edb/dep are up-to-date. - This is intended mainly for developers, as the server-side caching feature - should ensure that all dep cache entries are up-to-date for end-users. - - 15 Jul 2002; Daniel Robbins repoman: repoman now checks - for ebuilds that generate output as well as ebuilds that return a non-zero - error code when sourced. For this test to detect all failures, you need to - wipe out your /var/cache/edb/dep/* before running repoman. This design quirk - is necessary to preserve existing emerge behavior. - - 13 Jul 2002: Daniel Robbins portage.py: Removed - Azarah's ebuildsh() function as it breaks pkg_setup() again. pkg_setup() - needs to be called as part of the same process as any other ebuil.sh command - so that environment vars set in pkg_setup() are preserved through the rest of - the build process. - - 13 Jul 2002; Daniel Robbins portage.py: changed calling - convention for doebuild("depend"). - - 13 Jul 2002; Daniel Robbins ebuild.sh: removed - erroneous "local dbkeys" that was outside of a function. This fixes some - cache update problems. Added INHERIT to our cache entries so we can - correctly update the cache for eclass ebuilds. - - 12 Jul 2002; Dan Armak make.globals, make.globals.ppc: - remove default KDE2DIR, KDE3DIR settings and comments. The kde eclasses will - now handle the case where they are not defined. This will be used with kde - 3.1 and later, and the difference between their default value and them not - being defined is important. - -*portage-2.0.13 (11 Jul 2002) - - 11 Jul 2002; Daniel Robbins tarball.sh: our tarball - script didn't clean the src/sandbox directory before creating our distribution - tarball. This resulted in src/sandbox/sandbox (the executable) being distributed, - and the "make" in the ebuild thinking everything was up-to-date. The result? - Everyone in the world got a sandbox compiled with gcc 3.1. This has been - fixed, closing bug #4867, #4851. - - 10 Jul 2002; Daniel Robbins portage.py: removed some - bogus code that snuck in. pkg_setup() is no longer called when installing a - tbz2. All tbz2 stuff should be done in pkg_pre/postinst(). - -*portage-2.0.12 (10 Jul 2002) - - 10 Jul 2002; Daniel Robbins ccache support is now - controlled via a "ccache" FEATURES variable, which is enabled in make.globals - my default. ccache support can now be turned off by adding a - FEATURES="-ccache" to /etc/make.conf. Also, CCACHE_DIR correctly detected - and utilized. - - 10 Jul 2002; Daniel Robbins emerge: "emerge --help - rsync" now works correctly and displays rync help rather than rsyncing. This - closes bug #4438, #4629. - - 10 Jul 2002; Daniel Robbins portage.py: Portage now - prints a friendly error if PORTAGE_TMPDIR doesn't exist or is not a - directory. This effectively closes bug #4360. - - 10 Jul 2002; Daniel Robbins emerge: the "inject", - "sync" and "rsync" actions no longer allow "--pretend" or "-p" to be - specified. This closes bug #4352. - - 10 Jul 2002; Daniel Robbins sandbox.c: use realpath() - to expand the PORTAGE_TMPDIR, /var/tmp, /tmp paths. This allows write access - to these directories even if /var or /var/tmp is a symlink, for example. - Without this fix, access to these directories will be denied by the sandbox, - creating a bunch of problems. Closes bugs #4256, #2379, #4625, #2931, #4829. - - 10 Jul 2002; Daniel Robbins megadigest, megadownload, - megatouch, pkgsearch: removed from the bin/ directory; deprecated. - - 10 Jul 2002; Daniel Robbins emerge, quickpkg: remove - hard-coded references to "/usr/portage" in "emerge search", quickpkg. Now - correctly uses PORTDIR instead. Closes bug #4836. - - 10 Jul 2002; Daniel Robbins emerge: emerge now checks - to see if the "wheel" group exists before running; if it doesn't, it exits - with a polite error message. Closes bug #4736. - - 08 Jul 2002; Daniel Robbins portage.py: changed the - unmerge() code so that it doesn't use mtimes to test whether a symlink - should be unmerged, since mtimes and symlinks are weird partners. Instead, - we save unmerging of our symlinks until the end of the code, and unmerge - them only if their target no longer exists. This closes bug #4491. - - 08 Jul 2002; Daniel Robbins portage.py: check whether - ebuild actually exists immediately before running pkg_postint() and - pkg_preinst() from the dblink merge() method. Also change all PKG_TMPDIR - references to PORTAGE_TMPDIR plus suffix, closing bug #4447, #4853. - -*portage-2.0.11 (07 Jul 2002) - - 07 Jul 2002; Daniel Robbins portage.py: rewrote - portdbapi's xmatch() and visible() to fix significant bugs. Logic errors in - both methods caused ~ deps to not work correctly. After the rewrite, - dependency checking is now 44% faster. - - 07 Jul 2002; Daniel Robbins repoman, portage.py: Added - new DEPEND and RDEPEND.badmasked categories to repoman. repoman now checks - dependencies of masked packages using *all* ebuilds, rather than trying to - match them against all visible ebuilds. DEPEND.bad and RDEPEND.bad (used to - be ".unsolvable") now only tally visible ebuilds, not masked ones. - -*portage-2.0.10 (06 Jul 2002) - - 05 Jul 2002; Daniel Robbins portage.py, repoman: Added - new capabilities to repoman -- the ability to detect unsolvable DEPEND and - RDEPEND variables, missing DESCRIPTION, LICENSE, KEYWORDS and SLOT. Fixed - repoman so that adding a comment with quotes in it doesn't break things. - Added a few tiny extensions to portage.py to support the new repoman - features. - - 03 Jul 2002; Martin Schlemmer ebuild.sh: some ebuilds - like gcc do not use $S to build the package in, and this causes generated .la - files (libtool) to contain $WORKDIR in them. We thus export $WORKDIR in - ebuild.sh as well, to go along with fixes to the libtool-portage patch. - - 02 Jul 2002; Daniel Robbins portage.py: pkg_setup() now - gets called before a tbz2 is installed, and pkg_preinst() and postinst() get - called at the right times as well. - - 01 Jul 2002; Phil Bordelon emerge: "emerge --help - rsync" does an rsync instead of printing help. Until this is fixed, I - removed it from the list of detailed help options. - -*portage-2.0.9 (01 Jul 2002) - - 01 Jul 2002; Daniel Robbins Added missing .match() - method to portdbapi. - - 01 Jul 2002; Daniel Robbins portage.py: Added new - operator for dependencies: DEPEND="foo? bar : oni" will use oni if foo isn't - set. Added "||" support back after removing it from my working copy; looks - ok. - - 29 Jun 2002; Daniel Robbins portage.py, make.globals, - make.globals.ppc: internalized definitions of BUILDDIR and PKG_TMPDIR in - order to make things work as expected when one sets PORTAGE_TMPDIR. The new - config file var expansion algorithm made this change necessary. - - 29 Jun 2002; Daniel Robbins portage.py: fix doebuild() - so that pkg_setup() gets called when a .tbz2 package is being built. This - closes bug #3673. - - 29 Jun 2002; Daniel Robbins portage.py: tweaked the - aux_get() code to automatically regenerate cache files if they have the - incorrect number of entries. Added an additional fix to this code on 01 Jul - 2002. - - 29 Jun 2002; Martin Schlemmer portage.py: merge in some - of the missing ld.so.preload fixes again. - - 29 Jun 2002; Daniel Robbins portage.py: new version - with highly-optimized dependency calculation caching, particularly for - portdbapi. Includes new three-level caching portdbapi xmatch() method. - - 27 Jun 2002; Grant Goodyear ebuild.sh: Added keepdir() - function so that it no longer has to be hardcoded in ebuilds. - -*portage-2.0.8 (27 Jun 2002) - - 27 Jun 2002; Daniel Robbins emerge: in an attempt to - provide a predictable release of Portage, I'm reverting the "emerge - --pretend" "fix" in Portage-2.0.6. It ignores custom USE settings when - calculating child deps, which makes things tricky for users. We'll use the - "expected" (old) behavior for now until we have a solution for this USE - issue. - - 27 Jun 2002; Daniel Robbins portage.py: fixed handling - of ! deps in match(), closing bug #4219. Thanks Spidler! - - 27 Jun 2002; Daniel Robbins portage.py: disabled USE - regeneration on reset() for performance purposes. - -*portage-2.0.7 (26 Jun 2002) - - 26 Jun 2002; Daniel Robbins portage.py: add a friendly - error handler for aux_get() so that flaky ebuilds don't cause it to trip up - with a cryptic traceback; users will get a friendly error message instead. - Also, temporarily disable keyword-based masking, since it currently slows - down Portage by quite a bit since it causes a much greater set of ebuilds to - be cached. - -*portage-2.0.6 (25 Jun 2002) - - 25 Jun 2002; Daniel Robbins portage.py: rewrote the - config file code to make things more sane, consistent, and made infinite - loops during variable expansion a thing of the past. This closes bug #3952. - - 25 Jun 2002; Daniel Robbins emerge, portage.py, - ebuild.sh: "emerge --pretend" and "emerge search" now work for the root user - as well as any users in the "wheel" group. emerge will now gracefully exit - if "emerge search" is run by someone not in the "wheel" group. This closes - bug #4121. - - 25 Jun 2002; Martin Schlemmer bin/{dolib.so,preplib.so}: - Also change "strip --strip-unneeded" to "strip --strip-debug" for these. - Look at bugs #2702,#3929,#4027 for more info. - - 25 Jun 2002; Daniel Robbins emerge: "emerge -u" now - correctly scans dependencies of packages, even if they are up-to-date, to - determine if any of their dependencies need updating. Previously, up-to-date - packages were not scanned in this way, which was a bug. - - 24 Jun 2002; Daniel Robbins ebuild.sh: Portage will now - automatically take advantage of ccache if the >=dev-util/ccache-1.9 ebuild is - installed. Removing /var/cache/ccache hole in the sandbox. - -*portage-2.0.5 (24 Jun 2002) - - 23 Jun 2002; Daniel Robbins portage.py: basic keyword- - based masking is now active. New support for KEYWORDS in ebuilds and - ACCEPT_KEYWORDS in profiles. - - 23 Jun 2002; Daniel Robbins conf files: removed - references to non-functional FTP_PROXY and HTTP_PROXY and added a note about - how to use the correct vars (ftp_proxy and http_proxy.) Closes bug #1664. - Also added note about RSYNC_PROXY, closing bug #2332. - - 23 Jun 2002; Daniel Robbins portage.py: removed - "dependency too short" checks which weren't working and were causing deps - like "mc" and "ed" to be rejected as invalid rather than being expanded. - - 23 Jun 2002; Daniel Robbins emerge: upgraded "clean" - code to be more robust, consistent. Closes bug #3967. - -*portage-2.0.4 (20 Jun 2002) - - 20 Jun 2002; Daniel Robbins in the 2.0.4 ebuild itself: - added back tbz2tool symlink which was mistakenly removed. Also changed the - way we compile portage.py stuff so that we remove the previously compiled - files, just in case clock skew cause them to seem more recent than they - really are. Python byte-code compilation moved to pkg_postinst() - - 20 Jun 2002; Daniel Robbins portage.py: fixed up the - fetch() code so that invalid digests don't cause a traceback. - - 20 Jun 2002; Daniel Robbins portage.py: some of the new - transplanted virtuals code assumed that profiledir was set, which is not - required. This code has now been fixed to not make that assumption. - -*portage-2.0.3 (20 Jun 2002) - - 20 Jun 2002; Daniel Robbins portage.py: fixed two typos - pointed out by stroke and g2boojum. These fix unmerge and some aspect of - virtuals handling, which was previously causing a traceback. - - 19 Jun 2002; Daniel Robbins emerge: emerge -eup world - now will ignore world entries if it isn't really installed locally; in 2.0.1, - --emptytree would auto-enable all world entries, leading to inconsistent - package lists between --emptytree and without. - -*portage-2.0.2 (19 Jun 2002) - - 19 Jun 2002; Daniel Robbins make.conf.ppc, - make.globals.ppc: integrated these files into our sources. - - 19 Jun 2002; Daniel Robbins portage.py: fixed a bug - where ROOT="" would not get properly converted to ROOT="/". - - 18 Jun 2002; Daniel Robbins emerge: Portage 2.0+ has - fixed "!" depend matching support, but some code in emerge was designed to - anticipate the incorrect behavior. This emerge code has been fixed to work - correctly. This closes my part of bug #3834. - - 18 Jun 2002; Daniel Robbins portage.py, emerge: fixed - bug #2444, where emerge fails when "--emptytree" and "--onlydeps" are used at - the same time. - - 18 Jun 2002; Daniel Robbins portage.py, emerge: new - fakedbapi for doing emptytree calculations; emptytree upgrades in emerge. - "emerge -upe world" now works correctly, accounting for items in the world - profile. Yay! Bugs #3832 and #1911 fixed. - - 18 Jun 2002; Daniel Robbins portage.py, emerge: - Integrated new aux_get() method into our portdbapi. aux_get() provides a - standardized way to get cached information about ebuilds, and is now fully - integrated into Portage and emerge search. - - 18 Jun 2002; Daniel Robbins portage.py: fixed a bug - where dep_nomatch() was testing for None rather than a "zero" condition, - causing dep_nomatch() to choke on match()'s [] return value. - - 17 Jun 2002; Daniel Robbins emerge: added an exception - handler to catch invalid regular expressions and avoid a traceback. - - 17 Jun 2002; Daniel Robbins sandbox.c: added - /var/cache/ccache to sandbox "write ok" list, closing bug #3028. - -*portage-2.0.1 (16 Jun 2002) - - 16 Jun 2002; Daniel Robbins portage.py, emerge: fixed a - virtuals expansion bug that would cause virtuals to be consulted too early. - -*portage-2.0 (16 Jun 2002) - - 16 Jun 2002; Daniel Robbins portage.py, ebuild.sh, - emerge: turbo-ified Portage, new Portage db API and many other fixes. - Unmerging now works again (bug introduced several releases ago.) I - originally wanted to hold off on releasing 2.0, but since several major bugs - are fixed, we need to get these fixes out to our users ASAP. We will be - releasing 2.1 in about a week which should include additional refinements. - - 16 Jun 2002; Daniel Robbins repoman: New repoman - commit/check QA tool for developers. - - 10 Jun 2002; Dan Armak make.conf: Update the ibiblio - mirror path; it is now www.ibiblio.org/pub/Linux/distributions/gentoo. - - 10 Jun 2002; Martin Schlemmer ebuild.sh : Some users have - $TMPDIR to a custom dir in their home ...this will cause sandbox errors with - some ./configure scripts or libtool, so set it to $T. - - 10 Jun 2002; Martin Schlemmer portage.py : Merge in the - ld.so.preload changes. Also updated spawn() to only run sandbox if - buildphase is one of clean, unpack, compile or install. This should fix the - handler not detecting some instances of sandbox running. Updated ebuildsh() - to set buildphase="" on spawn exit. - - 10 Jun 2002; Martin Schlemmer - portage.py.ldsopreload,testsandbox.sh : Add support to test if another - sandbox is running, if so dont delete /etc/ld.so.preload on kill. I did not - commit this to portage.py, as it is a bit more changes than we originally - though. - - 05 Jun 2002; Daniel Robbins portage.py: doebuild() now - has proper logic for digest generation. Digest will now get regenerated if - "ebuild digest" is run, even if "digest" is in FEATURES. - - 04 Jun 2002; Daniel Robbins emerge: fixed typo in - "inject" documentation. - - 02 Jun 2002; Martin Schlemmer bin/dosym: changed the - command used from "ln -sf" to "ln -snf" as it created a symlink in the target - directory if the linkname already existed (only if the target is a - directory). Im guessing this should be fixed in the python merged code if - symlinks are not unlinked before the new is merged into place .. will add a - bug later. - -*portage-1.9.14 (01 Jun 2002) - - 01 Jun 2002; Daniel Robbins portage.py: when a file to - be merged is identical to the one currently on disk (using the md5 test), we - now at least correctly update the target's mtime and atime so that cleaning - will work correctly. - - 27 May 2002; Daniel Robbins bin/do*: changed "return"s - to "exit 1". Closes bug #3078. - -*portage-1.9.13 (21 May 2002) - - 21 May 2002; Grant Goodyear emerge.1: Updated man page. - Thanks to carpaski@twobit.net. - - 20 May 2002; Daniel Robbins emerge: a fix for dep - regeneration; stale dep cache entries should now be properly regenerated. - -*portage-1.9.12 (16 May 2002) - - 16 May 2002; Daniel Robbins portage.py: the settings - for A and AA were swapped; this has now been fixed, closing bug #1634. - - 15 May 2002; Daniel Robbins portage.py: fixed up some - quirks in the new fetch code which were reported by Wout Mertens. Thanks - Wout! - -*portage-1.9.11 (13 May 2002) - - 13 May 2002; Daniel Robbins portage.py: addition of - third-party mirroring code. "mirror://sourceforge/foo.tar.gz" will use the - /usr/portage/profiles/thirdpartymirrors file to define the mirror it will - download from. Multiple mirrors for a single keyword can be specified on a - single line. This code was based on the good work of Ryan Phillips. - - 13 May 2002; Daniel Robbins portage.py: (entry on behalf - of jnelson) -- we now have new KV detection/setting code that uses - /usr/src/linux/include/linux/version.h to determine the kernel version -- the - right way of doing things. KV is set to "" if the kernel is not available or - not configured. - - 13 May 2002; Daniel Robbins emerge: "abspath[x]" => - "abspath(x)" typo fix. Also added 2-liner to allow for "emerge unmerge" to - specify "foo/bar-1.0" rather than requiring "=foo/bar-1.0." Also fixed - problems when specifying the names of actual ebuilds in /var/db/pkg to - unmerge. - -*portage-1.9.9 (06 May 2002) ?? - - 08 May 2002; Daniel Robbins portage.py: An empty - USE_ORDER (due to an out-of-date /etc/make.globals) would cause USE to always - be empty. I added a reasonable default USE_ORDER if USE_ORDER is not found - in any of the config files, fixing this problem. - - 06 May 2002; Daniel Robbins emerge: post bug #1841 - cleanups; converted from .hasnode() to .dep_match() (correct) in - getworldlist(). - -*portage-1.9.8 (06 May 2002) - - 06 May 2002; Daniel Robbins emerge: 2 fixes that seemed - to get fried/zapped: bug #1841 and fixing an emerge sync error code to be - more understandable. - -*portage-1.9.7 (06 May 2002) - - 06 May 2002; Daniel Robbins portage.py, emerge: initial - bunch of robustness/error-handling fixes. Emerge should now report a - comprehensible error message for errors in DEPEND and RDEPEND rather than - giving a traceback. Fixed dep_depreduce() to catch errors rather than - passing them on to dep_bestmatch() (which doesn't check for errors and - assumes correct input) - - 02 May 2002; Daniel Robbins portage.py: typo fix for - S_ISFIFO call; thanks woodchip! - -*portage-1.9.6 (02 May 2002) - - 02 May 2002; Daniel Robbins make.conf: SYNC variable - correctly set to use our DNS round-robin system (rsync.gentoo.org). - -*portage-1.9.6_pre2 (01 May 2002) - - 01 May 2002; Daniel Robbins portage.py: config file - protection upgrade; we now record md5sums of previously-merged config protect - files in /var/cache/edb/config; we use this information to avoid merging - files that have been merged by us before (if it is safe to do so). This - doesn't solve the problem of rolling back to a previously-merged version of - a config file; we need to add cvs headers to every config file to get that - to work. - -*portage-1.9.6_pre1 (01 May 2002) - - 01 May 2002; Daniel Robbins emerge: added "inject" - capability to artificially satisfy a dep -- for situations when you don't - want Portage to do it for you because you've taken care of it already. - - 01 May 2002; Daniel Robbins portage.py, emerge: totally - rewrote emerge's unmerge code. The original code (added by Bevin) was a bit - too cryptic and "big" for my taste. Also added two new capabilities to - portage.py's vartree: .getslot() and .gettimeval(). getslot() returns the - slot value of a cat/pkg-v, if any, and gettimeval() returns a "time value" - (based on mtime/COUNTER value) that can be used to determine the order in - which packages got merged. The purpose of these improvements were to revamp - the existing Portage code that could only unmerge a db entry if there was a - corresponding ebuild file. This conflicted with the ability to "inject" - packages (see above), so it needed to be changed. Also fixed some bugs along - the way. - - 01 May 2002; Daniel Robbins ebuild.sh: einstall now - accepts arguments, closing bug #2275. Thanks seemant! :) - - 01 May 2002; Daniel Robbins make.globals: switch SYNC - var from cvs.gentoo.org to rsync.gentoo.org, and gentoo-x86-portage to - gentoo-portage. - - 30 Apr 2002; Daniel Robbins emerge: now checks for - errors (caused by bad deps) returned by create() and syscreate(). - -*portage-1.9.5 (29 Apr 2002) - - 29 Apr 2002; Daniel Robbins ebuild.sh: added jnelson's - KV_extract.awk script which extracts the kernel version from the actual - kernel sources Makefile, making our KV setting much more robust! Thanks Jon - :) - - 29 Apr 2002; Daniel Robbins emerge: correctly fixed - emerge search examples to use single quotes (to turn off globbing.) This - closes bug #1609. - - 29 Apr 2002; Daniel Robbins portage.py: virtual entries - for no-longer-installed packages now get automatically removed on unmerge. - This closes bug #2255 and #1891 (Thilo Bangert's comment on #1891 is also - fixed.) - -*portage-1.9.4 (29 Apr 2002) - - 29 Apr 2002; Daniel Robbins portage.py: Added support - for RESTRICT="nomirror". If "mirror" is defined in FEATURES and "nomirror" - is defined in RESTRICT, then files will not be fetched. - - 29 Apr 2002; Daniel Robbins emerge: Fixed docs for - "unmerge", added docs for "--oneshot". Closes bugs #2156 and #2182. - - 29 Apr 2002; Daniel Robbins ebuild.sh: Fix for USE - troubles; confirmed by Azarah as working :) Also, we now strip the path - from "KV" as we should. - -*portage-1.9.4_pre1 (26 Apr 2002) - - 26 Apr 2002; Daniel Robbins tarball.sh: no longer - necessary for VERSION to equal "@portage_version@" to get the version - auto-set. VERSION can now be set to anything and tarball.sh will get it - right. - - 26 Apr 2002; Daniel Robbins emerge: I've started work - on revamping/improving the "blocks" system to get ready to fix bug #1891. - Already fixed a bug where "blocks" ("!" deps) print out the wrong blocking - package name. This is now fixed. Blocks need additional testing. - - 26 Apr 2002; Daniel Robbins portage.py, ebuild.sh, use: - "use" is now a bash builtin function rather than an external python-based - command. This appears to fix the USE inconstencies, as it should, thereby - closing bug #2000. - -*portage-1.9.3 (24 Apr 2002) - - 24 Apr 2002; Jon Nelson : portage.py, chkcontents: - Emulate fchksum's md5 checksum routine. Closes bug #2787. - - 23 Apr 2002; Daniel Robbins : emerge: invalid - short options result in an exit. Closes bug #2025. - - 22 Apr 2002; Daniel Robbins : emerge: rsync zlib - compression enabled by default. - -*portage-1.9.2 (21 Apr 2002) - - 21 Apr 2002; Daniel Robbins : portage.py: signal - handler now zaps /etc/ld.so.preload if it's there -- this prevents it - from hanging around and causing sandbox badness. - - 21 Apr 2002; Daniel Robbins : emerge: fixed an - error where --emptytree mode wouldn't really have a fully empty tree, - due to the emptytree.inject() coming before the emptytree.root=None; - the inject() caused a recalc of the USE vars, which caused the tree - to become partially populated and it wasn't cleared. This closes bug - #1897. - - 21 Apr 2002; Daniel Robbins : portage.py: package - building now executes the "setup" stage along with the unpack, compile, - install stages so that global variables can be shared. This fixes an issue - with woodchip's new apache ebuild and closes bug #1813. - -*portage-1.9.1 (16 Apr 2002) - - 16 Apr 2002; Daniel Robbins : tiny (and forgotten) - quick fix. - -*portage-1.9.0 (16 Apr 2002) - - 16 Apr 2002; Daniel Robbins : portage.py: fetching - should now try *all* alternate download locations, closing bug #1544. - Yay! - - 15 Apr 2002; Daniel Robbins : emerge: "emerge R" now - works correctly, closing bug #1094. - - 15 Apr 2002; Daniel Robbins : ebuild.sh: *'s and ?'s in - DEPEND and SRC_URI syntax should no longer get glob-expanded to files in - /usr/portage. This fixes some cryptic bugs. It also closes bug #1473. - - 15 Apr 2002; Daniel Robbins : portage.py: emerge --debug - now works again. Closes bug #1437. - - 15 Apr 2002; Daniel Robbins : portage.py: moved argument - check to the beginning of the doebuild() function to prevent "ebuild - foo.ebuild fart" from causing the md5sums to be checked before recognizing - that "fart" is not a valid command. Closes bug #1823. - - 15 Apr 2002; Daniel Robbins : portage.py: 'USE="-foo" - emerge bar' should now work correctly and consistently. Fixes to the config - class. Closes bug #1455. - - 15 Apr 2002; Daniel Robbins : portage.py: applied - jnelson's patch to properly kill all children when interrupted with ^C - - 15 Apr 2002; Donny Davies : make.conf: added a - RESUMECOMMAND for lukemftp. - - 15 Apr 2002; Daniel Robbins : portage.py: fixed up some - "zing" logic inside the merge code (fixing variable being used before - assignment errors) - - 15 Apr 2002; Jon Nelson : src/sandbox/Makefile, - src/sandbox/problems/Makefile, src/sandbox/problems/sandbox_dev_fd_foo.c, - src/sandbox/sandbox.c: Cleaned up Makefiles somewhat to take advantage of GNU - Make, added '/dev/zero' and /dev/fd/' (<- note trailing slash) to the list of - items accessible safely from the sandbox. Added sandbox_dev_fd_foo.c to test - for /dev/fd/. The test is almost verbatim from the autoconf test suite. - - 13 Apr 2002; Martin Schlemmer : ebuild.sh: - Export $S and $D in dyn_compile and dyn_install, as our patched - version of libtool uses these to fixup .la files. - -*portage-1.8.19 (09 Apr 2002) - - 08 Apr 2002; Geert Bevin : emerge: Removed --all switch to - emerge unmerge and clea. Added emerge prune which is the same as old emerge - unmerge. Emerge unmerge removes all instances again without any proctedtion, - as before. Added reporting of Omitted versions due to dep selectors. - Renamed Removing and Keeping to Selected and Protected - - 08 Apr 2002; Geert Bevin : emerge, portage.py: Better - unmerge and clean reporting. Added homepage output to emerge --search. - Bugfix when specifying a package without category that doesn't exist. - -*portage-1.8.18 (07 Apr 2002) - - 07 Apr 2002; Geert Bevin : make.globals, emerge: - Simplified unmerge functionality. Deprecated the CLEANMODE var, - emerge clean now removes both revisions and slots automatically, - emerge unmerge now removes all versions and revisions by default. - Both understand world and system targets, and the --all option which doesn't - check which packages are old and outdated. - Documentation fixes. - AUTOCLEAN var addition and added the autoclean functionality. - -*portage-1.8.17 (05 Apr 2002) - - 05 Apr 2002; Daniel Robbins : portage.py: no longer - print out the counter number after a merge. This information should not - need to be known by end-users. - - 05 Apr 2002; Daniel Robbins : sandbox.c: patched to - allow access to /dev/vc from sandbox, allowing vim and screen to compile - correctly from console. - - 05 Apr 2002; Daniel Robbins : portage.py: fixed a bug - that prevented md5 digests from being compared on archives. - - 04 Apr 2002; Daniel Robbins : portage.py: Parse errors - in /etc/env.d files no longer cause a traceback. - -*portage-1.8.16 (04 Apr 2002) - - 04 Apr 2002; Geert Bevin portage.py, emerge : Forgot to - commit my changes, this is an assembled version of both drobbins's and my - changes - -*portage-1.8.15 (04 Apr 2002) - - 04 Apr 2002; Daniel Robbins portage.py: Fixed a - semi-long standing bug where I was comparing atimes rather than mtimes when - seeing if dep caches were stale. This fixes a bug originally reported by Dan - Armak. - -*portage-1.8.14 (04 Apr 2002) - - 04 Apr 2002; Geert Bevin emerge: - Fixed short options for --all, --safe and clean. - -*portage-1.8.13 (04 Apr 2002) - - 04 Apr 2002; Geert Bevin portage.py, emerge: - Added emerge --all clean and emerge --safe unmerge. - Made the counter updates atomic so that multiple merges can happen without - risking counter clashes. - Updated --help. - Fixed short options bug that prevented two seperate short options to be - specified successively. - -*portage-1.8.12 (04 Apr 2002) - - 04 Apr 2002; Geert Bevin portage.py, emerge: - implemented "emerge clean" with oldrevs, oldversions and oldslots options for - the make.conf/make.globals CLEANMODE variable. - - 03 Apr 2002; Daniel Robbins portage.py: Added an - indentation fix to prevent merge from dying if a file attempts to install - itself on top of an existing directory. Closes bug #1498. - -*portage-1.8.11.1 (03 Apr 2002) - - 03 Apr 2002; Geert Bevin portage.py: important fixes - for movefile() -- changed the order of ownership / permissions settings since - suid/guid bits were overwritten, added support back for 'ebuild config' since - it was accidentally left out - -*portage-1.8.11 (02 Apr 2002) - - 02 Apr 2002; Daniel Robbins portage.py: important fixes - for movefile() -- ownership now preserved across filesystems, mv -f fallback - for special files, other optimizations and robustness improvements. Important - fixes all-round. - - 02 Apr 2002; Geert Bevin emerge: - fixed bad indentation of a part of the code that made unmerging multiple - packages behave badly - -*portage-1.8.10 (01 Apr 2002) - - 01 Apr 2002; Daniel Robbins make.globals: removed USE - settings from make.globals. - - 01 Apr 2002; Daniel Robbins portage.py: In trying to fix - the glibc merge bug, we rewrote movefile() and it now runs blazingly fast. I - also tweaked the code to remove the need for an ">>> Updating mtimes..." - stage. This is all done dynamically now. *Much* faster. And hopefully - solid for glibc upgraders. - -*portage-1.8.9.4 (01 Apr 2002) - - 31 Mar 2002; Daniel Robbins portage.py: adapted - movefile() which should preserves timestamps and ownership on files and - symlinks it moves. - -*portage-1.8.9.3 (31 Mar 2002) - - 31 Mar 2002; Daniel Robbins portage.py: promising - rewrite of movefile() not only will probably fix glibc merge bug but also - speeds up merging at least 20x! Calling "mv" for every file really make - things super-slow! - -*portage-1.8.9.2 (31 Mar 2002) - - 31 Mar 2002; Daniel Robbins portage.py: desperate attempt - to fix movefile() bug... a hack really. glibc merges still dying. - -*portage-1.8.9.1 (31 Mar 2002) - - 31 Mar 2002; Daniel Robbins portage.py: it appears that - movefile() (using "/bin/mv") can still die if moving a new symlink on top of - an existing library symlink. Upon failure, we now use a fallback mechanism - to use "/bin/sln" to create the new symlink safely. - -*portage-1.8.9 (30 Mar 2002) - - 30 Mar 2002; Daniel Robbins portage.py: tiny cosmetic - fix for digest generation. - - 30 Mar 2002; Daniel Robbins emerge: entries in the - world profile will be ignored if at least one version of the package in - question isn't already merged. Prevents "--update world" from remerging - packages that have since been unmerged. - - 30 Mar 2002; Daniel Robbins various: changing all - references from /usr/bin/python to /usr/bin/python2.2. - - 30 Mar 2002; Daniel Robbins db-update.py: moving this - script here from FILESDIR. - - 30 Mar 2002; Daniel Robbins portage.py: stuff doesn't - get added to the world profile if it is already an essential ("*") package in - the system profile. Keeps things clean and flexible. - -*portage-1.8.9_pre38 (30 Mar 2002) - - 30 Mar 2002; Daniel Robbins portage.py: resolve_key() - didn't call load() on mapped virtuals, resulting in inconsistent resolution - of virtual keys. Now fixed; thanks to woodchip for the bug report. - -*portage-1.8.9_pre37 (30 Mar 2002) - - 30 Mar 2002; Daniel Robbins portage.py: specific - provides (dev-lang/python-2.2) will be converted to their generic form - (dev-lang/python) before being recorded. - -*portage-1.8.9_pre36 (30 Mar 2002) - - 30 Mar 2002; Daniel Robbins portage.py, emerge: new - virtuals fixes and a db-upgrade.py script in the ebuild to solve another - virtuals problem. - -*portage-1.8.9_pre35 (29 Mar 2002) - - 29 Mar 2002; Daniel Robbins portage.py, emerge: digest - generation fixes; emerge --update will now update dependents even if the main - package hasn't been updated. getdict() fix, fixing a traceback. - -*portage-1.8.9_pre34 (28 Mar 2002) - - 28 Mar 2002; Daniel Robbins portage.py: Added an indent - fix for the new virtuals code, eliminating a traceback. Tweaked digest handling, - fixing a cosmetic error. - -*portage-1.8.9_pre33 (28 Mar 2002) - - 28 Mar 2002; Daniel Robbins portage.py: tweaked digest - creation in doebuild() to hopefully avoid creating digests twice. I hope I - didn't break anything in the process. - - 28 Mar 2002: Daniel Robbins portage.py, emerge: "emerge - update" is now "emerge --update"; "world" added back. New world - implementation that works like this ... if you type "emerge media-gfx/gimp", - media-gfx/gimp will be added to the "world" favorites file in - /var/cache/edb/world. This world file is added to the system profile in - order to create the set of "world" packages to merge. You can manually put - specific deps (for pinning) in /var/cache/edb/world and they won't get - overwritten. To prevent a package that you specify on the emerge - command-line from being added to the world profile, use the "--oneshot" - option, which tells emerge that it should be merged once but not updated. - - 28 Mar 2002: Daniel Robbins portage.py: New virtuals - implementation; new virtual info is recorded in /var/cache/edb/virtuals; - virtuals data is created by merging the profile virtual info with the new - edb/virtuals file. Note: We no longer add virtual package entries to - /var/db/pkg. This change solves the bug where virtual files get auto-updated - by pkg-update, and also solves the bug where doing an "emerge --update world" - will cause ssmtp to be merged in order to satisfy the virtual/mta dep (which - you already have satisfied by postfix, for example). Now, postfix will be - updated if necessary, but that's it. :) - -*portage-1.8.9_pre32 (22 Mar 2002) - - 22 Mar 2002; Daniel Robbins portage.py: fixed a bug - related to scanning for available binary packages, which would cause emerge - to die. - - 21 Mar 2002; Dan Armak portage.py: added ECLASSDIR - (=$PORTDIR/eclass) to settings exported by python side to bash side. - ebuild.sh: remove ECLASSDIR setting to use the one now provided by - portage.py. Also, clean inherit() and make it use debug-print(). - -*portage-1.8.9_pre31 (21 Mar 2002) - - 21 Mar 2002; Daniel Robbins ebuild.sh: Added Dan - Armak's patch to enable eclasses. :) - - 21 Mar 2002; Grant Goodyear portage.py: - Added a drobbins patch to at line 469. Should fix emerge rsync - problem when /etc/make.profile doesn't exist. - -*portage-1.8.9_pre30 (20 Mar 2002) - - 20 Mar 2002; Daniel Robbins portage.py, emerge: emerge - --emptytree now works again and I added a new --nodeps option to emerge as - well. - -*portage-1.8.9_pre29 (20 Mar 2002) - - 20 Mar 2002; Daniel Robbins portage.py: CONTENTS files - now record the correct path when ROOT!="/". - -*portage-1.8.9_pre28 (20 Mar 2002) - - 20 Mar 2002; Daniel Robbins portage.py, emerge: an - /etc/make.profile dir is now optional and portage will work if it's missing - or is a broken symlink. - - 20 Mar 2002; Daniel Robbins portage.py: fix load() - method in packagetree() class. - -*portage-1.8.9_pre27 (19 Mar 2002) - - 19 Mar 2002; Daniel Robbins portage.py: - /etc/make.profile/packages wasn't correctly masking core system packages; - fixed. - -*portage-1.8.9_pre26 (18 Mar 2002) - - 18 Mar 2002; Daniel Robbins portage.py: configuration - settings don't get loaded from ${ROOT}/etc anymore, just /etc. This - simplifies the creation of a new build image. - - 18 Mar 2002; Daniel Robbins portage.py: Don't expect a - digest file if SRC_URI is set to "" or undefined. - - 18 Mar 2002; Daniel Robbins : RDEPEND was getting set - to DEPEND even if there was an RDEPEND="" in the ebuild. This has now been - fixed and RDEPEND will only get to DEPEND if RDEPEND has unset (not "unset - or null", as it was before this fix.) - - 18 Mar 2002; Daniel Robbins : emerge: circular - dependencies error will result in the digraph dependencies being printed to - stdout, greatly simplifying debugging. - - 18 Mar 2002; Geert Bevin : src/sandbox/problems: Added - several sample implementations to reproduce reported bugs. - - 18 Mar 2002; Geert Bevin : libsandbox.c: All paths are now - checked for multiple successive slashes anywhere, this closes bug 827. - Performance should be slightly improved for other apps on the system for who - the sandbox is not turned on. - - 14 Mar 2002; Daniel Robbins : output.py: quick fix to - turn off white color output -- not good for terminals with white background. - This closes bug #1135. - - 11 Mar 2002; Daniel Robbins : Applied karltk's version - information patch. Portage.py now contains version information, and this - info is reported by "emerge --version". Thanks Karl! :) - -*portage-1.8.9_pre25 (11 Mar 2002) - - 10 Mar 2002; Daniel Robbins portage.py, emerge: roll - back portagetree incremental db optimizations to fix an important bug (no - package.mask calculations being done.) Emerge will now abort if a dependency - can't be satisfied rather than printing just a warning. - -*portage-1.8.9_pre24 (09 Mar 2002) - - 09 Mar 2002; Daniel Robbins emerge: fixed missing - "--clean" option so "--clean rsync" should work again. Also converted emerge - to work with our new db layout (db objects are in the portage module now). - - 09 Mar 2002; Daniel Robbins portage.py: Added USE - ordering, a concept envisioned by Vitaly Kushneriuk. The idea is to allow - customization of how Portage resolves USE variables. The default is - "env:conf:auto:defaults" (set in the USE_ORDER variable -- this default is - now in make.globals but as always you should set your custom USE_ORDER in - make.conf if desired.) So, my default, USE settings will be calculated as - follows. The USE variables will be grabbed from the - /etc/make.profile/make.defaults file (this is "defaults".) Then, the - /etc/make.profile/use.defaults file will be consulted. This file lists (one - per line) a USE variable and a corresponding dependency. If the dependency - is satisfied, the USE variable is auto-enabled and added to our working list - (this is "auto"). Then /etc/make.conf is consulted, so that the user has the - option of force-enabling (with USE="foo") or force-disabling (with - USE="-foo") any USE variables as desired (this is "conf".) Then, the - environment is consulted, allowing easy modifications from the command-line - (this is "env"). Also added is the ability for USE settings to be - dynamically regenerated in an efficient way as packages are merged. So, - right after xfree is emerged, the "X" use variable can be immediately - auto-enabled. Thanks to Vitaly for providing the vision for this. - -*portage-1.8.9_pre23 (08 Mar 2002) - - 09 Mar 2002; Daniel Robbins portage.py: our portage - tree and /var/db/pkg tree now uses incremental caching rather than doing - an exhaustive scan on startup. This should speed up this respective code - by 2-30x depending on how many packages you're emerging. This involved - quite a few changes to the code, and there could be some bugs, although I - tried to be very careful. These changes could also break code that access - internal .tree[] dictionaries directly. - - 08 Mar 2002; Daniel Robbins portage.py: SRC_URIs with - USE-enabled ( ) clauses in them weren't working because I was iterating - through multi-level lists without flatten()ing them. Now fixed. - - 07 Mar 2002; Daniel Robbins portage.py: We no longer - depend upon a file being unmerged. We try to unlink during unmerge() in a - "try" clause, with an exception for OSError. If the directory is immutable - then Portage continues gracefully. This closes a bug reported by Verwilst -- - unmerging an old baselayout would die when it tried to delete /dev/shm. - Fixed in Portage to eliminate these kinds of problems in the future. - -*portage-1.8.9_pre22 (07 Mar 2002) - - 07 Mar 2002; Daniel Robbins portage.py: I had - sys.exit() in doebuild()'s fetch section. Converted to "return 1" and - "return 0" to be emerge --fetchonly friendly. Thanks to Dan Armak for the - bug report. - -*portage-1.8.9_pre21 (07 Mar 2002) - - 07 Mar 2002; Daniel Robbins portage.py: fixed symlink - merge bug related to "safe" emerges. This should fix problems of Portage - dying when merging certain things. I'm hoping that this fix will give us a - solid merge implementation. It should. Thanks to Bart Verwilst for tracking - down a merge problem that I could reproduce. - -*portage-1.8.9_pre20 (06 Mar 2002) - - 06 Mar 2002; Daniel Robbins ebuild.sh, others: users - can now forcefully disable stripping of their ebuild binaries by adding a - RESTRICT="nostrip" to their ebuild. Additionally, the DEBUG variable has - been renamed to DEBUGBUILD to prevent namespace collisions. This closes bug - #868. - - 06 Mar 2002; Daniel Robbins portage.py : Fixed a - long-standing bug where the pkg_preinst() and pkg_postinst() functions being - called came from the existing package ebuild in /var/db/pkg rather than the - new ebuild being merged. pkg_prerm() and pkg_postrm() still use the ebuild - in /var/db/pkg, which is correct. Thanks to Dan Armak for tracking down this - bug. - -*portage-1.8.9_pre19 (05 Mar 2002) - - 05 Mar 2002; Daniel Robbins portage.py : Fixed two bugs - reported by Dan Armak relating to incomplete (not missing) message digests. - They should now get regenerated automatically is "digest" is in FEATURES and - not confuse the fetch code. - -*portage-1.8.9_pre18 (04 Mar 2002) - - 04 Mar 2002; Daniel Robbins portage.py : Bug fix in - dep_bestmatch(); rev comparison now works correctly and dep_bestmatch will - properly handle 2-digit revisions in particular. This closes bug #952. - - 04 Mar 2002; Daniel Robbins portage.py : Thanks to a - bug report by Bruce Locke, the long-standing bug where symlinks with - different mtimes would still get unmerged is now fixed. This allows glibc - (of all things) to be unmerged safely. We needed this fix. Closes bug #964. - - 03 Mar 2002; Daniel Robbins portage.py : KDEDIR -> - KDEDIRS (fixing my typo) - -*portage-1.8.9_pre17 (27 Feb 2002) - - 27 Feb 2002; Daniel Robbins emerge : --help - documentation is now up-to-date; short options tweaked. - - 26 Feb 2002; Daniel Robbins portage.py : Fixed an - unmerge error caused by digests now being recorded in lowercase. unmerge now - compensates for 100% backwards compatibility. Moved "continue" outside of - "try" block since this is disallowed in Python. This fixes a python warning - during fetch. - - 26 Feb 2002; Geert Bevin bin/dohtml : Added support for - installing .gif files too since quite some docs still ship with those instead - of .jpg or .png. - -*portage-1.8.9_pre16 (25 Feb 2002) - - 25 Feb 2002; Daniel Robbins emerge : emerge syntax - changed back to "classic" style; replaced dots with spinner, did a major code - cleanup and removed pieces that will be rewritten for 1.8.9 final. emerge - documentation isn't up-to-date at all; I'm holding off on the --help rewrite - until after 1.8.9 features have been finalized (soon!) - - 25 Feb 2002; Daniel Robbins : Added RESTRICT variable - to ebuilds. If RESTRICT="fetch" is set in the ebuild, it means that the - files listed in SRC_URI are simply filenames and that the real files must be - downloaded manually. This allows us to deal with realplayer, since - overriding dyn_fetch is no longer an option now that we have the fetch code - in python. Also added a cosmetic tweak to emerge during info file - regeneration. - - 25 Feb 2002; Daniel Robbins cnf/* : updated ${x} -> - ${URI} in $FETCHCOMMAND. - - 24 Feb 2002; Daniel Robbins Fixed another fetch bug - where the download wouldn't cycle to alternate mirrors (it'd get stuck on - the first download location) - -*portage-1.8.9_pre15 (24 Feb 2002) - - 24 Feb 2002; Daniel Robbins portage.py: some fixing of - the merge code; added automatic digest generation when "digest" is in - FEATURES; made the fetch() code not depend on a pre-existing digest. This - should fix all known digest/fetch issues. - -*portage-1.8.9_pre14 (23 Feb 2002) - - 23 Feb 2002; Daniel Robbins portage.py: If you have a - file that's hosted directly on our master ibiblio mirror, you can specify - it in SRC_URI as "http://mirror/myfile.tar.bz2". "http://mirror" will be - expanded to the first mirror defined in GENTOO_MIRRORS, or our master ibiblio - mirror if no mirrors are defined. Groovy. This closes bug #627. - - 23 Feb 2002; Daniel Robbins make.globals, emerge, - portage.py: wget is no longer hardcoded; FETCHCOMMAND is enabled again, but - uses ${FILE} and ${URI} instead of ${x} and ${y} now. Added download - resuming, which requires the definition of RESUMECOMMAND (added to - make.globals). Updated spawn() so that when it's called as spawn(foo,free=1) - as an argument, sandboxing is turned off. Replaced all calls to - os.system(foo) with spawn(foo,free=1), since os.system() messes with signal - handling. Added a default SIGINT signal handler to portage.py so that ^C - interrupts are handled correctly (portage will immediately exit with a return - code of 1). This has been tested and works for ebuild and emerge. These - additions should also close bug #407 and #760. - - 23 Feb 2002; Daniel Robbins emerge: spython -> python - fix; resolution of cvs merge conflict. Removed edepend assignment bug - reintroduced in Geert's commit; added comment explaining why the new code is - needed so it doesn't get removed again ;) - - 22 Feb 2002; Geert Bevin emerge: removed spurious cvs - conflict lines fixed bug in the cleanup code where different slots weren't - handled too well - -*portage-1.8.9_pre13 (22 Feb 2002) - - 22 Feb 2002; Daniel Robbins various: fix /bin/sh - symlink merge problems and massively simplified movefile() code. Added back - some emerge code so that "emerge --search rsync" doesn't run rsync. - -*portage 1.8.9_pre12 (22 Feb 2002) - - 22 Feb 2002; Daniel Robbins portage.py: everything - should now generate *lowercase* md5sums, fixing problems with digest - backwards compatibility. - - 22 Feb 2002; Daniel Robbins portage.py: changed - position of digest generation call so that "ebuild digest" now works if the - sources have not yet been downloaded. - -*portage 1.8.9_pre11 (22 Feb 2002) - - 22 Feb 2002; Daniel Robbins portage.py: unmerging now - works correctly. - -*portage 1.8.9_pre10 (22 Feb 2002) - - 22 Feb 2002; Daniel Robbins : "emerge" didn't like the - new portage.py (fixed); A merge database bug (fixed). Fixing the merge bug - should also result in merges happening much faster than before, maybe up to 3 - times as fast. We no longer resolve symlinks when testing protection paths. - -*portage 1.8.9_pre9 (21 Feb 2002) - - 21 Feb 2002; Daniel Robbins : moved entirety of Portage - download/digest code from ebuild.sh (bash) to portage.py (python). No - support for custom FETCHCOMMANDs yet, but that's coming soon. Good news is - that it appears to work well and allowed some cleanups and optimizations to - doebuild(). SYNC support added. See cnf/make.conf for more info -- - basically, "emerge rsync" (now callable via "emerge sync" as well) supports a - configurable "Portage server" that begins either with "rsync://" or "cvs://". - "emerge sync" is now not only a clean front-end, but a configurable front-end - to the Portage update process. I also removed dependency checking from - 'ebuild'. This allowed me to removed some redundant code from portage.py, - and seemed fine to do since 'ebuild' is more and more becoming a low-level - developer tool. - - 21 Feb 2002; Daniel Robbins : rewrite of cumulative USE - setting code so that the new FEATURES (what used to be called MAINTAINER) is - now cumulative and supports "-" and "-*" options. FEATURES is expanded using - all config files, while USE ignores make.globals but uses everything else. - Optimization of a couple parts of doebuild(). Upgraded expandpath() and used - it in one place where it was removed accidentally (in the new merge code.) - Master category list is now stored externally in - ${PORTDIR}/profiles/categories for ease of maintenance. - - 21 Feb 2002; Daniel Robbins emerge: now supports the - EMERGE_OPTS make.conf variable for enabling emerge options by default. - Closes bug #605. - - 21 Feb 2002; Daniel Robbins portage.py: dep_match() now - works with * deps (again? Looks like the code got ripped out somehow); this - closes bug #490. - - 21 Feb 2002; Daniel Robbins global change from - "spython" -> "python", now that Portage is slick enough to update shared - libraries correctly. - - 21 Feb 2002; Grant Goodyear bin/chkcontents, - man/chkcontents.1: New script to compare what's in a package's CONTENTS file - with what's actually on the filesystem. Useful for discovering that a - package "collision" has occurred. - - 21 Feb 2002; Daniel Robbins ebuild.sh, portage.py: - Dependencies should be no longer checked during the "unpack" stage. This - closes bug #231. Added the $KV kernel version variable to ebuild.sh so that - it's available for all ebuilds. This closes bug #599. - - 21 Feb 2002; Daniel Robbins ebuild.sh: S now defaults - to ${WORKDIR}/${P} if it isn't defined. That's right. Defining S is now - optional :) This should eliminate around 1000 lines from our ports tree. - - 20 Feb 2002; Daniel Robbins portage.py: Fixed some - major bugs in the new merge/config protect code. Merging and config - protection should now work. - - 18 Feb 2002; Daniel Robbins portage.py, emerge, - ebuild.sh : Rewrote merge code. Should merge symlinks only *after* the - target has been merged (needs testing). Added lots of comments. Split - dblink.merge() into 2 new functions -- .walktree() and .mergeme(). - Cleaned/optimized merging a good deal. Added special "-*" USE variable to - unset *all* USE variables defined up until that point. - - 18 Feb 2002; Daniel Robbins portage.py, emerge, - ebuild.sh : Fixed USE bug (config.reset() threw away our cumulative USE), - streamlined turbo dep calculations by moving edb cache entry creation to - ebuild.sh. Started coding new dblink.merge() method that should be much - cleaner, faster and merge symlinks safely. - - 17 Feb 2002; Daniel Robbins portage.py : Added - cumulative USE variable support. The final USE var is calculated - cumulatively starting with make.profile, then make.conf, and then the - environment. Any "-foo" option in USE will turn off a previously-defined USE - setting. So, if you want to use the profile-default USE settings except turn - "X" off, you add 'USE="-X"' to /etc/make.conf and that's it. This greatly - simplifies USE variable maintenance since developers can now easily add new - USE variables that default to 'on'. Simply add the USE variable and then add - it to make.profile. It will then be included in everyone's USE variables - automatically unless they explicitly "-newvar" in /etc/make.conf or in the - local environment. This also enables easy one-shot disabling of USE - variables. For example, to merge xchat without GNOME support (when "gnome" - is in your /etc/make.conf USE variable), simply type "USE="-gnome" emerge - net-irc/xchat". This is a lot easier than temporarily tweaking - /etc/make.conf. - - 17 Feb 2002: Daniel Robbins emerge : Added a quick hack - to cache ebuild dependency info using extended attributes on XFS filesystems. - Gives a factor of 10 speedup for dependency calculations. Will look into a - generic caching solution that should offer similar performance increases on - all filesystems. Note: the fact that this hack is on CVS means that emerge - is currently in a hyper-experimental state and shouldn't be used right now. - - 16 Feb 2002; G.Bevin emerge : added support for 'emerge - cat/pkg-version' instead of always having to require 'emerge cat/pkg' - - 15 Feb 2002; G.Bevin emerge : reimplemented the display - of cleaned packages to clearly show all versions that are about to be removed - and which versions are going to stay - - 13 Feb 2002; D.Robbins emerge : - added --emptytree option - - 13 Feb 2002; G.Bevin emerge, portage.py : - fixed little bug where emerge --clean rsync wasn't correctly handled anymore - implemented all new functionalities of emerge --clean, this adds --slots, - --versions and --all options together with world and system modes - - 12 Feb 2002; G.Bevin emerge, portage.py : - changed emerge --zap to emerge --clean - removed parts of the already implemented slots functionality to be able to - fall back to a more flexible implementation. Binary compatible slots will now - mostly influence emerge during the --clean operation - - 12 Feb 2002; G.Bevin emerge : - added fallback check in case UNMERGE_DELAY hasn't been defined in - make.globals or make.conf - -*portage 1.8.9_pre8 (18 Feb 2002) - - 12 Feb 2002; G.Bevin emerge : - changed the rebuild code to use depgraph instead, dramatically reducing code - duplication - - 11 Feb 2002; G.Bevin emerge : - changed indentation of a code part that wasn't at the right level. It got the - count of the non slot packages during --zap completely wrong - -*portage 1.8.9_pre7 (11 Feb 2002) - - 11 Feb 2002; G.Bevin portage.py : - fixed bug in packagetree.dep_match() where a ~ dependency is returned as a - string instead of as a list - - 11 Feb 2002; G.Bevin emerge : - - removed support for --all and world in 'emerge --unmerge', by default now - all matching packages are removed since with the new slots functionality - old package versions should not exists anymore - - colored package name red too when a blocking package is found during - pretend operation - - changed emerge invocation arguments to be in a new universal interface - format this has been decided to be : - 'emerge --action --option --option [packageset]' - some features however don't respect this, but that's since they are not - package installation related and are easier to use as straight commands - eg: emerge rsync - - added UNMERGE_DELAY var to make.globals and support it in emerge to obtain - the number of seconds to wait - - support for NOCOLOR="yes" as wel as NOCOLOR="true" - - major speedups for emerge -search - - added formatted package descriptions of the matches from emerge --search - that nicely wrap at 80 chars - - rewrote retrieval of package descriptions to support descriptions that are - specified on multiple lines - - added support for 'noslot' to --zap, --update and --rebuild - - 11 Feb 2002; G.Bevin sandbox.c, libsandbox.c : - added checks to see if the files where information is written to are really - regular files and not symlinks - -*portage 1.8.9_pre6 (10 Feb 2002) - - 10 Feb 2002; G.Bevin emerge : - added support for 'emerge --unmerge world' which removes all old package - versions from the system - made 'emerge --unmerge' take binary compatibility slots into account, this - prevents that packages with different versions but also different slots, are - being unmerged - added support for "--verbose" in "emerge rebuild" and "emerge world" to - provide details about packages that aren't in the local tree anymore and to - notify the user about which packages don't support slots - - 9 Feb 2002; G.Bevin emerge : - added support for the rebuild mode which rebuilds all the packages on your - system for which a corresponding package could be found in to portage tree - - 9 Feb 2002; G.Bevin portage.py : - renamed getEbuildPaths() or vartree to getebuildpaths() - fixed bug in the merging of binary packages - - 7 Feb 2002; G.Bevin xpack.py : - added additional argument to tbz2.getfile() which allows default content to - be provided when the requested file couldn't be found in the tbz2 archive - - 7 Feb 2002; G.Bevin ebuild.sh : - added SLOT information as the third entry in the temporary deps file that is - generated during ebuild depend, - - 7 Feb 2002; G.Bevin portage.py : - obtain SLOT information from the deps file instead of using the slotgrab() - function, removed slotgrab() function, updated some comments - - 7 Feb 2002; G.Bevin emerge : - added SLOT information to the generated edepend var for binary packages - -*portage 1.8.9_pre5 (6 Feb 2002) - - 6 Feb 2002; G.Bevin portage.py : - fixed bugs where the old instance wasn't unmerged correctly if slots are - identical, but ebuild version numbers not - - 6 Feb 2002; Grant Goodyear cnf/make.conf : - Copied proxy lines from make.globals (bug 431). - - 6 Feb 2002; Vitaly Kushneriuk portage.py : - added missing SLOT param to merge(...). - -*portage 1.8.9_pre4 (6 Feb 2002) - - 6 Feb 2002; G.Bevin portage.py : - fixed some bugs in the handling of PROVIDES and virtual packages together - with slots, they used code that wasn't upudated to the new dblink constructor - virtuals now use "" as slot, resulting in normally to same behaviour as what - has been done before. - - 5 Feb 2002; G.Bevin emerge : - sorted the packages to unmerge since this makes package names with revision - endings appear before plain version numbers. This makes the unmerge code - first remove the old and non slot aware packages before removing the newer - alternative which is in fact exactly the same apart from the revision - identifier. - -*portage 1.8.9_pre3 (5 Feb 2002) - - 5 Feb 2002; G.Bevin portage.py : - only let the backward compatibility algorithm kick in during unmerge since - it's impossible to correctly detect is in general. - -*portage 1.8.9_pre2 (5 Feb 2002) - - 5 Feb 2002; G.Bevin portage.py : - fixed bug in the backward compatibility algorithm - -*portage 1.8.9_pre1 (5 Feb 2002) - - 4 Feb 2002; G.Bevin ebuild.sh, emerge, portage.py : - added binary compatibility slots, this also contains additional code to keep - the unmerging of packages backwards compatible. - - 4 Feb 2002; G.Bevin portage.py : - added back support for the "ebuild help" command which seems to have - disappeared somewhere along the updates - - 4 Feb 2002; G.Bevin make.conf, make.globals : - added description and default entry for the imlib USE variable - added flag to prozilla to disable prozilla's waiting for a user's keypress - when a failure occurs - - 4 Feb 2002; G.Bevin output.py : - bugfix, write read() function instead of red(), doh ! - - 4 Feb 2002; G.Bevin emerge, portage.py : - implemented the ! dependency which prevents incompatible packages to be - installed on the same system at the same time - - 4 Feb 2002; G.Bevin emerge : - most emerge invocation options now have alternative short flags - - 4 Feb 2002; G.Bevin emerge : - emerge now doesn't unmerge the last version of an installed version by - default anymore, to really remove all instanced of packages the --all flag - has to be used, the --safe flag is deprecated - - 3 Feb 2002; G.Bevin output.py, emerge,make.globals : - all output can now be turned to black and white by using the functions in - output.py, this determines the mode by checking to NOCOLOR variable in - make.conf or make.globals - - 3 Feb 2002; G.Bevin emerge : - made it possible to run emerge --help and --search as non root - -*portage 1.8.8-r1 (1 Feb 2002) - - 1 Feb 2002; G.Bevin portage.py, ebuild.sh, ebuild.5 : - added support for a pkg_setup() function which is executed before anything - else and can be typically used for package configuration actions or required - system checks - - 1 Feb 2002; G.Bevin portage.py : - implemented the noauto MAINTAINER flags for all relevant ebuild commands - - 1 Feb 2002; G.Bevin portage.py : - make env-update disregard backup files - - 1 Feb 2002; G.Bevin emerge : - added --pretend support instead of interactively asking to proceed, - also added a delay before unmerging though to be sure - -*portage 1.8.8 (1 Feb 2002) - - 1 Feb 2002; G.Bevin emerge : - added --safe switch to complement the --unmerge option - - 1 Feb 2002; G.Bevin portage.py : - rewrote the packagename without category support to also graceously handle - deps specifiers at the beginning, this shouldn't be used in the ebuilds, but - are very handy when using emerge --unmerge - - 1 Feb 2002; G.Bevin emerge : - added emerge --unmerge support - - 1 Feb 2002; G.Bevin portage.py : - added packagename without category support in the dep_match function - -*portage 1.8.7 (30 Jan 2002) - - 30 Jan 2002; G.Bevin portage.py : - integrated and slightly adapted Brent Rahn's code to support package names - without category - - 30 Jan 2002; G.Bevin ebuild.sh : - integrated and fixed Azarah's patch to fix the wrongly generated archive size - in the digests - -*portage 1.8.6-r3 (28 Jan 2002) - - 28 Jan 2002; G.Bevin portage.py : - disabled warnings about non existant config file paths - - 28 Jan 2002; G.Bevin emerge : - added verwilst pkgsearch code, which was turned into a seperate class and - refactored for clarity and execution speed - - 28 Jan 2002; G.Bevin portage.py : - renamed _xxx vars to _prepart in Vitaly's code addition - -*portage 1.8.6-r2 (27 Jan 2002) - - 24 Jan 2002; Vitaly Kushneriuk portage.py : - Fixed version compare code Also added test script to test future versions. - -*portage 1.8.6-r1 (24 Jan 2002) - - 24 Jan 2002; Karl Trygve Kalleberg dojar: - Fixed typos. - -*portage 1.8.6 (23 Jan 2002) - - 22 Jan 2002; G.Bevin libsandbox.c : - added an additional check for SANDBOX_ON to optimize the speed in the execvp - function call. Also removed error messages being printed when the PATH var - isn't set. - - 20 Jan 2002; Karl Trygve Kalleberg dojar : - added dojar shell command as a java JAR handler - - 17 Jan 2002; Daniel Robbins : - The package chosen by "emerge sys-apps/shadow" now matches that chosen in an - emerge update or emerge system. I forgot to add some "*" dep code to the - dep_nomatch() method; this is now fixed. - -*portage 1.8.5 (13 Jan 2002) - - 13 Jan 2002; G.Bevin ebuilds.sh, portage.py: - added fine grained maintainer settings - -*portage 1.8.4 (13 Jan 2002) - - 12 Jan 2002; Daniel Robbins : - "emerge sys-apps/bash/" now works. (trailing "/" stripped to make - tab-completion users happy) This fixes bug #119 - - 12 Jan 2002; Daniel Robbins : - Portage should no longer bomb out if the current working directory doesn't - exist (has been deleted from underneath). - - 12 Jan 2002; Daniel Robbins : - added "--world" option for "emerge update". This tells Portage to update - the base system *as well as* upgrade any packages that are currently - installed but have new versions available. This is your standard full system - update command. This fixes bug #122 - - 12 Jan 2002; Daniel Robbins : - Added an expandpath() cache which speeds up merging dramatically. - -*portage 1.8.3 (11 Jan 2002) - - 11 Jan 2002; Mikael Hallendal ebuild.sh: - added functions econf and einstall. Also made src_compile having a default - implementation. - -*portage 1.8.2 (07 Jan 2002) - - 07 Jan 2002; G.Bevin : - sandbox included in portage - -*portage 1.8.1 (30 Dec 2001) - - 29 Dec 2001; Daniel Robbins : - "emerge update" is now functional! Although the algorithm really should be - sound, it is still considered in testing since we may need to tweak some - dependencies. - - 27 Dec 2001; Daniel Robbins : - Removed objprelink from the default USE variable. - -*portage 1.8.0 (22 Dec 2001) - - 22 Dec 2001; Daniel Robbins : - I messed up the "transparent .so library" update. Included is the correct - fix, which seems to allow glibc to update on my system without any tricks. - I just merged a new glibc while in X, without using any of glibc's old - pkg_postinst/pkg_preinst hacks. - - 21 Dec 2001; Daniel Robbins make.defaults.5, make.conf.5 : - Moved make.defaults.5 to make.conf.5 and updated contents. - -*portage 1.7.8 (21 Dec 2001) - - 21 Dec 2001; Daniel Robbins portage.py : - ebuild install doesn't throw away the compile directory if ebuild has been - changed and MAINTAINER is set; we now use mv -f to move files into location - on the filesystem, making our library install method even more robust. It - should now be totally safe to upgrade glibc while in X and playing music - with xmms and surfing the Web and compiling 20 applications at once :) - -* portage 1.7.7 (14 Dec 2001) - - 14 Dec 2001; Aron Griffis : portage.py : - movefile() now unlink()s the destination file first which solves shared - library install problems. - -* portage 1.7.6 (13 Dec 2001) - - 10 Dec 2001; Daniel Robbins portage.py : - env_update() now generates an /etc/csh.env file in csh shell format. - -* portage 1.7.5 (13 Dec 2001) - - 10 Dec 2001; Daniel Robbins portage.py : - added a little fix so a ~ dep isn't satisfied by a *much* later installed - version; i.e. ~media-libs/freetype-1.3.1 satisfied by - media-libs/freetype-2.0.5 being installed. - - 30 Nov 2001; Daniel Robbins ebuild : - added a KeyboardInterrupt handler so ^C'ing a running ebuild process doesn't - produce a Python traceback. - -* portage 1.7.4 (29 Nov 2001) - - 29 Nov 2001; Daniel Robbins portage.py : - removed an unnecessary quirk in the code preventing virtual packages from - being in any other category but "virtual". - - 25 Nov 2001; Daniel Robbins emerge : - info file detection code has been improved. - -* portage 1.7.3 (20 Nov 2001) - - 20 Nov 2001; Daniel Robbins pdb, pdb.cgi, xpak : - used /usr/bin/python instead of /usr/bin/spython. Fixed. - -* portage 1.7.2 (13 Nov 2001) - - 13 Nov 2001; Aron Griffis : - emake will now try to build in parallel, and if it fails, will retry in - non-parallel mode. - - 13 Nov 2001; Daniel Robbins ebuild.sh : - an ebuild that used an archive with a name that was part of another archive - would cause Portage to mess up the digest check. No longer. - - 31 Oct 2001; Donny Davies make.conf, make.globals : - comments about merging the fetch programs before trying to use them. - -* portage 1.7.1 (30 Oct 2001) - - 30 Oct 2001; Daniel Robbins portage.py : - I accidentally broke "=" deps by being sloppy when I added "*" deps. Trivial - fix applied. - -* portage 1.7 (29 Oct 2001) - - 29 Oct 2001; Daniel Robbins portage.py : - strange typo fix in the empty() digraph method. - -* portage 1.6.12 (29 Oct 2001) - - 29 Oct 2001; Daniel Robbins portage.py : - "*" deps now implemented. "=sys/foo-1*" matches the latest 1.x version/rev of - sys/foo, but will not match a 2.x version. - - 26 Oct 2001; Daniel Robbins portage.py : - various new categories added. - -Portage 1.6.11, released 18 Oct 2001 -==================================== - - *portage.py; device nodes are now not unmerged at all. - - -Portage 1.6.10, released 18 Oct 2001 -=================================== - - *ebuild.sh: A and AA fix; now any A="foo" lines in the ebuild are ignored, - allowing ebuilds with them to continue working. - - *portage.py: remove gnome-apps, gnome-office, gnome-libs, add gnome-extra - categories. - - *ebuild.sh, portage.py: You can now use USE variables in SRC_URI to - conditionally include archives. In MAINTAINER mode, all archives are - automatically included so that maintainers can check SRC_URIs and also - generate complete digests. A new file-based DEPEND and RDEPEND-passing - mechanism has been added. - - *ebuild.sh Now adds filesize to the digest files - -Portage 1.6.9, released 15 Sep 2001 -=================================== - - *portage.py - unmerge() now does not touch device nodes. Unlinking them or touching them - in any way is bad practice. - - -Portage 1.6.8, released 12 Sep 2001 -=================================== - - *portage.py - movefile() will now unlink() destfile if it is a symlink. Should fix - problems where file gets created at symlink target rather than replacing - the symlink. - - *queryhost.sh (agriffis) - Parallel pinging and other fixes. - -Portage 1.6.7, released 05 Sep 2001 -=================================== - - *portage.py - (last-minute fix) - CONFIG_PROTECT unmerge protection is now observed for symlinks, fifos and - device nodes. - - *portage.py - Fixes for unmerging CONFIG_PROTECTed files. Protected files are now *not* - unlinked from the filesystem. Messier but safer, and simplifies package - upgrades. - - *emerge - Emerge output cleanups for GNU info directory generation. New --verbose - mode; new CONFIG_PROTECT scanning feature to let people know when there are - config files to be updated. New "--help config" docs to explain how to - do it. - -Portage 1.6.6, released 01 Sep 2001 -==================================== - - *portage.py - Upgraded directory merging over existing objects. Existing symlinks that - point to existing directories will be kept and used as is; directories will - be used as-is; any other objects (broken symlinks, files) will be copied - to origfilename.backup and a ne directory will be created in its place. - -Portage 1.6.5, released 31 Aug 2001 -==================================== - - *emerge - Fixes for handling multiple ebuilds, packages and/or dependencies on - the command-line. - - *portage.py - An optimization to the digraph class so that the firstzero() method finds - matches in close to the order that keys were added to the digraph. diff --git a/INSTALL b/INSTALL deleted file mode 100644 index 54caf7c..0000000 --- a/INSTALL +++ /dev/null @@ -1,229 +0,0 @@ -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software -Foundation, Inc. - - This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of machine the package -will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints -a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -will cause the specified gcc to be used as the C compiler (unless it is -overridden in the site shell script). - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/ISSUES b/ISSUES deleted file mode 100644 index 69b91ea..0000000 --- a/ISSUES +++ /dev/null @@ -1,6 +0,0 @@ -- pkg_setup and sandbox -^^^ either integrate useradd/groupadd hijacks, or just disable sandbox - for setup till it's ready to go. -- eclasses showing up in -vp -^^^ Not an issue. cleanse your cache, check the changelog. - diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index 51b6bc6..0000000 --- a/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -SUBDIRS = src man bin pym - -AUTOMAKE_OPTIONS = dist-bzip2 no-dist-gzip diff --git a/NEWS b/NEWS deleted file mode 100644 index e69de29..0000000 diff --git a/README b/README deleted file mode 100644 index e69de29..0000000 diff --git a/TODO b/TODO deleted file mode 100644 index a327c80..0000000 --- a/TODO +++ /dev/null @@ -1,57 +0,0 @@ -# TODO list for Portage; the Gentoo package system -# $Id: TODO,v 1.12 2005/05/04 01:08:11 vapier Exp $ - -# -# Add your name to the top of any item you are working actively on -# and then commit. Be sure you have a current copy of this file. -# - -Legend: - '*' Just do it. '#' Tricky - '!' Difficult '@' Restricted in some way - - File "/usr/lib/portage/pym/portage_locks.py", line 46, in lockfile - myfd = os.open(lockfilename, os.O_CREAT|os.O_RDWR,0660) - OSError: [Errno 13] Permission denied: '/var/tmp/portage/tmpfs/aux_db_key_temp' - - - - -* Clean should only produce output for 'emerge clean' - -# Stop using mtimes for packages. Have portage look up all files in the - vardb to ensure that a file isn't duplicated and unmerge it if not. - Potentially slow... Need some way to speed it up... hash of filenames? - -# Virtuals. /var/cache/edb/virtuals -- Effectively remove it. - /etc/portage/virtuals is a user-modifiable version that acts like an - incremental applied on top of an ON-DEMAND virtual calculation system. - Virtuals should be calculated from /var/db/pkg EVERY time it is requested. - -# Repoman needs to ignore all user-set info in /etc/portage - It's not relevant to deployed users and will probably be a general gotcha. - -# Multiple rsync repos. - bug 28796 -- Enable metadata caches for them. - -# STICKIES and related enhancements: - bug 9379, bug 13616, Aether's config code - -# Determine file lock status before starting downloads -- Prevent races/deletes - Patches exist for this. Integrate and find all colliding descriptors/cmds. - Create a fileIO layer? (wget and other external calls are a problem) - -* Add category support to searches... emerge -s @catgory - -@ rsync - track changes based in subtrees to reduce filetree expense. - Possible plans: - Use md5's of tree file list + md5 of subtree -- client-side burden. - Maintain hash of changes on rsync1 -- Server-side burden. ** - Implement CVSUP. ** - -# 'emerge sync' timestamp awareness -- Make sure IP is associated and not - used at random as servers may differ. bug 21794 - -! Rename all undocumented variables used in bash to prefixed values that - are not easy to accidently duplicate. Prevent ebuilds from clobbering - system variables. diff --git a/aclocal.m4 b/aclocal.m4 deleted file mode 100644 index ad8d501..0000000 --- a/aclocal.m4 +++ /dev/null @@ -1,908 +0,0 @@ -# generated automatically by aclocal 1.8.5 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -# Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# -*- Autoconf -*- -# Copyright (C) 2002, 2003 Free Software Foundation, Inc. -# Generated from amversion.in; do not edit by hand. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.8"]) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION so it can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], - [AM_AUTOMAKE_VERSION([1.8.5])]) - -# AM_AUX_DIR_EXPAND - -# Copyright (C) 2001, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 6 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE]) -AC_SUBST([$1_FALSE]) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]) -fi])]) - -# serial 7 -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 -# Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH]) -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -#serial 2 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue - # Extract the definition of DEP_FILES from the Makefile without - # running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" - # We invoke sed twice because it is the simplest approach to - # changing $(DEPDIR) to its actual value in the expansion. - for file in `sed -n ' - /^DEP_FILES = .*\\\\$/ { - s/^DEP_FILES = // - :loop - s/\\\\$// - p - n - /\\\\$/ b loop - p - } - /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# This macro actually does too much some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -# Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 11 - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.58])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_MISSING_PROG(AMTAR, tar) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl - -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -]) -]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $1 | $1:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. - -# Copyright (C) 2001, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"$am_aux_dir/install-sh"} -AC_SUBST(install_sh)]) - -# -*- Autoconf -*- -# Copyright (C) 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 1 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# -*- Autoconf -*- - - -# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# AM_PROG_MKDIR_P -# --------------- -# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. - -# Copyright (C) 2003, 2004 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories -# created by `make install' are always world readable, even if the -# installer happens to have an overly restrictive umask (e.g. 077). -# This was a mistake. There are at least two reasons why we must not -# use `-m 0755': -# - it causes special bits like SGID to be ignored, -# - it may be too restrictive (some setups expect 775 directories). -# -# Do not use -m 0755 and let people choose whatever they expect by -# setting umask. -# -# We cannot accept any implementation of `mkdir' that recognizes `-p'. -# Some implementations (such as Solaris 8's) are not thread-safe: if a -# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' -# concurrently, both version can detect that a/ is missing, but only -# one can create it and the other will error out. Consequently we -# restrict ourselves to GNU make (using the --version option ensures -# this.) -AC_DEFUN([AM_PROG_MKDIR_P], -[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - # Keeping the `.' argument allows $(mkdir_p) to be used without - # argument. Indeed, we sometimes output rules like - # $(mkdir_p) $(somedir) - # where $(somedir) is conditionally defined. - # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more - # expensive solution, as it forces Make to start a sub-shell.) - mkdir_p='mkdir -p -- .' -else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - for d in ./-p ./--version; - do - test -d $d && rmdir $d - done - # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. - if test -f "$ac_aux_dir/mkinstalldirs"; then - mkdir_p='$(mkinstalldirs)' - else - mkdir_p='$(install_sh) -d' - fi -fi -AC_SUBST([mkdir_p])]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# -# Check to make sure that the build environment is sane. -# - -# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# AM_PROG_INSTALL_STRIP - -# Copyright (C) 2001, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - diff --git a/autogen.sh b/autogen.sh deleted file mode 100755 index c0f5302..0000000 --- a/autogen.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -autoheader || exit 1 -aclocal-1.8 || exit 1 -libtoolize --automake -c -f || exit 1 -autoconf || exit 1 -automake-1.8 -a -c || exit 1 - -if [ -x ./test.sh ] ; then - exec ./test.sh "$@" -fi diff --git a/bin/Makefile.in b/bin/Makefile.in deleted file mode 100755 index f98bae3..0000000 --- a/bin/Makefile.in +++ /dev/null @@ -1,15 +0,0 @@ -PORTAGE_BASEDIR = @PORTAGE_BASE@ -INSTALL = @INSTALL@ -INSTALL_script = @INSTALL_PROGRAM@ -D -o 0 -g portage -m 755 - -all: -install: - $(INSTALL) -d -m 755 -o 0-g portage $(DESTDIR)/$(PORTAGE_BASEDIR)/bin || exit 1 - find . -type f -maxdepth 1 -exec $(INSTALL_script) {} $(DESTDIR)/$(PORTAGE_BASEDIR)/bin/{} \; || exit 1 - rm $(DESTDIR)/$(PORTAGE_BASEDIR)/bin/Makefile* || exit 1 - -distdir: - find . -type f -maxdepth 1 -exec $(INSTALL_script) {} $(distdir)/{} \; -clean: - -.PHONY: distdir install clean diff --git a/bin/affect-fakeroot-perms.sh b/bin/affect-fakeroot-perms.sh deleted file mode 100644 index af643dc..0000000 --- a/bin/affect-fakeroot-perms.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -# affect-fakeroot-perms.sh; Make claimed fakeroot permissions, a reality. -# Copyright 2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -$Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/affect-fakeroot-perms.sh,v 1.4 2004/11/10 20:08:07 ferringb Exp $ - - -echo "adjusting $2 using $1" >&2 -fakeroot -i "$1" -- find "$2" -exec stat -c '%u:%g;%f=%n' {} \; | \ -while read l; do - o="${l/;*}" - r="${l/${o}}" - p="${r/=*}" - p="${p:1}" - p="$(printf %o 0x${p})" - p="${p:${#p}-4}" - f="${r/*=}" - chown "$o" "$f" - chmod "$p" "$f" - echo "tweaking $f" - done diff --git a/bin/archive-conf b/bin/archive-conf deleted file mode 100755 index e2cdfa1..0000000 --- a/bin/archive-conf +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/python -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/archive-conf,v 1.7 2004/10/04 13:57:36 vapier Exp $ - -# -# archive-conf -- save off a config file in the dispatch-conf archive dir -# -# Written by Wayne Davison with code snagged from -# Jeremy Wohl's dispatch-conf script and the portage chkcontents script. -# - -import os, sys, string -sys.path = ["/usr/lib/portage/pym"]+sys.path - -import portage, dispatch_conf - -FIND_EXTANT_CONTENTS = "find %s -name CONTENTS" - -MANDATORY_OPTS = [ 'archive-dir' ] - -try: - import fchksum - def perform_checksum(filename): return fchksum.fmd5t(filename) -except ImportError: - import md5 - def md5_to_hex(md5sum): - hexform = "" - for ix in xrange(len(md5sum)): - hexform = hexform + "%02x" % ord(md5sum[ix]) - return string.lower(hexform) - - def perform_checksum(filename): - f = open(filename, 'rb') - blocksize=32768 - data = f.read(blocksize) - size = 0L - sum = md5.new() - while data: - sum.update(data) - size = size + len(data) - data = f.read(blocksize) - return (md5_to_hex(sum.digest()),size) - -def archive_conf(): - args = [] - content_files = [] - md5_match_hash = {} - - options = dispatch_conf.read_config(MANDATORY_OPTS) - - for conf in sys.argv[1:]: - if not os.path.isabs(conf): - conf = os.path.abspath(conf) - args += [ conf ] - md5_match_hash[conf] = '' - - # Find all the CONTENT files in VDB_PATH. - content_files += os.popen(FIND_EXTANT_CONTENTS % (portage.root+portage.VDB_PATH)).readlines() - - # Search for the saved md5 checksum of all the specified config files - # and see if the current file is unmodified or not. - try: - todo_cnt = len(args) - for file in content_files: - file = file.rstrip() - try: - contents = open(file, "r") - except IOError, e: - print >> sys.stderr, 'archive-conf: Unable to open %s: %s' % (file, e) - sys.exit(1) - lines = contents.readlines() - for line in lines: - items = string.split(line) - if items[0] == 'obj': - for conf in args: - if items[1] == conf: - stored = string.lower(items[2]) - real = string.lower(perform_checksum(conf)[0]) - if stored == real: - md5_match_hash[conf] = conf - todo_cnt -= 1 - if todo_cnt == 0: - raise "Break" - except "Break": - pass - - for conf in args: - archive = os.path.join(options['archive-dir'], conf.lstrip('/')) - if options['use-rcs'] == 'yes': - dispatch_conf.rcs_archive(archive, conf, md5_match_hash[conf], '') - dispatch_conf.rcs_archive_post_process(archive) - else: - dispatch_conf.file_archive(archive, conf, md5_match_hash[conf], '') - dispatch_conf.file_archive_post_process(archive) - -# run -if len(sys.argv) > 1: - archive_conf() -else: - print >> sys.stderr, 'Usage: archive-conf /CONFIG/FILE [/CONFIG/FILE...]' diff --git a/bin/chkcontents b/bin/chkcontents deleted file mode 100755 index 0b643cf..0000000 --- a/bin/chkcontents +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/python -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/chkcontents,v 1.11 2004/10/04 13:56:50 vapier Exp $ - -# Very simple program to compare the md5sums of a package as listed -# in VDB_PATH/category/package/CONTENTS with the md5sums of the -# actual programs on the system (and makes sure that symlinks point to -# the right files). - -import string, os.path, os, sys -sys.path = ["/usr/lib/portage/pym"]+sys.path -import portage - -def CONTENTScheck(path): - try: - contents = open(path, "r") - except IOError, e: - print "Unable to open %s: %s" % (path, e) - sys.exit(1) - lines = contents.readlines() - for line in lines: - items = string.split(line) - # items is a list w/ size depending on the type of item listed in item[0] - # if items[0] = 'dir' then items[1] is the path of a directory - # if items[0] = 'obj' then items[1] is the path of a file, - # items[2] is the file's md5sum, - # items[3] is the file's size - # if items[0] = 'sym' then items[1] is the path of a symbolic link, - # items[2] is '->' - # items[3] is the file the symlink should point to - # items[4] is the symlink mtime - if (items[0] == 'obj'): - md5stored = string.lower(items[2]) - # fchksum.fmdft(file) returns the file's md5sum and the file's size - md5real = string.lower(portage.perform_checksum(items[1])[0]) - if (md5stored != md5real): - if md5real: - print "%s has md5sum of %s instead of %s" % (items[1], md5real, md5stored) - else: - print "%s is missing!" % items[1] - elif (items[0] == 'sym'): - link = items[1] - target = items[3] - if (not os.path.islink(link)): - print "%s is not a symbolic link" % link - continue - actualtarget = os.readlink(link) - if (os.path.normpath(actualtarget) != os.path.normpath(target)): - print "%s points to %s, not %s" % (link, actualtarget, target) - - -if __name__ == '__main__': - import sys - if (len(sys.argv) != 2 or sys.argv[1] == "--help"): - print "This program compares md5sums in the file VDB_PATH/category/package/CONTENTS" - print "with the md5sums of the actual files on the filesystem" - print "(and makes sure that symlinks point to the right files)." - print "\nUsage: chkcontents path/to/CONTENTS" - sys.exit(1) - CONTENTScheck(sys.argv[1]) - diff --git a/bin/clean_locks b/bin/clean_locks deleted file mode 100755 index 7e47232..0000000 --- a/bin/clean_locks +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/python -O -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/clean_locks,v 1.1 2004/09/26 10:44:31 carpaski Exp $ - -import os,sys -sys.path = ["/usr/lib/portage/pym"]+sys.path - -import portage_locks - -if not sys.argv[1:] or "--help" in sys.argv or "-h" in sys.argv: - print - print "You must specify directories with hardlink-locks to clean." - print "You may optionally specify --force, which will remove all" - print "of the locks, even if we can't establish if they are in use." - print "Please attempt cleaning without force first." - print - print sys.argv[0]+" /usr/portage/distfiles/.locks" - print sys.argv[0]+" --force /usr/portage/distfiles/.locks" - print - sys.exit(1) - -force = False -if "--force" in sys.argv[1:]: - force=True - -for x in sys.argv[1:]: - if x == "--force": - continue - for y in portage_locks.hardlock_cleanup(x, remove_all_locks=force): - print y - print - - - - \ No newline at end of file diff --git a/bin/db-update.py b/bin/db-update.py deleted file mode 100644 index a0d4a5e..0000000 --- a/bin/db-update.py +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/python -O -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/db-update.py,v 1.10 2004/11/10 03:10:56 genone Exp $ - -import os,sys,string -sys.path = ["/usr/lib/portage/pym"]+sys.path - -import portage - -os.chdir(portage.root+portage.VDB_PATH) -myvirts=portage.grabdict(portage.root+"var/cache/edb/virtuals") -mypvirts={} -if portage.profiledir: - mypvirts=portage.grabdict(portage.profiledir+"/virtuals") -mydict={} -myvalidargs=[] -origkey={} -for x in sys.argv[1:]: - myparts=string.split(x,"/") - x=myparts[1]+"/"+myparts[2] - try: - myfile=open(x+"/VIRTUAL","r") - except SystemExit, e: - raise # Needed else the app won't quit - except: - continue - myline=myfile.readline() - mykey=string.join(string.split(myline)) - if portage.isspecific(x): - mysplit=portage.portage_versions.catpkgsplit(x) - newkey=mysplit[0]+"/"+mysplit[1] - origkey[newkey]=x - x=newkey - else: - origkey[x]=x - if portage.isspecific(mykey): - mysplit=portage.portage_versions.catpkgsplit(mykey) - mykey=mysplit[0]+"/"+mysplit[1] - myvalidargs.append(x) - mydict[x]=mykey -for x in mydict.keys(): - if mypvirts.has_key(x) and len(mypvirts[x])>=1 and mypvirts[x][0]==mydict[x]: - #this is a default setting; don't record - continue - if myvirts.has_key(x): - if mydict[x] not in myvirts[x]: - myvirts[x][0:0]=[mydict[x]] - else: - myvirts[x]=[mydict[x]] -print ">>> Database upgrade..." -print ">>> Writing out new virtuals file..." -portage.writedict(myvirts,portage.root+"var/cache/edb/virtuals") -if not os.path.exists("/tmp/db-upgrade-bak"): - os.mkdir("/tmp/db-upgrade-bak") -print ">>> Backing up to /tmp/db-upgrade-bak..." -for myarg in myvalidargs: - print ">>> Backing up",portage.root+portage.VDB_PATH+"/"+origkey[myarg] - os.system("mv "+portage.root+portage.VDB_PATH+"/"+origkey[myarg]+" /tmp/db-upgrade-bak") -print ">>> Done." diff --git a/bin/dispatch-conf b/bin/dispatch-conf deleted file mode 100755 index 46b75a4..0000000 --- a/bin/dispatch-conf +++ /dev/null @@ -1,311 +0,0 @@ -#!/usr/bin/python -O -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/dispatch-conf,v 1.16 2005/06/04 11:15:12 jstubbs Exp $ - -# -# dispatch-conf -- Integrate modified configs, post-emerge -# -# Jeremy Wohl (http://igmus.org) -# -# TODO -# dialog menus -# - -from stat import * -from random import * -import os, shutil, sys, string, re, commands, atexit -sys.path = ["/usr/lib/portage/pym"]+sys.path - -import portage, dispatch_conf - -FIND_EXTANT_CONFIGS = "find %s/ -iname '._cfg????_*' | sed -e 's://:/:g'" -DIFF_CONTENTS = 'diff -Nu %s %s' -DIFF_CVS_INTERP = 'diff -Nu %s %s | grep "^[+-][^+-]" | grep -v "# .Header:.*"' -DIFF_WSCOMMENTS = 'diff -Nu %s %s | grep "^[+-][^+-]" | grep -v "^[-+]#" | grep -v "^[-+][:space:]*$"' - -# We need a secure scratch dir and python does silly verbose errors on the use of tempnam -oldmask = os.umask(0077) -SCRATCH_DIR = None -while SCRATCH_DIR is None: - try: - mydir = "/tmp/dispatch-conf." - for x in range(0,8): - if int(random() * 3) == 0: - mydir += chr(int(65+random()*26.0)) - elif int(random() * 2) == 0: - mydir += chr(int(97+random()*26.0)) - else: - mydir += chr(int(48+random()*10.0)) - if os.path.exists(mydir): - continue - os.mkdir(mydir) - SCRATCH_DIR = mydir - except OSError, e: - if e.errno != 17: - raise -os.umask(oldmask) - -# Ensure the scratch dir is deleted -def cleanup(mydir=SCRATCH_DIR): - shutil.rmtree(mydir) -atexit.register(cleanup) - -MANDATORY_OPTS = [ 'archive-dir', 'diff', 'replace-cvs', 'replace-wscomments', 'merge' ] - -class dispatch: - options = {} - - def grind (self, config_paths): - confs = [] - count = 0 - - - self.options = dispatch_conf.read_config(MANDATORY_OPTS) - - if self.options.has_key("log-file"): - if os.path.exists(self.options["log-file"]): - shutil.copyfile(self.options["log-file"], self.options["log-file"] + '.old') - os.remove(self.options["log-file"]) - else: - self.options["log-file"] = "/dev/null" - - # - # Build list of extant configs - # - - for path in config_paths.split (): - if not os.path.exists (path): - continue - - confs += self.massage (os.popen (FIND_EXTANT_CONFIGS % (path,)).readlines ()) - - if self.options['use-rcs'] == 'yes' and ((os.system( "which rcs >/dev/null 2>&1" ) == 256) - or (os.system( "which ci >/dev/null 2>&1" ) == 256) - or (os.system( "which co >/dev/null 2>&1" ) == 256) - or (os.system( "which rcsmerge >/dev/null 2>&1" ) == 256)): - print >> sys.stderr, 'dispatch-conf: Error finding all RCS utils and use-rcs=yes in config; fatal' - return False - - - # - # Remove new configs identical to current - # and - # Auto-replace configs a) whose differences are simply CVS interpolations, - # or b) whose differences are simply ws or comments, - # or c) in paths now unprotected by CONFIG_PROTECT_MASK, - # - - def f (conf): - mrgconf = re.sub(r'\._cfg', '._mrg', conf['new']) - archive = os.path.join(self.options['archive-dir'], conf['current'].lstrip('/')) - if self.options['use-rcs'] == 'yes': - mrgfail = dispatch_conf.rcs_archive(archive, conf['current'], conf['new'], mrgconf) - else: - mrgfail = dispatch_conf.file_archive(archive, conf['current'], conf['new'], mrgconf) - if os.path.exists(archive + '.dist'): - unmodified = len(commands.getoutput(DIFF_CONTENTS % (conf['current'], archive + '.dist'))) == 0 - else: - unmodified = 0 - if os.path.exists(mrgconf): - if mrgfail or len(commands.getoutput(DIFF_CONTENTS % (conf['new'], mrgconf))) == 0: - os.unlink(mrgconf) - newconf = conf['new'] - else: - newconf = mrgconf - else: - newconf = conf['new'] - - same_file = len(commands.getoutput (DIFF_CONTENTS % (conf ['current'], newconf))) == 0 - same_cvs = len(commands.getoutput (DIFF_CVS_INTERP % (conf ['current'], newconf))) == 0 - same_wsc = len(commands.getoutput (DIFF_WSCOMMENTS % (conf ['current'], newconf))) == 0 - - # Do options permit? - same_cvs = same_cvs and self.options['replace-cvs'] == 'yes' - same_wsc = same_wsc and self.options['replace-wscomments'] == 'yes' - unmodified = unmodified and self.options['replace-unmodified'] == 'yes' - - if same_file: - os.unlink (conf ['new']) - self.post_process(conf['current']) - if os.path.exists(mrgconf): - os.unlink(mrgconf) - return False - elif unmodified or same_cvs or same_wsc or conf ['dir'] in portage.settings ['CONFIG_PROTECT_MASK'].split (): - self.replace(newconf, conf['current']) - self.post_process(conf['current']) - if newconf == mrgconf: - os.unlink(conf['new']) - elif os.path.exists(mrgconf): - os.unlink(mrgconf) - return False - else: - return True - - confs = filter (f, confs) - - # - # Interactively process remaining - # - - for conf in confs: - count = count + 1 - - newconf = conf['new'] - mrgconf = re.sub(r'\._cfg', '._mrg', newconf) - if os.path.exists(mrgconf): - newconf = mrgconf - show_new_diff = 0 - - while 1: - if show_new_diff: - os.system((self.options['diff']) % (conf['new'], mrgconf)) - show_new_diff = 0 - else: - os.system((self.options['diff']) % (conf['current'], newconf)) - - print - print '>> (%i of %i) -- %s' % (count, len(confs), conf ['current']) - print '>> q quit, h help, n next, e edit-new, z zap-new, u use-new\n m merge, t toggle-merge, l look-merge: ', - - c = getch () - - if c == 'q': - sys.exit (0) - if c == 'h': - self.do_help () - continue - elif c == 't': - if newconf == mrgconf: - newconf = conf['new'] - elif os.path.exists(mrgconf): - newconf = mrgconf - continue - elif c == 'n': - break - elif c == 'm': - merged = SCRATCH_DIR+"/"+os.path.basename(conf['current']) - print - os.system (self.options['merge'] % (merged, conf ['current'], newconf)) - shutil.copyfile(merged, mrgconf) - os.remove(merged) - mystat = os.lstat(conf['new']) - os.chmod(mrgconf, mystat[ST_MODE]) - os.chown(mrgconf, mystat[ST_UID], mystat[ST_GID]) - newconf = mrgconf - continue - elif c == 'l': - show_new_diff = 1 - continue - elif c == 'e': - os.system(os.environ['EDITOR'] + ' ' + newconf) - continue - elif c == 'z': - os.unlink(conf['new']) - if os.path.exists(mrgconf): - os.unlink(mrgconf) - break - elif c == 'u': - self.replace(newconf, conf ['current']) - self.post_process(conf['current']) - if newconf == mrgconf: - os.unlink(conf['new']) - elif os.path.exists(mrgconf): - os.unlink(mrgconf) - break - else: - continue - - - def replace (self, newconf, curconf): - """Replace current config with the new/merged version. Also logs - the diff of what changed into the configured log file.""" - os.system((DIFF_CONTENTS % (curconf, newconf)) + '>>' + self.options["log-file"]) - try: - shutil.copyfile(newconf, curconf) - os.remove(newconf) - except (IOError, os.error), why: - print >> sys.stderr, 'dispatch-conf: Error renaming %s to %s: %s; fatal' % \ - (newconf, curconf, str(why)) - - - def post_process(self, curconf): - archive = os.path.join(self.options['archive-dir'], curconf.lstrip('/')) - if self.options['use-rcs'] == 'yes': - dispatch_conf.rcs_archive_post_process(archive) - else: - dispatch_conf.file_archive_post_process(archive) - - - def massage (self, newconfigs): - """Sort, rstrip, remove old versions, break into triad hash. - - Triad is dictionary of current (/etc/make.conf), new (/etc/._cfg0003_make.conf) - and dir (/etc). - - We keep ._cfg0002_conf over ._cfg0001_conf and ._cfg0000_conf. - """ - h = {} - - newconfigs.sort () - - for nconf in newconfigs: - nconf = nconf.rstrip () - conf = re.sub (r'\._cfg\d+_', '', nconf) - dir = re.match (r'^(.+)/', nconf).group (1) - - if h.has_key (conf): - mrgconf = re.sub(r'\._cfg', '._mrg', h[conf]['new']) - if os.path.exists(mrgconf): - os.unlink(mrgconf) - os.unlink(h[conf]['new']) - - h [conf] = { 'current' : conf, 'dir' : dir, 'new' : nconf } - - configs = h.values () - configs.sort (lambda a, b: cmp(a ['current'], b ['current'])) - - return configs - - - def do_help (self): - print; print - - print ' u -- update current config with new config and continue' - print ' z -- zap (delete) new config and continue' - print ' n -- skip to next config, leave all intact' - print ' e -- edit new config' - print ' m -- interactively merge current and new configs' - print ' l -- look at diff between pre-merged and merged configs' - print ' t -- toggle new config between merged and pre-merged state' - print ' h -- this screen' - print ' q -- quit' - - print; print 'press any key to return to diff...', - - getch () - - -def getch (): - # from ASPN - Danny Yoo - # - import sys, tty, termios - - fd = sys.stdin.fileno() - old_settings = termios.tcgetattr(fd) - try: - tty.setraw(sys.stdin.fileno()) - ch = sys.stdin.read(1) - finally: - termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) - return ch - - -# run -d = dispatch () - -if len(sys.argv) > 1: - # for testing - d.grind (string.join (sys.argv [1:])) -else: - d.grind (portage.settings ['CONFIG_PROTECT']) diff --git a/bin/dispatch-conf-dialog b/bin/dispatch-conf-dialog deleted file mode 100755 index 2447e3a..0000000 --- a/bin/dispatch-conf-dialog +++ /dev/null @@ -1,287 +0,0 @@ -#!/usr/bin/python -O -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/dispatch-conf-dialog,v 1.3 2004/10/04 13:56:50 vapier Exp $ - -# -# dispatch-conf-dialog -- Integrate modified configs, post-emerge -# using a simple dialog interface... -# -# Jeremy Wohl (http://igmus.org) -# -# TODO -# dialog menus -# -import os, shutil, sys, string, re, commands -sys.path = ["/usr/lib/portage/pym"]+sys.path - -from stat import * -import portage, dispatch_conf - -from dcdialog import * - -from commands import * - -FIND_EXTANT_CONFIGS = "find %s -iname '._cfg????_*'" -DIFF_CONTENTS = 'diff -Nau %s %s' -DIFF_CVS_INTERP = 'diff -Nau %s %s | grep "^[+-][^+-]" | grep -v "# .Header:.*"' -DIFF_WSCOMMENTS = 'diff -Nau %s %s | grep "^[+-][^+-]" | grep -v "^[-+]#" | grep -v "^[-+][:space:]*$"' -MERGE = 'sdiff --suppress-common-lines --output=%s %s %s' - -LOG_CHANGES_TO = '/tmp/dispatch-conf.changes' - -MANDATORY_OPTS = [ 'archive-dir', 'diff', 'pager', 'replace-cvs', 'replace-wscomments' ] - -ITEMS = ['u','z','n','e', 'm','l','t','q'] -LONG_ITEMS = [ 'update current config with new config and continue', 'zap (delete) new config and continue', 'skip to next config, leave all intact','edit new config','interactively merge current and new configs','look at diff between pre-merged and merged configs','toggle new config between merged and pre-merged state','quit'] - - -class dispatch: - options = {} - - def grind (self, config_paths): - confs = [] - count = 0 - - if os.path.exists(LOG_CHANGES_TO): - shutil.move(LOG_CHANGES_TO, LOG_CHANGES_TO + '.old') - - self.options = dispatch_conf.read_config(MANDATORY_OPTS) - - # - # Build list of extant configs - # - - for path in config_paths.split (): - if not os.path.exists (path): - continue - - confs += self.massage (os.popen (FIND_EXTANT_CONFIGS % (path,)).readlines ()) - - # - # Remove new configs identical to current - # and - # Auto-replace configs a) whose differences are simply CVS interpolations, - # or b) whose differences are simply ws or comments, - # or c) in paths now unprotected by CONFIG_PROTECT_MASK, - # - - def f (conf): - mrgconf = re.sub(r'\._cfg', '._mrg', conf['new']) - archive = os.path.join(self.options['archive-dir'], conf['current'].lstrip('/')) - if self.options['use-rcs'] == 'yes': - dispatch_conf.rcs_archive(archive, conf['current'], conf['new'], mrgconf) - else: - dispatch_conf.file_archive(archive, conf['current'], conf['new'], mrgconf) - if os.path.exists(archive + '.dist'): - unmodified = len(commands.getoutput(DIFF_CONTENTS % (conf['current'], archive + '.dist'))) == 0 - else: - unmodified = 0 - if os.path.exists(mrgconf): - if len(commands.getoutput(DIFF_CONTENTS % (conf['new'], mrgconf))) == 0: - os.unlink(mrgconf) - newconf = conf['new'] - else: - newconf = mrgconf - else: - newconf = conf['new'] - - same_file = len(commands.getoutput (DIFF_CONTENTS % (conf ['current'], newconf))) == 0 - same_cvs = len(commands.getoutput (DIFF_CVS_INTERP % (conf ['current'], newconf))) == 0 - same_wsc = len(commands.getoutput (DIFF_WSCOMMENTS % (conf ['current'], newconf))) == 0 - - # Do options permit? - same_cvs = same_cvs and self.options['replace-cvs'] == 'yes' - same_wsc = same_wsc and self.options['replace-wscomments'] == 'yes' - unmodified = unmodified and self.options['replace-unmodified'] == 'yes' - - if same_file: - os.unlink (conf ['new']) - self.post_process(conf['current']) - if os.path.exists(mrgconf): - os.unlink(mrgconf) - return False - elif unmodified or same_cvs or same_wsc or conf ['dir'] in portage.settings ['CONFIG_PROTECT_MASK'].split (): - self.replace(newconf, conf['current']) - self.post_process(conf['current']) - if newconf == mrgconf: - os.unlink(conf['new']) - elif os.path.exists(mrgconf): - os.unlink(mrgconf) - return False - else: - return True - - confs = filter (f, confs) - - # - # Interactively process remaining - # - dialog = Dialog() - dialog.setBackgroundTitle('dispatch-conf Dialog Interface') - - for conf in confs: - count = count + 1 - - newconf = conf['new'] - mrgconf = re.sub(r'\._cfg', '._mrg', newconf) - if os.path.exists(mrgconf): - newconf = mrgconf - show_new_diff = 0 - - while 1: - if show_new_diff: -## os.system((self.options['diff'] + '| %s') % (conf['new'], mrgconf, self.options['pager'])) - (xx,yy) = getstatusoutput((self.options['diff']) % (conf['new'], mrgconf)) - dialog.scrollbox(yy,24,70) - show_new_diff = 0 - else: -## os.system((self.options['diff'] + '| %s') % (conf['current'], newconf, self.options['pager'])) - (xx,yy) = getstatusoutput((self.options['diff']) % (conf['current'], newconf)) - dialog.scrollbox(yy,24,70) - - - -## print -## print '>> (%i of %i) -- %s' % (count, len(confs), conf ['current']) -## print '>> q quit, h help, n next, e edit-new, z zap-new, u use-new\n m merge, t toggle-merge, l look-merge: ', - c = dialog.menu_ext('(%i of %i) -- %s' % (count, len(confs), conf ['current']),18,70,LONG_ITEMS,ITEMS) - #c = getch () - - if c == 'q' or c==None: - sys.exit (0) -## if c == 'h': -## self.do_help () -## continue - elif c == 't': - if newconf == mrgconf: - newconf = conf['new'] - elif os.path.exists(mrgconf): - newconf = mrgconf - continue - elif c == 'n': - break - elif c == 'm': - merged = '/tmp/dispatch-conf.merged.%i' % (os.getpid (),) -## print - os.system (MERGE % (merged, conf ['current'], newconf)) - shutil.move (merged, mrgconf) - mystat = os.lstat(conf['new']) - os.chmod(mrgconf, mystat[ST_MODE]) - os.chown(mrgconf, mystat[ST_UID], mystat[ST_GID]) - newconf = mrgconf - continue - elif c == 'l': - show_new_diff = 1 - continue - elif c == 'e': - os.system(os.environ['EDITOR'] + ' ' + newconf) - continue - elif c == 'z': - os.unlink(conf['new']) - if os.path.exists(mrgconf): - os.unlink(mrgconf) - break - elif c == 'u': - self.replace(newconf, conf ['current']) - self.post_process(conf['current']) - if newconf == mrgconf: - os.unlink(conf['new']) - elif os.path.exists(mrgconf): - os.unlink(mrgconf) - break - else: - continue - - - def replace (self, newconf, curconf): - """Replace current config with the new/merged version. Also logs - the diff of what changed into the LOG_CHANGES_TO file.""" - os.system((DIFF_CONTENTS % (curconf, newconf)) + '>>' + LOG_CHANGES_TO) - try: - shutil.move (newconf, curconf) - except (IOError, os.error), why: - print >> sys.stderr, 'dispatch-conf: Error renaming %s to %s: %s; fatal' % \ - (newconf, curconf, str(why)) - - - def post_process(self, curconf): - archive = os.path.join(self.options['archive-dir'], curconf.lstrip('/')) - if self.options['use-rcs'] == 'yes': - dispatch_conf.rcs_archive_post_process(archive) - else: - dispatch_conf.file_archive_post_process(archive) - - - def massage (self, newconfigs): - """Sort, rstrip, remove old versions, break into triad hash. - - Triad is dictionary of current (/etc/make.conf), new (/etc/._cfg0003_make.conf) - and dir (/etc). - - We keep ._cfg0002_conf over ._cfg0001_conf and ._cfg0000_conf. - """ - h = {} - - newconfigs.sort () - - for nconf in newconfigs: - nconf = nconf.rstrip () - conf = re.sub (r'\._cfg\d+_', '', nconf) - dir = re.match (r'^(.+)/', nconf).group (1) - - if h.has_key (conf): - mrgconf = re.sub(r'\._cfg', '._mrg', h[conf]['new']) - if os.path.exists(mrgconf): - os.unlink(mrgconf) - os.unlink(h[conf]['new']) - - h [conf] = { 'current' : conf, 'dir' : dir, 'new' : nconf } - - configs = h.values () - configs.sort (lambda a, b: cmp(a ['current'], b ['current'])) - - return configs - - -## def do_help (self): -## print; print - -## print ' u -- update current config with new config and continue' -## print ' z -- zap (delete) new config and continue' -## print ' n -- skip to next config, leave all intact' -## print ' e -- edit new config' -## print ' m -- interactively merge current and new configs' -## print ' l -- look at diff between pre-merged and merged configs' -## print ' t -- toggle new config between merged and pre-merged state' -## print ' h -- this screen' -## print ' q -- quit' - -## print; print 'press any key to return to diff...', - -## getch () - - -## def getch (): -## # from ASPN - Danny Yoo -## # -## import sys, tty, termios - -## fd = sys.stdin.fileno() -## old_settings = termios.tcgetattr(fd) -## try: -## tty.setraw(sys.stdin.fileno()) -## ch = sys.stdin.read(1) -## finally: -## termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) -## return ch - - -# run -d = dispatch () - -if len(sys.argv) > 1: - # for testing - d.grind (string.join (sys.argv [1:])) -else: - d.grind (portage.settings ['CONFIG_PROTECT']) diff --git a/bin/dobin b/bin/dobin deleted file mode 100755 index 68fa6b7..0000000 --- a/bin/dobin +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/dobin,v 1.13 2004/10/04 13:56:50 vapier Exp $ - -if [ ${#} -lt 1 ] ; then - echo "${0}: at least one argument needed" - exit 1 -fi - -if [ ! -d "${D}${DESTTREE}/bin" ] ; then - install -d "${D}${DESTTREE}/bin" || exit 2 -fi - -for x in "$@" ; do - if [ -x "${x}" ] ; then - #if executable, use existing perms - install "${x}" "${D}${DESTTREE}/bin" || exit 3 - else - #otherwise, use reasonable defaults - echo ">>> dobin: making ${x} executable..." - if [ "$USERLAND" == "GNU" ]; then - install -m0755 -o root -g root "${x}" "${D}${DESTTREE}/bin" || exit 4 - else - install -m0755 -o root -g wheel "${x}" "${D}${DESTTREE}/bin" || exit 4 - fi - fi -done diff --git a/bin/doconfd b/bin/doconfd deleted file mode 100755 index 6204a3f..0000000 --- a/bin/doconfd +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/doconfd,v 1.4 2005/05/04 23:14:40 vapier Exp $ - -if [ $# -lt 1 ] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi - -exec env INSDESTTREE=/etc/conf.d/ INSOPTIONS="-m0644" \ - doins "$@" diff --git a/bin/dodir b/bin/dodir deleted file mode 100755 index c07081c..0000000 --- a/bin/dodir +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/dodir,v 1.5 2004/10/04 13:56:50 vapier Exp $ - -for x in "$@" ; do - install -d ${DIROPTIONS} "${D}${x}" -done diff --git a/bin/dodoc b/bin/dodoc deleted file mode 100755 index 0c745b1..0000000 --- a/bin/dodoc +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/dodoc,v 1.8 2005/05/04 23:50:33 vapier Exp $ - -if [ $# -lt 1 ] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi - -dir="${D}usr/share/doc/${PF}/${DOCDESTTREE}" -if [ ! -d "${dir}" ] ; then - install -d "${dir}" -fi - -PORTAGE_COMPRESS=${PORTAGE_COMPRESS:-gzip} -PORTAGE_COMPRESS_FLAGS=${PORTAGE_COMPRESS_FLAGS:--9} - -for x in "$@" ; do - if [ -s "${x}" ] ; then - install -m0644 "${x}" "${dir}" - "${PORTAGE_COMPRESS}" ${PORTAGE_COMPRESS_FLAGS} -f "${dir}/${x##*/}" - elif [ ! -e "${x}" ] ; then - echo "dodoc: ${x} does not exist" 1>&2 - fi -done diff --git a/bin/doenvd b/bin/doenvd deleted file mode 100755 index 6c6500e..0000000 --- a/bin/doenvd +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/doenvd,v 1.4 2005/05/04 23:14:40 vapier Exp $ - -if [ $# -lt 1 ] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi - -exec env INSDESTTREE=/etc/env.d/ INSOPTIONS="-m0644" \ - doins "$@" diff --git a/bin/doexe b/bin/doexe deleted file mode 100755 index 88a01a6..0000000 --- a/bin/doexe +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/doexe,v 1.11 2004/12/05 10:23:41 carpaski Exp $ - -mynum=${#} -if [ ${mynum} -lt 1 ] ; then - echo "doexe: at least one argument needed" - exit 1 -fi -if [ ! -d "${D}${EXEDESTTREE}" ] ; then - install -d "${D}${EXEDESTTREE}" -fi - -for x in "$@" ; do - if [ -L "${x}" ] ; then - cp "${x}" "${T}" - mysrc="${T}"/`/usr/bin/basename "${x}"` - elif [ -d "${x}" ] ; then - echo "doexe: warning, skipping directory ${x}" - continue - else - mysrc="${x}" - fi - install ${EXEOPTIONS} "${mysrc}" "${D}${EXEDESTTREE}" -done diff --git a/bin/dohard b/bin/dohard deleted file mode 100755 index 8f34968..0000000 --- a/bin/dohard +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/dohard,v 1.6 2004/10/04 13:56:50 vapier Exp $ - -if [ ${#} -ne 2 ] ; then - echo "${0}: two arguments needed" - exit 1 -fi - -mysrc="${1}" -mydest="${2}" -ln -f "${D}${mysrc}" "${D}${mydest}" diff --git a/bin/dohtml b/bin/dohtml deleted file mode 100755 index 64c0601..0000000 --- a/bin/dohtml +++ /dev/null @@ -1,159 +0,0 @@ -#!/usr/bin/python -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/dohtml,v 1.16 2004/10/23 09:13:13 jstubbs Exp $ - -# -# Typical usage: -# dohtml -r docs/* -# - put all files and directories in docs into /usr/share/doc/${PF}/html -# dohtml foo.html -# - put foo.html into /usr/share/doc/${PF}/html -# -# -# Detailed usage: -# dohtml -# - will install the files in the list of files (space-separated list) into -# /usr/share/doc/${PF}/html, provided the file ends in .html, .png, .jpg -# or .css -# dohtml -r -# - will do as 'dohtml', but recurse into all directories, as long as the -# directory name is not CVS -# dohtml -A jpe,java [-r] -# - will do as 'dohtml' but add .jpe,.java (default filter list is -# added to your list) -# dohtml -a png,gif,html,htm [-r] -# - will do as 'dohtml' but filter on .png,.gif,.html,.htm (default filter -# list is ignored) -# dohtml -x CVS,SCCS,RCS -r -# - will do as 'dohtml -r', but ignore directories named CVS, SCCS, RCS -# - -import os -import string -import sys -import types - -def dodir(path): - os.system("install -d '%s'" % path) - -def dofile(src,dst): - - os.system("install -m0644 '%s' '%s'" % (src, dst)) - -def install(basename, dirname, options, prefix=""): - - fullpath = basename - if prefix: fullpath = prefix + "/" + fullpath - if dirname: fullpath = dirname + "/" + fullpath - - if options.DOCDESTTREE: - destdir = options.D + "usr/share/doc/" + options.PF + "/" + options.DOCDESTTREE + "/" + options.doc_prefix + "/" + prefix - else: - destdir = options.D + "usr/share/doc/" + options.PF + "/html/" + options.doc_prefix + "/" + prefix - - if os.path.isfile(fullpath): - ext = os.path.splitext(basename)[1] - if (len(ext) and ext[1:] in options.allowed_exts) or basename in options.allowed_files: - dodir(destdir) - dofile(fullpath, destdir + "/" + basename) - elif options.recurse and os.path.isdir(fullpath) and \ - basename not in options.disallowed_dirs: - for i in os.listdir(fullpath): - pfx = basename - if prefix: pfx = prefix + "/" + pfx - install(i, dirname, options, pfx) - -class OptionsClass: - def __init__(self): - self.PF = "" - self.D = "" - self.DOCDESTTREE = "" - - if os.environ.has_key("PF"): - self.PF = os.environ["PF"] - if os.environ.has_key("D"): - self.D = os.environ["D"] - if os.environ.has_key("DOCDESTTREE"): - self.DOCDESTTREE = os.environ["DOCDESTTREE"] - - self.allowed_exts = [ 'png', 'gif', 'html', 'htm', 'jpg', 'css', 'js' ] - self.allowed_files = [] - self.disallowed_dirs = [ 'CVS' ] - self.recurse = False - self.verbose = False - self.doc_prefix = "" - -def print_help(): - opts = OptionsClass() - - print "dohtml [-a .foo,.bar] [-A .foo,.bar] [-f foo,bar] [-x foo,bar]" - print " [-r] [-V] [file ...]" - print - print " -a Set the list of allowed to those that are specified." - print " Default:", string.join(opts.allowed_exts, ",") - print " -A Extend the list of allowed file types." - print " -f Set list of allowed extensionless file names." - print " -x Set directories to be excluded from recursion." - print " Default:", string.join(opts.disallowed_dirs, ",") - print " -r Install files and directories recursively." - print " -V Be verbose." - print - -def parse_args(): - options = OptionsClass() - args = [] - - x = 1 - while x < len(sys.argv): - arg = sys.argv[x] - if arg in ["-h","-r","-V"]: - if arg == "-h": - print_help() - sys.exit(0) - elif arg == "-r": - options.recurse = True - elif arg == "-V": - options.verbose = True - elif sys.argv[x] in ["-A","-a","-f","-x","-p"]: - x += 1 - if x == len(sys.argv): - print_help() - sys.exit(0) - elif arg == "-p": - options.doc_prefix = sys.argv[x] - else: - values = string.split(sys.argv[x], ",") - if arg == "-A": - options.allowed_exts.extend(values) - elif arg == "-a": - options.allowed_exts = values - elif arg == "-f": - options.allowed_files = values - elif arg == "-x": - options.disallowed_dirs = values - else: - args.append(sys.argv[x]) - x += 1 - - return (options, args) - -def main(): - - (options, args) = parse_args() - - if type(options.allowed_exts) == types.StringType: - options.allowed_exts = options.allowed_exts.split(",") - - if options.verbose: - print "Allowed extensions:", options.allowed_exts - print "Document prefix : '" + options.doc_prefix + "'" - print "Allowed files :", options.allowed_files - - for x in args: - basename = os.path.basename(x) - dirname = os.path.dirname(x) - install(basename, dirname, options) - -if __name__ == "__main__": - main() diff --git a/bin/doinfo b/bin/doinfo deleted file mode 100755 index db86ac1..0000000 --- a/bin/doinfo +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/doinfo,v 1.9 2005/05/04 23:50:33 vapier Exp $ - -if [ $# -lt 1 ] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi - -dir="${D}usr/share/info" -if [ ! -d "${dir}" ] ; then - install -d "${dir}" -fi - -PORTAGE_COMPRESS=${PORTAGE_COMPRESS:-gzip} -PORTAGE_COMPRESS_FLAGS=${PORTAGE_COMPRESS_FLAGS:--9} - -for x in "$@" ; do - if [ -e "${x}" ] ; then - install -m0644 "${x}" "${dir}" - "${PORTAGE_COMPRESS}" ${PORTAGE_COMPRESS_FLAGS} -f \ - "${dir}/${x##*/}" - else - echo "doinfo: ${x} does not exist" 1>&2 - fi -done diff --git a/bin/doinitd b/bin/doinitd deleted file mode 100755 index 0471fbd..0000000 --- a/bin/doinitd +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/doinitd,v 1.4 2005/05/04 23:14:40 vapier Exp $ - -if [ $# -lt 1 ] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi - -exec env EXEDESTTREE=/etc/init.d/ \ - doexe "$@" diff --git a/bin/doins b/bin/doins deleted file mode 100755 index b3df481..0000000 --- a/bin/doins +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/doins,v 1.9 2005/05/24 04:12:29 vapier Exp $ - -if [ $# -lt 1 ] ; then - echo "${0}: at least one argument needed" - exit 1 -fi - -if [ "${1}" == "-r" ] ; then - DOINSRECUR=y - shift -else - DOINSRECUR=n -fi -[ -z "${INSDEPTH}" ] && declare -i INSDEPTH=0 -if [ ${INSDEPTH} -gt 30 ] ; then - echo "${0}: sanity check ... 30 directories is too much :(" - exit 1 -fi - -if [ "${INSDESTTREE%${D}*}" == "" ]; then - echo "-------------------------------------------------------" 1>&2 - echo "You should not use \${D} with helpers." 1>&2 - echo " --> ${INSDESTTREE}" 1>&2 - echo "-------------------------------------------------------" 1>&2 - #exit 1 -fi - -[ ! -d "${D}${INSDESTTREE}" ] && dodir "${INSDESTTREE}" - -for x in "$@" ; do - if [ -L "$x" ] ; then - cp "$x" "${T}" - mysrc="${T}/$(/usr/bin/basename "${x}")" - elif [ -d "$x" ] ; then - if [ "${DOINSRECUR}" == "n" ] ; then - continue - fi - - mydir="${INSDESTTREE}/$(basename "${x}")" - find "${x}" -mindepth 1 -maxdepth 1 -exec \ - env \ - INSDESTTREE="${mydir}" \ - INSDEPTH=$((INSDEPTH+1)) \ - doins -r {} \; - continue - else - mysrc="${x}" - fi - install ${INSOPTIONS} "${mysrc}" "${D}${INSDESTTREE}" -done diff --git a/bin/dojar b/bin/dojar deleted file mode 100755 index a47cb44..0000000 --- a/bin/dojar +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/dojar,v 1.8 2004/10/04 13:56:50 vapier Exp $ -# Author Karl Trygve Kalleberg - -# -# Typical usage: -# dojar foo.jar bar.jar -# - installs foo.jar and bar.jar into /usr/share/${PN}/lib, and adds them -# both to /usr/share/${PN}/classpath.env -# -# Detailed usage -# dojar -# - installs into /usr/share/${PN}/lib and adds each to -# /usr/share/${PN}/classpath.env. -# -# The classpath.env file is currently merely a convenience for the user as -# it allows him to: -# export CLASSPATH=${CLASSPATH}:`cat /usr/share/foo/classpath.env` -# -# For many packages that set FOO_HOME, placing the jar files into -# lib will allow the user to set FOO_HOME=/usr/share/foo and have the -# scripts work as expected. -# -# Possibly a jarinto will be needed in the future. -# - -if [ -z "$JARDESTTREE" ] ; then - JARDESTTREE="lib" -fi - -jarroot="${DESTTREE}/share/${PN}/" -jardest="${DESTTREE}/share/${PN}/${JARDESTTREE}/" -pf="${D}${jarroot}/package.env" - -dodir "${jardest}" - -for i in $* ; do - bn="$(basename $i)" - - if [ -f "$pf" ] ; then - oldcp=`grep "CLASSPATH=" "$pf" | sed "s/CLASSPATH=//"` - grep -v "CLASSPATH=" "$pf" > "${pf}.new" - echo "CLASSPATH=${oldcp}:${jardest}${bn}" >> "${pf}.new" - mv "${pf}.new" "$pf" - else - echo "DESCRIPTION=\"${DESCRIPTION}\"" > "$pf" - echo "CLASSPATH=${jardest}${bn}" >> "$pf" - fi - - cp "$i" "${D}${jardest}/" - chmod 0444 "${D}${jardest}/${bn}" -done diff --git a/bin/dolib b/bin/dolib deleted file mode 100755 index 45f3931..0000000 --- a/bin/dolib +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/dolib,v 1.9 2005/02/26 04:14:19 jstubbs Exp $ - -LIBDIR_VAR="LIBDIR_${ABI}" -if [ -n "${ABI}" -a -n "${!LIBDIR_VAR}" ]; then - CONF_LIBDIR="${!LIBDIR_VAR}" -fi -unset LIBDIR_VAR - -if [ -z "${CONF_LIBDIR}" ]; then - # we need this to default to lib so that things dont break - CONF_LIBDIR="lib" -fi -libdir="${D}${DESTTREE}/${CONF_LIBDIR}" -for x in 1 2 3; do - # The escaping is weird. It will break if you escape the last one. - libdir="${libdir//\/\///}" -done - -if [ ${#} -lt 1 ] ; then - echo "${0}: at least one argument needed" - exit 1 -fi -if [ ! -d "${libdir}" ] ; then - install -d "${libdir}" -fi - -for x in "$@" ; do - if [ -e "${x}" ] ; then - if [ ! -L "${x}" ] ; then - install ${LIBOPTIONS} "${x}" "${libdir}" - else - ln -s "$(readlink "${x}")" "${libdir}/${x}" - fi - else - echo "${0}: ${x} does not exist" - fi -done diff --git a/bin/dolib.a b/bin/dolib.a deleted file mode 100755 index 1f8998c..0000000 --- a/bin/dolib.a +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/dolib.a,v 1.8 2004/10/10 10:07:20 carpaski Exp $ - -exec env LIBOPTIONS="-m0644" \ - dolib "$@" diff --git a/bin/dolib.so b/bin/dolib.so deleted file mode 100755 index 698d017..0000000 --- a/bin/dolib.so +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/dolib.so,v 1.12 2004/10/10 10:07:20 carpaski Exp $ - -exec env LIBOPTIONS="-m0755" \ - dolib "$@" diff --git a/bin/doman b/bin/doman deleted file mode 100755 index a53c0de..0000000 --- a/bin/doman +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/doman,v 1.18 2005/05/04 23:50:33 vapier Exp $ - -if [ $# -lt 1 ] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi - -PORTAGE_COMPRESS=${PORTAGE_COMPRESS:-gzip} -PORTAGE_COMPRESS_FLAGS=${PORTAGE_COMPRESS_FLAGS:--9} - -BASE="/usr/share" -i18n="" - -for x in "$@" ; do - if [ "${x:0:6}" == "-i18n=" ] ; then - i18n="${x:6}/" - fi - if [ "${x}" == ".keep" ] ; then - continue - fi - - suffix=${x##*.} - - case ${suffix} in - gz|bz2|Z) - compressed=${suffix} - realname=${x%.*} - suffix=${realname##*.} - ;; - *) - realname=${x} - compressed="" - ;; - esac - - mandir=${i18n}man${suffix:0:1} - - if echo ${mandir} | egrep -q 'man[0-9n](|f|p|pm)$' -; then - if [ -s "${x}" ] ; then - if [ ! -d "${D}${BASE}/man/${mandir}" ] ; then - install -d "${D}${BASE}/man/${mandir}" - fi - - install -m0644 "${x}" "${D}${BASE}/man/${mandir}" - - if [ -z "${compressed}" ] ; then - "${PORTAGE_COMPRESS}" ${PORTAGE_COMPRESS_FLAGS} -f \ - "${D}${BASE}/man/${mandir}/${x##*/}" - fi - else - echo "doman: ${x} does not exist" 1>&2 - fi - else - echo "doman: '${x}' is probably not a man page; skipping" 1>&2 - fi -done diff --git a/bin/domo b/bin/domo deleted file mode 100755 index 1ee8d7b..0000000 --- a/bin/domo +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/domo,v 1.6 2004/10/04 13:56:50 vapier Exp $ - -mynum=${#} -if [ ${mynum} -lt 1 ] ; then - echo "${0}: at least one argument needed" - exit 1 -fi -if [ ! -d "${D}${DESTTREE}/share/locale" ] ; then - install -d "${D}${DESTTREE}/share/locale/" -fi - -for x in "$@" ; do - if [ -e "${x}" ] ; then - mytiny="${x##*/}" - mydir="${D}${DESTTREE}/share/locale/${mytiny%.*}/LC_MESSAGES" - if [ ! -d "${mydir}" ] ; then - install -d "${mydir}" - fi - install -m0644 "${x}" "${mydir}/${MOPREFIX}.mo" - else - echo "${0}: ${x} does not exist" - fi -done diff --git a/bin/dopython b/bin/dopython deleted file mode 100755 index 2c7d387..0000000 --- a/bin/dopython +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/python -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/dopython,v 1.8 2004/10/04 13:56:50 vapier Exp $ - -import sys -sys.path = ["/usr/lib/portage/pym"]+sys.path - -from sys import * -import portage -import types -mycommand=argv[1]+"(" -x=2 -while (x>> dosbin: making ${x} executable..." - if [ "$USERLAND" == "GNU" ]; then - install -m0755 -o root -g root "${x}" "${D}${DESTTREE}/sbin" || exit 4 - else - install -m0755 -o root -g wheel "${x}" "${D}${DESTTREE}/sbin" || exit 4 - fi - fi -done diff --git a/bin/dosed b/bin/dosed deleted file mode 100755 index b0775de..0000000 --- a/bin/dosed +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/dosed,v 1.7 2004/10/04 13:56:50 vapier Exp $ - -mysed="s:${D}::g" - -for x in "$@" ; do - y="${D}${x}" - if [ -a "${y}" ] ; then - if [ -f "${y}" ] ; then - mysrc="${T}/${y##*/}" - cp "${y}" "${mysrc}" - sed -e "${mysed}" "${mysrc}" > "${y}" - else - echo "${y} is not a regular file!" - exit 1 - fi - else - mysed="${x}" - fi -done diff --git a/bin/dosym b/bin/dosym deleted file mode 100755 index 4031797..0000000 --- a/bin/dosym +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/dosym,v 1.7 2004/10/04 13:56:50 vapier Exp $ - -if [ ${#} -ne 2 ] ; then - echo "${0}: two arguments needed" - exit 1 -fi - -target="${1}" -linkname="${2}" -ln -snf "${target}" "${D}${linkname}" diff --git a/bin/ebuild b/bin/ebuild deleted file mode 100755 index a6a817b..0000000 --- a/bin/ebuild +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/python -O -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/ebuild,v 1.22 2005/05/07 04:46:49 ferringb Exp $ - -import os,sys -sys.path = ["/usr/lib/portage/pym"]+sys.path -import portage_util - -def getroot(): - try: - a=os.environ["ROOT"] - if a == '/': - return '/' - except SystemExit, e: - raise # Needed else we can't exit. - except: - return '/' - return os.path.normpath(a)+'/' - -os.environ["PORTAGE_CALLER"]="ebuild" - -if len(sys.argv)<=2: - print "expecting two arguments." - sys.exit(1) - -import getopt - -debug=0 - -opts,pargs=getopt.getopt(sys.argv[1:],'',['debug']) -for opt in opts: - if opt[0]=='--debug': - debug=1 - -if "merge" in pargs: - print "Disabling noauto in features... merge disables it. (qmerge doesn't)" - os.environ["FEATURES"] = os.environ.get("FEATURES", "") + " -noauto" - -import portage, portage_util - -for x in pargs[1:]: - try: - tmpsettings = portage.config(clone=portage.settings) - - if x in ['clean','config']: - cleanup=1 - else: - cleanup=0 - a=portage.doebuild(pargs[0],x,getroot(),tmpsettings,debug=debug,cleanup=cleanup) - except KeyboardInterrupt: - print "(interrupted by user -- ctrl-C?)" - a=1 - except IOError: - a=1 - print "ebuild: this ebuild generated output during the depend phase (bad)" - if a == None: - portage_util.writemsg("Could not run the required binary?\n") - sys.exit(127) - if a: - sys.exit(a) diff --git a/bin/ebuild-daemon.lib b/bin/ebuild-daemon.lib deleted file mode 100755 index 7781b42..0000000 --- a/bin/ebuild-daemon.lib +++ /dev/null @@ -1,126 +0,0 @@ -#!/bin/bash -# ebuild-daemon.lib; daemon lib code. -# Copyright 2005 Gentoo Foundation -# Author(s): Brian Harring (ferringb@gentoo.org) -# License: GPL2 -$Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/ebuild-daemon.lib,v 1.1 2005/07/20 14:22:48 ferringb Exp $ - -alias die='diefunc "$FUNCNAME" "$LINENO" "$?"' -#alias listen='read -u 3 -t 10' -alias assert='_pipestatus="${PIPESTATUS[*]}"; [[ "${_pipestatus// /}" -eq 0 ]] || diefunc "$FUNCNAME" "$LINENO" "$_pipestatus"' - - -# portageq hijack- redirects all requests back through the pipes and has the python side execute it. -# much faster, also avoids the gpg/sandbox being active issues. -portageq() { - local line e alive - if [ "${EBUILD_PHASE}" == "depend" ]; then - echo "QA Notice: portageq() in global scope for ${CATEGORY}/${PF}" >&2 - fi - speak "portageq $*" - listen line - declare -i e - e=$(( ${line/return_code=} + 0 )) - alive=1 - while [ $alive == 1 ]; do - listen line - if [ "$line" == "stop_text" ]; then - alive=0 - else - echo "portageq: $line" - fi - done - return $e -} - -# ask the python side to display sandbox complaints. -request_sandbox_summary() { - local line - speak "request_sandbox_summary ${SANDBOX_LOG}" - listen line - while [ "$line" != "end_sandbox_summary" ]; do - echo "$line" - listen line - done -} - -# request the global confcache be transferred to $1 for usage. -# flips the sandbox vars as needed. -request_confcache() { - if ! hasq confcache $FEATURES || ! hasq sandbox $FEATURES || hasq confcache $RESTRICT; then - return 1 - fi - local line - speak "request_confcache $1" - listen line s - while [ "${line#request}" != "${line}" ]; do - # var requests for updating the cache's ac_cv_env - # send set, then val - line="$(echo ${line#request})" - if [ "${!line:+set}" == "set" ]; then - speak set - speak "${!line}" - else - speak unset - fi - listen line - done - if [ "${line:0:9}" == "location:" ]; then - cp -v "${line:10}" $1 - elif [ "${line}" == "empty" ]; then - echo ">>> Confcache is empty, starting anew" - fi - if hasq "${line/: *}" location empty; then - echo ">>> Temporary configure cache file is $1" - export PORTAGE_CONFCACHE_STATE=1 - export SANDBOX_DEBUG_LOG="${T}/debug_log" - export SANDBOX_DEBUG=1 - return 0 - fi - return 1 -} - -# notify python side configure calls are finished. -update_confcache() { - local line - if [ "$PORTAGE_CONFCACHE_STATE" != "1" ]; then - return 0 - fi - unset SANDBOX_DEBUG - unset PORTAGE_CONFCACHE_STATE - if ! hasq sandbox $FEATURES; then - echo "not updating confcache, sandbox isn't set in features" >&2 - return 1 - fi - speak "update_confcache $SANDBOX_DEBUG_LOG $1" - unset SANDBOX_DEBUG_LOG - listen line - if [ "$line" == "updated" ]; then - return 0 - fi - return 1 -} - -internal_inherit() { - local line x - if [ "$#" != "1" ]; then - die "internal_inherit accepts one arg, requested eclass location. $* is a bit much" - fi - speak "request_inherit $1" - listen line - if [ $line == "path" ]; then - listen line; - source "${line}" || die "failed sources inherit: ${line}" - elif [ $line == "transfer" ]; then - listen line; - eval "$line" || die "failed evaluating eclass $x on an inherit transfer" - else - speak "failed" - die "unknown inherit command from pythonic side, '$line' for eclass $x" - fi -} - -DONT_EXPORT_FUNCS="${DONT_EXPORT_FUNCS} $(declare -F | cut -s -d ' ' -f 3)" -DONT_EXPORT_VARS="${DONT_EXPORT_VARS} ${DONT_EXPORT_VARS}" - -: diff --git a/bin/emake b/bin/emake deleted file mode 100755 index 7a25df8..0000000 --- a/bin/emake +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/emake,v 1.10 2005/05/04 23:17:54 vapier Exp $ -# -# emake: Supplies some default parameters to GNU make. At the moment the -# only parameter supplied is -jN, where N is a number of -# parallel processes that should be ideal for the running host -# (e.g. on a single-CPU machine, N=2). The MAKEOPTS variable -# is set in /etc/make.globals. We don't source -# /etc/make.globals here because emake is only called from an -# ebuild. - -exec make ${MAKEOPTS} ${EXTRA_EMAKE} "$@" diff --git a/bin/emerge b/bin/emerge deleted file mode 100755 index f3d1341..0000000 --- a/bin/emerge +++ /dev/null @@ -1,3512 +0,0 @@ -#!/usr/bin/python -O -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/emerge,v 1.379 2005/04/24 12:49:01 jstubbs Exp $ - -import os,sys -os.environ["PORTAGE_CALLER"]="emerge" -sys.path = ["/usr/lib/portage/pym"]+sys.path - -import portage -import random - -import emergehelp,xpak,string,re,commands,time,shutil,traceback,atexit,signal,socket,types -from stat import * -from output import * - -import portage_util -import portage_locks -import portage_exception -import portage_exec, sync -from portage_dep import DependencyGraph -import portage_dep, portage_versions - - -spinner_msgs = ["Gentoo Rocks ("+os.uname()[0]+")", - "Thank you for using Gentoo. :)", - "Are you actually trying to read this?", - "How many times have you stared at this?", - "We are generating the cache right now", - "You are paying too much attention.", - "A theory is better than its explanation.", - "Phasers locked on target, Captain.", - "Thrashing is just virtual crashing.", - "To be is to program.", - "Real Users hate Real Programmers.", - "When all else fails, read the instructions.", - "Functionality breeds Contempt.", - "The future lies ahead.", - "3.1415926535897932384626433832795028841971694", - "Sometimes insanity is the only alternative.", - "Inaccuracy saves a world of explanation.", - ] - - -def update_basic_spinner(): - global spinner, spinpos - spinpos = (spinpos+1) % 500 - if (spinpos % 100) == 0: - if spinpos == 0: - sys.stdout.write(". ") - else: - sys.stdout.write(".") - sys.stdout.flush() - -def update_scroll_spinner(): - global spinner, spinpos - if(spinpos >= len(spinner)): - sys.stdout.write(darkgreen(" \b\b\b"+spinner[len(spinner)-1-(spinpos%len(spinner))])) - else: - sys.stdout.write(green("\b "+spinner[spinpos])) - sys.stdout.flush() - spinpos = (spinpos+1) % (2*len(spinner)) - -def update_twirl_spinner(): - global spinner, spinpos - spinpos = (spinpos+1) % len(spinner) - sys.stdout.write("\b\b "+spinner[spinpos]) - sys.stdout.flush() - -spinpos = 0 -spinner = "/-\\|/-\\|/-\\|/-\\|\\-/|\\-/|\\-/|\\-/|" -update_spinner = update_twirl_spinner -if "candy" in portage.settings.features: - spinner = spinner_msgs[int(time.time()*100)%len(spinner_msgs)] - update_spinner = update_scroll_spinner -if not sys.stdout.isatty() or ("--nospinner" in sys.argv): - update_spinner = update_basic_spinner - - -if (not sys.stdout.isatty()) or (portage.settings["NOCOLOR"] in ["yes","true"]): - nocolor() - -def normpath(mystr): - if mystr and (mystr[0]=='/'): - return os.path.normpath("///"+mystr) - else: - return os.path.normpath(mystr) - -def userquery(prompt, responses=None, colours=None): - """Displays a prompt and a set of responses, then waits for a response - which is checked against the responses and the first to match is - returned. - - prompt: a String. - responses: a List of Strings. - colours: a List of Functions taking and returning a String, used to - process the responses for display. Typically these will be functions - like red() but could be e.g. lambda x: "DisplayString". - If responses is omitted, defaults to ["Yes", "No"], [green, red]. - If only colours is omitted, defaults to [bold, ...]. - - Returns a member of the List responses. (If called without optional - arguments, returns "Yes" or "No".) - KeyboardInterrupt is converted to SystemExit to avoid tracebacks being - printed.""" - if responses is None: - responses, colours = ["Yes", "No"], [green, red] - elif colours is None: - colours=[bold] - colours=(colours*len(responses))[:len(responses)] - print bold(prompt), - try: - while True: - response=raw_input("["+"/".join([colour(response) for colour,response in zip(colours,responses)])+"] ") - for key in responses: - if response.upper()==key[:len(response)].upper(): - return key - print "Sorry, response '%s' not understood." % response, - except (EOFError, KeyboardInterrupt): - print "Interrupted." - sys.exit(1) - -if portage.settings.has_key("PORTAGE_NICENESS"): - try: - os.nice(int(portage.settings["PORTAGE_NICENESS"])) - except SystemExit, e: - raise # Needed else can't exit - except Exception,e: - print "!!! Failed to change nice value to '"+str(portage.settings["PORTAGE_NICENESS"])+"'" - print "!!!",e - -#Freeze the portdbapi for enhanced performance: -portage.portdb.freeze() - -# Kill noauto as it will break merges otherwise. -while 'noauto' in portage.features: - portage.features.remove('noauto') - -#number of ebuilds merged -merged=0 -params=["selective", "deep", "self", "recurse", "empty"] -actions=[ -"clean", "config", "depclean", -"info", "inject", "metadata", -"prune", "regen", "rsync", "search", -"sync", "system", "unmerge", "world", -] -options=[ -"--ask", -"--buildpkg", "--buildpkgonly", -"--changelog", "--columns", -"--debug", "--deep", -"--digest", -"--emptytree", -"--fetchonly", "--fetch-all-uri", -"--getbinpkg", "--getbinpkgonly", -"--help", "--noconfmem", -"--newuse", -"--nodeps", "--noreplace", -"--nospinner", "--oneshot", -"--onlydeps", "--pretend", -"--quiet", "--resume", -"--searchdesc", "--selective", -"--skipfirst", -"--tree", -"--update", -"--usepkg", "--usepkgonly", -"--verbose", "--version" -] - -shortmapping={ -"1":"--oneshot", -"a":"--ask", -"b":"--buildpkg", "B":"--buildpkgonly", -"c":"--clean", "C":"--unmerge", -"d":"--debug", "D":"--deep", -"e":"--emptytree", -"f":"--fetchonly", "F":"--fetch-all-uri", -"g":"--getbinpkg", "G":"--getbinpkgonly", -"h":"--help", -"k":"--usepkg", "K":"--usepkgonly", -"l":"--changelog", -"n":"--noreplace", "N":"--newuse", -"o":"--onlydeps", "O":"--nodeps", -"p":"--pretend", "P":"--prune", -"q":"--quiet", -"s":"--search", "S":"--searchdesc", -'t':"--tree", -"u":"--update", -"v":"--verbose", "V":"--version" -} - -myaction=None -myopts=[] -myfiles=[] -edebug=0 -verbosity=0 - -# process short actions -tmpcmdline=sys.argv[1:] -#tmpcmdline.extend(portage.settings["EMERGE_OPTS"].split()) -cmdline=[] -for x in tmpcmdline: - if x[0:1]=="-" and x[1:2]!="-": - for y in x[1:]: - if shortmapping.has_key(y): - if shortmapping[y]=="--verbose": - verbosity += 1 - elif shortmapping[y] in cmdline: - print - print "*** Warning: Redundant use of",shortmapping[y] - else: - cmdline.append(shortmapping[y]) - else: - print "!!! Error: -"+y+" is an invalid short action or option." - sys.exit(1) - else: - cmdline.append(x) - -# process the options and command arguments -for x in cmdline: - if not x: - continue - if len(x)>=2 and x[0:2]=="--": - if x in options: - myopts.append(x) - elif x[2:] in actions: - if x[2:]=="rsync" or x=="rsync": - # "emerge --rsync" - print - print red("*** '--rsync' has been deprecated.") - print red("*** Please use '--sync' instead.") - print - x="--sync" - if myaction: - if myaction not in ["system", "world"]: - myaction="--"+myaction - print - print red("!!!")+green(" Multiple actions requested... Please choose one only.") - print red("!!!")+" '"+darkgreen(myaction)+"' "+red("or")+" '"+darkgreen(x)+"'" - print - sys.exit(1) - myaction=x[2:] - else: - print "!!! Error:",x,"is an invalid option." - sys.exit(1) - elif (not myaction) and (x in actions): - if x not in ["system", "world"]: - #print red("*** Deprecated use of action '"+x+"'") - if x=="rsync": - # "emerge rsync" - print - print red("*** 'rsync' will now install the package rsync.") - print red("*** To sync the tree, please use '--sync' instead.") - print - myfiles.append(x) - continue - if myaction: - print - print red("!!!")+green(" Multiple actions requested... Please choose one only.") - print red("!!! '")+darkgreen(myaction)+"' "+red("or")+" '"+darkgreen(x)+"'" - print - sys.exit(1) - myaction=x - elif x[-1]=="/": - # this little conditional helps tab completion - myfiles.append(x[:-1]) - else: - myfiles.append(x) - -if verbosity: - import portage_metadata - -if "moo" in myfiles: - print """ - - Gentoo (""" + os.uname()[0] + """) - - _______________________ -< Have you mooed today? > - ----------------------- - \ ^__^ - \ (oo)\_______ - (__)\ )\/\ - ||----w | - || || - -""" - -if (myaction in ["world", "system"]) and myfiles: - print "emerge: please specify a package class (\"world\" or \"system\") or individual packages, but not both." - sys.exit(1) - -for x in myfiles: - if (x.endswith(".ebuild") or x.endswith(".tbz2")) and os.path.exists(os.path.abspath(x)): - print "emerging by path implies --oneshot... adding --oneshot to options." - print red("\n*** emerging by path is broken and may not always work!!!\n") - break - -if ("--tree" in myopts) and ("--columns" in myopts): - print "emerge: can't specify both of \"--tree\" and \"--columns\"." - sys.exit(1) - -# Always create packages if FEATURES=buildpkg -# Imply --buildpkg if --buildpkgonly -if ("buildpkg" in portage.features) or ("--buildpkgonly" in myopts): - if "--buildpkg" not in myopts: - myopts.append("--buildpkg") - -# --tree only makes sense with --pretend -if "--tree" in myopts and not (("--pretend" in myopts) or ("--ask" in myopts)): - print ">>> --tree implies --pretend... adding --pretend to options." - myopts.append("--pretend") - -# Also allow -S to invoke search action (-sS) -if ("--searchdesc" in myopts): - if myaction and myaction != "search": - myfiles.append(myaction) - if "--search" not in myopts: - myopts.append("--search") - myaction = "search" - -# Always try and fetch binary packages if FEATURES=getbinpkg -if ("getbinpkg" in portage.features): - myopts.append("--getbinpkg") - -if ("--getbinpkgonly" in myopts) and not ("--usepkgonly" in myopts): - myopts.append("--usepkgonly") - -if ("--getbinpkgonly" in myopts) and not ("--getbinpkg" in myopts): - myopts.append("--getbinpkg") - -if ("--getbinpkg" in myopts) and not ("--usepkg" in myopts): - myopts.append("--usepkg") - -# Also allow -K to apply --usepkg/-k -if ("--usepkgonly" in myopts) and not ("--usepkg" in myopts): - myopts.append("--usepkg") - -# Also allow -l to apply --pretend/-p, but if already in --ask mode -if ("--changelog" in myopts) and not (("--pretend" in myopts) or ("--ask" in myopts)): - print ">>> --changelog implies --pretend... adding --pretend to options." - myopts.append("--pretend") - -# Allow -p to remove --ask -if ("--pretend" in myopts) and ("--ask" in myopts): - print ">>> --pretend disables --ask... removing --ask from options." - myopts.remove("--ask") - -# forbid --ask when not in a terminal -# note: this breaks `emerge --ask | tee logfile`, but that doesn't work anyway. -if ("--ask" in myopts) and (not sys.stdout.isatty()): - portage.writemsg("!!! \"--ask\" should only be used in a terminal. Exiting.\n") - sys.exit(1) - -# Set so that configs will be merged regardless of remembered status -if ("--noconfmem" in myopts): - portage.settings.unlock() - portage.settings["NOCONFMEM"]="1" - portage.settings.backup_changes("NOCONFMEM") - portage.settings.lock() - -# Set various debug markers... They should be merged somehow. -if ("--debug" in myopts): - portage.settings.unlock() - portage.settings["PORTAGE_DEBUG"]="1" - portage.settings.backup_changes("PORTAGE_DEBUG") - portage.debug=1 - portage.settings.lock() - -CLEAN_DELAY = 5 -EMERGE_WARNING_DELAY = 10 -if portage.settings["CLEAN_DELAY"]: - CLEAN_DELAY = int("0"+portage.settings["CLEAN_DELAY"]) -if portage.settings["EMERGE_WARNING_DELAY"]: - EMERGE_WARNING_DELAY = int("0"+portage.settings["EMERGE_WARNING_DELAY"]) - - -def emergelog(mystr,short_msg=None): - if "notitles" not in portage.features: - if short_msg: - xtermTitle(short_msg) - else: - xtermTitle(mystr) - try: - #seems odd opening a file each write... - if not os.path.exists("/var/log/emerge.log"): - mylogfile=open("/var/log/emerge.log", "w") - os.chmod("/var/log/emerge.log", S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP) - os.chown("/var/log/emerge.log", portage.portage_uid, portage.portage_gid) - else: - mylogfile=open("/var/log/emerge.log", "a") - - l=portage_locks.lockfile(mylogfile) - # seek because we may have gotten held up by the lock. - # if so, we may not be positioned at the end of the file. - mylogfile.seek(0,2) - mylogfile.write(str(time.time())[:10]+": "+mystr+"\n") - mylogfile.flush() - portage_locks.unlockfile(l) - mylogfile.close() - except SystemExit, e: - raise # Needed else can't exit - except Exception, e: - if edebug: - print "emergelog():",e - pass - -def emergeexit(): - """This gets out final log message in before we quit.""" - if "--pretend" not in myopts: - emergelog(" *** terminating.") - if "notitles" not in portage.features: - xtermTitleReset() -atexit.register(emergeexit) - -def emergeexitsig(signum, frame): - signal.signal(signal.SIGINT, signal.SIG_IGN) - portage.portageexit() - portage_util.writemsg("\n\nExiting on signal %(signal)s\n" % {"signal":signum}) - sys.exit(100+signum) -signal.signal(signal.SIGINT, emergeexitsig) - -def countdown(secs=5, doing="Starting"): - if secs: - print ">>> Waiting",secs,"seconds before starting..." - print ">>> (Control-C to abort)...\n"+doing+" in: ", - ticks=range(secs) - ticks.reverse() - for sec in ticks: - sys.stdout.write(red(str(sec+1)+" ")) - sys.stdout.flush() - time.sleep(1) - print - -# formats a size given in bytes nicely -def format_size(mysize): - if type(mysize) not in [types.IntType,types.LongType]: - return str(mysize) - mystr=str(mysize/1024) - mycount=len(mystr) - while (mycount > 3): - mycount-=3 - mystr=mystr[:mycount]+","+mystr[mycount:] - return mystr+" kB" - - -def getgccversion(): - """ - rtype: C{str} - return: the current in-use gcc version - """ - - gcc_env_dir = os.path.join('/', 'etc', 'env.d', 'gcc') - gcc_config_config = os.path.join(gcc_env_dir, 'config') - gcc_ver_command = 'gcc -dumpversion' - gcc_ver_prefix = 'gcc-' - - gcc_not_found_error = red( - "!!! No gcc found. You probably need to 'source /etc/profile'\n" + - "!!! to update the environment of this terminal and possibly\n" + - "!!! other terminals also." - ) - - gcc_distcc_broken_error = green( - '!!! Relying on the shell to locate gcc, this may break\n' + - '!!! DISTCC, installing gcc-config and setting your current gcc\n' + - '!!! profile will fix this' - ) - - def fallback(): - - print >>sys.stderr, gcc_distcc_broken_error - - gccout = portage_exec.spawn_get_output(gcc_ver_command) - - if gccout[0] != 0: - print >>sys.stderr, gcc_not_found_error - gccver = "[unavailable]" - else: - gccver = gcc_ver_prefix + gccout[1] - - return gccver - - if os.path.isfile(gcc_config_config): - try: - gccver_str = open(gcc_config_config).read().strip() - gccver = gcc_ver_prefix + string.join(gccver_str.split('-')[4:], '-') - except IndexError: - gccver = fallback() - - else: - import glob - dir_l = glob.glob(os.path.join(gcc_env_dir, '*-*')) - - if len(dir_l) == 1: - try: - gccver = gcc_ver_prefix + dir_l[0].split('-')[-1] - except IndexError: - gccver = fallback() - - else: - # There was no "config" file in /etc/env.d/gcc and there was more - # than one profile in /etc/env.d/gcc so we can't actively - # determine what version of gcc we are using so we fall back on the - # old way that breaks distcc - - gccver = fallback() - - return gccver - -def getportageversion(): - try: - import re - profilever = os.path.normpath("///"+os.readlink("/etc/make.profile")) - basepath = os.path.normpath("///"+portage.settings["PORTDIR"]+"/profiles") - if re.match(basepath,profilever): - profilever = profilever[len(basepath)+1:] - else: - profilever = "!"+profilever - del basepath - except SystemExit, e: - raise # Needed else can't exit - except: - profilever="unavailable" - libcver=[] - libclist = portage.vardbapi(portage.root).match("virtual/libc") - libclist += portage.vardbapi(portage.root).match("virtual/glibc") - libclist = portage_util.unique_array(libclist) - for x in libclist: - xs=portage_versions.catpkgsplit(x) - if libcver: - libcver+=","+"-".join(xs[1:]) - else: - libcver="-".join(xs[1:]) - if libcver==[]: - libcver="unavailable" - - gccver = getgccversion() - unameout=os.uname()[2]+" "+os.uname()[4] - - return "Portage " + portage.VERSION +" ("+profilever+", "+gccver+", "+libcver+", "+unameout+")" - -def help(): - # Move all the help stuff out of this file. - emergehelp.help(myaction,myopts,havecolor) - -# check if root user is the current user for the actions where emerge needs this -if ("--pretend" in myopts) or ("--fetchonly" in myopts or "--fetch-all-uri" in myopts) or (myaction=="search"): - if not portage.secpass: - if portage.wheelgid==portage.portage_gid: - print "emerge: wheel group membership required for \"--pretend\" and search." - print "emerge: wheel group use is being deprecated. Please update group and passwd to" - print " include the portage user as noted above, and then use group portage." - else: - print "emerge: portage group membership required for \"--pretend\" and search." - sys.exit(1) -elif "--version" in myopts: - print getportageversion() - sys.exit(0) -elif "--help" in myopts: - help() - sys.exit(0) -elif portage.secpass!=2: - if myaction in ["search", "info", "regen", "metadata"]: - pass - elif (not myaction) and (not myfiles): - pass - elif ("--pretend" in myopts) and (myaction in ["world","system","clean","prune","unmerge"]): - pass - else: - if "--debug" in myopts: - print "myaction",myaction - print "myopts",myopts - print "emerge: root access required." - sys.exit(1) - -if not "--pretend" in myopts: - emergelog("Started emerge on: "+time.strftime("%b %d, %Y %H:%M:%S", time.localtime())) - myelogstr="" - if myopts: - myelogstr=" ".join(myopts) - if myaction: - myelogstr+=" "+myaction - if myfiles: - myelogstr+=" "+" ".join(myfiles) - emergelog(" *** emerge "+myelogstr) - -#configure emerge engine parameters -# -# self: include _this_ package regardless of if it is merged. -# selective: exclude the package if it is merged -# recurse: go into the dependencies -# empty: pretend nothing is merged -myparams=["self","recurse"] -add=[] -sub=[] -if "--update" in myopts: - add.extend(["selective","empty"]) -if "--emptytree" in myopts: - add.extend(["empty"]) - sub.extend(["selective"]) -if "--nodeps" in myopts: - sub.extend(["recurse"]) -if "--noreplace" in myopts: - add.extend(["selective"]) -if "--deep" in myopts: - add.extend(["deep"]) -if "--selective" in myopts: - add.extend(["selective"]) -if myaction in ["world","system"]: - add.extend(["selective"]) -elif myaction in ["depclean"]: - add.extend(["empty"]) - sub.extend(["selective"]) -for x in add: - if (x not in myparams) and (x not in sub): - myparams.append(x) -for x in sub: - if x in myparams: - myparams.remove(x) - -# search functionality -class search: - - # - # class constants - # - VERSION_SHORT=1 - VERSION_RELEASE=2 - - # - # public interface - # - def __init__(self): - """Searches the available and installed packages for the supplied search key. - The list of available and installed packages is created at object instantiation. - This makes successive searches faster.""" - self.installcache = portage.db["/"]["vartree"] - - def execute(self,searchkey): - """Performs the search for the supplied search key""" - global myopts - match_category = 0 - self.searchkey=searchkey - self.packagematches = [] - if "--searchdesc" in myopts: - self.searchdesc=1 - self.matches = {"pkg":[], "desc":[]} - else: - self.searchdesc=0 - self.matches = {"pkg":[]} - print "Searching... ", - - if self.searchkey[0] == '@': - match_category = 1 - self.searchkey = self.searchkey[1:] - if self.searchkey=="*": - #hack for people who aren't regular expression gurus - self.searchkey==".*" - if re.search("\+\+", self.searchkey): - #hack for people who aren't regular expression gurus - self.searchkey=re.sub("\+\+","\+\+",self.searchkey) - self.searchre=re.compile(self.searchkey.lower(),re.I) - for package in portage.portdb.cp_all(): - update_spinner() - - if match_category: - match_string = package[:] - else: - match_string = package.split("/")[-1] - - masked=0 - if self.searchre.search(match_string): - if not portage.portdb.xmatch("match-visible",package): - masked=1 - self.matches["pkg"].append([package,masked]) - elif self.searchdesc: # DESCRIPTION searching - full_package = portage.portdb.xmatch("bestmatch-visible",package) - if not full_package: - #no match found; we don't want to query description - full_package=portage.best(portage.portdb.xmatch("match-all",package)) - if not full_package: - continue - else: - masked=1 - try: - full_desc = portage.portdb.aux_get(full_package,["DESCRIPTION"])[0] - except KeyError: - print "emerge: search: aux_get() failed, skipping" - continue - if self.searchre.search(full_desc): - self.matches["desc"].append([full_package,masked]) - self.mlen=0 - for mtype in self.matches.keys(): - self.matches[mtype].sort() - self.mlen += len(self.matches[mtype]) - - def output(self): - """Outputs the results of the search.""" - print "\b\b \n[ Results for search key : "+white(self.searchkey)+" ]" - print "[ Applications found : "+white(str(self.mlen))+" ]" - print " " - for mtype in self.matches.keys(): - for match,masked in self.matches[mtype]: - if mtype=="pkg": - catpack=match - full_package = portage.portdb.xmatch("bestmatch-visible",match) - if not full_package: - #no match found; we don't want to query description - masked=1 - full_package=portage.best(portage.portdb.xmatch("match-all",match)) - else: - full_package = match - match = portage_versions.pkgsplit(match)[0] - - if full_package: - try: - desc, homepage, license = portage.portdb.aux_get(full_package,["DESCRIPTION","HOMEPAGE","LICENSE"]) - except KeyError: - print "emerge: search: aux_get() failed, skipping" - continue - if masked: - print green("*")+" "+white(match)+" "+red("[ Masked ]") - else: - print green("*")+" "+white(match) - myversion = self.getVersion(full_package, search.VERSION_RELEASE) - - mysum = [0,0] - mycat = match.split("/")[0] - mypkg = match.split("/")[1] - - mydigest = portage.db["/"]["porttree"].dbapi.finddigest(mycat+"/"+mypkg + "-" + myversion) - - try: - myfile = open(mydigest,"r") - for line in myfile.readlines(): - mysum[0] += int(line.split(" ")[3]) - myfile.close() - mystr = str(mysum[0]/1024) - mycount=len(mystr) - while (mycount > 3): - mycount-=3 - mystr=mystr[:mycount]+","+mystr[mycount:] - mysum[0]=mystr+" kB" - except SystemExit, e: - raise # Needed else can't exit - except Exception, e: - if edebug: - print "!!! Exception:",e - mysum[0]=" [no/bad digest]" - - if "--quiet" not in myopts: - print " ", darkgreen("Latest version available:"),myversion - print " ", self.getInstallationStatus(mycat+'/'+mypkg) - print " ", darkgreen("Size of downloaded files:"),mysum[0] - print " ", darkgreen("Homepage:")+" ",homepage - print " ", darkgreen("Description:"),desc - print " ", darkgreen("License:")+" ",license - if (verbosity): - # show herd/maintainers if verbosity>=1 (ie: -vv) - metadata_file=portage.settings["PORTDIR"] + "/" + match + "/metadata.xml" - if not os.path.exists(metadata_file): - print " " + darkgreen("Metadata: ") + red("(Missing "+metadata_file+")") - else: - parser = portage_metadata.make_parser() - handler = portage_metadata.Metadata_XML() - handler._maintainers = [] - handler._herds = [] - parser.setContentHandler(handler) - parser.parse( metadata_file ) - if len(handler._herds) > 0: - print " " + darkgreen("Herd: ") + ", ".join(handler._herds) - if len(handler._maintainers): - print " " + darkgreen("Maintainers: ") + ", ".join(handler._maintainers) - print - print - # - # private interface - # - def getInstallationStatus(self,package): - installed_package = self.installcache.dep_bestmatch(package) - result = "" - version = self.getVersion(installed_package,search.VERSION_RELEASE) - if len(version) > 0: - result = darkgreen("Latest version installed:")+" "+version - else: - result = darkgreen("Latest version installed:")+" [ Not Installed ]" - return result - - def getVersion(self,full_package,detail): - if len(full_package) > 1: - package_parts = portage_versions.catpkgsplit(full_package) - if detail == search.VERSION_RELEASE and package_parts[3] != 'r0': - result = package_parts[2]+ "-" + package_parts[3] - else: - result = package_parts[2] - else: - result = "" - return result - - -#build our package digraph -def getlist(mode): - if mode=="system": - mylines=portage.settings.packages - elif mode=="world": - try: - myfile=open(portage.root+portage.WORLD_FILE,"r") - mylines=myfile.readlines() - myfile.close() - except OSError: - print "!!! Couldn't open "+pfile+"; exiting." - sys.exit(1) - except IOError: - #world file doesn't exist - mylines=[] - mynewlines=[] - for x in mylines: - myline=" ".join( x.split() ) - if not len(myline): - continue - elif myline[0]=="#": - continue - elif mode=="system": - if myline[0]!="*": - continue - myline=myline[1:] - mynewlines.append(myline.strip()) - return mynewlines - -def genericdict(mylist): - mynewdict={} - for x in mylist: - mynewdict[portage.portage_dep.dep_getkey(x)]=x - return mynewdict - -olddbapi=None -class depgraph: - - def __init__(self,myaction,myopts): - global olddbapi - self.pkgsettings = portage.config(clone=portage.settings) - if not self.pkgsettings["ARCH"]: - portage.writemsg(red("\a!!! ARCH is not set... Are you missing the /etc/make.profile symlink?\n")) - portage.writemsg(red("\a!!! Is the symlink correct? Is your portage tree complete?\n\n")) - sys.exit(9) - self.applied_useflags = {} - - self.missingbins=[] - self.myaction=myaction - self.mynewgraph = DependencyGraph() - self.orderedkeys=[] - self.outdatedpackages=[] - self.mydbapi={} - self.mydbapi["/"] = portage.fakedbapi() - if "empty" not in myparams: - for pkg in portage.db["/"]["vartree"].getallcpv(): - self.mydbapi["/"].cpv_inject(pkg) - if portage.root != "/": - self.mydbapi[portage.root] = portage.fakedbapi() - if "empty" not in myparams: - for pkg in portage.db[portage.root]["vartree"].getallcpv(): - self.mydbapi[portage.root].cpv_inject(pkg) - - if "--usepkg" in myopts: - portage.db["/"]["bintree"].populate(("--getbinpkg" in myopts), ("--getbinpkgonly" in myopts)) - - def create(self,mybigkey,myparent=None,addme=1,myuse=None): - """creates the actual digraph of packages to merge. return 1 on success, 0 on failure - mybigkey = specification of package to merge; myparent = parent package (one depending on me); - addme = should I be added to the tree? (for the --onlydeps mode)""" - #stuff to add: - #SLOT-aware emerge - #IUSE-aware emerge - #"no downgrade" emerge - #print "mybigkey:",mybigkey - - jbigkey=" ".join(mybigkey) - if self.mynewgraph.has_node(jbigkey+" merge") or self.mynewgraph.has_node(jbigkey+" nomerge"): - if myparent: - if self.mynewgraph.has_node(jbigkey+" merge"): - child = jbigkey+" merge" - else: - child = jbigkey+" nomerge" - self.mynewgraph.add_relationship(myparent, child) - #this conditional is needed to prevent infinite recursion on already-processed deps - return 1 - - update_spinner() - - mytype,myroot,mykey=mybigkey - # select the correct /var database that we'll be checking against - vardbapi=portage.db[myroot]["vartree"].dbapi - - if addme: - if mytype=="blocks": - # we've encountered a "blocks" node. We will totally ignore this - # node and not add it to our digraph if it doesn't apply to us. - if myparent and (self.mydbapi[myroot].match(mykey) or vardbapi.match(mykey)): - mybigkey.append(myparent.split()[2]) - self.mynewgraph.add_node(" ".join(mybigkey)) - self.mynewgraph.add_relationship(myparent, " ".join(mybigkey)) - return 1 - - if myuse == None: - self.pkgsettings.setcpv(mykey) - myuse=self.pkgsettings["USE"].split() - - self.applied_useflags[mykey] = myuse - - merging=1 - if addme: - # this is where we add the node to the list of packages to merge - if not myparent: - # command-line specified or part of a world list... - if ("self" not in myparams) or (("selective" in myparams) and vardbapi.cpv_exists(mykey)): - # the package is on the system, so don't merge it. - merging=0 - elif ("selective" in myparams) and vardbapi.cpv_exists(mykey): - merging=0 - - if (merging==0 and "--newuse" in myopts and vardbapi.cpv_exists(mykey)): - iuses=portage.portdb.aux_get(mykey, ["IUSE"])[0].split() - old_use=vardbapi.aux_get(mykey, ["USE"])[0].split() - now_use=self.pkgsettings["USE"].split() - for x in iuses: - if (old_use.count(x) and not now_use.count(x)) or (not old_use.count(x) and now_use.count(x)): - merging=1 - break - else: - #onlydeps mode; don't merge - merging=2 - - # if the package is already on the system, we add a "nomerge" - # directive, otherwise we add a "merge" directive. - if merging==1: - mybigkey.append("merge") - else: - mybigkey.append("nomerge") - - # whatever the case, we need to add the node to our digraph so - # that children can depend upon it. - self.mynewgraph.add_node(" ".join(mybigkey)) - if myparent: - self.mynewgraph.add_relationship(myparent, " ".join(mybigkey)) - if ("deep" not in myparams) and (not merging): - return 1 - elif "recurse" not in myparams: - return 1 - - edepend={} - if mytype=="binary": - mypkgparts=portage_versions.catpkgsplit(mykey) - tbz2name = mykey.split("/")[1]+".tbz2" - if tbz2name in portage.db[portage.root]["bintree"].invalids: - sys.stderr.write("\nINVALID PACKAGE (is required to continue): "+str(mykey)+"\n") - sys.exit(1) - if portage.db[portage.root]["bintree"].isremote(mykey): - edepend = portage.db[portage.root]["bintree"].remotepkgs[tbz2name] - edepend["DEPEND"] ="" - edepend["RDEPEND"]=" ".join(edepend["RDEPEND"].split()) - edepend["PDEPEND"]=" ".join(edepend["PDEPEND"].split()) - edepend["CDEPEND"]=" ".join(edepend["CDEPEND"].split()) - edepend["SLOT"] =edepend["SLOT"].strip() - #portage.db[portage.root]["bintree"].gettbz2(mykey) - else: # It's local. - mytbz2=xpak.tbz2(portage.db[portage.root]["bintree"].getname(mykey)) - edepend["DEPEND"] ="" - edepend["RDEPEND"]=" ".join(mytbz2.getelements("RDEPEND")) - edepend["PDEPEND"]=" ".join(mytbz2.getelements("PDEPEND")) - edepend["CDEPEND"]=" ".join(mytbz2.getelements("CDEPEND")) - edepend["SLOT"] =mytbz2.getfile("SLOT",mypkgparts[2]) - elif mytype=="ebuild": - try: - mymeta = ["DEPEND","RDEPEND","PDEPEND","CDEPEND"] - myfoo = portage.portdb.aux_get(mykey, mymeta) - for index in range(0,len(mymeta)): - edepend[mymeta[index]] = myfoo[index] - except (KeyError,IOError): - print "emerge: create(): aux_get() error on",mykey+"; aborting..." - sys.exit(1) - mydep={} - mp=" ".join(mybigkey) - - if myroot=="/": - mydep["/"]=edepend["DEPEND"]+" "+edepend["RDEPEND"] - if not self.select_dep("/",mydep["/"],myparent=mp,myuse=myuse): - return 0 - else: - mydep["/"]=edepend["DEPEND"] - mydep[myroot]=edepend["RDEPEND"] - if not self.select_dep("/",mydep["/"],myparent=mp,myuse=myuse): - return 0 - if not self.select_dep(myroot,mydep[myroot],myparent=mp,myuse=myuse): - return 0 - - if edepend.has_key("PDEPEND") and edepend["PDEPEND"]: - # Post Depend -- Add to the list without a parent, as it depends - # on a package being present AND must be built after that package. - if not self.select_dep(myroot,edepend["PDEPEND"],myuse=myuse): - return 0 - - return 1 - - def select_files(self,myfiles): - "given a list of .tbz2s, .ebuilds and deps, create the appropriate depgraph and return a favorite list" - myfavorites=[] - for x in myfiles: - if x[-5:]==".tbz2": - if not os.path.exists(x): - if os.path.exists(self.pkgsettings["PKGDIR"]+"/All/"+x): - x=self.pkgsettings["PKGDIR"]+"/All/"+x - elif os.path.exists(self.pkgsettings["PKGDIR"]+"/"+x): - x=self.pkgsettings["PKGDIR"]+"/"+x - else: - print "\n\n!!! Binary package '"+str(x)+"' does not exist." - print "!!! Please ensure the tbz2 exists as specified.\n" - sys.exit(1) - mytbz2=xpak.tbz2(x) - mykey=mytbz2.getelements("CATEGORY")[0]+"/"+os.path.basename(x)[:-5] - if os.path.realpath(portage.db["/"]["bintree"].getname(mykey)) != os.path.realpath(x): - print red("\n*** You need to adjust PKGDIR to emerge this package.\n") - sys.exit(1) - if not self.create(["binary",portage.root,mykey],None,"--onlydeps" not in myopts): - return (0,myfavorites) - elif not "--oneshot" in myopts: - myfavorites.append(mykey) - elif x[-7:]==".ebuild": - x = os.path.realpath(x) - mykey=os.path.basename(os.path.normpath(x+"/../.."))+"/"+os.path.basename(x)[:-7] - ebuild_path = portage.db["/"]["porttree"].dbapi.findname(mykey) - if ebuild_path: - if os.path.realpath(ebuild_path) != x: - print red("\n*** You need to adjust PORTDIR or PORTDIR_OVERLAY to emerge this package.\n") - sys.exit(1) - if mykey not in portage.db["/"]["porttree"].dbapi.xmatch("match-visible", portage.portage_dep.dep_getkey(mykey)): - print red("\n*** You are emerging a masked package. It is MUCH better to use") - print red("*** /etc/portage/package.* to accomplish this. See portage(5) man") - print red("*** page for details.") - countdown(EMERGE_WARNING_DELAY, "Continuing...") - else: - print red("\n*** "+x+" does not exist") - sys.exit(1) - if not self.create(["ebuild",portage.root,mykey],None,"--onlydeps" not in myopts): - return (0,myfavorites) - elif not "--oneshot" in myopts: - myfavorites.append(mykey) - else: - try: - mykey=portage.dep_expand(x,portage.portdb) - except ValueError, errpkgs: - print "\n\n!!! The short ebuild name \"" + x + "\" is ambiguous. Please specify" - print "!!! one of the following fully-qualified ebuild names instead:\n" - for i in errpkgs[0]: - print " " + green(i) - print - sys.exit(1) - - # select needs to return 0 on dep_check failure - - sys.stdout.flush() - sys.stderr.flush() - - try: - self.mysd = self.select_dep(portage.root,mykey,arg=x) - except portage_exception.MissingSignature, e: - portage.writemsg("\n\n!!! A missing gpg signature is preventing portage from calculating the\n") - portage.writemsg("!!! required dependencies. This is a security feature enabled by the admin\n") - portage.writemsg("!!! to aid in the detection of malicious intent.\n\n") - portage.writemsg("!!! THIS IS A POSSIBLE INDICATION OF A TAMPERED FILES -- CHECK CAREFULLY.\n") - portage.writemsg("!!! Affected file: %s\n" % (e)) - sys.exit(1) - except portage_exception.InvalidSignature, e: - portage.writemsg("\n\n!!! An invalid gpg signature is preventing portage from calculating the\n") - portage.writemsg("!!! required dependencies. This is a security feature enabled by the admin\n") - portage.writemsg("!!! to aid in the detection of malicious intent.\n\n") - portage.writemsg("!!! THIS IS A POSSIBLE INDICATION OF A TAMPERED FILES -- CHECK CAREFULLY.\n") - portage.writemsg("!!! Affected file: %s\n" % (e)) - sys.exit(1) - except SystemExit, e: - raise # Needed else can't exit - except Exception, e: - if "--debug" in myopts: - raise - print "\n\n!!! Problem in",mykey,"dependencies." - print "!!!",str(e),e.__module__ - sys.exit(1) - - if not self.mysd: - return (0,myfavorites) - elif not "--oneshot" in myopts: - myfavorites.append(mykey) - - missing=0 - if "--usepkgonly" in myopts: - for x in self.mynewgraph.get_all_nodes(): - xs=x.split(" ") - if (xs[0] != "binary") and (xs[3]=="merge"): - if missing == 0: - print - missing += 1 - print "Missing binary for:",xs[2] - - # We're true here unless we are missing binaries. - return (not missing,myfavorites) - - def select_dep(self,myroot,depstring,myparent=None,arg=None,myuse=None): - "given a dependency string, create the appropriate depgraph and return 1 on success and 0 on failure" - if "--debug" in myopts: - print - print "Parent: ",myparent - print "Depstring:",depstring - if not arg: - #processing dependencies - mycheck=portage.dep_check(depstring,self.mydbapi[myroot],self.pkgsettings,myuse=myuse,use_binaries=("--usepkg" in myopts)) - #mycheck=portage.dep_check(depstring,self.mydbapi[myroot],self.pkgsettings,myuse=myuse) - - if not mycheck[0]: - mymerge=[] - else: - mymerge=mycheck[1] - - else: - #we're processing a command-line argument; unconditionally merge it even if it's already merged - mymerge=[depstring] - - # dep_check has been run so we can now add our parent to our - # build state to update virtuals and other settings. This - # happens after the package is added to the tree so that a - # package can depend on a virtual which it satisfies. - if myparent: - myp = myparent.split() - if myp[3]=="merge": - self.mydbapi[myroot].cpv_inject(myp[2]) - if myp[0]=="binary": - self.pkgsettings.setinst(myp[2],portage.db["/"]["bintree"].dbapi) - else: - self.pkgsettings.setinst(myp[2],portage.db[myroot]["porttree"].dbapi) - - if not mymerge: - return 1 - - if "--debug" in myopts: - print "Candidates:",mymerge - for x in mymerge: - myk=None - binpkguseflags=None - if x[0]=="!": - # if this package is myself, don't append it to block list. - if "--debug" in myopts: - print "Myparent",myparent - if (myparent): - if myparent.split()[2] in portage.portdb.xmatch("match-all", x[1:]): - # myself, so exit. - continue - # adding block - myk=["blocks",myroot,x[1:]] - else: - #We are not processing a blocker but a normal dependency - myeb=None - myeb_matches = portage.portdb.xmatch("match-visible",x) - if ("--usepkgonly" not in myopts): - myeb=portage.best(myeb_matches) - - myeb_pkg=None - if ("--usepkg" in myopts): - # The next line assumes the binarytree has been populated. - # XXX: Need to work out how we use the binary tree with roots. - myeb_pkg_matches=portage.db["/"]["bintree"].dbapi.match(x) - if ("--usepkgonly" not in myopts): - # Remove any binary package entries that are masked in the portage tree (#55871) - for idx in range(len(myeb_pkg_matches)-1,-1,-1): - if myeb_pkg_matches[idx] not in myeb_matches: - del myeb_pkg_matches[idx] - myeb_pkg = portage.best(myeb_pkg_matches) - if myeb_pkg == '': - myeb_pkg = None - - if (not myeb) and (not myeb_pkg): - if not arg: - xinfo='"'+x+'"' - else: - xinfo='"'+arg+'"' - if myparent: - xfrom = '(dependency required by '+green('"'+myparent.split()[2]+'"')+red(' ['+myparent.split()[0]+"])") - alleb=portage.portdb.xmatch("match-all",x) - if alleb: - if "--usepkgonly" not in myopts: - print "\n!!! "+red("All ebuilds that could satisfy ")+green(xinfo)+red(" have been masked.") - print "!!! One of the following masked packages is required to complete your request:" - oldcomment = "" - for p in alleb: - mreasons = portage.portdb.getmaskingstatus(p) - print "- "+p+" (masked by: "+", ".join(mreasons)+")" - comment = portage.portdb.getmaskingreason(p) - if comment and comment != oldcomment: - print comment - oldcomment = comment - print - print "For more information, see MASKED PACKAGES section in the emerge man page or " - print "section 2.2 \"Software Availability\" in the Gentoo Handbook." - if myparent: - print "!!! "+red(xfrom) - print - else: - print "\n!!! "+red("There are no packages available to satisfy: ")+green(xinfo) - print "!!! Either add a suitable binary package or compile from an ebuild." - else: - print "\nemerge: there are no ebuilds to satisfy "+xinfo+"." - print - return 0 - - if "--debug" in myopts: - print "ebuild:",myeb - print "binpkg:",myeb_pkg - - if myeb and myeb_pkg: - myeb_s = portage_versions.catpkgsplit(myeb) - myeb_s = [myeb_s[0]+"/"+myeb_s[1], myeb_s[2], myeb_s[3]] - myeb_pkg_s = portage_versions.catpkgsplit(myeb_pkg) - myeb_pkg_s = [myeb_pkg_s[0]+"/"+myeb_pkg_s[1], myeb_pkg_s[2], myeb_pkg_s[3]] - - if portage_versions.pkgcmp(myeb_s, myeb_pkg_s) == 0: - # pkg is same version as ebuild - myeb = None - else: - myeb_pkg = None - - if myeb: - myk=["ebuild",myroot,myeb] - elif myeb_pkg: - binpkguseflags=portage.db[portage.root]["bintree"].get_use(myeb_pkg) - myk=["binary",myroot,myeb_pkg] - else: - sys.stderr.write("!!! Confused... Don't know what I'm using for dependency info. :(\n") - sys.exit(1) - - #if "--usepkg" in myopts: - # #If we want to use packages, see if we have a pre-built one... - # mypk=portage.db["/"]["bintree"].dbapi.match(x) - # if myeb in mypk: - # #Use it only if it's exactly the version we want. - # myk=["binary",myroot,myeb] - # else: - # myk=["ebuild",myroot,myeb] - #else: - # myk=["ebuild",myroot,myeb] - if myparent: - #we are a dependency, so we want to be unconditionally added - if not self.create(myk,myparent,myuse=binpkguseflags): - return 0 - else: - #if mysource is not set, then we are a command-line dependency and should not be added - #if --onlydeps is specified. - if not self.create(myk,myparent,"--onlydeps" not in myopts,myuse=binpkguseflags): - return 0 - - if "--debug" in myopts: - print "Exiting...",myparent - return 1 - - - def altlist(self): - mygraph=self.mynewgraph.clone() - dolist=["/"] - retlist=[] - for x in portage.db: - portage.db[x]["merge"]=[] - if x not in dolist: - dolist.append(x) - while mygraph.get_all_nodes(): - mycurkey=mygraph.get_leaf_nodes()[0] - splitski=mycurkey.split() - portage.db[splitski[1]]["merge"].append(splitski) - mygraph.remove_node(mycurkey) - for x in dolist: - for y in portage.db[x]["merge"]: - retlist.append(y) - return retlist - - def xcreate(self,mode="system"): - global syslist - if mode=="system": - mylist=syslist - else: - #world mode - worldlist=getlist("world") - sysdict=genericdict(syslist) - worlddict=genericdict(worldlist) - #we're effectively upgrading sysdict to contain all new deps from worlddict - for x in worlddict.keys(): - #only add the world node if the package is: - #actually installed -- this prevents the remerging of already unmerged packages when we do a world --update; - #actually available -- this prevents emerge from bombing out due to no match being found (we want a silent ignore) - if "empty" in myparams: - if portage.db["/"]["vartree"].dbapi.match(x): - sysdict[x]=worlddict[x] - elif portage.db[portage.root]["vartree"].dbapi.match(x): - #package is installed - sysdict[x]=worlddict[x] - else: - print "\n*** Package in world file is not installed: "+x - mylist = sysdict.values() - - for mydep in mylist: - myeb=portage.portdb.xmatch("bestmatch-visible",mydep) - if not myeb: - #this is an unavailable world entry; just continue - continue - - #THIS NEXT BUNCH OF CODE NEEDS TO BE REPLACED TO SUPPORT WORLD ANTI-DEPS - #if mydep2[0]=="!":, etc. - binpkguseflags = None - if "--usepkg" in myopts: - mypk=portage.db[portage.root]["bintree"].dep_bestmatch(mydep) - if myeb==mypk: - myk=["binary",portage.root,mypk] - binpkguseflags=portage.db[portage.root]["bintree"].get_use(mypk) - elif "--usepkgonly" in myopts: - if not mypk: - self.missingbins += [myeb] - myk=["binary",portage.root,myeb] - else: - myk=["binary",portage.root,mypk] - else: - myk=["ebuild",portage.root,myeb] - else: - myk=["ebuild",portage.root,myeb] - - if not self.create(myk,myuse=binpkguseflags): - print - print "!!! Problem with",myk[0],myk[2] - print "!!! Possibly a DEPEND/*DEPEND problem." - print - return 0 - return 1 - - def match(self,mydep,myroot=portage.root,mykey=None): - # support mutual exclusive deps - if mydep[0]=="!": - #add our blocker; it will be ignored later if necessary (if we are remerging the same pkg, for example) - myk="blocks "+myroot+" "+mydep[1:] - else: - myeb=portage.db[portage.root]["porttree"].dep_bestmatch(mydep) - if not myeb: - if not mykey: - print "\n!!! Error: couldn't find match for",mydep - else: - print "\n!!! Error: couldn't find match for",mydep,"in",mykey - print - sys.exit(1) - - if "--usepkg" in myopts: - mypk=portage.db[portage.root]["bintree"].dep_bestmatch(mydep) - if myeb==mypk: - myk="binary "+portage.root+" "+mypk - else: - myk="ebuild "+myroot+" "+myeb - else: - myk="ebuild "+myroot+" "+myeb - - return myk - - def display(self,mylist): - changelogs=[] - p=[] - totalsize=0 - - if verbosity: - overlays = portage.settings['PORTDIR_OVERLAY'].split() - - i = 0 - while i < len(mylist): - if mylist[i][-1]=="nomerge": - # we don't care about this elements - mylist.pop(i) - continue - # the branch continues, or we've found a good element. - # -> let's see what's next, if anything - i += 1 - - display_overlays=False - # files to fetch list - avoids counting a same file twice - # in size display (verbose mode) - myfetchlist=[] - for x in mylist: - fetch=" " - - if x[0]=="blocks": - addl=""+red("B")+" "+fetch+" " - resolved=portage.db[x[1]]["vartree"].resolve_key(x[2]) - print "["+x[0]+" "+addl+"]",red(resolved), - if resolved!=x[2]: - if x[3]: - print red("(\""+x[2]+"\" is blocking "+x[3]+")") - else: - print red("(\""+x[2]+"\")") - else: - if x[3]: - print red("(is blocking "+x[3]+")") - else: - print - else: - if (x[0]!="binary") and ("fetch" in portage.portdb.aux_get(x[2],["RESTRICT"])[0].split()): - fetch = red("F") - if portage.portdb.fetch_check(x[2], portage.settings): - fetch = green("f") - - #we need to use "--emptrytree" testing here rather than "empty" param testing because "empty" - #param is used for -u, where you still *do* want to see when something is being upgraded. - myoldbest="" - if (not "--emptytree" in myopts) and portage.db[x[1]]["vartree"].exists_specific(x[2]): - addl=" "+yellow("R")+fetch+" " - elif (not "--emptytree" in myopts) and portage.db[x[1]]["vartree"].exists_specific_cat(x[2]): - if x[0] == "binary": - mynewslot=portage.db["/"]["bintree"].getslot(x[2]) - elif x[0] == "ebuild": - mynewslot=portage.db["/"]["porttree"].getslot(x[2]) - myoldlist=portage.db[x[1]]["vartree"].dbapi.match(portage_versions.pkgsplit(x[2])[0]) - myinslotlist=filter((lambda p: portage.db[portage.root]["vartree"].getslot(p)==mynewslot),myoldlist) - if myinslotlist: - myoldbest=portage.best(myinslotlist) - addl=" "+fetch - if portage_versions.pkgcmp(portage_versions.pkgsplit(x[2]), portage_versions.pkgsplit(myoldbest)) < 0: - # Downgrade in slot - addl+=turquoise("U")+blue("D") - else: - # Update in slot - addl+=turquoise("U")+" " - else: - # New slot, mark it new. - addl=" "+green("NS")+fetch+" " - - if "--changelog" in myopts: - changelogs.extend(self.calc_changelog( - portage.portdb.findname(x[2]), - portage.db["/"]["vartree"].dep_bestmatch('/'.join(portage_versions.catpkgsplit(x[2])[:2])), - x[2] - )) - else: - addl=" "+green("N")+" "+fetch+" " - - verboseadd="" - if verbosity > 0: - # iuse verbose - try: - if x[0] == "binary": - iuse_split = portage.db["/"]["bintree"].dbapi.aux_get(x[2],["IUSE"])[0].split() - elif x[0] == "ebuild": - iuse_split = portage.portdb.aux_get(x[2],["IUSE"])[0].split() - else: - iuse_split = [] - except SystemExit, e: - raise # Needed else can't exit - except: - portage.writemsg("!!! Error getting IUSE (report this to bugs.gentoo.org)\n") - portage.writemsg("!!! %s\n" % x) - iuse_split = [] - iuse_split.sort() - old_use=None - if myoldbest: - pkg=myoldbest - else: - pkg=x[2] - if portage.db["/"]["vartree"].dbapi.cpv_exists(pkg): - try: - old_use=portage.db["/"]["vartree"].dbapi.aux_get(pkg, ["USE"])[0].split() - except SystemExit, e: - raise # Needed else can't exit - except: - pass - iuse="" - now_use=self.applied_useflags[x[2]] - for ebuild_iuse in portage_util.unique_array(iuse_split): - usechange="" - if old_use: - if (old_use.count(ebuild_iuse) and not now_use.count(ebuild_iuse)) or (not old_use.count(ebuild_iuse) and now_use.count(ebuild_iuse)): - usechange="*" - - if ebuild_iuse in self.applied_useflags[x[2]]: - if usechange == "*": - iuse=green("+"+ebuild_iuse) - else: - iuse=red("+"+ebuild_iuse) - elif ebuild_iuse in portage.settings.usemask: - iuse=blue("(-"+ebuild_iuse+")") - else: - iuse=blue("-"+ebuild_iuse) - verboseadd+=iuse+usechange+" " - if (verbosity and "--pretend" not in myopts) or \ - (verbosity > 1 and "--pretend" in myopts): - # show herd/maintainers. - metadata_file=portage.settings["PORTDIR"] + "/" + portage.portage_versions.pkgsplit(x[2])[0] + "/metadata.xml" - if not os.path.exists(metadata_file): - verboseadd += red("(Missing metadata.xml) ") - else: - parser = portage_metadata.make_parser() - handler = portage_metadata.Metadata_XML() - handler._maintainers = [] - handler._herds = [] - parser.setContentHandler(handler) - parser.parse( metadata_file ) - - if len(handler._herds) > 0: - verboseadd += "("+ teal("H:" + ", ".join(handler._herds) ) + ")" - if len(handler._maintainers) < 1: - verboseadd += " (" + teal("M:" + ", ".join(handler._herds) ) + ") " - else: - verboseadd += " (" + teal("M:" + ", ".join(handler._maintainers) ) + ") " - - - # size verbose - mysize=0 - if x[0] == "ebuild" and x[-1]!="nomerge": - myfilesdict=portage.portdb.getfetchsizes(x[2], useflags=self.applied_useflags[x[2]], debug=edebug) - if myfilesdict==None: - myfilesdict="[empty/missing/bad digest]" - else: - for myfetchfile in myfilesdict.keys(): - if myfetchfile not in myfetchlist: - mysize+=myfilesdict[myfetchfile] - myfetchlist.append(myfetchfile) - totalsize+=mysize - verboseadd+=format_size(mysize)+" " - - # overlay verbose - # XXX: Invalid binaries have caused tracebacks here. 'if file_name' - # x = ['binary', '/', 'sys-apps/pcmcia-cs-3.2.7.2.6', 'merge'] - file_name=portage.portdb.findname(x[2]) - if file_name: # It might not exist in the tree - dir_name=os.path.abspath(os.path.dirname(file_name)+"/../..") - if (overlays.count(dir_name)>0): - verboseadd+=teal("["+str(overlays.index(os.path.normpath(dir_name))+1)+"]")+" " - display_overlays=True - else: - verboseadd += "[No ebuild?]" - - xs=portage.portage_versions.pkgsplit(x[2]) - if xs[2]=="r0": - xs=(xs[0],xs[1],"") - else: - xs=(xs[0],xs[1],"-"+xs[2]) - - if self.pkgsettings.has_key("COLUMNWIDTH"): - mywidth=int(self.pkgsettings["COLUMNWIDTH"]) - else: - mywidth=130 - oldlp=mywidth-30 - newlp=oldlp-30 - - indent="" - - if myoldbest: - myoldbest=portage_versions.pkgsplit(myoldbest)[1]+"-"+portage.portage_versions.pkgsplit(myoldbest)[2] - if myoldbest[-3:]=="-r0": - myoldbest=myoldbest[:-3] - myoldbest=blue("["+myoldbest+"]") - - if x[1]!="/": - if "--columns" in myopts: - myprint="["+x[0]+" "+addl+"] "+indent+darkgreen(xs[0]) - if (newlp-nc_len(myprint)) > 0: - myprint=myprint+(" "*(newlp-nc_len(myprint))) - myprint=myprint+"["+darkblue(xs[1]+xs[2])+"] " - if (oldlp-nc_len(myprint)) > 0: - myprint=myprint+" "*(oldlp-nc_len(myprint)) - myprint=myprint+myoldbest - myprint=myprint+darkgreen(" to "+x[1])+" "+verboseadd - else: - myprint="["+x[0]+" "+addl+"] "+darkgreen(x[2])+" "+myoldbest+" "+darkgreen("to "+x[1])+" "+verboseadd - else: - if "--columns" in myopts: - myprint="["+x[0]+" "+addl+"] "+indent+darkgreen(xs[0]) - if (newlp-nc_len(myprint)) > 0: - myprint=myprint+(" "*(newlp-nc_len(myprint))) - myprint=myprint+green(" ["+xs[1]+xs[2]+"] ") - if (oldlp-nc_len(myprint)) > 0: - myprint=myprint+(" "*(oldlp-nc_len(myprint))) - myprint=myprint+myoldbest+" "+verboseadd - else: - if x[3]=="nomerge": - myprint=darkblue("[nomerge ] "+indent+x[2]+" "+myoldbest+" ")+verboseadd - else: - myprint="["+x[0]+" "+addl+"] "+indent+darkgreen(x[2])+" "+myoldbest+" "+verboseadd - p.append(myprint) - - if ("--tree" not in myopts): - mysplit=portage_versions.pkgsplit(x[2]) - - # XXX mysplit _can_ be None.... Why? - if mysplit and (len(mysplit)==3): - if "--emptytree" not in myopts: - if mysplit[0]=="sys-apps/portage": - if (mysplit[1]+mysplit[2]!=portage.VERSION and - "livecvsportage" not in portage.settings.features): - if mylist.index(x)>> Recording",myfavkey,"in \"world\" favorites file..." - if not "--fetchonly" in myopts: - portage.writedict(myfavdict,portage.root+portage.WORLD_FILE,writekey=0) - - portage.mtimedb["resume"]["mergelist"]=mymergelist[:] - - # We need to yank the harmful-to-new-builds settings from features. - myorigfeat=self.pkgsettings["FEATURES"] - myfeat=myorigfeat.split() - while "keeptemp" in myfeat: - myfeat.remove("keeptemp") - while "keepwork" in myfeat: - myfeat.remove("keepwork") - - self.pkgsettings["FEATURES"]=" ".join(myfeat) - self.thread = None - - # parallel-fetch should only kick in when not pretending, emerge isn't just fetching, - # and there is more then one node being processed. - if "parallel-fetch" in self.pkgsettings["FEATURES"] and not \ - ("--ask" in myopts or "--pretend" in myopts or "--fetchonly" in myopts) and \ - len(mymergelist) > 1: - if "distlocks" not in self.pkgsettings["FEATURES"]: - print red("!!!") - print red("!!!")+" parallel-fetching would've been enabled, but you lack distlocks" - print red("!!!")+" in your features. so yeah, no go." - print red("!!!")+" enable distlocks to use parallel fetching" - print red("!!!") - import time - time.sleep(5) - else: -# print "mergelist=",mymergelist -# -# self.thread = threading.Thread(target=self.__fetch,args=[mymergelist], \ -# kwargs={"verbosity":1, "fetchall":("--fetchalluri" in myopts)}) -# self.thread.setDaemon(False) -# portage.exit_callbacks.append(self.thread.join) -# self.thread.start() - print ">>> parallel fetching is in the house, hizzay" - print ">>> represent." - portage_exec.spawn_func(self.__fetch,[mymergelist],{"verbosity":1,\ - "fetchall":("--fetchalluri" in myopts)},returnpid=True,fd_pipes={1:1,2:2}) -# time.sleep(2) - - mergecount=0 - for x in mymergelist: - mergecount+=1 - myroot=x[1] - pkgindex=2 - if x[0]=="blocks": - pkgindex=3 - y=portage.portdb.findname(x[pkgindex]) - if not "--pretend" in myopts: - print ">>> emerge ("+str(mergecount)+" of "+str(len(mymergelist))+")",x[pkgindex],"to",x[1] - emergelog(" >>> emerge ("+str(mergecount)+" of "+str(len(mymergelist))+") "+x[pkgindex]+" to "+x[1]) - - self.pkgsettings["EMERGE_FROM"] = x[0][:] - self.pkgsettings.backup_changes("EMERGE_FROM") - - #buildsyspkg: Check if we need to _force_ binary package creation - issyspkg = ("buildsyspkg" in myfeat) \ - and x[0] != "blocks" \ - and mysysdict.has_key(portage.cpv_getkey(x[2])) \ - and not ("--buildpkg" in myopts) - if x[0] in ["ebuild","blocks"]: - if (x[0]=="blocks") and ("--fetchonly" not in myopts): - raise Exception, "Merging a blocker" - elif ("--fetchonly" in myopts) or ("--fetch-all-uri" in myopts): - if ("--fetch-all-uri" in myopts): - retval=portage.doebuild(y,"fetch",myroot,self.pkgsettings,edebug,("--pretend" in myopts),fetchonly=1,fetchall=1) - else: - retval=portage.doebuild(y,"fetch",myroot,self.pkgsettings,edebug,("--pretend" in myopts),fetchonly=1) - if retval: - print - print "!!! Fetch for",y,"failed, continuing..." - print - returnme=1 - continue - elif "--buildpkg" in myopts or issyspkg: - #buildsyspkg: Sounds useful to display something, but I don't know if we should also log it - if issyspkg: - print ">>> This is a system package, let's pack a rescue tarball." - #emergelog(">>> This is a system package, let's pack a rescue tarball.") - #create pkg, then merge pkg - short_msg = "emerge: ("+str(mergecount)+" of "+str(len(mymergelist))+") "+x[pkgindex]+" Clean" - emergelog(" === ("+str(mergecount)+" of "+str(len(mymergelist))+") Cleaning ("+x[pkgindex]+"::"+y+")", short_msg=short_msg) - retval=portage.doebuild(y,"clean",myroot,self.pkgsettings,edebug,cleanup=1) - if retval: - sys.exit(1) - short_msg = "emerge: ("+str(mergecount)+" of "+str(len(mymergelist))+") "+x[pkgindex]+" Compile" - emergelog(" === ("+str(mergecount)+" of "+str(len(mymergelist))+") Compiling/Packaging ("+x[pkgindex]+"::"+y+")", short_msg=short_msg) - retval=portage.doebuild(y,"package",myroot,self.pkgsettings,edebug) - if retval: - sys.exit(1) - #dynamically update our database - if "--buildpkgonly" not in myopts: - portage.db[portage.root]["bintree"].inject(x[2]) - mytbz2=portage.db[portage.root]["bintree"].getname(x[2]) - short_msg = "emerge: ("+str(mergecount)+" of "+str(len(mymergelist))+") "+x[pkgindex]+" Merge" - emergelog(" === ("+str(mergecount)+" of "+str(len(mymergelist))+") Merging ("+x[pkgindex]+"::"+y+")", short_msg=short_msg) - - self.pkgsettings["EMERGE_FROM"] = "binary" - self.pkgsettings.backup_changes("EMERGE_FROM") - - retval=portage.pkgmerge(mytbz2,myroot,self.pkgsettings) - if retval==None: - sys.exit(1) - else: - short_msg = "emerge: ("+str(mergecount)+" of "+str(len(mymergelist))+") "+x[pkgindex]+" Clean" - emergelog(" === ("+str(mergecount)+" of "+str(len(mymergelist))+") Cleaning ("+x[pkgindex]+"::"+y+")", short_msg=short_msg) - retval=portage.doebuild(y,"clean",myroot,self.pkgsettings,edebug,cleanup=1) - if retval: - sys.exit(1) - short_msg = "emerge: ("+str(mergecount)+" of "+str(len(mymergelist))+") "+x[pkgindex]+" Compile" - emergelog(" === ("+str(mergecount)+" of "+str(len(mymergelist))+") Compiling/Merging ("+x[pkgindex]+"::"+y+")", short_msg=short_msg) - retval=portage.doebuild(y,"merge",myroot,self.pkgsettings,edebug) - if retval: - sys.exit(1) - #dynamically update our database - elif x[0]=="binary": - #merge the tbz2 - mytbz2=portage.db[portage.root]["bintree"].getname(x[2]) - if portage.db[portage.root]["bintree"].isremote(x[2]): - short_msg = "emerge: ("+str(mergecount)+" of "+str(len(mymergelist))+") "+x[pkgindex]+" Fetch" - emergelog(" --- ("+str(mergecount)+" of "+str(len(mymergelist))+") Fetching Binary ("+x[pkgindex]+"::"+mytbz2+")", short_msg=short_msg) - portage.db[portage.root]["bintree"].gettbz2(x[2]) - - if ("--fetchonly" in myopts) or ("--fetch-all-uri" in myopts): - continue - - short_msg = "emerge: ("+str(mergecount)+" of "+str(len(mymergelist))+") "+x[pkgindex]+" Merge Binary" - emergelog(" === ("+str(mergecount)+" of "+str(len(mymergelist))+") Merging Binary ("+x[pkgindex]+"::"+mytbz2+")", short_msg=short_msg) - retval=portage.pkgmerge(mytbz2,x[1],self.pkgsettings) - if retval==None: - sys.exit(1) - #need to check for errors - if "--buildpkgonly" not in myopts: - portage.db[x[1]]["vartree"].inject(x[2]) - myfavkey=portage.cpv_getkey(x[2]) - if (not "--fetchonly" in myopts) and (not "--fetch-all-uri" in myopts) and (myfavkey in favorites): - myfavs=portage.grabfile(myroot+portage.WORLD_FILE) - myfavdict=genericdict(myfavs) - mysysdict=genericdict(syslist) - #don't record if already in system profile or already recorded - if ("--update" not in myopts or not portage.db[portage.root]["vartree"].dbapi.match(myfavkey)) and \ - (not mysysdict.has_key(myfavkey)) and (not myfavdict.has_key(myfavkey)): - #we don't have a favorites entry for this package yet; add one - myfavdict[myfavkey]=myfavkey - print ">>> Recording",myfavkey,"in \"world\" favorites file..." - emergelog(" === ("+str(mergecount)+" of "+str(len(mymergelist))+") Updating world file ("+x[pkgindex]+")") - portage.writedict(myfavdict,myroot+portage.WORLD_FILE,writekey=0) - - if ("noclean" not in portage.features) and (x[0] != "binary"): - short_msg = "emerge: ("+str(mergecount)+" of "+str(len(mymergelist))+") "+x[pkgindex]+" Clean Post" - emergelog(" === ("+str(mergecount)+" of "+str(len(mymergelist))+") Post-Build Cleaning ("+x[pkgindex]+"::"+y+")", short_msg=short_msg) - retval=portage.doebuild(y,"clean",myroot,self.pkgsettings,edebug,cleanup=1) - if retval: - sys.exit(1) - - if ("--pretend" not in myopts) and ("--fetchonly" not in myopts) and ("--fetch-all-uri" not in myopts): - # Clean the old package that we have merged over top of it. - xsplit=portage.portage_versions.pkgsplit(x[2]) - emergelog(" >>> AUTOCLEAN: "+xsplit[0]) - retval=unmerge("clean", [xsplit[0]]) - if not retval: - emergelog(" --- AUTOCLEAN: Nothing unmerged.") - - # Figure out if we need a restart. - mysplit=portage.portage_versions.pkgsplit(x[2]) - if mysplit[0]=="sys-apps/portage": - myver=mysplit[1]+"-"+mysplit[2] - if myver[-3:]=='-r0': - myver=myver[:-3] - if (myver!=portage.VERSION and - "livecvsportage" not in portage.settings.features): - if len(mymergelist) > mergecount: - myargv=sys.argv - myr=0 - for myra in range(len(myargv)): - if myargv[myr][0:len("portage")]=="portage": - del myargv[myr] - myr-=1 - if myargv[myr][0:len("sys-apps/portage")]=="sys-apps/portage": - del myargv[myr] - myr-=1 - myr+=1 - emergelog(" *** RESTARTING emerge via exec() after change of portage version.") - portage.portageexit() - badlongopts = ["--ask","--tree","--changelog"] - badshortopts = ["a","t","l"] - mynewargv=[] - for arg in myargv: - if arg[0:2] == "--": - if arg in badlongopts: - continue - mynewargv += [arg] - elif arg[0] == "-": - myarg = "-" - for ch in arg[1:]: - if ch in badshortopts: - continue - myarg += ch - mynewargv += [myarg] - else: - mynewargv += [arg] - os.execv("/usr/lib/portage/bin/emerge", mynewargv) - - if ("--pretend" not in myopts) and ("--fetchonly" not in myopts) and ("--fetch-all-uri" not in myopts): - emergelog(" ::: completed emerge ("+str(mergecount)+" of "+str(len(mymergelist))+") "+x[2]+" to "+x[1]) - - # Unsafe for parallel merges - del portage.mtimedb["resume"]["mergelist"][0] - - if self.thread: - self.thread.join() - self.thread=None - - emergelog(" *** Finished. Cleaning up...") - - # We're out of the loop... We're done. Delete the resume data. - if portage.mtimedb.has_key("resume"): - del portage.mtimedb["resume"] - - if ("--pretend" not in myopts): - if ("--fetchonly" not in myopts) and ("--fetch-all-uri" not in myopts): - if (mergecount>0): - if retval: - portage.env_update(portage.root) - - #by doing an exit this way, --fetchonly can continue to try to - #fetch everything even if a particular download fails. - if "--fetchonly" in myopts or "--fetch-all-uri" in myopts: - if returnme: - print "\n\n!!! Some fetch errors were encountered. Please see above for details.\n\n" - sys.exit(returnme) - else: - sys.exit(0) - -class graph_display: - - def __init__(self, mygraph): - self.graph = mygraph.clone() - - merge_nodes = self.graph.get_all_nodes() - for x in range(len(merge_nodes)-1,-1,-1): - if merge_nodes[x].split()[3] == "nomerge": - del merge_nodes[x] - - relevant = merge_nodes[:] - for x in range(len(merge_nodes)): - parents = self.graph.get_parent_nodes(merge_nodes[x], depth=0) - for node in parents: - if node not in relevant: - relevant.append(node) - - for node in self.graph.get_all_nodes(): - if node not in relevant: - self.graph.remove_node(node) - - self.fetchsizes = {} - self.overlays = [] - self.changelogs = [] - - def old_version(self, mydep): - dep_type = mydep[0] - dep_root = mydep[1] - dep_pkg = mydep[2] - - if not portage.db[dep_root]["vartree"].exists_specific_cat(dep_pkg): - return None - - if dep_type == "binary": - mynewslot=portage.db["/"]["bintree"].getslot(dep_pkg) - else: - mynewslot=portage.db["/"]["porttree"].getslot(dep_pkg) - - mycurpkgs = portage.db[dep_root]["vartree"].dbapi.match(portage.portage_versions.pkgsplit(dep_pkg)[0]) - for x in range(len(mycurpkgs)-1, -1, -1): - if portage.db[dep_root]["vartree"].getslot(mycurpkgs[x]) != mynewslot: - del mycurpkgs[x] - - if not mycurpkgs: - return None - - return portage.best(mycurpkgs) - - def use_flags(self, mydep): - portage.settings.unlock() - portage.settings.setcpv(mydep[2]) - myflags = portage.settings["USE"].split() - portage.settings.reset() - portage.settings.lock() - return myflags - - def format_summary(self, mydep): - dep_type = mydep[0] - dep_root = mydep[1] - dep_pkg = mydep[2] - dep_extra = mydep[3] - - problem_status = " " - new_status = " " - slot_status = " " - update_status = " " - downgrade_status = " " - - if dep_extra == "nomerge": - dep_type = darkblue("merged") - - elif dep_type == "blocks": - problem_status = red("B") - - else: - if dep_type != "binary": - restrictions = portage.db["/"]["porttree"].dbapi.aux_get(dep_pkg, ["RESTRICT"])[0].split() - if "fetch" in restrictions: - if portage.db["/"]["porttree"].dbapi.fetch_check(dep_pkg, portage.settings): - problem_status = green("f") - else: - problem_status = red("F") - - if portage.db[dep_root]["vartree"].exists_specific(dep_pkg): - new_status = yellow("R") - - else: - prevpkg = self.old_version(mydep) - if prevpkg: - update_status = turquoise("U") - myoldpkg = portage.portage_versions.pkgsplit(prevpkg) - mynewpkg = portage.portage_versions.pkgsplit(dep_pkg) - if portage.portage_versions.pkgcmp(mynewpkg, myoldpkg) < 0: - downgrade_status = blue("D") - else: - new_status = green("N") - if portage.db[dep_root]["vartree"].exists_specific_cat(dep_pkg): - slot_status = green("S") - - summary = "["+dep_type+" " - summary += problem_status - summary += new_status - summary += slot_status - summary += update_status - summary += downgrade_status+"]" - - return summary - - def format_cpv(self, mydep): - if mydep[0] == "blocks": - return red(mydep[2]) - elif mydep[3] == "nomerge": - return darkblue(mydep[2]) - return darkgreen(mydep[2]) - - def format_name(self, mydep): - mysplit = portage.portage_versions.pkgsplit(mydep[2]) - if mysplit: - name = mysplit[0] - else: - name = mydep[2] - - if mydep[0] == "blocks": - return red(name) - elif mydep[3] == "nomerge": - return darkblue(name) - return darkgreen(name) - - def format_new_version(self, mydep): - mysplit = portage.portage_versions.pkgsplit(mydep[2]) - if not mysplit: - return "" - version = mysplit[1] - if mysplit[2] != "r0": - version += "-"+mysplit[2] - - if mydep[0] == "blocks": - return red("["+version+"]") - elif mydep[3] == "nomerge": - return darkblue("["+version+"]") - return darkgreen("["+version+"]") - - def format_old_version(self, mydep): - dep_type = mydep[0] - dep_root = mydep[1] - dep_pkg = mydep[2] - dep_extra = mydep[3] - - if dep_extra == "nomerge": - return "" - - if dep_type == "blocks": - return red("("+dep_extra+")") - - prevpkg = self.old_version(mydep) - - if not prevpkg or prevpkg == dep_pkg: - return "" - - myoldsplit = portage.portage_versions.pkgsplit(prevpkg) - version = myoldsplit[1] - if myoldsplit[2] != "r0": - version += "-"+myoldsplit[2] - return blue("["+version+"]") - - def format_flags(self, mydep): - dep_type = mydep[0] - dep_root = mydep[1] - dep_pkg = mydep[2] - dep_extra = mydep[3] - - if dep_type == "blocks" or dep_extra == "nomerge": - return "" - - if dep_type == "binary": - iuse = portage.db["/"]["bintree"].dbapi.aux_get(dep_pkg,["IUSE"])[0].split() - elif dep_type == "ebuild": - iuse = portage.db["/"]["porttree"].dbapi.aux_get(dep_pkg,["IUSE"])[0].split() - else: - iuse = [] - iuse.sort() - iuse = portage_util.unique_array(iuse) - - cur_use = self.use_flags(mydep) - bad_use = portage.settings.usemask - - prevpkg = self.old_version(mydep) - if prevpkg: - old_use = portage.db[dep_root]["vartree"].dbapi.aux_get(prevpkg, ["USE"])[0].split() - else: - old_use = cur_use - - uselist = [] - for use in iuse: - if use in cur_use: - myuse = red("+"+use) - elif use in bad_use: - myuse = blue("(-"+use+")") - else: - myuse = blue("-"+use) - if (use in old_use and use not in cur_use) or \ - (use not in old_use and use in cur_use): - myuse += "*" - uselist.append(myuse) - - return " ".join(uselist) - - def format_metadata(self, mydep): - catpkg = portage.portage_versions.pkgsplit(mydep[2])[0] - metadata_file = portage.settings["PORTDIR"] + "/" + catpkg + "/metadata.xml" - if not os.path.exists(metadata_file): - return "" - - parser = portage_metadata.make_parser() - handler = portage_metadata.Metadata_XML() - handler._maintainers = [] - handler._herds = [] - parser.setContentHandler(handler) - parser.parse(metadata_file) - - metadata = [] - if handler._herds: - metadata += ["(" + teal("H:" + ", ".join(handler._herds) ) + ")"] - if handler._maintainers: - metadata += ["(" + teal("M:" + ", ".join(handler._maintainers) ) + ")"] - - return " ".join(metadata) - - def format_size(self, mydep): - mysize = 0 - if mydep[0] == "ebuild" and mydep[3] != "nomerge": - myfilesdict=portage.portdb.getfetchsizes(mydep[2], useflags=self.use_flags(mydep), debug=edebug) - if myfilesdict: - for myfetchfile in myfilesdict.keys(): - mysize += myfilesdict[myfetchfile] - self.fetchsizes[myfetchfile] = myfilesdict[myfetchfile] - if mysize: - return format_size(mysize) - return "" - - def post_size_msg(self): - mysize = 0 - for myfetchfile in self.fetchsizes.keys(): - mysize += self.fetchsizes[myfetchfile] - return "Total size of downloads: "+format_size(mysize) - - def format_overlay(self, mydep): - if mydep[0] != "ebuild" or mydep[3] == "nomerge": - return "" - filename = portage.db["/"]["porttree"].dbapi.findname(mydep[2]) - dirname = os.path.abspath(os.path.dirname(filename)+"/../..") - if dirname in portage.settings['PORTDIR_OVERLAY'].split(): - if dirname not in self.overlays: - self.overlays.append(dirname) - return teal("["+str(self.overlays.index(dirname)+1)+"]") - return "" - - def post_overlay_msg(self): - if self.overlays: - msg = "Portage overlays:\n" - for x in range(0, len(self.overlays)): - msg += " "+teal("["+str(x+1)+"]")+" "+self.overlays[x]+"\n" - return msg - return "" - - def find_changelog_tags(self,changelog): - divs = [] - release = None - while 1: - match = re.search(r'^\*\ ?([-a-zA-Z0-9_.]*)(?:\ .*)?\n',changelog,re.M) - if match is None: - if release is not None: - divs.append((release,changelog)) - return divs - if release is not None: - divs.append((release,changelog[:match.start()])) - changelog = changelog[match.end():] - release = match.group(1) - if release.endswith('.ebuild'): - release = release[:-7] - if release.endswith('-r0'): - release = release[:-3] - - def calc_changelog(self,ebuildpath,current,next): - current = '-'.join(portage.portage_versions.catpkgsplit(current)[1:]) - if current.endswith('-r0'): current = current[:-3] - next = '-'.join(portage.portage_versions.catpkgsplit(next)[1:]) - if next.endswith('-r0'): next = next[:-3] - - changelogpath = os.path.join(os.path.split(ebuildpath)[0],'ChangeLog') - if os.path.exists(changelogpath): - changelog = open(changelogpath).read() - else: - return [] - - divisions = self.find_changelog_tags(changelog) - - for i in range(len(divisions)): - if divisions[i][0]==next: - divisions = divisions[i:] - break - - for i in range(len(divisions)): - if divisions[i][0]==current: - divisions = divisions[:i] - break - - return divisions - - def format_changelog(self, mydep): - thispkg = mydep[2] - ebuild_path = portage.db["/"]["porttree"].dbapi.findname(thispkg) - if ebuild_path: - prevpkg = self.old_version(mydep) - if prevpkg: - self.changelogs.extend(self.calc_changelog(ebuild_path, prevpkg, thispkg)) - - def post_changelog_msg(self): - msg = "" - for (revision,text) in self.changelogs: - msg += bold("*"+revision)+"\n" - msg += text - if msg: - return "\n"+msg - return "" - - def display_flat(self): - mygraph = self.graph.clone() - - funclist = [self.format_summary, self.format_cpv, self.format_old_version] - postfuncs = [] - if verbosity: - funclist += [self.format_flags] - if verbosity >= 2: - funclist += [self.format_metadata] - funclist += [self.format_size, self.format_overlay] - postfuncs += [self.post_size_msg, self.post_overlay_msg] - if "--changelog" in myopts: - funclist += [self.format_changelog] - postfuncs += [self.post_changelog_msg] - - print - while mygraph.get_all_nodes(): - nextpkg = mygraph.get_leaf_nodes()[0] - mygraph.remove_node(nextpkg) - nextpkg = nextpkg.split() - if nextpkg[3] == "nomerge": - continue - - for func in funclist: - txt = func(nextpkg) - if txt: - print txt, - print - - print - for func in postfuncs: - msg = func() - if msg: - print msg - - def display_columns(self): - mygraph = self.graph.clone() - - funclist = [self.format_summary, self.format_name, - self.format_new_version, self.format_old_version] - postfuncs = [] - if verbosity: - funclist += [self.format_flags] - if verbosity >= 2: - funclist += [self.format_metadata] - funclist += [self.format_size, self.format_overlay] - postfuncs += [self.post_size_msg, self.post_overlay_msg] - if "--changelog" in myopts: - funclist += [self.format_changelog] - postfuncs += [self.post_changelog_msg] - - myoutput = [] - mywidths = [] - for x in range(len(funclist)): - mywidths.append(0) - - while mygraph.get_all_nodes(): - nextpkg = mygraph.get_leaf_nodes()[0] - mygraph.remove_node(nextpkg) - nextpkg = nextpkg.split() - if nextpkg[3] == "nomerge": - continue - - thisoutput = [] - for x in range(len(funclist)): - func = funclist[x] - txt = func(nextpkg) - txtw = nc_len(txt) - if txt and txtw > mywidths[x]: - mywidths[x] = txtw - thisoutput.append(txt) - myoutput.append(thisoutput) - - print - for output in myoutput: - for x in range(len(output)): - txt = output[x] - print txt,((mywidths[x]-nc_len(txt))*" "), - print - - print - for func in postfuncs: - msg = func() - if msg: - print msg - - def display_tree(self): - mygraph = self.graph.clone() - - funclist = [self.format_cpv, self.format_old_version] - postfuncs = [] - if verbosity: - funclist += [self.format_flags] - if verbosity >= 2: - funclist += [self.format_metadata] - funclist += [self.format_size, self.format_overlay] - postfuncs += [self.post_size_msg, self.post_overlay_msg] - if "--changelog" in myopts: - funclist += [self.format_changelog] - postfuncs += [self.post_changelog_msg] - - all = [] - - stack = [] - depth = 0 - parents = [] - curlist = mygraph.get_root_nodes() - index = 0 - - print - while stack or index != len(curlist): - if index == len(curlist): - (depth, parents, curlist, index) = stack.pop() - else: - nextpkg = curlist[index].split() - if curlist[index] in all: - nextpkg[3] = "nomerge" - print self.format_summary(nextpkg), - if depth: - print (depth-1)*" ", - for func in funclist: - txt = func(nextpkg) - if txt: - print txt, - print - if curlist[index] not in parents and curlist[index] not in all: - children = mygraph.get_child_nodes(curlist[index]) - stack += [(depth, parents, curlist, index)] - depth += 1 - parents = parents + [curlist[index]] - curlist = children - index = 0 - continue - if curlist[index] not in all: - all.append(curlist[index]) - index += 1 - - print - for func in postfuncs: - msg = func() - if msg: - print msg - - - - -def unmerge(unmerge_action, unmerge_files): - candidate_catpkgs=[] - global_unmerge=0 - - realsyslist = getlist("system") - syslist = [] - for x in realsyslist: - mycp = portage.portage_dep.dep_getkey(x) - if mycp in portage.settings.virtuals: - syslist.extend(portage.settings.virtuals[mycp]) - syslist.append(mycp) - - global myopts - mysettings = portage.config(clone=portage.settings) - - if not unmerge_files or "world" in unmerge_files or "system" in unmerge_files: - if "unmerge"==unmerge_action: - print - print bold("emerge unmerge")+" can only be used with specific package names, not with "+bold("world")+" or" - print bold("system")+" targets." - print - return 0 - else: - global_unmerge=1 - - localtree=portage.db[portage.root]["vartree"] - # process all arguments and add all valid db entries to candidate_catpkgs - if global_unmerge: - if not unmerge_files or "world" in unmerge_files: - candidate_catpkgs.extend(localtree.getallnodes()) - elif "system" in unmerge_files: - candidate_catpkgs.extend(getlist("system")) - else: - #we've got command-line arguments - if not unmerge_files: - print "\nNo packages to unmerge have been provided.\n" - return 0 - for x in unmerge_files: - arg_parts=x.split('/') - if (x[0] not in [".","/"]) and (arg_parts[-1][-7:] != ".ebuild"): - #possible cat/pkg or dep; treat as such - candidate_catpkgs.append(x) - elif unmerge_action in ["prune","clean"]: - print "\n!!! Prune and clean do not accept individual ebuilds as arguments;\n skipping.\n" - continue - else: - # it appears that the user is specifying an installed ebuild and we're in "unmerge" mode, so it's - # ok. - if not os.path.exists(x): - print "\n!!! The path '"+x+"' doesn't exist.\n" - return 0 - - absx = os.path.abspath(x) - sp_absx = absx.split("/") - if sp_absx[-1][-7:] == ".ebuild": - del sp_absx[-1] - absx = "/".join(sp_absx) - - sp_absx_len = len(sp_absx) - - vdb_path = portage.root+portage.VDB_PATH - vdb_len = len(vdb_path) - - sp_vdb = vdb_path.split("/") - sp_vdb_len = len(sp_vdb) - - if not os.path.exists(absx+"/CONTENTS"): - print "!!! Not a valid db dir: "+str(absx) - return 0 - - if sp_absx_len <= sp_vdb_len: - # The Path is shorter... so it can't be inside the vdb. - print spabsx - print absx - print "\n!!!",x,"cannot be inside "+(portage.root+portage.VDB_PATH)+"; aborting.\n" - return 0 - - for idx in range(0,sp_vdb_len): - if (idx >= sp_absx_len) or (sp_vdb[idx] != sp_absx[idx]): - print sp_absx - print absx - print "\n!!!",x,"is not inside "+(portage.root+portage.VDB_PATH)+"; aborting.\n" - return 0 - - print "="+"/".join(sp_absx[sp_vdb_len:]) - candidate_catpkgs.append("="+"/".join(sp_absx[sp_vdb_len:])) - - if ("--pretend" in myopts) or ("--ask" in myopts): - print darkgreen("\n>>> These are the packages that I would unmerge:") - - pkgmap={} - numselected=0 - for x in candidate_catpkgs: - #cycle through all our candidate deps and determine what will and will not get unmerged - try: - mymatch=localtree.dep_match(x) - except KeyError: - mymatch=None - except ValueError, errpkgs: - print "\n\n!!! The short ebuild name \"" + x + "\" is ambiguous. Please specify" - print "!!! one of the following fully-qualified ebuild names instead:\n" - for i in errpkgs[0]: - print " " + green(i) - print - sys.exit(1) - - if not mymatch and x[0] not in "<>=~": - #add a "=" if missing - mymatch=localtree.dep_match("="+x) - if not mymatch: - print "\n--- Couldn't find " + white(x) + " to "+unmerge_action+"." - continue - mykey=portage.key_expand(portage.portage_dep.dep_getkey(mymatch[0]),portage.db["/"]["vartree"].dbapi) - if not pkgmap.has_key(mykey): - pkgmap[mykey]={"protected":[], "selected":[], "omitted":[] } - if unmerge_action=="unmerge": - for y in mymatch: - if y not in pkgmap[mykey]["selected"]: - pkgmap[mykey]["selected"].append(y) - numselected=numselected+len(mymatch) - if not (pkgmap[mykey]["protected"] or pkgmap[mykey]["omitted"]) and \ - (mykey in syslist+["sys-apps/portage"]): - print red("\a\n\n!!! Trying to unmerge package(s) in system profile. '%s'" % (mykey)) - print yellow("\a!!! This could be damaging to your system.\n") - if "--pretend" not in myopts: - global EMERGE_WARNING_DELAY - countdown(EMERGE_WARNING_DELAY,red("Press Ctrl-C to Stop")) - - else: - #unmerge_action in ["prune", clean"] - slotmap={} - for mypkg in mymatch: - if unmerge_action=="clean": - myslot=localtree.getslot(mypkg) - else: - #since we're pruning, we don't care about slots and put all the pkgs in together - myslot=0 - if not slotmap.has_key(myslot): - slotmap[myslot]={} - slotmap[myslot][localtree.dbapi.cpv_counter(mypkg)]=mypkg - for myslot in slotmap.keys(): - counterkeys=slotmap[myslot].keys() - counterkeys.sort() - if not counterkeys: - continue - counterkeys.sort() - pkgmap[mykey]["protected"].append(slotmap[myslot][counterkeys[-1]]) - del counterkeys[-1] - #be pretty and get them in order of merge: - for ckey in counterkeys: - pkgmap[mykey]["selected"].append(slotmap[myslot][ckey]) - numselected=numselected+1 - #ok, now the last-merged package is protected, and the rest are selected - if global_unmerge and not numselected: - print "\n>>> No outdated packages were found on your system.\n" - return 0 - - if not numselected: - print "\n>>>",unmerge_action+": No packages selected for removal.\n" - return 0 - - keys = pkgmap.keys() - keys.sort() - for x in keys: - for y in localtree.dep_match(x): - if y not in pkgmap[x]["omitted"] and \ - y not in pkgmap[x]["selected"] and \ - y not in pkgmap[x]["protected"]: - pkgmap[x]["omitted"].append(y) - if global_unmerge and not pkgmap[x]["selected"]: - #avoid cluttering the preview printout with stuff that isn't getting unmerged - continue - print "\n "+white(x) - for mytype in ["selected","protected","omitted"]: - print mytype.rjust(12)+":", - if pkgmap[x][mytype]: - for mypkg in pkgmap[x][mytype]: - mysplit=portage_versions.catpkgsplit(mypkg) - if mysplit[3]=="r0": - myversion=mysplit[2] - else: - myversion=mysplit[2]+"-"+mysplit[3] - if mytype=="selected": - print red(myversion), - else: - print green(myversion), - else: - print "none", - print - - print "\n>>>",red("'Selected'"),"packages are slated for removal." - print ">>>",green("'Protected'"),"and",green("'omitted'"),"packages will not be removed.\n" - - if "--pretend" in myopts: - #we're done... return - return 0 - if "--ask" in myopts: - if userquery("Do you want me to unmerge these packages?")=="No": - # enter pretend mode for correct formatting of results - myopts+=["--pretend"] - print - print "Quitting." - print - return 0 - #the real unmerging begins, after a short delay.... - - global CLEAN_DELAY - countdown(CLEAN_DELAY, ">>> Unmerging") - - for x in pkgmap.keys(): - for y in pkgmap[x]["selected"]: - print ">>> Unmerging "+y+"..." - emergelog("=== Unmerging... ("+y+")") - mysplit=y.split("/") - #unmerge... - retval=portage.unmerge(mysplit[0],mysplit[1],portage.root,mysettings,unmerge_action not in ["clean","prune"]) - if retval: - emergelog(" !!! unmerge FAILURE: "+y) - else: - emergelog(" >>> unmerge success: "+y) - #run ldconfig, etc... - portage.env_update(portage.root) - if not numselected: - return 0 - else: - return 1 - - -def chk_updated_info_files(): - root=portage.root - - infodirs =portage.settings["INFOPATH"].split(":") - infodirs+=portage.settings["INFODIR"].split(":") - - print - if os.path.exists("/usr/bin/install-info"): - regen_infodirs=[] - for z in infodirs: - if z=='': - continue - inforoot=normpath(root+z) - if os.path.isdir(inforoot): - try: - infomtime=os.stat(inforoot)[ST_MTIME] - except SystemExit, e: - raise # Needed else can't exit - except: - infomtime=0 - - if not portage.mtimedb.has_key("info"): - portage.mtimedb["info"]={} - if portage.mtimedb["info"].has_key(inforoot): - if portage.mtimedb["info"][inforoot]==infomtime: - pass - else: - portage.mtimedb["info"][inforoot]=infomtime - regen_infodirs.append(inforoot) - else: - regen_infodirs.append(inforoot) - - if not regen_infodirs: - print " "+green("*")+" GNU info directory index is up-to-date." - else: - print " "+green("*")+" Regenerating GNU info directory index..." - - icount=0 - badcount=0 - for inforoot in regen_infodirs: - if inforoot=='': - continue - try: - os.rename(inforoot+"/dir",inforoot+"/dir.old") - except SystemExit, e: - raise # Needed else can't exit - except: - pass - - if not os.path.isdir(inforoot): - continue - errmsg = "" - for x in os.listdir(inforoot): - if (x[0] == ".") or (x in ["dir","dir.old"]) or (os.path.isdir(inforoot+"/"+x)): - continue -# myso=commands.getstatusoutput("LANG=C LANGUAGE=C /usr/bin/install-info --dir-file="+inforoot+"/dir "+inforoot+"/"+x)[1] - mycmd = "LANG=C LANGUAGE=C /usr/bin/install-info --dir-file="+inforoot+"/dir "+inforoot+"/"+x - myso=portage_exec.spawn_get_output(mycmd,spawn_type=portage_exec.spawn_bash)[1] - existsstr="already exists, for file `" - if myso!="": - if re.search(existsstr,myso): - # Already exists... Don't increment the count for this. - pass - elif myso[:44]=="install-info: warning: no info dir entry in ": - # This info file doesn't contain a DIR-header: install-info produces this - # (harmless) warning (the --quiet switch doesn't seem to work). - # Don't increment the count for this. - pass - else: - badcount=badcount+1 - errmsg += myso + "\n" - icount=icount+1 - - #update mtime so we can potentially avoid regenerating. - portage.mtimedb["info"][inforoot]=os.stat(inforoot)[ST_MTIME] - - if badcount: - print " "+yellow("*")+" Processed",icount,"info files;",badcount,"errors." - print errmsg - else: - print " "+green("*")+" Processed",icount,"info files." - - -def post_emerge(retval=0): - global myopts - os.chdir("/") - if "--pretend" in myopts: - sys.exit(retval) - - emergelog(" *** exiting successfully.") - - if "noinfo" not in portage.settings.features: - chk_updated_info_files() - - chk_updated_cfg_files() - - sys.exit(retval) - -def chk_updated_cfg_files(): - if portage.settings["CONFIG_PROTECT"]: - #number of directories with some protect files in them - procount=0 - for x in portage.settings["CONFIG_PROTECT"].split(): - if os.path.isdir(x): - a=portage_exec.spawn_get_output("cd "+x+"; find . -iname '._cfg????_*'",spawn_type=portage_exec.spawn_bash) - if a[0]!=0: - print " "+red("*")+" error scanning",x - else: - files=a[1].split() - if files: - procount=procount+1 - print " "+yellow("* IMPORTANT:")+"",len(files),"config files in",x,"need updating." - if procount: - #print " "+yellow("*")+" Type "+green("emerge --help config")+" to learn how to update config files." - print " "+yellow("*")+" Type "+green("emerge --help config")+" to learn how to update config files." - print - -# general options that should be taken into account before any action -if "--debug" in myopts: - edebug=1 - -if myaction in ["sync","rsync","metadata"] and (not "--help" in myopts): - if "--pretend" in myopts: - print "emerge: \"sync\" actions do not support \"--pretend.\"" - sys.exit(1) - - emergelog(" === "+str(myaction)) - myportdir=portage.settings["PORTDIR"] - if myportdir[-1]=="/": - myportdir=myportdir[:-1] - if not os.path.exists(myportdir): - print ">>>",myportdir,"not found, creating it." - os.makedirs(myportdir,0755) - syncuri=portage.settings["SYNC"].rstrip() - os.umask(0022) - - sync_verbosity=0 - if "--quiet" in myopts: - sync_verbosity = 1 - elif "--verbose" in myopts: - sync_verbosity = 3 - else: - sync_verbosity = 2 - - print "sync_verbosity=",sync_verbosity - tmpservertimestampfile = None - - protocol,host_uri = sync.parseSyncUri(syncuri) - print "host_uri=",host_uri - - if myaction == "metadata": - if "--ask" in myopts: - if userquery("Are you sure?") == "No": - #userquery("Are you sure you should be using *NIX?",["Definately Not"]) - sys.exit(1) - print "skipping sync" - updatecache_flg = True - tmpservertimestampfile = None - elif protocol == "rsync": - mytimeout=180 - if portage.settings.has_key("RSYNC_TIMEOUT"): - try: - mytimeout=int(portage.settings["RSYNC_TIMEOUT"]) - except SystemExit, e: - raise # Needed else can't exit - except: - pass - - syncer=sync.rsync.RsyncHost(host_uri) - - servertimestampdir = portage.settings.depcachedir+"/" - servertimestampfile = portage.settings.depcachedir+"/timestamp.chk" - tmpservertimestampdir = portage.settings["PORTAGE_TMPDIR"]+"/" - tmpservertimestampfile = portage.settings["PORTAGE_TMPDIR"]+"/timestamp.chk" - - # We only use the backup if a timestamp exists in the portdir. - - content=None - if os.path.exists(myportdir+"/metadata/timestamp.chk"): - content=portage.grabfile(servertimestampfile) - if (not content): - content=portage.grabfile(myportdir+"/metadata/timestamp.chk") - - if (content): - try: - mytimestamp=time.mktime(time.strptime(content[0], "%a, %d %b %Y %H:%M:%S +0000")) - except ValueError: - mytimestamp=0 - else: - mytimestamp=0 - - if not os.path.exists(servertimestampdir): - os.mkdir(servertimestampdir) - os.chown(servertimestampdir, os.getuid(), portage.portage_gid) - os.chmod(servertimestampdir, 0775) - - #exitcode=0 - try: - maxretries=int(portage.settings["RSYNC_RETRIES"]) - except SystemExit, e: - raise # Needed else can't exit - except: - maxretries=3 #default number of retries - - retries=0 - updatecache_flg=True - - ips=syncer.get_ips() - if ips == None: - ips=[None] - while (1): - if (retries==0): - if "--ask" in myopts: - if userquery("Do you want to sync your Portage tree with the mirror %s at %s\n" \ - % (host_uri, blue(str(ips[0])))+bold("?"))=="No": - print - print "Quitting." - print - sys.exit(0) - emergelog(">>> starting rsync with "+host_uri) - if "--quiet" not in myopts: - print ">>> starting rsync with %s, ip %s..." % (host_uri,ips[0]) - else: - emergelog(">>> Starting retry %d of %d with %s ip %s" % \ - (retries,maxretries,host_uri,ips[0])) - print "\n\n>>> Starting retry %d of %d with %s" % (retries,maxretries,host_uri) - - try: - if "--quiet" not in myopts: - print ">>> syncing..." - exitcode=syncer.sync(portage.settings,tmpservertimestampdir, \ - remote_path=syncer.get_remote_path()+"/metadata/timestamp.chk", - verbosity=0, cleanup=False, ip=ips[0]) - if exitcode==True: - exitcode=0 - except (sync.rsync.RSyncSyntaxError,IOError),e: - print e - exitcode=1 - - if exitcode==0: - try: - servertimestamp = time.mktime(time.strptime(portage.grabfile(tmpservertimestampfile)[0], "%a, %d %b %Y %H:%M:%S +0000")) - except SystemExit, e: - raise # Needed else can't exit - except: - servertimestamp = 0 - - if (servertimestamp != 0) and (servertimestamp == mytimestamp): - emergelog(">>> Cancelling sync -- Already current.") - print - print ">>>" - print ">>> Timestamps on the server and in the local repository are the same." - print ">>> Cancelling all further sync action. You are already up to date." - print ">>>" - print - sys.exit(0) - elif (servertimestamp != 0) and (servertimestamp < mytimestamp): - emergelog(">>> Server out of date: %s" % dosyncuri) - print - print ">>>" - print ">>> SERVER OUT OF DATE: %s" % dosyncuri - print ">>>" - print - elif (servertimestamp == 0) or (servertimestamp > mytimestamp): - # actual sync - try: - exitcode=syncer.sync(portage.settings,portage.settings["PORTDIR"], - verbosity=sync_verbosity, - excludes=('/distfiles','/local','/packages'),ip=ips[0]) - if exitcode==True: - exitcode=0 - except (sync.rsync.RSyncSyntaxError,IOError),e: - print e - exitcode=21 - if exitcode in [0,1,2,3,4,11,14,20,21]: - break - elif exitcode in [0,1,2,3,4,11,14,20,21]: - break - - retries=retries+1 - - if retries<=maxretries: - print ">>> retry ..." - time.sleep(11) - else: - # over retries - # exit loop - updatecache_flg=False - break - - if (exitcode==0): - emergelog("=== Sync completed with %s: %s" % (host_uri,ips[0])) - elif (exitcode>0): - print - try: - exitcode=syncer.sync(portage.settings,portage.settings["PORTDIR"], - excludes=("/distfiles","/local","/packages"),verbosity=sync_verbosity,ip=ips[0]) - if exitcode == True: - exitcode=0 - except sync.rsync.RSyncSyntaxError, rsse: - print darkred("!!!")+green(" Rsync has reported that there is a syntax error. Please ensure") - print darkred("!!!")+green(" that your SYNC statement is proper.") - print darkred("!!!")+green(" SYNC="+rsse.value) - except IOError, ie: - print darkred("!!!")+green(" Rsync has reported that there is a File IO error. Normally") - print darkred("!!!")+green(" this means your disk is full, but can be caused by corruption") - print darkred("!!!")+green(" on the filesystem that contains PORTDIR. Please investigate") - print darkred("!!!")+green(" and try again after the problem has been fixed.") - print darkred("!!!")+green(" PORTDIR="+portage.settings["PORTDIR"]) - if exitcode==20: - print darkred("!!!")+green(" Rsync was killed before it finished.") - elif exitcode > 0: - print darkred("!!!")+green(" Rsync has not successfully finished. It is recommended that you keep") - print darkred("!!!")+green(" trying or that you use the 'emerge-webrsync' option if you are unable") - print darkred("!!!")+green(" to use rsync due to firewall or other restrictions. This should be a") - print darkred("!!!")+green(" temporary problem unless complications exist with your network") - print darkred("!!!")+green(" (and possibly your system's filesystem) configuration.") - if exitcode: - print "bailing",exitcode - sys.exit(exitcode) - else: - updatecache_flg=True - elif protocol == "cvs": - syncer=sync.cvs.CvsHost(host_uri) - try: - print ">>> starting cvs update with "+syncuri+"..." - syncer.sync(portage.settings["PORTDIR"],compress=False) - print ">>> finished" - except sync.cvs.CVSIOError, ce: - print red("!!!")+"cvs operation failed-" - print str(ce) - sys.exit(1) - elif protocol == "snapshot": - fetcher=portage.get_preferred_fetcher() - print 'host_uri=',host_uri - if host_uri == None: - print ">>> choosing a random mirror from the mirror list" - host_uri = portage.thirdpartymirrors["gentoo"][:] - random.shuffle(host_uri) - host_uri=host_uri[0].replace("distfiles","snapshots") - print ">>> using %s" % host_uri - if not os.path.exists(portage.settings["PORTAGE_TMPDIR"]+"/snapshots"): - os.mkdir(portage.settings["PORTAGE_TMPDIR"]+"/snapshots") - syncer=sync.snapshot.SnapshotHost(host_uri,portage.settings["DISTDIR"], \ - portage.settings["PORTAGE_TMPDIR"]+"/snapshots", fetcher=fetcher) - if not syncer.sync(portage.settings["PORTDIR"],verbosity=sync_verbosity): - print "!!! snapshot failed" - sys.exit(1) - if os.path.exists("%s/metadata/timestamp.chk" % portage.settings["PORTAGE_PORTDIR"]): - tmpservertimestampfile = "%s/metadata.timestamp.chk" % portage.settings["PORTAGE_PORTDIR"] - - updatecache_flg = True - else: - print "!!! rsync setting: ",syncuri,"not recognized; exiting." - sys.exit(1) - - - if os.path.exists(myportdir+"/metadata/cache") and updatecache_flg: - if "--quiet" not in myopts: - print "\n>>> Updating Portage cache: ", - os.umask(0002) - cachedir = os.path.normpath(portage.settings.depcachedir) - if cachedir in ["/", "/bin", "/dev", "/etc", "/home", - "/lib", "/opt", "/proc", "/root", "/sbin", - "/sys", "/tmp", "/usr", "/var"]: - print "!!! PORTAGE_CACHEDIR IS SET TO A PRIMARY ROOT DIRECTORY ON YOUR SYSTEM." - print "!!! This is ALMOST CERTAINLY NOT what you want: "+str(cachedir) - sys.exit(73) - if not os.path.exists(cachedir): - os.mkdir(cachedir) - - if (os.path.exists(cachedir) and os.path.exists(cachedir+"/app-portage")): - # removed old style cache. - # XXX: Compat Code, and Potentially bad. - portage.spawn("rm -Rf "+cachedir+"/*",portage.settings,free=1) - - # save timestamp.chk for next timestamp check. - try: - if tmpservertimestampfile != None: - portage.movefile(tmpservertimestampfile, servertimestampfile) - except SystemExit, e: - raise # Needed else can't exit - except Exception, e: - print "!!! Failed to save current timestamp." - print "!!!",e - - portage.portdb.flush_cache() - - try: - os.umask(002) - os.chown(cachedir, os.getuid(), portage.portage_gid) - os.chmod(cachedir, 00775) - except SystemExit, e: - raise # Needed else can't exit - except: - pass - # we don't make overlay trees cache here. - #grab our own eclass_cache. - ec = portage.eclass_cache.cache(portage.portdb.porttree_root) - # kinda ugly. - cm = portage.settings.load_best_module("portdbapi.metadbmodule") - cmi = cm("metadata/cache", cm.auxdbkey_order, basepath=myportdir) - - def quicky_cpv_generator(dbapi): - for x in dbapi.cp_all(): - for y in dbapi.cp_list(x): - yield y - - import cache.util - # mangle the settings var. - config=portage.config(clone=portage.settings) - config["PORTDIR_OVERLAY"] = '' - config["PORTDIR"] = myportdir - pdb=portage.portdbapi(myportdir, config) - cache.util.mirror_cache(quicky_cpv_generator(pdb), cmi, - pdb.auxdb[myportdir], eclass_cache=ec, - verbose_instance=cache.util.non_quiet_mirroring()) - del ec - del cmi - del cm - del pdb -# mynodes=portage.portdb.cp_all() -# mynodes.sort() -# pcnt=0 -# pcntstr="" -# pcntcount=len(mynodes)/100.0 -# nextupdate=pcntcount -# current=0 -# # need to add a callback option to regen_keys to take advantage of the happy spinny eye-candy stuff. -# portage.portdb.regen_keys(src_cache=myportdir+"/metadata/cache",debug=("cachedebug" in portage.features), -# verbose=False) -# portage.portdb.porttrees=backup_porttrees - sys.stdout.write("\n\n") - sys.stdout.flush() - - portage.portageexit() - reload(portage) - mybestpv=portage.portdb.xmatch("bestmatch-visible","sys-apps/portage") - mypvs=portage.best(portage.db[portage.root]["vartree"].dbapi.match("sys-apps/portage")) - - chk_updated_cfg_files() - - if(mybestpv != mypvs): - print - print red(" * ")+bold("An update to portage is available.")+" It is _highly_ recommended" - print red(" * ")+"that you update portage now, before any other packages are updated." - print red(" * ")+"Please do so and then update "+bold("ALL")+" of your configuration files." - print -elif myaction=="regen": - emergelog(" === regen") - #regenerate cache entries - print "Regenerating cache entries... " - portage.portdb.regen_keys() - print "done!" -# HELP action -elif "config"==myaction: - emergelog(" === config") - print - print "Currently, \'config\' is a help option only." - print -# INFO action -elif "info"==myaction: - unameout=portage_exec.spawn_get_output("uname -mrp")[1] - print getportageversion() - print "=================================================================" - print "System uname: "+unameout - if os.path.exists("/etc/gentoo-release"): - portage_exec.spawn("cat /etc/gentoo-release") - else: - print "Unknown Host Operating System" - - py_vers = string.join(portage.db["/"]["vartree"].dbapi.match("dev-lang/python"), ",") - py_this = string.strip(string.split(sys.version,"\n")[0]) - print "%-20s %s [%s]" % ("Python:",py_vers,py_this) - - output=portage_exec.spawn_get_output("distcc --version") - if not output[0]: - print output[1].split("\n",1)[0], - if "distcc" in portage.features: - print "[enabled]" - else: - print "[disabled]" - - output=portage_exec.spawn_get_output("ccache -V") - if not output[0]: - print output[1].split("\n",1)[0], - if "ccache" in portage.features: - print "[enabled]" - else: - print "[disabled]" - - myvars = ["sys-devel/autoconf", "sys-devel/automake", "virtual/os-headers", - "sys-devel/binutils", "sys-devel/libtool", "dev-lang/python"] - myvars += portage_util.grabfile(portage.settings["PORTDIR"]+"/profiles/info_pkgs") - myvars = portage_util.unique_array(myvars) - myvars.sort() - - for x in myvars: - if portage.portage_dep.isvalidatom(x): - pkg_matches = portage.db["/"]["vartree"].dbapi.match(x) - pkgs = "" - for y in pkg_matches: - mycpv = portage.catpkgsplit(y) - if pkgs: - pkgs += ", " - pkgs += str(mycpv[2]) - if(mycpv[3] != "r0"): - pkgs += "-" + str(mycpv[3]) - if not pkgs: - pkgs = "[Not Present]" - print "%-20s %s" % (x+":", pkgs) - else: - print "%-20s %s" % (x+":", "[NOT VALID]") - - libtool_vers = string.join(portage.db["/"]["vartree"].dbapi.match("sys-devel/libtool"), ",") - - if "--verbose" in myopts: - myvars=portage.settings.keys() - else: - myvars = ['GENTOO_MIRRORS', 'CONFIG_PROTECT', 'CONFIG_PROTECT_MASK', - 'PORTDIR', 'DISTDIR', 'PKGDIR', 'PORTAGE_TMPDIR', - 'PORTDIR_OVERLAY', 'USE', 'CHOST', 'CFLAGS', 'CXXFLAGS', - 'ACCEPT_KEYWORDS', 'SYNC', 'FEATURES'] - - myvars.extend(portage_util.grabfile(portage.settings["PORTDIR"]+"/profiles/info_vars")) - - myvars = portage_util.unique_array(myvars) - unset_vars = [] - myvars.sort() - for x in myvars: - if portage.settings.has_key(x): - print x+'="'+portage.settings[x]+'"' - else: - unset_vars.append(x) - if unset_vars: - print "Unset: "+", ".join(unset_vars) - print - - config_files = [portage.MAKE_CONF_FILE, - portage.MODULES_FILE_PATH, - portage.USER_VIRTUALS_FILE, - portage.EBUILD_SH_ENV_FILE, - portage.CUSTOM_MIRRORS_FILE] - config_files += [portage.USER_CONFIG_PATH+"/package."+x for x in ["mask","unmask","keywords","env"]] - config_files += [portage.CUSTOM_PROFILE_PATH+"/"+x for x in ["make.defaults","packages","use.mask","virtuals","profile.bashrc","use.defaults"]] - print "Config files: "+(", ".join([x for x in config_files if os.path.exists(x)])) - - if "--debug" in myopts: - for x in dir(portage): - module = getattr(portage, x) - if "cvs_id_string" in dir(module): - print "%s: %s" % (str(x), str(module.cvs_id_string)) - -# SEARCH action -elif "search"==myaction: - if not myfiles: - print "emerge: no search terms provided." - else: - searchinstance = search() - for mysearch in myfiles: - try: - searchinstance.execute(mysearch) - except re.error, comment: - print "\n!!! Regular expression error in \"%s\": %s" % ( mysearch, comment ) - sys.exit(1) - searchinstance.output() -elif "unmerge"==myaction or "prune"==myaction or "clean"==myaction: - if 1==unmerge(myaction, myfiles): - post_emerge() - -elif "depclean"==myaction: - # Kill packages that aren't explicitly merged or are required as a - # dependency of another package. World file is explicit. - - print - print red("*** WARNING ***")+" : DEPCLEAN CAN SERIOUSLY IMPAIR YOUR SYSTEM. USE CAUTION." - print red("*** WARNING ***")+" : (Cancel: CONTROL-C) -- ALWAYS VERIFY ALL PACKAGES IN THE" - print red("*** WARNING ***")+" : CANDIDATE LIST FOR SANITY BEFORE ALLOWING DEPCLEAN TO" - print red("*** WARNING ***")+" : UNMERGE ANY PACKAGES." - print red("*** WARNING ***")+" :" - print red("*** WARNING ***")+" : USE FLAGS MAY HAVE AN EXTREME EFFECT ON THE OUTPUT." - print red("*** WARNING ***")+" : SOME LIBRARIES MAY BE USED BY PACKAGES BUT ARE NOT" - print red("*** WARNING ***")+" : CONSIDERED TO BE A DEPEND DUE TO USE FLAG SETTINGS." - print red("*** WARNING ***")+" : emerge --update --deep --newuse world TO VERIFY" - print red("*** WARNING ***")+" : SANITY IN THIS REGARD." - print red("*** WARNING ***")+" :" - print red("*** WARNING ***")+" : Packages in the list that are desired may be added" - print red("*** WARNING ***")+" : directly to the world file to cause them to be ignored" - print red("*** WARNING ***")+" : by depclean and maintained in the future. BREAKAGES DUE" - print red("*** WARNING ***")+" : TO UNMERGING AN ==IN-USE LIBRARY== MAY BE REPAIRED BY" - print red("*** WARNING ***")+" : MERGING *** THE PACKAGE THAT COMPLAINS *** ABOUT THE" - print red("*** WARNING ***")+" : MISSING LIBRARY." - print - if ("--pretend" not in myopts) and ("--ask" not in myopts): - countdown(EMERGE_WARNING_DELAY, ">>> Depclean") - emergelog(" >>> depclean") - - mydepgraph=depgraph(myaction,myopts) - syslist=getlist("system") - worldlist=getlist("world") - - print "Calculating",myaction,"dependencies ", - if not mydepgraph.xcreate("world"): - print "\n!!! Failed to create deptree." - sys.exit(1) - print "\b\b ... done!" - - if ("--usepkgonly" in myopts) and mydepgraph.missingbins: - sys.stderr.write(red("The following binaries are not available for merging...\n")) - for x in mydepgraph.missingbins: - sys.stderr.write(" "+str(x)+"\n") - sys.stderr.write("\nThese are required by '--usepkgonly' -- Terminating.\n\n") - sys.exit(1) - - alldeps=mydepgraph.mynewgraph.get_all_nodes() - myvarlist=portage.vardbapi(portage.root).cp_all() - - if not syslist: - print "!!! You have no system list. Cannot determine system from world." - if not worldlist: - print "!!! You have no world file. Cannot determine explicit merges." - if not myvarlist: - print "!!! You have no installed package tree (%s). This is a problem." % portage.VDB_PATH - if not alldeps: - print "!!! You have no dependencies. Impossible. Bug." - - if not (syslist and worldlist and myvarlist and alldeps): - print - sys.exit(1) - - reallist=[] - for x in alldeps: - myparts=portage_versions.catpkgsplit(x.split()[2]) - if not myparts: - sys.stderr.write( - red("!!! There appears to be a problem with the following package:\n")+ - red("!!! "+str(x.split()[2])+"\n\n")+ - "!!! Please ensure that blocking/conflicting packages are not merged."+ - "!!! 'emerge -p "+str(x.split()[2])+"\n\n") - if ("--pretend" not in myopts) and ("--ask" not in myopts): - countdown(EMERGE_WARNING_DELAY, "*** Continuing") - continue - - catpack=myparts[0]+"/"+myparts[1] - if catpack not in reallist: - reallist.append(catpack) - - cleanlist=[] - for x in myvarlist: - if x not in reallist: - if x not in cleanlist: - cleanlist.append(x) - - for x in syslist+worldlist: - myparts = portage_versions.catpkgsplit(x) - if myparts: - mycat = "" - myparts = list(myparts) - if myparts[0][0] in ('<','>','='): - mycat = myparts[0][1:] - elif myparts[0][:2] in ('<=','>='): - mycat = myparts[0][2:] - catpack=mycat+"/"+myparts[1] - else: - catpack=x - if catpack in cleanlist: - cleanlist.remove(catpack) - - #print "\n\n\nCleaning: " - #for x in cleanlist: - # print x - #print - - if len(cleanlist): - unmerge("unmerge", cleanlist) - - print - print "Packages installed: "+str(len(myvarlist)) - print "Packages in world: "+str(len(worldlist)) - print "Packages in system: "+str(len(syslist)) - print "Unique package names: "+str(len(reallist)) - print "Required packages: "+str(len(alldeps)) - if "--pretend" in myopts: - print "Number to remove: "+str(len(cleanlist)) - else: - print "Number removed: "+str(len(cleanlist)) - post_emerge() - -# "update", "system", or just process files: -else: - favorites=[] - syslist=getlist("system") - if (("--pretend" in myopts) and not ("--fetchonly" in myopts or "--fetch-all-uri" in myopts)) or ("--ask" in myopts): - if "--tree" in myopts: - print - print darkgreen("These are the packages that I would merge, in reverse order:") - print - else: - print - print darkgreen("These are the packages that I would merge, in order:") - print - - if ("--resume" in myopts) and portage.mtimedb.has_key("resume"): - myresumeopts=portage.mtimedb["resume"]["myopts"][:] - - while "--skipfirst" in myresumeopts: - myresumeopts.remove("--skipfirst") - while "--ask" in myresumeopts: - myresumeopts.remove("--ask") - - for myopt in myopts: - if myopt not in myresumeopts: - myresumeopts.append(myopt) - myopts=myresumeopts - mydepgraph=depgraph("resume",myopts) - if "--resume" not in myopts: - myopts+=["--resume"] - else: - if ("--resume" in myopts): - del myopts[myopts.index("--resume")] - print darkgreen("emerge: It seems we have nothing to resume...") - sys.exit(0) - - mydepgraph=depgraph(myaction,myopts) - if myaction in ["system","world"]: - print "Calculating",myaction,"dependencies ", - sys.stdout.flush() - if not mydepgraph.xcreate(myaction): - print "!!! Depgraph creation failed." - sys.exit(1) - print "\b\b ...done!" - else: - if not myfiles: - print "emerge: please tell me what to do." - help() - sys.exit(1) - #we don't have any files to process; skip this step and exit - print "Calculating dependencies ", - sys.stdout.flush() - retval,favorites=mydepgraph.select_files(myfiles) - if not retval: - sys.exit(1) - print "\b\b ...done!" - - if ("--usepkgonly" in myopts) and mydepgraph.missingbins: - sys.stderr.write(red("The following binaries are not available for merging...\n")) - - if mydepgraph.missingbins: - for x in mydepgraph.missingbins: - sys.stderr.write(" "+str(x)+"\n") - sys.stderr.write("\nThese are required by '--usepkgonly' -- Terminating.\n\n") - sys.exit(1) - - if "--ask" in myopts: - if "--resume" in myopts: - mydepgraph.display(portage.mtimedb["resume"]["mergelist"]) - prompt="Do you want me to resume merging these packages?" - else: - graphdisp = graph_display(mydepgraph.mynewgraph) - if "--tree" in myopts: - graphdisp.display_tree() - elif "--columns" in myopts: - graphdisp.display_columns() - else: - graphdisp.display_flat() - mergecount=0 - for x in mydepgraph.altlist(): - if x[3]!="nomerge": - mergecount+=1 - #check for blocking dependencies - if x[0]=="blocks": - print "\n!!! Error: The above package list contains packages which cannot be installed" - print "!!! on the same system." - print - sys.exit(1) - if mergecount==0: - prompt="Nothing to merge; do you want me to auto-clean packages?" - elif "--fetchonly" in myopts or "--fetch-all-uri" in myopts: - prompt="Do you want me to fetch the source files for these packages?" - else: - prompt="Do you want me to merge these packages?" - print - if userquery(prompt)=="No": - print - print "Quitting." - print - sys.exit(0) - # Don't ask again (e.g. when auto-cleaning packages after merge) - myopts.remove("--ask") - - if ("--pretend" in myopts) and not ("--fetchonly" in myopts or "--fetch-all-uri" in myopts): - if ("--resume" in myopts): - mydepgraph.display(portage.mtimedb["resume"]["mergelist"]) - else: - graphdisp = graph_display(mydepgraph.mynewgraph) - if "--tree" in myopts: - graphdisp.display_tree() - elif "--columns" in myopts: - graphdisp.display_columns() - else: - graphdisp.display_flat() - else: - if ("--buildpkgonly" in myopts): - has_deps = False - for node in mydepgraph.mynewgraph.get_all_nodes(): - if mydepgraph.mynewgraph.get_relationships(node)[0]: - has_deps = True - if has_deps: - print "\n!!! --buildpkgonly requires all dependencies to be merged." - print "!!! Cannot merge requested packages. Merge deps and try again.\n" - sys.exit(1) - - if ("--resume" in myopts): - favorites=portage.mtimedb["resume"]["favorites"] - mydepgraph.merge(portage.mtimedb["resume"]["mergelist"]) - else: - portage.mtimedb["resume"]={} - portage.mtimedb["resume"]["myopts"]=myopts - portage.mtimedb["resume"]["favorites"]=favorites - if ("--digest" in myopts) and not ("--fetchonly" in myopts or "--fetch-all-uri" in myopts): - for pkgline in mydepgraph.altlist(): - if pkgline[0]=="ebuild" and pkgline[3]=="merge": - y=portage.portdb.findname(pkgline[2]) - tmpsettings = portage.config(clone=portage.settings) - retval=portage.doebuild(y,"digest",portage.root,tmpsettings,edebug,("--pretend" in myopts)) - mydepgraph.merge(mydepgraph.altlist()) - - if portage.mtimedb.has_key("resume"): - del portage.mtimedb["resume"] - print ">>> Auto-cleaning packages ..." - unmerge("clean", ["world"]) - post_emerge() - diff --git a/bin/env-update b/bin/env-update deleted file mode 100755 index 2c41752..0000000 --- a/bin/env-update +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/python -O -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/env-update,v 1.10 2004/11/07 13:15:28 ferringb Exp $ - -import os,sys -os.environ["PORTAGE_CALLER"] = "env-update" -sys.path = ["/usr/lib/portage/pym"]+sys.path - -import portage -portage.env_update(portage.root) diff --git a/bin/env-update.sh b/bin/env-update.sh deleted file mode 100755 index 2d09252..0000000 --- a/bin/env-update.sh +++ /dev/null @@ -1,219 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/env-update.sh,v 1.3 2005/04/29 04:43:19 vapier Exp $ - -############################################ -############################################ -# ENVIRONMENT SETUP -############################################ - -if [[ ${EUID} -ne 0 ]] ; then - echo "$0: must be root." - exit 1 -fi - -# Make sure our environment is sane -if [[ ! -z "${MAKELINKS}" ]] ; then - export MAKELINKS=0 -else - export MAKELINKS=1 -fi -export ROOT="${ROOT:=/}" -[[ ${ROOT} == */ ]] || export ROOT="${ROOT}/" - -export ENVDIR="${ROOT}etc/env.d" -mkdir -p ${ENVDIR} -chmod 755 ${ENVDIR} -specials=" - KDEDIRS PATH CLASSPATH LDPATH MANPATH INFODIR INFOPATH ROOTPATH - CONFIG_PROTECT CONFIG_PROTECT_MASK PRELINK_PATH PYTHONPATH - PRELINK_PATH_MASK ADA_INCLUDE_PATH ADA_OBJECTS_PATH" -colon_separated=" - ADA_INCLUDE_PATH ADA_OBJECTS_PATH LDPATH PATH MANPATH ROOTPATH - PRELINK_PATH PRELINK_PATH_MASK PYTHON_PATH" - -export LDSOCONF="${ROOT}etc/ld.so.conf" - -export PRELINKCONF="${ROOT}etc/prelink.conf" -defaultprelinkpaths=":/bin:/sbin:/usr/bin:/usr/sbin:/lib:/usr/lib" - -export PROFILEENV="${ROOT}etc/profile.env" -export CSHENV="${ROOT}etc/csh.env" - -# make sure we aren't tricked with previous 'my_envd_' variables -unset $(set | grep '^my_envd_' | cut -d= -f1) - -############################################ -############################################ -# ENV.D PARSING -############################################ - -do_has() { - local x - local me="$1" - shift - - for x in "$@" ; do - [[ ${x} == ${me} ]] && return 0 - done - return 1 -} -has() { - local ret - local ifs="${IFS}" - unset IFS - do_has $1 ${!2} - ret=$? - export IFS="${ifs}" - return ${ret} -} -is_special() { - has $1 specials -} -is_colon_separated() { - has $1 colon_separated -} - -for envd in $(ls ${ENVDIR} | sort) ; do - # make sure file is a vaild env'd entry and not a backup file - num="${envd:0:2}" - if [[ ! -z ${num//[0-9]} ]] ; then - continue - elif [[ ${envd} == *~ || ${envd} == *.bak ]] ; then - continue - fi - - # use bash to make sure the file is valid - envd="${ENVDIR}/${envd}" - if ! (source "${envd}") ; then - echo "!!! Error parsing ${envd}!" - exit 1 - fi - - # parse env.d entries - cnfvars="$(grep '^[[:alpha:]_][[:alnum:]_]*=' "${envd}")" - export IFS=$'\n' - for cnfv in ${cnfvars} ; do - var="${cnfv/=*}" - val="${cnfv:${#var}+1}" - if [ "${val:0:1}" == "\"" ] ; then - val="${val:1:${#val}-2}" - fi - myvar="my_envd_${var}" - if is_special ${var} ; then - if [[ ! -z "${!myvar}" ]] ; then - if is_colon_separated ${var} ; then - sep=":" - else - sep=" " - fi - else - sep="" - fi - export ${myvar}="${!myvar}${sep}${val}" - else - export ${myvar}="${val}" - fi - done - unset IFS -done - -############################################ -############################################ -# LD.SO.CONF HANDLING -############################################ - -# create a : sep list from ld.so.conf -export OLD_LDPATH="" -if [ -s "${LDSOCONF}" ] ; then - while read line ; do - if [[ "${line:0:1}" == "#" ]] ; then - continue - fi - export OLD_LDPATH="${OLD_LDPATH}:${line}" - done < ${LDSOCONF} - export OLD_LDPATH="${OLD_LDPATH:1}" -fi - -# has the ldpath changed ? if so, recreate -if [[ "${OLD_LDPATH}" != "${my_envd_LDPATH}" ]] ; then - cat << EOF > ${LDSOCONF} -# ld.so.conf autogenerated by env-update; make all changes to -# contents of /etc/env.d directory -${my_envd_LDPATH//:/ -} -EOF -fi - -############################################ -############################################ -# HANDLE PRELINK PATHS -############################################ - -if prelink --version >& /dev/null ; then - # we assume LDPATH and PATH aren't empty ... if they were, we got other problems - envdprelinkcheckpaths="${my_envd_LDPATH}:${my_envd_PATH}" - if [[ ! -z "${my_envd_PRELINK_PATH}" ]] ; then - envdprelinkcheckpaths="${envdprelinkcheckpaths}:${my_envd_PRELINK_PATH}" - fi - - if [[ ! -z "${my_envd_PRELINK_PATH_MASK}" ]] ; then - export prelink_mask=":${PRELINK_PATH_MASK}:" - envdprelinkpaths="" - export IFS=":" - for dir in ${envdprelinkcheckpaths} ; do - if [[ ${dir:0-1} == / ]] ; then - noslashdir="${dir:0:${#dir}-1}" - else - dir="${dir}/" - noslashdir="${dir}" - fi - if [[ ${prelink_mask/:${dir}:/} == ${prelink_mask} \ - && ${prelink_mask/:${noslashdir}:/} == ${prelink_mask} ]] ; then - envdprelinkpaths="${envdprelinkpaths}:${dir}" - fi - done - unset IFS - else - envdprelinkpaths=":${envdprelinkcheckpaths}" - fi - - cat << EOF > ${PRELINKCONF} -# prelink.conf autogenerated by env-update; make all changes to -# contents of /etc/env.d directory -${defaultprelinkpaths//:/ --l } -${envdprelinkpaths//:/ --h } -EOF -fi -unset my_envd_LDPATH - -############################################ -############################################ -# RUN EXTERNAL PROGRAMS NOW -############################################ - -echo ">>> Regenerating ${ROOT}etc/ld.so.cache..." -if [[ ${MAKELINKS} -eq 0 ]] ; then - (cd / ; /sbin/ldconfig -X -r ${ROOT} >& /dev/null) -else - (cd / ; /sbin/ldconfig -r ${ROOT} >& /dev/null) -fi - -cat << EOF > ${PROFILEENV} -# THIS FILE IS AUTOMATICALLY GENERATED BY env-update. -# DO NOT EDIT THIS FILE. CHANGES TO STARTUP PROFILES -# GO INTO /etc/profile NOT /etc/profile.env - -$(set | grep '^my_envd_' | sed -e 's:^my_envd_:export :') -EOF - -cat << EOF > ${CSHENV} -# THIS FILE IS AUTOMATICALLY GENERATED BY env-update. -# DO NOT EDIT THIS FILE. CHANGES TO STARTUP PROFILES -# GO INTO /etc/csh.cshrc NOT /etc/csh.env - -$(set | grep '^my_envd_' | sed -e 's:^my_envd_\([[:alpha:]_][[:alnum:]_]*\)=:setenv \1 :') -EOF diff --git a/bin/etc-update b/bin/etc-update deleted file mode 100755 index 5dd5a13..0000000 --- a/bin/etc-update +++ /dev/null @@ -1,413 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/etc-update,v 1.27 2005/04/19 22:05:48 vapier Exp $ - -# Author Brandon Low -# -# Previous version (from which I've borrowed a few bits) by: -# Jochem Kossen -# Leo Lipelis -# Karl Trygve Kalleberg - -export PORTAGE_CALLER="etc-update" - -if [ $(/usr/lib/portage/bin/portageq envvar USERLAND) = BSD ] ; then - function sed() { gsed "$@"; } -fi - -function get_config() { - item=$1 - - # First strip off comment lines, then grab the configuration - # item. If there's more than one of the same configuration item, - # then allow the last setting to take precedence. - cut -d'#' -f1-1 /etc/etc-update.conf | \ - sed -ne "s/^ *$item *= *\([\"']\{0,1\}\)\(.*\)\1/\2/p" |sed -e '$p;d' -} - -function scan() { - - echo "Scanning Configuration files..." - rm -rf ${TMP}/files > /dev/null 2>&1 - mkdir ${TMP}/files || die "Failed mkdir command!" 1 - count=0 - input=0 - - for path in ${CONFIG_PROTECT}; do if [ -d ${path} ]; then - ofile="" - for file in `find ${path}/ -iname "._cfg????_*" | - sed -e "s:\(^.*/\)\(._cfg*_\)\(/.*$\):\1\2\3\%\2\%\3:" | - sort -t'%' -k3 -k2 | cut -f1 -d'%'`; do - rpath=`echo "${file/\/\///}" | sed -e "s:/[^/]*$::"` - rfile=`echo "${file/\/\///}" | sed -e "s:^.*/::"` - for mpath in ${CONFIG_PROTECT_MASK}; do - if [[ "${rpath}" == "${mpath}"* ]]; then - mv ${rpath}/${rfile} ${rpath}/${rfile:10} - break - fi - done - [ ! -f ${file} ] && continue - - - if [[ "${ofile:10}" != "${rfile:10}" ]] || - [[ ${opath} != ${rpath} ]]; then - MATCHES=0 - if [[ "${EU_AUTOMERGE}" == "yes" ]]; then - if [ ! -e "${rpath}/${rfile}" ] || [ ! -e "${rpath}/${rfile:10}" ]; then - MATCHES=0 - else - diff -Bbua ${rpath}/${rfile} ${rpath}/${rfile:10} | egrep '^[+-]' | egrep -v '^[+-][\t ]*#|^--- |^\+\+\+ ' | egrep -qv '^[-+][\t ]*$' - MATCHES=$? - fi - elif [[ -z `diff -Nua ${rpath}/${rfile} ${rpath}/${rfile:10}| - grep "^[+-][^+-]"|grep -v '# .Header:.*'` ]]; then - MATCHES=1 - fi - if [[ "${MATCHES}" == "1" ]]; then - echo "Automerging trivial changes in: ${rfile:10}" - mv ${rpath}/${rfile} ${rpath}/${rfile:10} - continue - else - count=${count}+1 - echo "${rpath}/${rfile:10}" > ${TMP}/files/${count} - echo "${rpath}/${rfile}" >> ${TMP}/files/${count} - ofile="${rfile}" - opath="${rpath}" - continue - fi - fi - - if [[ -z `diff -Nua ${rpath}/${rfile} ${rpath}/${ofile}| - grep "^[+-][^+-]"|grep -v '# .Header:.*'` ]]; then - mv ${rpath}/${rfile} ${rpath}/${ofile} - continue - else - echo "${rpath}/${rfile}" >> ${TMP}/files/${count} - ofile="${rfile}" - opath="${rpath}" - fi - done - fi; done - -} - -function sel_file() { - local -i isfirst=0 - until [ -f ${TMP}/files/${input} ] || [ ${input} == -1 ] || [ ${input} == -3 ]; do - local numfiles=$(ls ${TMP}/files|wc -l) - local numwidth=${#numfiles} - for file in $(ls ${TMP}/files|sort -n); do - if (( ${isfirst} == 0 )); then - isfirst=${file} - fi - numshow=$(printf "%${numwidth}i${PAR} " ${file}) - spacer=${numshow//?/ } - echo -n "${numshow}" - if (( ${mode} == 0 )); then - spacedit=0 - for word in $(<${TMP}/files/${file}); do - if (( ${spacedit} == 1 )); then - echo -n "${spacer}" - else - spacedit=1 - fi - echo ${word} - done - else - head -n1 ${TMP}/files/${file} - fi - done > ${TMP}/menuitems - - if [ "${OVERWRITE_ALL}" == "yes" ]; then - input=0 - else - if (( ${mode} == 0 )); then - echo "The following is the list of files which need updating, each -configuration file is followed by a list of possible replacement files." - else - local my_title="Please select a file to update" - fi - - if (( ${mode} == 0 )); then - cat ${TMP}/menuitems - echo "Please select a file to edit by entering the corresponding number." - echo " (don't use -3 or -5 if you're unsure what to do)" - echo " (-1 to exit) (-3 to auto merge all remaining files)" - echo -n " (-5 to auto-merge AND not use 'mv -i'): " - read input - else - dialog --title "${title}" --menu "${my_title}" \ - 0 0 0 $(echo -e "-1 Exit\n$(<${TMP}/menuitems)") \ - 2> ${TMP}/input - input=$(<${TMP}/input) - fi - if (( ${input} == -5 )); then - input=-3 - export mv_opts="" - fi - if (( ${input} == -3 )); then - input=0 - export OVERWRITE_ALL="yes" - fi - fi # -3 automerge - if (( ${input} == 0 )); then - input=${isfirst} - fi - done -} - -function do_file() { - echo - local -i my_input - local -i fcount=0 - until (( $(wc -l < ${TMP}/files/${input}) < 2 )); do - my_input=0 - if (( $(wc -l < ${TMP}/files/${input}) == 2 )); then - my_input=1 - fi - until (( ${my_input} > 0 )) && (( ${my_input} < $(wc -l < ${TMP}/files/${input}) )); do - fcount=0 - - if [ "${OVERWRITE_ALL}" == "yes" ]; then - my_input=0 - else - for line in $(<${TMP}/files/${input}); do - if (( ${fcount} > 0 )); then - echo -n "${fcount}${PAR} " - echo "${line}" - else - if (( ${mode} == 0 )); then - echo "Below are the new config files for ${line}:" - else - local my_title="Please select a file to process for ${line}" - fi - fi - fcount=${fcount}+1 - done > ${TMP}/menuitems - - if (( ${mode} == 0 )); then - cat ${TMP}/menuitems - echo -n "Please select a file to process (-1 to exit this file): " - read my_input - else - dialog --title "${title}" --menu "${my_title}" \ - 0 0 0 `echo -e "$(<${TMP}/menuitems)\n${fcount} Exit"` \ - 2> ${TMP}/input - my_input=$(<${TMP}/input) - fi - fi # OVERWRITE_ALL - - if (( ${my_input} == 0 )); then - my_input=1 - elif (( ${my_input} == -1 )); then - input=0 - return - elif (( ${my_input} == ${fcount} )); then - break - fi - done - if (( ${my_input} == ${fcount} )); then - break - fi - - fcount=${my_input}+1 - - file=$(sed -e "${fcount}p;d" ${TMP}/files/${input}) - ofile=$(head -n1 ${TMP}/files/${input}) - - do_cfg "${file}" "${ofile}" - - sed -e "${fcount}!p;d" ${TMP}/files/${input} > ${TMP}/files/sed - mv ${TMP}/files/sed ${TMP}/files/${input} - - if (( ${my_input} == -1 )); then - break - fi - done - echo - rm ${TMP}/files/${input} - count=${count}-1 -} - -function do_cfg() { - - local file="${1}" - local ofile="${2}" - local -i my_input=0 - - until (( ${my_input} == -1 )) || [ ! -f ${file} ]; do - if [ "${OVERWRITE_ALL}" == "yes" ]; then - my_input=1 - else - showdiffcmd=$(echo "${diff_command}" | - sed -e "s:%file1:${ofile}:" -e "s:%file2:${file}:") - - if [ "${using_editor}" == 0 ]; then - ( - echo "Showing differences between ${ofile} and ${file}" - ${showdiffcmd} - ) | ${pager} - else - echo "Beginning of differences between ${ofile} and ${file}" - ${showdiffcmd} - echo "End of differences between ${ofile} and ${file}" - fi - if [ -L "${file}" ]; then - echo - echo "-------------------------------------------------------------" - echo "NOTE: File is a symlink to another file. REPLACE recommended." - echo " The original file may simply have moved. Please review." - echo "-------------------------------------------------------------" - echo - fi - echo -n "1) Replace original with update -2) Delete update, keeping original as is -3) Interactively merge original with update -4) Show differences again -Please select from the menu above (-1 to ignore this update): " - read my_input - fi - - case ${my_input} in - 1) echo "Replacing ${ofile} with ${file}" - mv ${mv_opts} ${file} ${ofile} - my_input=-1 - continue - ;; - 2) echo "Deleting ${file}" - rm ${rm_opts} ${file} - continue - ;; - 3) do_merge "${file}" "${ofile}" - my_input=${?} -# [ ${my_input} == 255 ] && my_input=-1 - continue - ;; - 4) continue - ;; - *) continue - ;; - esac - done -} - -function do_merge() { - - local file="${1}" - local ofile="${2}" - local mfile="${2}.merged" - local -i my_input=0 - echo "${file} ${ofile} ${mfile}" - - if [ -e ${mfile} ] ; then - echo "A previous version of the merged file exists, cleaning..." - rm ${rm_opts} ${mfile} - fi - - until (( ${my_input} == -1 )); do - echo "Merging ${file} and ${ofile}" - `echo "${merge_command}" | - sed -e "s:%merged:${mfile}:g" \ - -e "s:%orig:${ofile}:g" \ - -e "s:%new:${file}:g"` - until (( ${my_input} == -1 )); do - echo -n "1) Replace ${ofile} with merged file -2) Show differences between merged file and original -3) Remerge original with update -4) Edit merged file -5) Return to the previous menu -Please select from the menu above (-1 to exit, losing this merge): " - read my_input - case ${my_input} in - 1) echo "Replacing ${ofile} with ${mfile}" - chmod --reference=${ofile} ${mfile} - mv ${mv_opts} ${mfile} ${ofile} - rm ${rm_opts} ${file} - return 255 - ;; - 2) ( echo "Showing differences between ${ofile} and ${mfile}" - `echo "${diff_command}" | \ - sed -e "s:%file1:${ofile}:" \ - -e "s:%file2:${mfile}:"` ) | ${pager} - continue - ;; - 3) break - ;; - 4) ${EDITOR:-nano -w} "${mfile}" - continue - ;; - 5) rm ${rm_opts} ${mfile} - return 0 - ;; - *) continue - ;; - esac - done - done - rm ${rm_opts} ${mfile} - return 255 -} - -function die() { - trap "" term - trap "" kill - echo "Exiting: ${1}" - rm -rf ${TMP} - exit ${2} -} - -# -# Run the script -# -scriptname=`basename $0` - -trap die term - -TMP=/tmp/$$ -rm -rf ${TMP} 2> /dev/null -mkdir ${TMP} || die "failed mkdir command!" 1 - -# I need the CONFIG_PROTECT value -CONFIG_PROTECT=$(/usr/lib/portage/bin/portageq envvar CONFIG_PROTECT) -CONFIG_PROTECT_MASK=$(/usr/lib/portage/bin/portageq envvar CONFIG_PROTECT_MASK) - -# load etc-config's configuration -EU_AUTOMERGE=`get_config eu_automerge` -rm_opts=`get_config rm_opts` -mv_opts=`get_config mv_opts` -cp_opts=`get_config cp_opts` -pager=`get_config pager` -diff_command=`get_config diff_command` -using_editor=`get_config using_editor` -merge_command=`get_config merge_command` -declare -i mode=`get_config mode` -[ -z ${mode} ] && mode=0 -[ -z "${pager}" ] && pager="cat" - -#echo "rm_opts: $rm_opts, mv_opts: $mv_opts, cp_opts: $cp_opts" -#echo "pager: $pager, diff_command: $diff_command, merge_command: $merge_command" - -if (( ${mode} == 0 )); then - PAR=")" -else - PAR="" -fi - -declare -i count=0 -declare -i input=0 -declare title="Gentoolkit's etc-update tool!" - -scan - -until (( ${input} == -1 )); do - if (( ${count} == 0 )); then - die "Nothing left to do; exiting. :)" 0 - fi - sel_file - if (( ${input} != -1 )); then - do_file - fi -done - -die "User termination!" 0 diff --git a/bin/find-requires b/bin/find-requires deleted file mode 100755 index 9746159..0000000 --- a/bin/find-requires +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/find-requires,v 1.5 2004/10/04 13:56:50 vapier Exp $ - -# note this works for both a.out and ELF executables -# it also auto-generates requirment lines for shell scripts - -ulimit -c 0 - -filelist=`sed "s/['\"]/\\\&/g"` -exelist=`echo $filelist | $XARGS file | grep ":.*executable" | cut -d: -f1 ` -scriptlist=`echo $filelist | $XARGS file | egrep ":.* (commands|script) " | cut -d: -f1 ` -liblist=`echo $filelist | $XARGS file | grep ":.*shared object" | cut -d : -f1 ` - -for f in $exelist; do - if [ -x $f ]; then - ldd $f | awk '/=>/ { print $1 }' - fi -done | sort -u | sed "s/['\"]/\\\&/g" | $XARGS -n 1 basename | grep -v 'libNoVersion.so' | sort -u - -for f in $liblist; do - ldd $f | awk '/=>/ { print $1 }' -done | sort -u | sed "s/['\"]/\\\&/g" | $XARGS -n 1 basename | grep -v 'libNoVersion.so' | sort -u - -for f in $scriptlist; do - if [ -x $f ]; then - head -1 $f | sed -e 's/^\#\![ ]*//' | cut -d" " -f1 - fi -done | sort -u - -#for f in $liblist $exelist ; do -# objdump -p $f | awk ' -# BEGIN { START=0; LIBNAME=""; } -# /Version References:/ { START=1; } -# /required from/ && (START==1) { -# sub(/:/, "", $3); -# LIBNAME=$3; -# } -# (START==1) && (LIBNAME!="") && ($4~/^GLIBC_*/) { print LIBNAME "(" $4 ")"; } -# /^$/ { START=0; } -# ' -#done | sort -u - diff --git a/bin/fix-db.py b/bin/fix-db.py deleted file mode 100755 index 11afbf7..0000000 --- a/bin/fix-db.py +++ /dev/null @@ -1,175 +0,0 @@ -#!/usr/bin/python -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/fix-db.py,v 1.8 2004/10/11 04:01:00 jstubbs Exp $ - -import os,sys,re -sys.path = ["/usr/lib/portage/pym"]+sys.path - -from stat import * -from output import * -from portage import lockfile,unlockfile,VDB_PATH,root - - -mylog = open("/var/log/emerge_fix-db.log", "a") -def writemsg(msg): - if msg[-1] != '\n': - msg += "\n" - sys.stderr.write(msg) - sys.stderr.flush() - mylog.write(msg) - mylog.flush() - -def fix_global_counter(value): - myf = open("/var/cache/edb/counter") - newvalue = value+1000 - myf.write(str(newvalue)) - myf.flush() - myf.close() - return newvalue - -bad = {} -counters = {} -times = {} - -try: - real_counter = long(open("/var/cache/edb/counter").read()) -except SystemExit, e: - raise # This needs to be propogated -except: - writemsg("ERROR: Real counter is invalid.\n") - real_counter = 0 - -vardbdir = root+VDB_PATH+"/" -for cat in os.listdir(vardbdir): - catdir = vardbdir+cat+"/" - if not os.path.isdir(catdir): - writemsg("Invalid file: '%s'\n" % catdir[:-1]) - continue - for pkg in os.listdir(catdir): - pkgdir = catdir+pkg+"/" - catpkg = cat+"/"+pkg - - if not os.path.isdir(catdir): - writemsg("Invalid file: '%s'\n" % pkgdir) - continue - - bad[catpkg] = [] - - pkgdirlist = os.listdir(pkgdir) - if not pkgdirlist: - writemsg("ERROR: Package directory is empty for '%s'\n" % catpkg) - writemsg(" Deleting this directory. Remerge if you want it back.\n") - os.rmdir(pkgdir) - del bad[catpkg] - continue - - if "CONTENTS" not in pkgdirlist: - bad[catpkg] += ["CONTENTS is missing"] - times[catpkg] = -1 - writemsg("ERROR: Contents file is missing from the package directory.\n") - writemsg(" '%s' is corrupt and should be deleted.\n" % catpkg) - else: - times[catpkg] = None - for line in open(pkgdir+"CONTENTS").readlines(): - mysplit = line.split() - if mysplit[0] == "obj": - try: - times[catpkg] = long(mysplit[-1]) - except SystemExit, e: - raise # This needs to be propogated - except: - times[catpkg] = -1 - bad[catpkg] += ["CONTENTS is corrupt"] - writemsg("ERROR: Corrupt CONTENTS file in '%s'\n" % catpkg) - writemsg(" This package should be deleted.\n") - break - if times[catpkg] == None: - times[catpkg] = os.stat(pkgdir+"CONTENTS")[ST_MTIME] - - if "COUNTER" not in pkgdirlist: - bad[catpkg] += ["COUNTER is missing"] - writemsg("ERROR: COUNTER file missing from '%s'.\n" % catpkg) - counters[catpkg] = -1 - else: - try: - counters[catpkg] = long(open(pkgdir+"COUNTER").read().strip()) - if counters[catpkg] > real_counter: - writemsg("ERROR: Global counter is lower than the '%s' COUNTER." % catpkg) - real_counter = fix_global_counter(counters[catpkg]) - except SystemExit, e: - raise # This needs to be propogated - except: - bad[catpkg] += ["COUNTER is corrupt"] - counters[catpkg] = -1 - - if "SLOT" not in pkgdirlist: - writemsg("ERROR: SLOT file missing from '%s'.\n" % catpkg) - writemsg(" RE-MERGE this exact package version or unmerge and remerge.\n") - bad[catpkg] += ["SLOT is missing"] - else: - myslot = open(pkgdir+"SLOT").read() - if myslot and myslot[-1]=="\n": - #writemsg("WARN: SLOT file has a newline. '%s'\n" % catpkg) - myslot = myslot[:-1] - if not myslot: - bad[catpkg] += ["SLOT is empty"] - writemsg("ERROR: SLOT file is empty for '%s'.\n" % catpkg) - writemsg(" RE-MERGE this exact package version or unmerge and remerge it.\n") - elif re.search("[^-a-zA-Z0-9\._]", myslot): - bad[catpkg] += ["SLOT is corrupt"] - writemsg("ERROR: SLOT file is corrupt for '%s'.\n" % catpkg) - writemsg(" RE-MERGE this exact package version or unmerge and remerge it.\n") - elif myslot.strip() != myslot: - writemsg("WARN: SLOT file has invalid characters. '%s'\n" % catpkg) - bad[catpkg] += ["SLOT is invalid"] - - if not bad[catpkg]: - del bad[catpkg] - - -actions = {} -writemsg("\n\n") -for catpkg in bad.keys(): - bad[catpkg].sort() - - mystr = "" - for x in bad[catpkg]: - mystr += " "+str(x)+"\n" - - if bad[catpkg] == ["CONTENTS is missing", "SLOT is missing"]: - writemsg("%s: (possibly injected)\n%s\n" % (green(catpkg), mystr)) - actions[catpkg] = ["ignore"] - elif bad[catpkg] == ["SLOT is empty"]: - writemsg("%s: (old package) []\n%s\n" % (yellow(catpkg), mystr)) - actions[catpkg] = ["remerge"] - else: - writemsg("%s: (damaged/invalid) []\n%s\n" % (red(catpkg), mystr)) - actions[catpkg] = ["merge exact"] - -if (len(sys.argv) > 1) and (sys.argv[1] == "--fix"): - writemsg("These are only directions, at the moment.") - for catpkg in actions.keys(): - action = actions[catpkg] - writemsg("We will now '%s' '%s'..." % (action, catpkg)) - #if action == -else: - #writemsg("Run with '--fix' to attempt automatic correction.") - pass - - - - - - - - - - - - - - - - - diff --git a/bin/fixdbentries b/bin/fixdbentries deleted file mode 100755 index 2da87ec..0000000 --- a/bin/fixdbentries +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/fixdbentries,v 1.3 2004/10/04 13:56:50 vapier Exp $ - -# Script to adjust the contents of the DB entries after a package move. -# Fairly straight forward... ./movedbentry 'from/here' 'to/here' /over/here - -VAR=$1 -NEW=$2 -SPATH=$3 - -grep -FrZl "${VAR}" "${SPATH}" | -sed "s#${SPATH}[^\d000]\+/CONTENTS\d000##g" | -$XARGS -0 sed -i -e " -s#${VAR}\$#${NEW}#g; -s#${VAR}\([[:space:]]\)#${NEW}\1#g; -s#${VAR}\(-[^a-zA-Z]\)#${NEW}\1#g; -s#${VAR}\([^a-zA-Z0-9-]\)#${NEW}\1#g -" diff --git a/bin/fixpackages b/bin/fixpackages deleted file mode 100755 index 0a6104d..0000000 --- a/bin/fixpackages +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/python -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/fixpackages,v 1.6 2004/10/04 13:56:50 vapier Exp $ - -import os,sys -os.environ["PORTAGE_CALLER"]="fixpackages" -sys.path = ["/usr/lib/portage/pym"]+sys.path - -import portage - -print -print "Done." -print diff --git a/bin/fixvardbentries b/bin/fixvardbentries deleted file mode 100755 index 7fa76ee..0000000 --- a/bin/fixvardbentries +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/python -O -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/fixvardbentries,v 1.4 2004/10/11 04:01:00 jstubbs Exp $ - -import os -import sys - -def fix_entries(path): - path += "/" - - # Find the ebuild - contents = os.listdir(path) - ebuild = None - for fn in contents: - if fn[-7:] == ".ebuild": - ebuild = fn - break - if ebuild is None: - print "missing ebuild in",path - return - - # Read it - ebuildfile = open(path+ebuild) - orig = ebuildfile.readlines() - ebuildfile.close() - - # Quickly check it - if "\1" not in " ".join(orig): - return False - - # Read the original environment - if "environment.bz2" in contents: - os.system("bzip2 -dk "+path+"environment.bz2") - elif "environment" in contents: - os.system("bzip2 -zk "+path+"environment") - else: - print "environement.bz2 missing!" - print "Please find and remove ^A occurences manually" - print "or replace the ebuild with one from your portage" - print "tree as a last resort." - return False - try: - envfile = open(path+"environment") - except SystemExit, e: - raise # this needs to be propogated - except: - print "environment.bz2 corrupt!" - print "There is no way to fix this ebuild automatically." - print "Try editing the ebuild to remove any ^A occurrences," - print 'possible replacing them with `"`, or copy an ebuild' - print "of the same version (if possible) from the portage tree." - print - return False - lines = envfile.readlines() - envfile.close() - os.remove(path+"environment") - - # Parse it - env = {} - for line in lines: - line = " ".join(line.split()) - values = line.split("=") - if len(values) == 1: - break - key = values[0] - value = "=".join(values[1:]) - if value and value[0] == "$": - value = value[1:] - if value and value[0] == "'": - value = value[1:-1] - value = value.replace("\\n","\n") - value = value.replace("\\t","\t") - env[key] = value - - # Revert the *DEPEND files to their originals - for key in ["DEPEND","RDEPEND","PDEPEND"]: - if not env.has_key(key): - env[key] = "" - f = open(path+key, "w") - f.write(env[key]) - f.close() - - # Check and fix unbalanced quotes - quotecount = 0 - for l in orig: - quotecount += l.count('"') - if (quotecount % 2): - for x in range(len(orig)-1,-1,-1): - if "\1" in orig[x]: - for y in range(len(orig[x])-1,-1,-1): - if orig[x][y]=="\1": - orig[x] = orig[x][:y] + '"' + orig[x][y+1:] - break - break - - # Replace *DEPEND in the ebuild with their originals - fixed = [] - x=0 - while x != len(orig): - for key in ["DEPEND","RDEPEND","PDEPEND"]: - if orig[x].startswith(key): - quotes = 0 - while quotes != 2: - if x >= len(orig): - print "Definate bug" - print "Please attach ebuild",ebuild,"to bug 46096" - print - return False - if not orig[x]: - print "Possible bug - if the original ebuild you see both DEPEND and RDEPEND" - print "in the following but the 'fixed' ebuild doesn't have both then please" - print "attach",ebuild,"to bug 46096 with the following output:" - print orig - print - continue - quotes += orig[x].count('"') - if quotes == 2: - break - if quotes > 2: - print "Unfixable ebuild",ebuild - print "Please attach it to bug 46906" - print - return False - x += 1 - fixed += [key+'="'+env[key]+'"\n'] - x += 1 - break - if x != len(orig): - fixed += orig[x] - x += 1 - ebuildfile = open(path+ebuild,"w") - ebuildfile.writelines(fixed) - ebuildfile.close() - - if "\1" in " ".join(fixed): - print "Partially Fixed... see below" - else: - print "Fixed" - - return True - - -vardb = "/var/db/pkg/" -changed = False -for cat in os.listdir(vardb): - if os.path.isdir(vardb+cat): - for pkg in os.listdir(vardb+cat): - if pkg[0] != "-" and os.path.isdir(vardb+cat+"/"+pkg): - changed = (changed or fix_entries(vardb+cat+"/"+pkg)) - -if changed: - - print "Any ebuilds that were partially fixed can not be fixed any further" - print "by this script or possible any other. Unmerging the package will" - print "more than likely work. If it doesn't, however, try editing the" - print "ebuild to leave only the pkg_prerm and pkg_postrm functions (if" - print "they exist) or copying an ebuild - even of a different version -" - print "from the main portage tree." - - import portage - if portage.mtimedb.has_key("updates"): - del portage.mtimedb["updates"] - -else: - print "No corruption found!" - diff --git a/bin/fixvirtuals b/bin/fixvirtuals deleted file mode 100755 index 975823a..0000000 --- a/bin/fixvirtuals +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/python -O -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/fixvirtuals,v 1.4 2004/11/10 03:10:56 genone Exp $ - -import os,sys -sys.path = ["/usr/lib/portage/pym"]+sys.path - -import portage - -if portage.secpass!=2: - print "fixvirtuals: root access required." - sys.exit(1) - -newvirts={} -myvirts=portage.grabdict("/var/cache/edb/virtuals") -myprovides=portage.db["/"]["vartree"].get_all_provides() - -for myvirt in myprovides.keys(): - newvirts[myvirt]=[] - for mycatpkg in myprovides[myvirt]: - mysplit=portage.portage_versions.catpkgsplit(mycatpkg) - pkg=mysplit[0]+"/"+mysplit[1] - - try: - if (newvirts[myvirt].index(pkg)): - pass - except SystemExit, e: - raise # This needs to be propogated - except: - newvirts[myvirt].append(pkg) - -portage.writedict(newvirts,"/var/cache/edb/virtuals") diff --git a/bin/fowners b/bin/fowners deleted file mode 100755 index 1d20940..0000000 --- a/bin/fowners +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/fowners,v 1.7 2005/05/04 22:49:14 vapier Exp $ - -if [ $# -lt 2 ] ; then - echo "${0}: at least two arguments needed" 1>&2 - exit 1 -fi - -OPTS="" -while [ "${1:0:1}" = "-" ] ; do - OPTS="${OPTS} $1" - shift -done - -OWNER="${1}" -shift - -for FILE in "$@" ; do - chown ${OPTS} "${OWNER}" "${D}${FILE}" -done diff --git a/bin/fperms b/bin/fperms deleted file mode 100755 index 131f6a0..0000000 --- a/bin/fperms +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/fperms,v 1.7 2005/05/04 22:49:14 vapier Exp $ - -if [ $# -lt 2 ] ; then - echo "${0}: at least two arguments needed" 1>&2 - exit 1 -fi - -OPTS="" -while [ "${1:0:1}" = "-" ] ; do - OPTS="${OPTS} $1" - shift -done - -PERM=$1 -shift - -for FILE in "$@" ; do - chmod ${OPTS} "${PERM}" "${D}${FILE}" -done diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh deleted file mode 100644 index 6eb5d98..0000000 --- a/bin/isolated-functions.sh +++ /dev/null @@ -1,204 +0,0 @@ -# Copyright 1999-2004 Gentoo Technologies, Inc. -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/isolated-functions.sh,v 1.2 2005/02/21 12:45:49 genone Exp $ - -# Internal logging function, don't use this in ebuilds -elog_base() { - local messagetype - [ -z "${1}" -o -z "${T}" -o ! -d "${T}/logging" ] && return 1 - case "${1}" in - INFO|WARN|ERROR|LOG) - messagetype="${1}" - shift - ;; - *) - echo -e " ${BAD}*${NORMAL} Invalid use of internal function elog_base(), next message will not be logged" - return 1 - ;; - esac - echo ${*} >> ${T}/logging/${EBUILD_PHASE}.${messagetype} - return 0 -} - -elog() { - elog_base LOG ${*} - echo -e " ${GOOD}*${NORMAL} ${*}" - return 0 -} - -esyslog() { - local pri= - local tag= - - if [ -x /usr/bin/logger ] - then - pri="$1" - tag="$2" - - shift 2 - [ -z "$*" ] && return 0 - - /usr/bin/logger -p "${pri}" -t "${tag}" -- "$*" - fi - - return 0 -} - -einfo() { - einfon ${*} - echo - return 0 -} - -einfon() { - elog_base INFO ${*} - echo -ne " ${GOOD}*${NORMAL} ${*}" - return 0 -} - -ewarn() { - elog_base WARN ${*} - echo -e " ${WARN}*${NORMAL} ${*}" - return 0 -} - -eerror() { - elog_base ERROR ${*} - echo -e " ${BAD}*${NORMAL} ${*}" - return 0 -} - -ebegin() { - if [ -z "${NOCOLOR}" ]; then - echo -ne " ${GOOD}*${NORMAL} ${*}..." - else - echo -e " ${GOOD}*${NORMAL} ${*}..." - fi - return 0 -} - -eend() { - local retval= - if [ "$#" -eq 0 ] || [ "${1:-1}" -eq 0 ]; then - echo -e "${ENDCOL} ${BRACKET}[ ${GOOD}ok${BRACKET} ]${NORMAL}" - else - retval="$1" - - if [ "$#" -ge 2 ] - then - shift - eerror "${*}" - fi - echo -e "${ENDCOL} ${BRACKET}[ ${BAD}!!${BRACKET} ]${NORMAL}" - # extra spacing makes it easier to read - echo - return ${retval} - fi - return 0 -} - -KV_major() { - local KV= - - [ -z "$1" ] && return 1 - - KV="$(echo "$1" | \ - awk '{ tmp = $0; gsub(/^[0-9\.]*/, "", tmp); sub(tmp, ""); print }')" - echo "${KV}" | awk -- 'BEGIN { FS = "." } { print $1 }' - - return 0 -} - -KV_minor() { - local KV= - - [ -z "$1" ] && return 1 - - KV="$(echo "$1" | \ - awk '{ tmp = $0; gsub(/^[0-9\.]*/, "", tmp); sub(tmp, ""); print }')" - echo "${KV}" | awk -- 'BEGIN { FS = "." } { print $2 }' - - return 0 -} - -KV_micro() { - local KV= - - [ -z "$1" ] && return 1 - - KV="$(echo "$1" | \ - awk '{ tmp = $0; gsub(/^[0-9\.]*/, "", tmp); sub(tmp, ""); print }')" - echo "${KV}" | awk -- 'BEGIN { FS = "." } { print $3 }' - - return 0 -} - -KV_to_int() { - local KV_MAJOR= - local KV_MINOR= - local KV_MICRO= - local KV_int= - - [ -z "$1" ] && return 1 - - KV_MAJOR="$(KV_major "$1")" - KV_MINOR="$(KV_minor "$1")" - KV_MICRO="$(KV_micro "$1")" - KV_int="$((KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO))" - - # We make version 2.2.0 the minimum version we will handle as - # a sanity check ... if its less, we fail ... - if [ "${KV_int}" -ge 131584 ] - then - echo "${KV_int}" - - return 0 - fi - - return 1 -} - -get_KV() { - local KV="$(uname -r)" - - echo "$(KV_to_int "${KV}")" - - return $? -} - -getcols() { - echo "$2" -} - -unset_colors() { - COLS="25 80" - ENDCOL= - - GOOD= - WARN= - BAD= - NORMAL= - HILITE= - BRACKET= - - if [ -n "${EBUILD}" ] && [ "${*/depend}" = "$*" ]; then - stty cols 80 &>/dev/null - stty rows 25 &>/dev/null - fi -} - -set_colors() { - COLS="`stty size 2> /dev/null`" - COLS="`getcols ${COLS}`" - COLS=$((${COLS} - 7)) - ENDCOL=$'\e[A\e['${COLS}'G' # Now, ${ENDCOL} will move us to the end of the - # column; irregardless of character width - - GOOD=$'\e[32;01m' - WARN=$'\e[33;01m' - BAD=$'\e[31;01m' - NORMAL=$'\e[0m' - HILITE=$'\e[36;01m' - BRACKET=$'\e[34;01m' -} -true diff --git a/bin/md5check.py b/bin/md5check.py deleted file mode 100755 index 77c6ab8..0000000 --- a/bin/md5check.py +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/python -O -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/md5check.py,v 1.4 2004/10/10 10:07:20 carpaski Exp $ - -import os,sys,string -os.environ["PORTAGE_CALLER"]="mirror" -os.environ["FEATURES"]="mirror cvs" -sys.path = ["/usr/lib/portage/pym"]+sys.path - -import portage -from threading import * -from output import red,green,blue,bold -from random import shuffle -from time import sleep - - -def cstrip(mystr,mychars): - newstr = "" - for x in mystr: - if x not in mychars: - newstr += x - return newstr - -md5_list = {} -bn_list = [] -col_list = [] - -hugelist = [] -for mycp in portage.db["/"]["porttree"].dbapi.cp_all(): - hugelist += portage.db["/"]["porttree"].dbapi.cp_list(mycp) -hugelist.sort() - -for mycpv in hugelist: - pv = string.split(mycpv, "/")[-1] - - newuri = portage.db["/"]["porttree"].dbapi.aux_get(mycpv,["SRC_URI"])[0] - newuri = string.split(newuri) - - digestpath = portage.db["/"]["porttree"].dbapi.findname(mycpv) - digestpath = os.path.dirname(digestpath)+"/files/digest-"+pv - md5sums = portage.digestParseFile(digestpath) - - if md5sums == None: - portage.writemsg("Missing digest: %s\n" % mycpv) - md5sums = {} - - for x in md5sums.keys(): - if x[0] == '/': - del md5sums[x] - - #portage.writemsg("\n\ndigestpath: %s\n" % digestpath) - #portage.writemsg("md5sums: %s\n" % md5sums) - #portage.writemsg("newuri: %s\n" % newuri) - - bn_list = [] - for x in newuri: - if not x: - continue - if (x in [")","(",":","||"]) or (x[-1] == "?"): - # ignore it. :) - continue - x = cstrip(x,"()|?") - if not x: - continue - - mybn = os.path.basename(x) - if mybn not in bn_list: - bn_list += [mybn] - else: - continue - - if mybn not in md5sums.keys(): - portage_util.writemsg("Missing md5sum: %s in %s\n" % (mybn, mycpv)) - else: - if mybn in md5_list.keys(): - if (md5_list[mybn]["MD5"] != md5sums[mybn]["MD5"]) or \ - (md5_list[mybn]["size"] != md5sums[mybn]["size"]): - - # This associates teh md5 with each file. [md5/size] - md5joins = string.split(md5_list[mybn][2],",") - md5joins = string.join(md5joins," ["+md5_list[mybn][0]+"/"+md5_list[mybn][1]+"],") - md5joins += " ["+md5_list[mybn][0]+"/"+md5_list[mybn][1]+"]" - - portage.writemsg("Colliding md5: %s of %s [%s/%s] and %s\n" % (mybn,mycpv,md5sums[mybn][0],md5sums[mybn][1],md5joins)) - col_list += [mybn] - else: - md5_list[mybn][2] += ","+mycpv - else: - md5_list[mybn] = md5sums[mybn]+[mycpv] - del md5sums[mybn] - - #portage.writemsg(str(bn_list)+"\n") - for x in md5sums.keys(): - if x not in bn_list: - portage.writemsg("Extra md5sum: %s in %s\n" % (x, mycpv)) - - -print col_list -print -print str(len(md5_list.keys()))+" unique distfile md5s." -print str(len(bn_list))+" unique distfile names." diff --git a/bin/md5check.sh b/bin/md5check.sh deleted file mode 100755 index ddb242b..0000000 --- a/bin/md5check.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/md5check.sh,v 1.2 2004/10/04 13:56:50 vapier Exp $ - -# pipe in the data. - -sort -u - > md5check.tmp -grep '^Extra' md5check.tmp > md5check.tmp.extra -grep '^Missing' md5check.tmp > md5check.tmp.missing -grep '^Coll' md5check.tmp > md5check.tmp.colliding - -sed -i " -s:^Col:\nCol: -s:,:\n :g -s: of :\n :g -s: and :\n :g" md5check.tmp.colliding -sed -i "s/^[^ ]\+ md5sum: \(.*\) in \(.*\)$/ \2: \1/g" md5check.tmp.missing -sed -i "s/^[^ ]\+ md5sum: \(.*\) in \(.*\)$/ \2: \1/g" md5check.tmp.extra - -#echo "Colliding files:" > md5check.colliding -#sort -u md5check.tmp.colliding >> md5check.colliding -cp md5check.tmp.colliding md5check.colliding - -echo "Missing from digest:" > md5check.missing -sort -u md5check.tmp.missing >> md5check.missing - -echo "Extra files in digest:" > md5check.extra -sort -u md5check.tmp.extra >> md5check.extra - -rm md5check.tmp* diff --git a/bin/mirror.py b/bin/mirror.py deleted file mode 100755 index ba85f0f..0000000 --- a/bin/mirror.py +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/python -O -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/mirror.py,v 1.3 2004/10/10 10:07:20 carpaski Exp $ - -# Defines the number of threads carrying out the downloading. -maxsems=5 - -import os,sys,string -os.environ["PORTAGE_CALLER"]="mirror" -os.environ["FEATURES"]="mirror cvs" -sys.path = ["/usr/lib/portage/pym"]+sys.path - -import portage -from threading import * -from output import red,green,blue,bold -from random import shuffle -from time import sleep - - -def cstrip(mystr,mychars): - newstr = "" - for x in mystr: - if x not in mychars: - newstr += x - return newstr - -class fetcher(Thread): - def __init__(self, filename, urilist, dest, md5sum): - self.filename = filename - self.myurilist = urilist - self.myuri = None - self.mydest = dest - self.destpath = self.mydest+"/"+self.filename - self.md5sum = md5sum - self.result = None - Thread.__init__(self) - - def fetch(self): - #print "Started",self.filename - sys.stderr.write(".") - sys.stderr.flush() - portage.spawn("wget -q -P "+str(self.mydest)+" "+self.myuri, free=1) - - def finished(self): - if os.path.exists(self.destpath) and self.md5sum: - ok,reason = portage_checksum.verify_all(self.destpath, md5sum) - if not ok: - portage_util.writemsg("Failed verification:" + reason + "\n") - return 1 - return 0 - - def delete(self): - if os.path.exists(self.destpath): - #print "Unlink:",self.destpath - os.unlink(self.destpath) - - def run(self): - if not self.finished(): - self.delete() - - while not self.finished(): - if self.myurilist: - self.myuri = self.myurilist.pop(0)+"/"+self.filename - self.fetch() - else: - self.delete() - self.result = 0 - #print "Failed:",self.filename - return 1 - - #print "Finished:",self.filename - self.result = 1 - return 0 - - -uri_list = {} -fetchers = [] -fetcher_sem = BoundedSemaphore(value=maxsems) -failures = 0 -successes = 0 - -def clean_fetchers(): - global fetcher_sem,fetchers,uri_list,failures,successes,maxsems - while len(fetchers) == maxsems: - for x in fetchers: - if not x.isAlive(): - failures += (x.result == 0) - successes += (x.result == 1) - if x.filename in uri_list.keys(): - del uri_list[x.filename] - del fetchers[fetchers.index(x)] - fetcher_sem.release() - if len(fetchers) == maxsems: - sleep(1) - - -def start_fetcher(fname, urilist, dest, md5sum): - global fetcher_sem,fetchers,uri_list,failures,successes - fetcher_sem.acquire() - fetchers.append(fetcher(fname, urilist, dest, md5sum)) - fetchers[-1].start() - - -tpm = portage.thirdpartymirrors -destdir = portage.settings["DISTDIR"][:] - -hugelist = [] -for mycp in portage.db["/"]["porttree"].dbapi.cp_all(): - hugelist += portage.db["/"]["porttree"].dbapi.cp_list(mycp) -shuffle(hugelist) - -mycount = -1 -for mycpv in hugelist: - pv = string.split(mycpv, "/")[-1] - - clean_fetchers() - - mycount += 1 - if ((mycount % 20) == 0): - sys.stdout.write("\nCompleted: %s\n" % mycount) - sys.stdout.flush() - newuri = portage.db["/"]["porttree"].dbapi.aux_get(mycpv,["SRC_URI"])[0] - newuri = string.split(newuri) - - digestpath = portage.db["/"]["porttree"].dbapi.findname(mycpv) - digestpath = os.path.dirname(digestpath)+"/files/digest-"+pv - md5sums = portage.digestParseFile(digestpath) - - for x in newuri: - clean_fetchers() - if not x: - continue - if (x in [")","(",":","||"]) or (x[-1] == "?"): - # ignore it. :) - continue - x = cstrip(x,"()|?") - if not x: - continue - mybn = os.path.basename(x) - mydn = os.path.dirname(x) - if mybn not in uri_list.keys(): - if (len(mybn) > len("mirror://")) and (mybn[:len("mirror://")] == "mirror://"): - mysite = string.split(x[len("mirror://"):], "/")[0] - shuffle(tpm[mysite]) - uri_list[mybn] = tpm[mysite][:] - else: - uri_list[mybn] = [os.path.dirname(x)] - clean_fetchers() - if (not md5sums) or (mybn not in md5sums.keys()): - start_fetcher(mybn, uri_list[mybn], destdir, None) - else: - start_fetcher(mybn, uri_list[mybn], destdir, md5sums[mybn]) - else: - break - -sys.stderr.write("\n\nWaiting last set\n") -sys.stderr.flush() -while fetchers: - if fetchers[0].isAlive(): - fetchers[0].join() - clean_fetchers() - -print -print -print "Successes:",successes -print "Failures: ",failures diff --git a/bin/newbin b/bin/newbin deleted file mode 100755 index dc503e8..0000000 --- a/bin/newbin +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/newbin,v 1.7 2004/10/04 13:56:50 vapier Exp $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "Nothing defined to do." - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -dobin "${T}/${2}" diff --git a/bin/newconfd b/bin/newconfd deleted file mode 100755 index b9042c9..0000000 --- a/bin/newconfd +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/newconfd,v 1.3 2005/05/04 23:14:40 vapier Exp $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "$0: nothing defined to do" 1>&2 - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -exec doconfd "${T}/${2}" diff --git a/bin/newdoc b/bin/newdoc deleted file mode 100755 index b4a0d49..0000000 --- a/bin/newdoc +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/newdoc,v 1.8 2005/05/04 00:52:42 vapier Exp $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "newdoc: Nothing defined to do" 1>&2 - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -exec dodoc "${T}/${2}" diff --git a/bin/newenvd b/bin/newenvd deleted file mode 100755 index 3acb06e..0000000 --- a/bin/newenvd +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/newenvd,v 1.3 2005/05/04 23:14:40 vapier Exp $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "$0: nothing defined to do" 1>&2 - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -exec doenvd "${T}/${2}" diff --git a/bin/newexe b/bin/newexe deleted file mode 100755 index f42deeb..0000000 --- a/bin/newexe +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/newexe,v 1.7 2004/10/04 13:56:50 vapier Exp $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "Nothing defined to do." - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -doexe "${T}/${2}" diff --git a/bin/newinitd b/bin/newinitd deleted file mode 100755 index 3544057..0000000 --- a/bin/newinitd +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/newinitd,v 1.3 2005/05/04 23:14:40 vapier Exp $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "$0: nothing defined to do" 1>&2 - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -exec doinitd "${T}/${2}" diff --git a/bin/newins b/bin/newins deleted file mode 100755 index 3652ea7..0000000 --- a/bin/newins +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/newins,v 1.7 2004/10/04 13:56:50 vapier Exp $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "Error: Nothing defined to do." - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -doins "${T}/${2}" diff --git a/bin/newlib.a b/bin/newlib.a deleted file mode 100755 index 6e5a2f7..0000000 --- a/bin/newlib.a +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/newlib.a,v 1.7 2004/10/04 13:56:50 vapier Exp $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "Error: Nothing defined to do." - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -dolib.a "${T}/${2}" diff --git a/bin/newlib.so b/bin/newlib.so deleted file mode 100755 index f183d89..0000000 --- a/bin/newlib.so +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/newlib.so,v 1.7 2004/10/04 13:56:50 vapier Exp $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "Error: Nothing defined to do." - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -dolib.so "${T}/${2}" diff --git a/bin/newman b/bin/newman deleted file mode 100755 index a20f031..0000000 --- a/bin/newman +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/newman,v 1.8 2005/05/04 00:52:42 vapier Exp $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "newman: Nothing defined to do" 1>&2 - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -exec doman "${T}/${2}" diff --git a/bin/newsbin b/bin/newsbin deleted file mode 100755 index 5c35ea4..0000000 --- a/bin/newsbin +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/newsbin,v 1.7 2004/10/04 13:56:50 vapier Exp $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "Nothing defined to do." - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -dosbin "${T}/${2}" diff --git a/bin/pkgmerge b/bin/pkgmerge deleted file mode 100755 index 1628d39..0000000 --- a/bin/pkgmerge +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/python -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/pkgmerge,v 1.8 2004/10/04 13:56:50 vapier Exp $ - -import sys,os,string -sys.path = ["/usr/lib/portage/pym"]+sys.path - -import portage,xpak - -#build our package digraph - -def digraph_create(digraph,mykey,myprovides=None): - mytbz2=xpak.tbz2(bintree.getname(mykey)) - mydep=mytbz2.getelements("RDEPEND") - digraph.addnode(mykey,myprovides) - mycheck=roottree.depcheck(string.join(mydep," ")) - if mycheck[0]==0: - print "!!! Error: RDEPEND string formatted incorrectly:",mydep - return None - for x in mycheck[1]: - mymatch=bintree.dep_bestmatch(x) - if mymatch=="": - print "!!! Error: can't resolve dependency --",x - return None - if not digraph_create(digraph,mymatch,mykey): - return None - return 1 - -#main program loop -myvirtuals=portage.getvirtuals(portage.root) -roottree=portage.vartree(portage.root,myvirtuals) -bintree=portage.binarytree("/",myvirtuals) -pretend=0 -if len(sys.argv)>=2: - if sys.argv[1]=="--pretend": - print "These are the packages that I would merge, in order:" - pretend=1 - del sys.argv[1] - elif sys.argv[1]=="--help": - print "Usage: pkgmerge [--pretend] pkg1.tbz2 [pkg2.tbz2]..." - sys.exit(1) -for mypkg in sys.argv[1:]: - digraph=portage.digraph() - mytbz2=xpak.tbz2(mypkg) - mykey=mytbz2.getelements("CATEGORY")[0]+"/"+os.path.basename(mypkg)[:-5] - digraph_create(digraph,mykey) - while not digraph.empty(): - mykey=digraph.firstzero() - if not mykey: - print "!!! Error: circular dependencies" - sys.exit(1) - mytbz2=bintree.getname(mykey) - if pretend: - print mytbz2 - else: - portage.pkgmerge(mytbz2,portage.settings["ROOT"]) - digraph.delnode(mykey) - diff --git a/bin/pkgmerge.new b/bin/pkgmerge.new deleted file mode 100755 index 40ab737..0000000 --- a/bin/pkgmerge.new +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/python -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/pkgmerge.new,v 1.7 2004/10/04 13:56:50 vapier Exp $ - -import os,string,sys -sys.path = ["/usr/lib/portage/pym"]+sys.path - -import portage,xpak - -#beautiful directed graph functions - -def dig_addnode(digraph,mykey,myprovides): - if not digraph.has_key(mykey): - if myprovides==None: - digraph[mykey]=[0,[]] - else: - digraph[mykey]=[0,[myprovides]] - digraph[myprovides][0]=digraph[myprovides][0]+1 - return - digraph[mykey]=[digraph[mykey][0],digraph[mykey][1].append(myprovides)] - -def dig_delnode(digraph,mykey): - if not digraph.has_key(mykey): - return - for x in digraph[mykey][1]: - digraph[x][0]=digraph[x][0]-1 - del digraph[mykey] - -def dig_firstzero(digraph): - for x in digraph.keys(): - if digraph[x][0]==0: - return x - return None - -#build our package digraph - -def digraph_create(digraph,mykey,myprovides=None): - mytbz2=xpak.tbz2(bintree.getname(mykey)) - mydep=mytbz2.getelements("RDEPEND") - dig_addnode(digraph,mykey,myprovides) - mycheck=roottree.depcheck(string.join(mydep," ")) - if mycheck[0]==0: - print "!!! Error: RDEPEND string formatted incorrectly:",mydep - return None - for x in mycheck[1]: - mymatch=bintree.dep_bestmatch(x) - if mymatch=="": - print "!!! Error: can't resolve dependency --",x - return None - if not digraph_create(digraph,mymatch,mykey): - return None - return 1 - -#main program loop -myvirtuals=portage.getvirtual(portage.root) -roottree=portage.vartree(portage.root,myvirtuals) -bintree=portage.binarytree("/",myvirtuals) -pretend=0 -if len(sys.argv)>=2: - if sys.argv[1]=="--pretend": - print "These are the packages that I would merge, in order:" - pretend=1 - del sys.argv[1] - elif sys.argv[1]=="--help": - print "Usage: pkgmerge [--pretend] pkg1.tbz2 [pkg2.tbz2]..." - sys.exit(1) -for mypkg in sys.argv[1:]: - digraph={} - mytbz2=xpak.tbz2(mypkg) - mykey=mytbz2.getelements("CATEGORY")[0]+"/"+mypkg[:-5] - digraph_create(digraph,mykey) - while (len(digraph)): - mykey=dig_firstzero(digraph) - if not mykey: - print "!!! Error: circular dependencies" - sys.exit(1) - mytbz2=bintree.getname(mykey) - if pretend: - print mytbz2 - else: - portage.pkgmerge(mytbz2) - dig_delnode(digraph,mykey) - diff --git a/bin/pkgname b/bin/pkgname deleted file mode 100755 index ef0e193..0000000 --- a/bin/pkgname +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/python -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/pkgname,v 1.9 2004/11/10 03:10:56 genone Exp $ - -import sys -sys.path = ["/usr/lib/portage/pym"]+sys.path - -import portage - -a=portage.portage_versions.pkgsplit(sys.argv[1]) -if a: - print a[0],a[1],a[2][1:] - sys.exit(0) -else: - print '!!! Error: package name is invalid.' - sys.exit(1) diff --git a/bin/portage_gpg_update.sh b/bin/portage_gpg_update.sh deleted file mode 100755 index fc31ae7..0000000 --- a/bin/portage_gpg_update.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/portage_gpg_update.sh,v 1.2 2004/10/04 13:56:50 vapier Exp $ - -wget -O - http://www.gentoo.org/proj/en/devrel/roll-call/userinfo.xml | sed 's:.*\(0x[0-9a-fA-F]\+\)[^0-9a-fA-F].*:\1:gp;d' | xargs gpg -vvv --no-default-keyring --no-permission-warning --homedir /usr/portage/metadata --keyring "gentoo.gpg" --keyserver subkeys.pgp.net --recv-keys &> gpg.log diff --git a/bin/portageq b/bin/portageq deleted file mode 100755 index d749318..0000000 --- a/bin/portageq +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/python -O -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/portageq,v 1.15 2004/12/07 15:06:41 jstubbs Exp $ - -import sys -sys.path = ["/usr/lib/portage/pym"]+sys.path - -import portage,types, portageq - - -#----------------------------------------------------------------------------- -# -# DO NOT CHANGE CODE BEYOND THIS POINT - IT'S NOT NEEDED! -# - -def usage(): - rev="$Revision: 1.15 $" - ver=rev.split(' ')[1] - print ">>> Portage information query tool -- version "+ver - print ">>> Usage: portageq [