Limba 0.5.6

Limba is an experimental cross-distribution package installation scheme. It utilizes file system virtualization (overlayfs) to allow 3rd-party application bundles to run unmodified alongside distro packages. It's a possible successor to Listaller/AutoPackage, integrates with PackageKit and XDG desktop management facilities.

Tags c install packaging overlayfs linux
License GNU LGPL
State development

Recent Releases

0.5.629 Feb 2016 10:05 minor bugfix: Released: 2016-02-28 Features: Set path variables in the build venv as well. Cli: Allow ignoreing foundations when installing. Bcli: Print bundle name we are building before starting the build. Bcli: Allow ignoring foundations as well. Store the component-type in local package metadata. Add privilege helper for cache refreshes. Split the update function into smaller parts. Add privilege helper for update actions. Add experimental code to allow in-chroot Limba bundle installations. Builder: Place internal host link in /host. Bcli: Be more verbose when installing build-deps. Look for locally supplied dependencies first when installing. Always add architecture to auto-generated bundle filename. Bcli: Execute helper for installations in the build venv. Policy: Allow any active user to refresh the Limba cache. : PolKit rules file. Bcli: Ensure using external chroot envs works. Bcli: Work in usrmerged systems. Bcli: Flush stdout after printing a section header. Crash when someone passes NULL as package ID to LiManager. Various update-related builder: some more quirks in the build environment. Use libc functions instead of GIO for loading plaintext config.
0.5.521 Jan 2016 20:25 minor bugfix: Released: 2016-01-20 Features: Simplify symlink handling on installations. Make cleanup routines smarter and more "aggressive". Improve package-graph for use outside of LiInstaller. Testrunner: Use execv() to replace the process tree. Refactor package graph. Recursively select dependencies in the dependency graph. Test: Minor for keyring test. Bcli: some quirks and show full list of missing SDKs. Bcli: Make /app directory writable for build process. Improve keyring handling and allow vendor to auto-supply trusted keys. Cli: Allow refreshing keyrings. Tests: Run signed-package tests without any user interaction. Bcli: Make executor run a script to preserve directory changes and env vars. Update README. Bcli: Allow any user to write stuff to /app and make use of sudo possible. Bcli: Load user groups in virtual environment. Lipkgen: Output bundles with sane filenames by default. Cli: Allow installing untrusted local packages. L10n: Update. : Reversed limba-build dependency overlay order. (Jesse Pullinen). a few minor memory leaks. Pkgen: Handle symbolic links correctly. Don't try to set permissions on symlinks. Don't fail removals if exported file is gone for some reason. Cli: Never make progress bar vanish when changing state. Make tools deal with umask set in a root environment. Bcli: Don't fail creation of build environment by building impossible graph. Don't sign the dsc file if we are already not signing the package. Bcli: Deal with environment variables like users would expect it.
0.5.413 Dec 2015 11:25 minor bugfix: Released: 2015-12-12 Features: Use /app as default preand make Limba env more like xdg-app. Split out primitives to create a runtime environment. Allow apps access to user session data and the DBus system bus. Make build environment more like runtime environment. Support the latest AppStream release. Use new GLib macros. : Check for libcap. bcli: Make build process work again. some quirks in signing error reporting. We want a writable /tmp in runtime environments. Make building documentation work and existing docs.
0.5.311 Nov 2015 16:05 minor feature: Released: 2015-11-10 Notes: This release contains some pretty invasive changes. It also marks the point where Limba is pretty much feature-complete, so expect a lot of polishing during the next releases, and please intensively test this release. If you are using Linux 4.2 and try to use limba-build, you might run into this kernel regression: https://lkml.org/lkml/2015/10/7/289 We can't work around this in Limba, so consider patching/updating your kernel. Features: Build development IPK packages. Enforce a naming scheme for SDK package IDs. Correctly define dependencies of SDK packages. Make bundle IDs follow an "id/version" scheme, instead of "id-version". runapp: Drop unneeded capabilities as early as possible. Treat development packages just like any other pkg. Allow disabling automatic signature validation at install-time. Implicitly trust packages we downloaded from a trusted repo. Add bundle type information to the main index. Simplify OverlayFS mounting, this also works around a kernel regression. Allow sources.list to define which index kinds to download. Compile with C11. Make the cache download SDK and source metadata. repo: Create separate index for SDK bundles. bcli: Build new bundles using the SDK bundles. bcli: Document the run-shell command. runapp: Make it easier to get a shell in the app environment. docs: Update runapp manpage. : Write just one DSC file per build. repo: Don't add SDK packages to AppStream metadata. building of AppStream icon tarball.
0.5.216 Oct 2015 01:25 minor feature: Released: 2015-10-14 Features: Call limba binary in cleanup service. bcli: Rescue build artifacts. tests: Add simple build recipe for foobar. docs: Add initial bits needed to build Limba documentation. bcli: Move the make-template command to limba-build. Make use of the new autoptr macro in GLib. : Ensure user details are properly set when building a package.
0.5.103 Sep 2015 23:25 minor feature: Features: Automatically clear TryExec key from.desktop files. Add a couple more GPG options. Improve key importing. cli: Make progress-bar look a bit nicer. Write signed dsc file for Limba packages. Take payload data from 'target' subdirectory. Rename libuild to licompile. Rename the Limba tools to have more descriptive names. less blocking DBus calls in limba-daemon. Watch the bus for the limba-daemon service name. cli: Allow removing/installing software via the helper daemon. Add new ABI-Breaks_versions field to indicate versions containing ABI breaks. bcli: Port from lipkbh. Drop old build-helper (lipkbh) Python prototype. bcli: Allow building in a fancy chroot environment. bcli: Put build jobs into their own scope using systemd. Add small manpage for limba-build. The AppStream metadata file should not be created as directory. some GI annotations. Verify signatures against a specific keyring. crash when checking for updates. runapp: Properly put new processes into scopes.
0.5.028 Jun 2015 12:25 feature cleanup bugfix: Make use of new OverlayFS multi-layer feature. Drop redundant code from LiRuntime. Simplify update process. Improve cruft cleanup methods. l10n: Update l10n information. Implement user-friendly progress notifications. lipa: Show a fancy progress bar. lipa: Show some process details when installing. Recognize experimental X-Repository package property. Extract AppStream icons for use in package repos. Implement new repository layout. The LiPkgCache is public API now. Add DBus method to install package from a remote source. mgr: Add method to easily retrieve bundle status via its ID. Use helper daemon for removal actions as well. lirepo: Export AppStream icon tarballs. Add icon information to AppStream XML. Download and extract AppStream icon tarballs from the remote. Bugfixes: Fix potential crash in the helper daemon. installer: Fix a rare unref assertion error.
0.4.229 Mar 2015 03:15 feature bugfix: . Released: 2015-03-28 Features:. * Add quick dirty lipkg schroot builder. * Install the package build helper. * Add udev foundation. * Interpret foundation dependencies. * Export application icons. * Add note about translations. * Add runtime kernel version check for Linux 3.18. * tests: Create test virtual environment in separate binary. Bugfixes:. * Fix bug causing the IPK payload archive to be layouted incorrectly. * Update manpages.
0.4.111 Mar 2015 11:45 feature bugfix: Features: Include contrib/ directory. Inject multiarch library path into the application's environment. Improve the updates API. Rewrite buildlist Vala code to C code. Bugfixes: Fix some GIR annotations. Install .desktop files into local/share/applications to override distro packages. runapp: Ensure argv0 of a spawned application is always its absolute executable path. Create applications directory if it doesn't exist yet.
0.4.021 Feb 2015 11:05 feature bugfix: Released: 2015-02-20 Features: Add new lirepo tool to create repositories Allow adding packages to a repository Compress Index file of repositories Make cache download repository metadata repo: Register AppStream metadata files Use Freedesktop namespace for DBus service and PolKit rules Make Limba DBus service kdbus-safe Encode architecture in repo package names Allow Limba to query the package cache Write single cache file for AppStream metadata Use the new "bundle" tag in AppStream 0.8 Implement installations from remote sources Handle multiple architectures inone repository Sign repositories by default lipa: Add command to receive trust a key tests: Add fake GPG home with dummy key lipa: Implement command to install remote package Encode requirements in runtime definition Set systemd service name in D-Bus service file Implement a very simple way of listing potential updates Implement update mechanism Bugfixes: Use pool.sks-keyservers.net as default keyserver Fail with a less scary message if signing key could not be fetched Collect cruft packages on system shutdown Get rid of all unit-test hacks by creating a fake root environment Perform some loose kernel version checks before compiling Limba Disable Travis CI: We need a recent kernel with OverlayFS now Fix keyring test again, by giving the test container network access Fix some potential bugs found by static code analysis Don't filter languages when reading AppStream metadata Fool the testsuite, since GPGMe is still not behaving like the docs say Don't list faded packages as installed
0.3.009 Jan 2015 16:05 feature bugfix: The Limba package sources are now expected in the lipkg/ subdirectory Packages are signed by default. Pass the --no-signature option to lipkgen to disable this. Package signing requires a running GPG agent at time. Features: Allow installations without setting the suid bit. Improve performance of the config parser. Add initial foundations list. Implement support for signing packages. Handle arch:any notation in package sources. Validate signatures of IPK packages. lipkgen: Allow disabling of package-signing. Expose trust-level in installer. lipkgen: Print better signing result messages. Use PolKit to check for authorization. Call helper for privileged local-install action. Don't use the generic, odd "pkginstall" name for lipkg sources. Time out helper daemon on inactivity. Write improved compiler error output in maintainer mode. Bugfixes: runapp: overlayfs is called overlay. runapp: Use "overlayfs" on older Linux kernels. Fix typo in runapp.c. lipkgen: Fix extraction of packages if no destination directory is defined. Check for architecture match when installing. Always create format-versioned packages. Warn about empty package-ids. When loading pkg metadata, do not override metainfo values with NULL. Dont crash if we encounter e.g. a non-armored signature. Increase GPG keyserver timeout. Adjust to AppStream API changes.
0.2.018 Dec 2014 08:30 major feature: This version is still experimental and not API-stable. This release uses /opt/bundle as root prefix now. Add write-support for package-index. Implement support for installing packages with embedded dependencies. Implement embedded-dependency generation into package builder. Compress base IPK archive using GZip. Make API a bit more GUI-friendly. Allow using a different AppStream library for data loading. lipkgen: Allow generating a very simple project structure. Register wrappers for new binaries. Allow dependencies in child packages to be satisfied by parent-packages. Only register commands for executable files in /bin. Make installer respect version number and version relations. lipkgen: Try to pretty-print the autogenerated XML. Write a magic number into IPK packages. Mark packages which have not been installed manually as automatic. Use /opt/bundle as root. lipkgen: Add command to dump the contents of a package. lipa: Add command to clean up unused packages. Get rid of li_touch_dir helper. Test for component metadata earlier. Add more GIR annotations. Clean up blank values in config metadata. Only add ROOT/lib to LD_LIBRARY_PATH. Only create a runtime for packages which need one. Make sure we always create complete runtimes on installation. Reset cache after cleanup.