opkg-0.3.2
==========

- Remove configure script --enable-solver. To enable libsolv, add config option
  --with-libsolv.

- Add version constrain support for Replaces (issue 8931)

- Add targeted install support, enabling installation of a specific version of
  a package when multiple available (issue 76).

- Remove functions no longer used.

- Fix compare-version functionality (issue 166).

- Add disable_intercepts option (issue 8837)

- Add support for UTF-8 Package files (issue 9557)

Libsolv:

- Add pkg-config support

- Add --download-first option

- Fix crash when using more than 4 arch config options.

Internal Solver:

- Split internal solver from install/upgrade/remove transactions. Solving now
  happens first, instead of at the same time as installation/removal. New
  architecture fix issues 156 and 162.

- Abort installation if pkg A B is installed, and pkg A (Provides B, 
  Conflicts B) is set to be installed (issue 9533)

- Skip dependency if a Provider is already installed (issue 9059)

- Fix status file corruption (issue 8601)

- Mark top level package as not AutoInstalled, when circular dependencies are
  present (issue 167)

- Fix upgrade error when package A replaces provider B, and B is provided by A.

opkg-0.3.1
==========

- Libsolv backend support. Add --enable-solver=libsolv config option to have opkg
  use the external solver libsolv. This feature is fully functional, but in 
  experimental stage.

- Cache filenames are now based on the path md5sum instead of the full path, to
  fix errors on long filepaths.

- Fix several memory leaks

- Add --host-cache-dir and --cache-dir command line flag to change the cache directory 
  location

- Fix error when processing empty Package.gz files.

opkg-0.3.0
==========

- Fix exit status when upgrading multiple packages with inter-dependencies
  (issue 154).

opkg-0.3.0-rc2
==============

- Ensure `libopkg/xfuncs.h`, `tests/` and `scripts/` are included in the release
  archive!

opkg-0.3.0-rc1
==============

- Reformat all C code so that it is easier to read (issue 119).

- Fix a few minor logic bugs.

- Tidy up `autogen.sh` and ensure it runs correctly with old versions of
  `aclocal` and non-bash shells.

- Rearrange test scripts into logical categories.

- Fix segfault when reinstalling a package with `force_reinstall` set (issue
  153).

opkg-0.3.0-rc0
==============

Dependency changes:

- opkg now depends on libarchive.

opkg:

- Rename `opkg-cl` to `opkg`.

- Add config option `autoremove` equivalent to `--autoremove` command line
  flag.

- Add config option `overwrite_no_owner` allowing un-owned files to be
  overwritten during package install (issue 99).

- Add config options `connect_timeout_ms`, `transfer_timeout_ms` and
  `follow_location` for use with CURL.

- Add command line option `--volatile-cache`.

- Add config option `no_install_recommends` and command line option
  `--no-install-recommends` to prevent the installation of packages listed as
  Recommends.

- Add command line option `--add-exclude` to add packages to an exclusion list.

- Add config option `ignore_maintainer` to silently ignore changes to files
  listed as Conffiles during a package upgrade (issue 128, part 2).

- Add config option `lock_file`. This option replaces the configure script
  argument `--with-opkglockfile`, allowing the lock file path to be specified at
  run-time.

- Add config options `info_dir` and `status_file`. Together with the config
  option `lists_dir` which existed previously, these options replace the
  configure script argument `--with-opkglibdir`, allowing the paths to the the
  data files and directories to be specified at run-time and with better
  granularity.

- Add config option `signature_type` allowing the signature verification backend
  to be selected at runtime. Both openssl and gpg support may not coexist within
  a single build of opkg.

- Add config option `check_pkg_signature` which allows individual package files
  to be signed and verified.

- Add config option `cache_local_files` to copy local files into the cache when
  downloading. If this option is not set, any URL with a `file://` is symlinked
  into the cache rather than downloaded (issue 139).

- Drop support for the old `lists_dir` config option syntax. The new syntax
  introduced in v0.2.3 must now be used.

- Add support for passing package filename arguments to `opkg info` (issue 125).

- Add support for implicit and explicit FTP-over-SSL when using the curl
  download backend.

- Add support for a https proxy using the curl download backend.

- Add support for http basic authentication when using the CURL download
  backend.

- Add support for ASCII-armored gpg signatures.

- Change the default cache directory to `/var/cache` (issue 131).

- Improve package and package feed verification.

- Improve download caching.

- Improve heuristics to determine whether an argument is a package name, remote
  URI or local path.

- Improve detection and handling of package conflicts.

- Improve handling of package flags (such as hold) and status.

- Improve proxy authentication when using the curl download backend.

- Allow interrupted downloads to be resumed when curl is enabled (issue 115).

- Only upgrade installed packages during `opkg upgrade` (issue 127).

- Correctly handle pacakges which list a virtual package in Provides, Replaces
  and Conflicts (issue 89).

- Ensure that the lock file can be created by creating the parent directory if
  it does not already exist (issue 110).

- Issue a NOTICE message not an ERROR message if files listed as Conffiles have
  been changed by the user prior to a package upgrade but the `force_maintainer`
  option has not been set (issue 128, part 1).

- Call prerm and postrm scripts on package upgrade (issue 104).

opkg-key:

- Only install `opkg-key` when gpg support is enabled.

- Add `opkg-key reset` command to remove all trusted keys.

- Add `opkg-key populate` command to populated the list of trusted keys using
  the contents of `/usr/share/opkg/keyrings`.

