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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
Combined slul command:
for invoking:
* the compilation/build command
* the package manager
* the doc genarator (outputs: html, txt, man-page, etc.)
Compilation:
slul = slul build in current directory
slul build = build module
slul clean = remove outputs
[maybe] slul install = (build if needed and) install current module
* installation of data directories, manpages, license text, etc?
* installation of .desktop files / start menu shortcuts?
* installation of whatever is needed on MacOS? build and install .dmg file?
* library / slul interface installation
* call "make install" if there is a Makefile?
slul test = run tests
slul deps = install build- and runtime dependencies (impl+iface)
slul build-deps = install build dependencies only
Package manager:
(disallow running as root, unless --system is given?)
(have a --prefix option. it should work with add,remove,update,status,show)
slul add = installs a package + iface dependencies + impl dependencies
slul add --iface-only = installs a package interface + iface dependencies
slul remove = removes a package
slul upgrade = updates a package, or all if none is specified
slul search = searches for a package
slul status = shows installation status and version
slul show = show package information + dependencies + status
slul repo add PKG-PATTERN|all URL
slul repo remove [PKG-PATTERN|all] URL (all removes *all* entries, not just the "all" entry)
slul notarize = signed reproducible build/test upload:
Uploads src&bin hashes + test result +
compiler impl/version + backend&version +
arch name + distro name/pkg-version (if customized) +
signature of the contents above
Package maintenance:
slul pkgman init
slul pkgman push
slul pkgman reviewed
slul pkgman api-reviewed
Documentation generator
slul doc
Or separate commands
--------------------
/usr/bin/slul -> symlink to /etc/alternatives/slul -> /usr/bin/cslul
slul
slul build
slul clean
[maybe] slul install
slul test
slul dep [calls slulpkg, but could have a --list option also]
slul build-dep [calls slulpkg, but could have a --list option also]
slul notarize [calls slulpkg, but could have a --no-upload option also]
slulpkg add
slulpkg remove
slulpkg upgrade
slulpkg search
slulpkg status
slulpkg show
slulpkg log
slulpkg repo add PKG-PATTERN|all URL
slulpkg repo remove [PKG-PATTERN|all] URL
slulpkg vidi push ENCODED-VIDI-STR
slulpkg account register USERNAME EMAIL
slulpkg account deregister
slulpkg account edit
slulpkg account add-key [+PERMISSION[=PACKAGE]]
package permissions: push-package, push-review, add-owner, remove-push, config-package, push-vidi
account permissions: deregister, edit, export-data
permission management permissions: key-management
deregister/edit/export-data/key-management must each be allowed in at least one key (which can be the same key)
revoking a permission from ALL keys that have key-management requires a --force parameter
slulpkg account export-data
slulpkg manage push [has to be executed by M of N owners]
slulpkg manage add-owner [has to be executed by M of N owners]
slulpkg manage remove-owner [has to be executed by M of N owners, except to remove oneself]
slulpkg manage m-of-n [has to be executed by M of N owners]
slulpkg review start
slulpkg review ack-file FILE [LINE_FROM-LINE_TO_INCLUSIVE]
slulpkg review ack-api IDENTIFIER
slulpkg review push
sluldoc [or, build it in into cslul? could call the makefile if present]
slul doc
|