1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
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).
* Write oh-compress.
Possible Future Tasks
---------------------
* Make oh-installfiles link rather than move files. Then it can count links
to identify files that have been installed zero or multiple times.
* Add `--with-pkgversion="${os} ${OPK_SOURCE}"` to lib/buildsystem/autoconf.sh
for packages like eglibc and gcc-4.7.
|