summaryrefslogtreecommitdiff
path: root/apt-pkg/edsp
AgeCommit message (Collapse)AuthorFilesLines
2015-11-04wrap every unlink call to check for != /dev/nullDavid Kalnischkies2-6/+4
Unlinking /dev/null is bad, we shouldn't do that. Also, we should print at least a warning if we tried to unlink a file but didn't manage to pull it of (ignoring the case were the file is /dev/null or doesn't exist in the first place). This got triggered by a relatively unlikely to cause problem in pkgAcquire::Worker::PrepareFiles which would while temporary uncompressed files (which are set to keep compressed) figure out that to files are the same and prepare for sharing by deleting them. Bad move. That also shows why not printing a warning is a bad idea as this hide the error for in non-root test runs. Git-Dch: Ignore
2015-11-04sanify API to get 'the' candidate versionDavid Kalnischkies1-0/+9
This was discussed a while ago on #debian-apt and now that I see myself making this mistake lets bite the bullet and fix it in the easy way out version: Using a new name which fits with a similar named setter and deprecate the old method instead of 'hostily' changing API. Closes: #803471
2015-09-14use a less generic special trigger filename for stdinDavid Kalnischkies2-3/+3
Git-Dch: Ignore
2015-09-14implement autobit and pinning in EDSP solver 'apt'David Kalnischkies4-8/+94
The parser creates a preferences as well as an extended states file based on the EDSP scenario file, which isn't the most efficient way of dealing with this as thes text files have to be parsed again by another layer of the code, but it needs the least changes and works good enough for now. The 'apt' solver is in the end just a test solver like dump.
2015-08-17Cleanup includes after running iwyuMichael Vogt3-8/+0
2015-08-11Annotate more methods with APT_OVERRIDEJulian Andres Klode1-1/+1
Gbp-Dch: ignore Reported-By: g++ -Wsuggest-override Thanks: g++ -Wsuggest-override
2015-08-10parse packages from all architectures into the cacheDavid Kalnischkies2-2/+2
Now that we can dynamically create dependencies and provides as needed rather than requiring to know with which architectures we will deal before running we can allow the listparser to parse all records rather than skipping records of "unknown" architectures. This can e.g. happen if a user has foreign architecture packages in his status file without dpkg knowing about this architecture (or apt configured in this way). A sideeffect is that now arch:all packages are (correctly) recorded as available from any Packages file, not just from the native one – which has its downsides for the resolver as mixed-arch source packages can appear in different architectures at different times, but that is the problem of the resolver and dealing with it in the parser is at best a hack (and also depends on a helpful repository). Another sideeffect is that his allows :none packages to appear in Packages files again as we don't do any kind of checks now, but given that they aren't really supported (anymore) by anyone we can live with that.
2015-08-10elimate duplicated code in pkgIndexFile subclassesDavid Kalnischkies3-45/+54
Trade deduplication of code for a bunch of new virtuals, so it is actually visible how the different indexes behave cleaning up the interface at large in the process. Git-Dch: Ignore
2015-08-10add volatile sources support in libapt-pkgDavid Kalnischkies1-2/+1
Sources are usually defined in sources.list (and co) and are pretty stable, but once in a while a frontend might want to add an additional "source" like a local .deb file to install this package (No support for 'real' sources being added this way as this is a multistep process). We had a hack in place to allow apt-get and apt to pull this of for a short while now, but other frontends are either left in the cold by this and/or the code for it looks dirty with FIXMEs plastering it and has on top of this also some problems (like including these 'volatile' sources in the srcpkgcache.bin file). So the biggest part in this commit is actually the rewrite of the cache generation as it is now potentially a three step process. The biggest problem with adding support now through is that this makes a bunch of previously mostly unusable by externs and therefore hidden classes public, so a bit of further tuneing on this now public API is in order…
2015-08-10add c++11 override marker to overridden methodsDavid Kalnischkies4-14/+16
C++11 adds the 'override' specifier to mark that a method is overriding a base class method and error out if not. We hide it in the APT_OVERRIDE macro to ensure that we keep compiling in pre-c++11 standards. Reported-By: clang-modernize -add-override -override-macros Git-Dch: Ignore
2015-08-10make all d-pointer * const pointersDavid Kalnischkies6-11/+7
Doing this disables the implicit copy assignment operator (among others) which would cause hovac if used on the classes as it would just copy the pointer, not the data the d-pointer points to. For most of the classes we don't need a copy assignment operator anyway and in many classes it was broken before as many contain a pointer of some sort. Only for our Cacheset Container interfaces we define an explicit copy assignment operator which could later be implemented to copy the data from one d-pointer to the other if we need it. Git-Dch: Ignore
2015-06-16add d-pointer, virtual destructors and de-inline de/constructorsDavid Kalnischkies5-1/+8
To have a chance to keep the ABI for a while we need all three to team up. One of them missing and we might loose, so ensuring that they are available is a very tedious but needed task once in a while. Git-Dch: Ignore
2015-06-15populate the Architecture field for PackageFilesDavid Kalnischkies1-1/+1
This is mainly visible in the policy, so that you can now pin by b= and let it only effect Packages files of this architecture and hence the packages coming from it (which do not need to be from this architecture, but very likely are in a normal repository setup). If you should pin by architecture in this way is a different question… Closes: 687255
2015-06-12store Release files data in the CacheDavid Kalnischkies3-7/+6
We used to read the Release file for each Packages file and store the data in the PackageFile struct even through potentially many Packages (and Translation-*) files could use the same data. The point of the exercise isn't the duplicated data through. Having the Release files as first-class citizens in the Cache allows us to properly track their state as well as allows us to use the information also for files which aren't in the cache, but where we know to which Release file they belong (Sources are an example for this). This modifies the pkgCache structs, especially the PackagesFile struct which depending on how libapt users access the data in these structs can mean huge breakage or no visible change. As a single data point: aptitude seems to be fine with this. Even if there is breakage it is trivial to fix in a backportable way while avoiding breakage for everyone would be a huge pain for us. Note that not all PackageFile structs have a corresponding ReleaseFile. In particular the dpkg/status file as well as *.deb files have not. As these have only a Archive property need, the Component property takes over this duty and the ReleaseFile remains zero. This is also the reason why it isn't needed nor particularily recommended to change from PackagesFile to ReleaseFile blindly. Sticking with the earlier is usually the better option.
2014-11-08mark internal interfaces as hiddenDavid Kalnischkies5-9/+7
We have a bunch of classes which are of no use for the outside world, but were still exported and so needed to preserve ABI/API. Marking them as hidden to not export them any longer is a big API break in theory, but in practice nobody is using them – as if they would its a bug.
2014-09-27drop stored StringItems in favor of in-memory mappingsDavid Kalnischkies1-1/+1
Strings like Section names or architectures are needed vary often. Instead of writing them each time we need them, we deploy sharing for these special strings. Until now, this was done with a linked list of strings in which we would search, which was stored in the cache. It turns out we can do this just as well in memory as well with a bunch of std::map's. In memory means here that it isn't available anymore if we have a partly invalid cache, but that isn't much of a problem in practice as the status file is compared to the other files we parse very small and includes mostly duplicates, so the space we would gain by storing is more or less equal to the size of the stored linked list…
2014-06-18cleanup datatypes mix used in binary cacheDavid Kalnischkies1-1/+1
We had a wild mixture of (unsigned) int, long and long long here without much sense, so this commit adds a few typedefs to get some sense in the typesystem and ensures that a ID isn't sometimes computed as int, stored as long and compared with a long long… as this could potentially bite us later on as the size of the archive only increases over time.
2014-03-13follow method attribute suggestions by gccDavid Kalnischkies3-6/+6
Git-Dch: Ignore Reported-By: gcc -Wsuggest-attribute={pure,const,noreturn}
2014-03-13cleanup headers and especially #includes everywhereDavid Kalnischkies6-17/+42
Beside being a bit cleaner it hopefully also resolves oddball problems I have with high levels of parallel jobs. Git-Dch: Ignore Reported-By: iwyu (include-what-you-use)
2014-03-13warning: unused parameter ‘foo’ [-Wunused-parameter]David Kalnischkies3-6/+6
Reported-By: gcc -Wunused-parameter Git-Dch: Ignore
2012-06-16do not dereference the storage for the unique strings as the pointer canDavid Kalnischkies1-1/+2
change at the time of writing the strings, so first store it temporary and then save the index in the (possibily new) pointer location
2012-04-23* edsp/edspsystem.cc:David Kalnischkies1-1/+1
- check with RealFileExists for scenario file as otherwise a directory like one provided with RootDir triggers the usage of EDSP
2011-12-15atleast libapt should announce to itself that it is clean…David Kalnischkies1-2/+2
(and be it if it tries to announce that…)
2011-12-13revert 2184.1.3: forward declaration instead of headersDavid Kalnischkies2-0/+10
The breakage is just to big for now, so guard the change with #ifndef APT_8_CLEANER_HEADERS and be nice to library users
2011-12-10* apt-pkg/contrib/fileutl.{h,cc}:David Kalnischkies1-5/+2
- implement a ModificationTime method for FileFd
2011-09-19use forward declaration in headers if possible instead of includesDavid Kalnischkies3-4/+3
2011-09-19do not pollute namespace in the headers with using (Closes: #500198)David Kalnischkies4-10/+10
2011-09-13reorder includes: add <config.h> if needed and include it at firstDavid Kalnischkies3-1/+8
2011-06-08add some more dpointer placeholdersMichael Vogt2-0/+6
2011-05-02parse correctly the Hold: lines into Pkg->SelectedState = HoldDavid Kalnischkies1-2/+5
2011-03-31rename edspwriter to straight edsp in toplevel as it does more thanDavid Kalnischkies2-192/+0
just writing stuff… it also reads and can work for both: - APT talking to an external solver - an external solver (understanding EDSP) talking to APT
2011-03-31add the methods we will need to write to make working with EDSP possibleDavid Kalnischkies2-2/+24
2011-03-31strip the Dir::state from the config name as it will never be thereDavid Kalnischkies1-4/+4
2011-03-31parse the state of the package from the scenario file correctlyDavid Kalnischkies1-30/+8
2011-03-31rename the 'universe' to 'scenario' to reflect the naming in the draftDavid Kalnischkies5-11/+11
2011-03-31add a special scenario filename for using stdinDavid Kalnischkies2-3/+14
2011-03-30be able to write solutions, tooDavid Kalnischkies2-0/+21
2011-03-30add a first round of stuff needed for talking between APT and solversDavid Kalnischkies8-0/+550
based on a very early draft for EDSP by Stefano APT can now write a scenario as well as load most stuff from it.