
  Deepsolver changes log

	0.3.4 (2013-08-01)

Minor fixes:
- altlinux-release.provide is moved to altlinux-release.conf;
- sisyphus.repo is moved to sisyphus.conf.

Critical bug fix in PkgSnapshot::rearrangeNames():
-      Deepsolver::PkgSnapshot::Relation r = snapshot.relations[i];
+      Deepsolver::PkgSnapshot::Relation& r = snapshot.relations[i];

New utilities features:
- ds-install and ds-remove get '--files' and '--urls' options to view packages lists.

New utilities:
- ds-snapshot utility is added for package database viewing;
- OperationCore::printSnapshot() method is added.

New PkgSnapshot functions:
- removeEqualPkgs() function is added;
- printContent() function is added;
- Minor bug fixes.

AbstractPackageScope interface change:
- getDesignation() for IdPkgRel method is added.

New configuration options:
- core.stop-invalid-installed-pkg;
- core.stop-invalid-repo-pkg.

Other changes:
- config fragments are read only if they have '.conf' suffix;
- Console output clean up;
- URLs checking on config parsing is added;
- ConfigException::InvalidUrl type is added;
- New methods of TransactionIterator are added for access to internal information;
- Minor bug fixes with memory management.

ConfigAdapter changes:
- Integer value type support is added;
- New approach to configuration files errors indication;
- More information about errors (always option path is included, almost always has file location);
- Support for custom checks is added (URLs and so on).

Stronger checks of the packages coming to core:
- Checks are added that installed and repository packages are correct;
- core.stop-invalid-installed-pkg and core.stop-invalid-repo-pkg configuration options are added to disable
  checking if needed;
- OperationException::InvalidInstalledPkg and OperationException::InvalidRepoPkg errors are added.

New features:
- Remote files with URL like "file://" are accessed without libcurl;
- Downloading progress is shown only if there are remote files to fetch with libcurl;
- Progress information is cleaned up.

Segmentation faults fixes:
- One in PkgSnapshot in logMsg() call;
- The similar bug in loading process.

Bug fixes:
- Fixed bug in saving of packages relations without version;
- Fixed bug in string buffer size calculation;
- Fixed --dry-run command line option processing;
- Fixed string buffer length calculation in PkgSnapshot::Enhance().

New functions and methods:
- "score" calculation for package snapshot (useful for consistency control);
- static FilesFetch::isLocalFileUrl() is added.

Deep code refactoring with following main changes:
- All code is inside of Deepsolver namespace now;
- No more subdirectories for libdeepsolver.so sources;
- No more PackageScopeContent component with all its auxiliary classes (builder and loader);
- PkgSnapshot structure is implemented instead of PackageScopeContent;
- New approach to memory leaks prevention (AutoReleaseStrings class is added);
- Old ConfiggCenter class is divided onto new ConfigCenter class and ConfigAdapter class.

Minor changes:
- DeepsolverException.h is moved to exceptions.h;
- DeepsolverTypes.h is moved to types.h;
- DefaultValues.h is moved to config.h;
- PkgId type is now more preferable than obsolete PackageId;
- BAD_PACKAGE_ID and BAD_VAR_ID constants are renamed to BadPkgId and BadVarId.

0.3.3 (2013-05-15)

Minor fixes:
- ds-repo, ds-patch and ds-provides utilities now have --quiet(-q) command line option 
  suppressing any output except of warnings and errors;
- ds-patch utility gets provides filtering feature 
  (can be enabled with --provides(-p) command line key).

0.3.2 (2013-05-13)

Repository index building fixes:
- External provides references can be specified explicitly 
  (key "--external-provides" for ds-repo and ds-provides);
- Sources packages file is now also read during external provides references collecting.

0.3.1 (2013-03-22)

Minor fixes:
- repo index directory is changed from base.component to base/ds.component;
- default repository in config files is changed to ALT Linux Sisyphus;
- --nothing command line key is changed to --dry-run.

0.3.0 (2013-03-04)

General:
- RPM transaction code is added;
- package fetching is added;
- command line interface is improve to reflect changes above.

0.2.11 (2013-02-22)

General:
- package lists printing code goes from lib/ to programs/;
- added configuration parameters for packages cache directory and lists printing;
- OperationCore::transaction() now returns TransactionIterator object;
- package fetching implemented;
- INdexFetch class renamed to FilesFetch (since it is also used for package fetching).

	0.2.10 (2013-02-17)

General:
- significantly improved solver (details below);
- ds-require utility for requires processing is added.

