Added a RmFlag function to remvoe the loop flag, this should prevent any errors or wierd behaviour because of the loop flag being used
at mutiple stages in both SmartUnpack and SmartConfigure.
Improved errors and messages in general and improved the comments.
Removed quite a bit of code I used while learning about how apt handles things.
Added some extra checks and warnings relevent for Immediate Configuration.
Removed a wierd section I put in to prevent a segfault at 724+, this appears no longer to be needed.
Fixed a bug on line 623, I picked this up after seeing SmartUnpack trying to remove packages once they were confiured to solve Conflicts with the previous version!
Luckily EarlyRemove is sane, and properly checks, so I think this was just cosmetic.
Also fixed a bug on line 374 with SmartUnpack not checking if a dependancy has been removed, this bug was definately harmful.
Only stop on SigInt if the system state is right (still needs more testing).
More inprovements to the package manager to prevent packages from being configured
twice.
Only allow interupts when using, Immediate-Configure-All.
TODO for dpkgpm:
Useful messages about the interupt, what was done to what packages and what was not done to what packages.
Only fail when the system is in a clean state, at the moment it will fail either a configure or install run.
SmartConfigure and SmartUnPack have got smarter! The full descriptions of what they now do is in the apt-pkg/packagemanager.cc file.
The short version is that they will both put the system in a state where there operation can be achived, this involves calling
themselves and each other recursively. Because SmartConfigure can now configure a package and all its dependancies itself, there is
no current need for DepAdd (at least in packagemanager.cc), SmartConfigure also performs the function of the short lived VerifyConfigure
as it checks through all the dependancies before performing configuration.
Another change is to use the ConfigureAll method in OrderInstall to clean up any packages left unconfigured during ImmConfigureAll.
This is necessary to inprove the safety of ImmConfiguration and because of the new SIGINT functionality of dpkgpm.cc relies on no
packages being left unconfigured between pairs of dpkg calls. While writing this commit log, I have realised that the SIGINT stuff
is a prototype and not ready to be used yet as I have only tested it twice.
Added a APT::Immediate-Configure-All option to enable imediate configuration for all packages.
Began adding to the SmartUnpack method to prevent dependancy loops breaking apt.
[ David Kalnischkies ]
* doc/makefile:
- create doxygen directory to avoid depending on magic (Closes: #628799)
* cmdline/apt-key:
- explicitly state that net-update is not supported if no url is set
- require to be root for add, rm, update and net-update
- clarify update vs. net-update in different distros (Closes: #632043)
* debian/apt.symbols:
- forgot 'mips' in the list for all architecture dependent symbols
- comment out gcc-4.5 specific symbols as gcc-4.6 is now default
- the symbol for PrintStatus() is architecture dependent
* apt-pkg/policy.cc:
- do not segfault in pinning if a package with this name doesn't exist.
Thanks to Ferdinand Thommes for the report!
- Defaults is a vector of Pin not of PkgPin
- ensure that only the first specific stanza for a package is used
- save all stanzas which had no effect in Unmatched
- allow package:architecure in Package:
- remove invalid pkgcache.bin and rebuild it if possible
- log reinstall commands in history.log
* apt-pkg/init.cc:
- don't set deprecated APT::Acquire::Translation, thanks Jörg Sommer!
* cmdline/apt-config.cc:
- show Acquire::Languages and APT::Architectures settings
in 'dump' (Closes: 626739)
* apt-pkg/orderlist.cc:
- ensure that an old version of a package with a provides can
never satisfy a dependency of a newer version of this package
[ Michael Vogt ]
* methods/mirror.cc:
- ignore lines starting with "#" in the mirror file
- ignore non http urls in the mirrors
- append the dist (e.g. sid, wheezy) as a query string when
asking for a suitable mirror
* apt-pkg/deb/deblistparser.cc:
- include all known languages when building the apt cache
(LP: #794907)
* apt-pkg/deb/debindexfile.cc:
- remove some no longer valid checks for "TranslationsAvailable()"
[ Kenneth Solbø Andersen ]
* apt-pkg/deb/dpkgpm.cc:
- set permissions of term.log to root.adm and 644 (LP: #404724)
[ Chris Leick ]
* various typo and syntax corrections in doc/*.xml
[Chris Baines]
* Began to fix DepAdd for imediate configuration of all packages
The modification to orderlist.cc is from a patch DonKult (David) gave me, The modifications to the packagemanager should fix the test-provides-gone-with-upgrade testcase.
Michael Vogt [Thu, 30 Jun 2011 07:33:19 +0000 (08:33 +0100)]
* doc/makefile:
- create doxygen directory to avoid depending on magic (Closes: #628799)
* cmdline/apt-key:
- explicitly state that net-update is not supported if no url is set
- require to be root for add, rm, update and net-update
- clarify update vs. net-update in different distros (Closes: #632043)
* debian/apt.symbols:
- forgot 'mips' in the list for all architecture dependent symbols
- comment out gcc-4.5 specific symbols as gcc-4.6 is now default
- the symbol for PrintStatus() is architecture dependent
* apt-pkg/policy.cc:
- do not segfault in pinning if a package with this name doesn't exist.
Thanks to Ferdinand Thommes for the report!
- Defaults is a vector of Pin not of PkgPin
- ensure that only the first specific stanza for a package is used
- save all stanzas which had no effect in Unmatched
- allow package:architecure in Package:
Michael Vogt [Thu, 9 Jun 2011 11:24:36 +0000 (13:24 +0200)]
apt-pkg/deb/debindexfile.cc: remove tests for TranslationsAvailable() as this will break adding translations to the cache if the current environment does not include the language (e.g. LANG=C but german translations). testing for existance of the file is the better approach
apt-pkg/acquire-item.cc: Reject files known to be invalid (LP: #346386) (Closes: #195301)
This commit deals with the following cases:
- First section of index file (Packages,Sources,Translation) without Package field
- Signed release files without GPG data (NODATA)
- i18n/Index files without hash sums
Handling unsigned Release files is more complicated, and the example code
using indexRecords is disabled as it can reject correct Release files
without hashes. How we can reliably check unsigned Release files is
another question, and not urgent anyway, as it should have no
dramatic effect (we could check that it is a valid RFC-822 section,
but that's a bit too long to write)
remove invalid pkgcache.bin and rebuild it if possible
The next invocation of APT tried to load an outdated big
(and possible io-cold) file just to end up rebuilding it
(possibly only as non-root in memory again and again), so
we remove it here and if we have a srcpkgcache we are
going to rebuild, too.
* apt-pkg/packagemanager.cc:
- ensure for Multi-Arch:same packages that they are unpacked in
lock step even in immediate configuration (Closes: #618288)
rewrite new and previously satisfied important dependency detection in
MarkInstall to be a bit more easy to read and possibily a bit faster -
and add a small testcase for these situations to ensure the same behaviour
move the broken dependency detection above the new recommends detection
as if the recommends can't be installed there is not much sense in checking
if it a new recommends or not
* apt-pkg/depcache.cc:
- Really release action groups only once (Closes: #622744)
* apt-pkg/acquire-item.cc:
- Only try to rename existing Release files (Closes: #622912)