summaryrefslogtreecommitdiffstats
path: root/TODO
diff options
context:
space:
mode:
authorPatrick McDermott <patrick.mcdermott@libiquity.com>2023-09-26 03:40:43 (EDT)
committer Patrick McDermott <patrick.mcdermott@libiquity.com>2023-09-26 03:58:44 (EDT)
commite9fd9b95f00e6ec47de43e49adf8421ad950dce8 (patch)
treebfcfcc675ac0ce4258f5d4c9f5a6c1fa0e726ab3 /TODO
parentf11782dabd8fcede521bf650103064536a6e5aa0 (diff)
TODO: Plan tests, oh-installfiles, and oh driverHEADmaster
Diffstat (limited to 'TODO')
-rw-r--r--TODO65
1 files changed, 63 insertions, 2 deletions
diff --git a/TODO b/TODO
index c1ea699..8e70f76 100644
--- a/TODO
+++ b/TODO
@@ -1,5 +1,66 @@
-Future Tasks
-------------
+Build System and Test Suite Overhaul
+------------------------------------
+
+ * Consider finally replacing `oh_use()` with shpp and shld. Allow running in
+ place. Make building rules optionally (and by default) silent.
+ * Make libopkbuild and opkg optional, without which oh-shlibdeps will be
+ disabled (excluded from building and installation). Currently, running
+ tests requires:
+ $ ./autogen.sh --prefix="${PWD}/_inst/usr" \
+ > --with-libopkbuild=false --with-opkg=false
+ $ make install
+ $ make test
+ * Replace the custom test suite harness with the TAP library and harness from
+ Automake. Rewrite test library and tests.
+ * Greatly expand test suite coverage.
+
+Automating Away Boilerplate Code/Lists
+--------------------------------------
+
+ * Add support for the CMake build system.
+ * A test suite with mature coverage should be completed first.
+ * oh-installfiles: If `<binpkg>.pkg/files` is missing, try to figure out which
+ files should be installed, based on package name and/or section. For
+ example:
+ - A single package in section "boot" can provide `/boot/`.
+ - A single package in section "dbg" can provide `/usr/lib/debug/`.
+ - A single package in section "doc" can provide `/usr/share/man/`,
+ `/usr/share/info/`, and `/usr/share/doc/` (subdirectory/-ies of which must
+ not be the name of the binary package).
+ - "libfoo.1" in section "lib" can provide
+ `/usr/lib/${OPK_HOST_ARCH}/libfoo.so.1.*`.
+ - "libfoo.1-dev" in section "libdev" can provide `/usr/bin/*-config`
+ (TODO: or optionally remove custom config scripts, like src:freetype does?
+ also, src:tcl8.6 uses a different naming style), `/usr/include/`,
+ `/usr/lib/${OPK_HOST_ARCH}/libfoo.so.1`, and
+ `/usr/lib/${OPK_HOST_ARCH}/pkgconfig/*.pc`.
+ - A single package in section "locale" can provide `/usr/share/locale/`.
+ - A single package in section "share" can provide `/usr/share/` (after files
+ are installed into any packages in sections "doc" and "locale").
+ - A single package in either section "dev" or "util" can provide `/usr/bin/`
+ (after any files matching `/usr/bin/*-config` are installed into any
+ packages in section "libdev").
+ If there are multiple packages in any of sections "boot", "dbg", "doc",
+ "locale", "share", or "dev" and "util", then all such packages must specify
+ files to install.
+ * oh: A new automatic build command driver/sequencer like debhelper's dh.
+ Support options -s, -B, and -d and arguments for oh-autoconfigure,
+ oh-autobuild, oh-autotest, oh-autoinstall, and oh-autoclean. Support
+ targets "nop", "configure", "build" (which also runs "configure" and
+ "test"), "test", "install", and "clean". If cross building, don't run
+ oh-autotest. If no binary package exists in section "dbg",
+ don't pass option -k to oh-strip. Maybe support override (e.g.
+ `override-oh-autoconfigure`) and/or hook (e.g. "post-oh-autoinstall")
+ targets. Maybe also automate common tasks like:
+ - `rm -f "${dest}/usr/lib/${OPK_HOST_ARCH}/"*.a`
+ - `rm -f "${dest}/usr/lib/${OPK_HOST_ARCH}/"*.la`
+ - `rm -f "${dest}/usr/share/info/dir"`
+ - Maybe provide a way to list file patterns to remove.
+ - Maybe (in oh-installfiles?) provide a way to move files (e.g.
+ `/usr/share/doc/` files).
+
+Other Future Tasks
+------------------
* Don't list library and helper configuration files as `_SCRIPTS` (this makes
them executable).