Transaction processing:
- GeneralSolver class is removed;
- TaskTranslator class is added partially replacing GeneralSolver;
- AbstractTaskTranslatorOutput with its descendants
  (TaskSolver, SatWriter and TaskTranslatorOutputOptimizer) is added;
- postponed require processing technique is added (PostponedRequire class).

Other:
- technical assignment document is removed from source code tree.

0.2.5 (2012-12-26)

Applications:
- ds-remove utility added;
- ds-conf utility added;
- ds-install deeply improved;
- ds-update deeply improved;
- TransactionProgress class added.

Configuration:
- "repo" section processing deeply improved;
- "provide" section support added.

GeneralSolver:
- a lot of bugfixes;
- Provide priority information is now takes through new TaskSolverData struct.

Other:
- AbstractPackageScope class added;
- all version operations is now go through AbstractPackageBackEnd class;
- rpm interaction code is deeply restructured and cleaned up.

0.2.0 (2012-11-15, my mother birthday release!)

Transaction processing:
- libminisat interface added;
- partially functioning GeneralSolver for SAT construction added;
- StrictSolver previously used for 2-SAT construction removed;
- previously used code for 2-SAT managing removed.

Interfaces:
- PackageInfoProcessor interface added;
- AbstractSatSolver interface added.

Documentation:
- New text for Russian user manual.

Programs:
- ds-install utility added;
- ds-update utility added.
- obsolete ds utility removed.

Other:
- Major edit of ConfigCenter;
- obsolete class TextFormatReader removed;
- obsolete class CmdLineParser removed.

0.1.1 (2012-10-16)

ds-patch utility:
- --add-list and --del-list command line options support added.

0.1.0 (2012-10-11)

IndexCore changes:
- IndexCore::fixReferences() method renamed to refilterProvides();;
- Regular expressions support added for requires filtering.

Utilities:
- ds-references utility renamed to ds-provides.

General:
- Info file error messages fixed;
- Initial template for Russian user manual added;
- Large number of various bug fixes during testing process.

0.0.9 (2012-09-20)

New utilities in programs/ directory:
- ds-patch for adding/removing packages in index;
- ds-references - for provides references fixing.

IndexCore changes:
- External references collecting can be made from index files
in addition to package files reading;
- Index patching algorithm implemented;
- Provide reference fixing algorithm implemented;
- Various improvements in text format index processing reflecting changes mentioned above.

Utilities:
- New command line parser with arguments clustering support;
- Md5-files processing improvements;
- Gzip interface naming fixing.

(2012-08-20)

Implementation of repo index patching in progress

Obsolete classes removed:
- AbstractWarningHandler;
- RepoIndexTextFormatWriter;
- TaskPreprocessor.

New classes added:
- PkgSection;
- TextFormatSectionReader.

New values in repository info file:
- filter_provides_by_dirs;
- filter_provides_by_refs;
- exclude_requires;
- changelog_binary;
- changelog_sources.

General:
- General reorganization of IndexCore;
- genbasedir utility renamed to ds-repo;
- RepoIndexParams renamed to RepoParams;
- Text files interface removed.

(2012-06-26)

StrictSolver:
- cascade package removing implemented;
- conflicts processing for packages in repo implemented;
- search for conflicts among installed packages implemented;
- first stage task checking implemented.

OperationCore:
- building the structures for search dependent and conflicted packages among installed.

PackageScope:
- new methods to provide required data for new StrictSolver code;
- clean up.

General:
- IdPkgRel class added.

(2012-06-14)

New components:
- first configuration file parser;
- configuration information center;
- repository index fetching.

Transaction processing:
- package scope content optimized to increase search speed;
- the algorithm for adding list of installed packages to list of available packages;
- optimized structure for searching dependent and conflicted packages among installed;
- rpmdb reading code;
- first code for strict solver based on previous dependencies closure processor.

Information utilities and user interface:
- initial information core added;
- function to get list of installed and available by repo packages;
- classes for user messages construction;
- command line parser.

Behaviour changes:
- repository index reading code now handles repository components;
- 'ds update' command now reads configuration file and fetches files by their URL.

Auxiliary components:
- directory erasing implementation;
- readahead() interface;
- libcurl support added.

General:
- libtool support added;
- source files inside of lib/ moved to several directories: repo/, io/, transact/, utils/;
- regressions tests temporarily disabled.

Compilation scripts changes:
- depcomp, install-sh, missing removed;
- autogen.sh added.

0.0.1 (2012-03-11)

First alpha release
