diff options
-rw-r--r-- | dev/pkg/opkg.mdwn | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/dev/pkg/opkg.mdwn b/dev/pkg/opkg.mdwn new file mode 100644 index 0000000..fd50a8d --- /dev/null +++ b/dev/pkg/opkg.mdwn @@ -0,0 +1,87 @@ +[[!meta title="Opkg in ProteanOS"]] + +Background +========== + +ProteanOS uses [opkg][opkg] to manage packages after installation with +[[prokit|dev/prokit]]. opkg has a long history through different umbrella +projects and maintainers. After [more than three years since the 0.1.8 +release][pbarker-maint], regular releases were resumed in August and September +of 2013 with the [0.2.x series][0.2.x-NEWS]. [Starting in December, +2013][yocto-move], development of opkg was moved from Google Code to +infrastructure of the Yocto Project, a project of the Linux Foundation that also +serves as a home for BitBake, OpenEmbedded, and Poky. + +[opkg]: https://git.yoctoproject.org/cgit/cgit.cgi/opkg/tree/README +[pbarker-maint]: https://groups.google.com/forum/?_escaped_fragment_=topic/opkg-devel/R_yo9Qj1eZI +[0.2.x-NEWS]: https://git.yoctoproject.org/cgit/cgit.cgi/opkg/log/NEWS?h=opkg-0.2.x +[yocto-move]: https://groups.google.com/forum/?_escaped_fragment_=topic/opkg-devel/gjQG7Qv1cQU + +The Growing Lightweight Package Management System +================================================= + +Development has continued in the 0.3.x series. Multiple maintainers and +contributors have added various bugfixes, new features, and architectural +improvements to make opkg a more modern and maintainable codebase. + +For a long time, opkg had an embedded copy of BusyBox's libbb for reading +archives (as packages supported by opkg are doubly nested archive files). This +copy of libbb had grown +[[stale_and_heavily_patched|dev/todo/removing-libbb-from-opkg]]. Finally, [in +2013/2014][drop-libbbb-git], libbb was [replaced][add-libarchive] with +[libarchive][libarchive]. This removed a large amount of old code from opkg, +however it added a dependency on a large library that was never designed with +the code size restraints of embedded systems in mind. + +And in August, 2015, support for external dependency solver libraries was added, +so as to remove additional complexity from opkg and leave dependency solving to +another project. Unfortunately, this also [pulls][solver] in +[another][solver-patch] large [library][oe-pw-libsolv], openSUSE's [libsolv][libsolv]. As of now, this +dependency is still optional, and the original internal solver can still be +used. However, the current maintainer has [indicated][libsolv-focus] that the +internal solver will eventually be deprecated. + +[drop-libbb-git]: https://git.yoctoproject.org/cgit/cgit.cgi/opkg/log/?id=04015d5 +[add-libarchive]: https://groups.google.com/forum/?_escaped_fragment_=topic/opkg-devel/HYBBK8YeazI +[libarchive]: https://www.libarchive.org/ +[solver]: https://groups.google.com/forum/?_escaped_fragment_=msg/opkg-devel/r4qbmhjbSNo/YH7cCjRtIQAJ +[solver-patch]: https://groups.google.com/forum/?_escaped_fragment_=msg/opkg-devel/bCtXIGQpvoM/PE_Pbi07IwAJ +[oe-pw-libsolv]: https://patchwork.openembedded.org/patch/137903/ +[libsolv]: https://github.com/openSUSE/libsolv +[libsolv-focus]: https://groups.google.com/forum/?_escaped_fragment_=msg/opkg-devel/ZI1e5tmGcjM/w-1LFw4LCAAJ + +The Future of the Past +====================== + +ProteanOS currently [still uses][pro-opkg-cl] the 0.2.x series. The increasing +size of modern opkg (starting with the 0.3.x series) and its dependencies makes +it increasingly unsuitable for small system distributions like ProteanOS. We +will need to find a solution going forward. + +[OpenWrt][owrt] and [libreCMC][lcmc] use [a version][opkg-owrt-lcmc] between +0.1.8 and 0.2.0 with [numerous local patches][owrt-patches]. LEDE +[switched][lede-switch] their [opkg package][lede-pkgdata] to [their own +fork][lede-fork]. + +LEDE actively maintains their opkg fork and backports changes from upstream. +This may be the best and easiest option for ProteanOS, although there are a +couple of minor problems: + + 1. It still has [libbb][lede-opkg-libbb], and + 2. It pulls in a new, but small, dependency: LEDE's [libubox][lede-libubox]. + +Note also that the original Autoconf/Automake-based build system was +[removed][lede-opkg-at] and [replaced][lede-opkg-cm] with CMake. + +[pro-opkg-cl]: http://git.proteanos.com/pkg/opkg.git/tree/changelog +[owrt]: https://github.com/openwrt/openwrt/blob/4e47861/package/system/opkg/Makefile#L14 +[lcmc]: https://gogs.librecmc.org/libreCMC/libreCMC/src/ae523302b1506e48f8448454c5f8904ad415c524/package/system/opkg/Makefile#L19 +[opkg-owrt-lcmc]: http://git.yoctoproject.org/cgit/cgit.cgi/opkg/log/?id=9c97d5e +[owrt-patches]: https://github.com/openwrt/openwrt/tree/4e47861/package/system/opkg/patches +[lede-switch]: https://git.lede-project.org/?p=source.git;a=commit;h=5aa97e3 +[lede-pkgdata]: https://lede-project.org/packages/pkgdata/opkg +[lede-fork]: https://git.lede-project.org/?p=project/opkg-lede.git +[lede-opkg-libbb]: https://git.lede-project.org/?p=project/opkg-lede.git;a=tree;f=libbb +[lede-libubox]: https://git.lede-project.org/?p=project/libubox.git;a=summary +[lede-opkg-at]: https://git.lede-project.org/?p=project/opkg-lede.git;a=commit;h=6215c27 +[lede-opkg-cm]: https://git.lede-project.org/?p=project/opkg-lede.git;a=commit;h=e6e6c5a |