0install 2.9

Thomas Leonard <[email protected]>
Newsgroups gmane.comp.file-systems.zero-install.devel
Message-ID <CAG4opy-wY0zFZLd6=-F0h_7RK3Hvoacz+uChMM06=gEZbD2n_Q@mail.gmail.com>
0install 2.9 is now available (source and generic binaries):

  http://0install.net/install-source.html
  http://0install.net/install-linux.html#generic


Since 2.8:

New features

- Added "0install select --may-compile". This can be used by tools
such as 0compile to decide what components to build in order to run a
program. When the may-compile option is set, we make a fake binary for
each source impl, representing the binary that could be produced by
compiling it. We use the same logic that 0compile uses to generate the
binary XML. In future, we should be able to get 0compile to use this
code directly. This is based on Tim Cuthbertson's autocompile patches.


Changes

- Requirements: only store values which differ from their default (Tim
Cuthbertson).

- 0install now knows that ARM 7 is backwards compatible with ARM 6.


Bug fixes

- Fix for mtime comparison with OCaml >= 4.02.2. We were rounding to
the nearest integer to store it, but comparing with full precision.
Now that OCaml reports fractions of a second, this meant that the test
always failed and we always regenerated our cache of available
distribution packages on some platforms.

- If deleting gpg's temporary file fails, just log a warning.
Otherwise, we mask the underlying error. Reported by Bastian Eicher.

- GUI: delay starting the solve until the box is ready. Progress
updates from the solve would get queued. Then the box would open and
see that the solve had finished and highlight any problems. Then the
queued updates would arrive and remove the highlighting again.

- Fixed progress display during "0install search". We only displayed
the console progress indicator when the GUI wasn't available, even
though there's no GUI for searching, and we didn't clear it before
displaying the search results.

- Fixed refreshing of component boxes in the GUI. We stored the role
when the box was opened and then always continued to use that. But now
the role includes the impl_provider we need to update it for each new
set of results.

- Fixed impl_provider's caching of implementations. We first collected
all implementations of an interface, cached this result, and then
filtered depending on whether we wanted source or binary
implementations. However, collecting all implementations requires
deciding which feeds to look at, and this requires knowing whether we
want source or not. Therefore, if we wanted to select both source and
binaries of the same interface, we might incorrectly fail to consider
some feeds.


Build fixes

- Fixed compile error when Sha module isn't available.

- Disable safe_string for some files using Lwt. The Lwt API has
changed in an incompatible way. Reported by Jeremy Yallop:
https://github.com/ocaml/opam-repository/pull/3456

- Add fake gpg-agent for unit-testing with GnuPG 2.1. GnuPG now
requires an agent, even though it doesn't need it for anything and
there's no way to stop it trying to connect to it. See:
http://stackoverflow.com/questions/27459869/how-to-stop-gpg-2-1-spawning-many-agents-for-unit-testing


Code clean-ups

- Moved generate_feed_description to Gui. This is something that
should be shared between plugins.

- Made Distro.is_installed function a method: is_installed_quick.
Avoids the need to take a config argument and avoids the need to
expose the 'is_installed' method.

- Add local opam file. This makes it easy to get the build
dependencies through opam automatically.

- Improved type-safey of Impl.qdom.

- command_qdom is now an Element.t.

- Simplified tests with a default scope filter.

- Report better errors if solver unit-test input is wrong.

- Use Impl.make_command helper in more places.

- Removed unused new_attr argument to make_command.

- Added helper function Impl.local_dir_of.

- Expose Feed.process_group and Element.make_impl functions.

- Made Impl_provider.check_acceptability a top-level function.

- Moved is_available definition out of method.

- Made compare_impls_full a top-level function.

- Added abstract types Arch.machine and Arch.os.

- Moved scope_filter to its own module.

- Tidied up impl_provider API.

- Added `binary_of source impl_type.

- Simplified SELECTIONS module type.

- Removed unused use_gui argument to GUI plugins.

- In unit-tests, display Would_exec/Would_spawn exceptions nicely.

- feed.ml: extract toplevel create_impl and process_group_properties
functions (Tim Cuthbertson).

- Test 0install with Travis CI.


-- 
Dr Thomas Leonard        http://roscidus.com/blog/
GPG: DA98 25AE CAD0 8975 7CDA  BD8E 0713 3F96 CA74 D8BA

------------------------------------------------------------------------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.