- Improve usage output of `opkg-key`.

update-alternatives:

- `update-alternatives` has been moved out of opkg and into opkg-utils.

Developer visible:

- Add functions `opkg_conf_get_option` and `opkg_conf_set_option`, direct
  access to `options` array is no longer allowed.

- Add documentation in `developer-doc` directory.

- Add `scripts/checkpatch.pl`, adapted from the Linux kernel. This script may be
  used to check that patches match the expected coding style and are free from
  some common mistakes.

- Remove confusing `from_upgrade` argument from `opkg_remove_pkg`.

- Drop the configure script arguments `--with-opkglockfile`, `--with-opkglibdir`
  and `--with-opkgtcdir`.

- Drop unnecessary source files under 'tests'.

- Deprecate the libopkg API defined in 'libopkg/opkg.c'. The configure script
  argument `--enable-libopkg-api` must be given to build this API.

- Improve testsuite with more tests, `make check` now runs the testsuite and
  exits non-zero if any test fails.

- Improve `autogen.sh` script for developers & maintainers, no longer runs
  configure directly. `./autogen.sh --clean` now removes all generated files
  without requiring configure to have been ran.

- Rename `conf` -> `opkg_config` to prevent global symbol clashes (issue 92).

- Allow pkg-config to be used to find the gpg-error library.

- Use libarchive to extract packages instead of hand-rolled tar, ar and gzip
  handling (adds dependency on libarchive).

- Remove libbb!

- Lots of code refactoring and minor improvements.

opkg-0.2.4
==========

- Improve handling of failed installs. Package status is now set to 'install
  reinst-required half-installed' and advice on how to rectify the situation is
  now given.

- Improve handling of upgrades, and fix detection of orphan packages. Orphan
  RECOMMENDS will now be removed during an upgrade, as well as orphan DEPENDS,
  if autoremove is enabled. However, packages which move from DEPENDS to
  RECOMMENDS will now be kept. (issue 144)

- Improve handling of package flags.

- Fix 'opkg whatconflicts'.

- Fix handling of '--force-removal-of-dependent-packages'. (issue 140)

- Fix selection between multiple providers of the same abstract package. (issue
  152)

- Fix uname and gname caching during package extraction.

- Fix verification of release metadata files.

- Fix possible segfault in 'pkg_hash_fetch_conflicts()'.

- Use 'sh' instead of 'bash' as the interpreter for 'opkg-check-config'.

opkg-0.2.3
==========

- New, optional syntax for setting lists_dir in config files. This new syntax
  will be required in v0.3.0 and later, the old syntax is now deprecated. The
  new syntax is:

    option lists_dir <path>

- New 'opkg-check-config' helper script to check and update config files.
  Currently this just changes the old lists_dir syntax to the new syntax.

- Add the 'combine' option and '--combine' command line argument. These options
  combine the installation or upgrade of multiple packages so that dependency
  evaluation is carried out for the whole transaction rather than separately for
  each package. This resolves the case of issue 124 where multiple packages
  depend on a common package with version constraints in such a way that all
  dependent packages need to be upgraded together.

- Don't select packages for installation which break the dependencies of already
  installed packages (issue 124).

- Fix epoch:version split so that a colon is only interpreted as the epoch
  separator in a version string if it is the first non-numeric character.

- Fix package flags after failed upgrade. This ensures that subsequent
  installs or upgrades do not consider the old package as scheduled for removal.

- Prevent packages listed in RECOMMENDS of an installed package from being
  removed automatically when autoremove is set.

- Fix 'extern "C"' wrapping in header files.

- Improve check for gpgme in configure script. Now either pkg-config or
  gpgme-config can be used to find gpgme.

- Fix internal usage of 'config.h', this ensures building opkg and its
  dependencies with large file support will work correctly.

- Fix internal memory leaks and suboptimal code.

opkg-0.2.2
==========

- Fix '--force-reinstall' flag so that it acts as an upgrade rather than
  removing possibly critical packages before reinstall (issue 71)

- Symlinks are now correctly removed during package uninstall (issue 91)

- Fixed help and manual pages to reflect that shell globs not true regexps are
  accepted by opkg (issue 107)

- The error message "no valid architecture" is no longer given when the
  architecture of a package is valid but incompatible with the current system.

opkg-0.2.1
==========

- Updated AUTHORS, README, CONTRIBUTING, etc

- Dropped "config.h" from the list of installed headers and removed checks for
  HAVE_* symbols from all installed headers

- Made libopkg usable from C++ via `extern "C"` wrapping

opkg-0.2.0
==========

- No changes

opkg-0.2.0-rc2
==============

- Remove libopkg/config.h from the distribution archive, it's generated by
  configure and doesn't belong in there

opkg-0.2.0-rc1
==============

- Added basic regression test suite

- Added man pages for opkg-cl and opkg-key

- Added the `overlay_root` config option

- Added the `--prefer-arch-to-version` option

- Added the `--force-postinstall` option

- Added the `list-changed-conffiles` command

- Added the `opkg_compare_versions` function to libopkg

- Allow external gunzip binary to be used to perform decompression if the
  OPKG_USE_VFORK environment variable is set

- Do not read /etc/opkg/*.conf if -f option is specified

- Detect and handle circular dependencies

- Replaced GPLv3+ licensed sha256 implementation with GPLv2+ implementation

- Use `ln -snf` rather than `ln -sf` in update-alternatives

- Many other bugfixes, improvements and cleanups...
