diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2026-10-05 18:16:38 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska-skaware@skarnet.org> | 2026-10-05 18:16:38 +0000 |
| commit | 55850e313752497880ffde33870540b0b57814c1 (patch) | |
| tree | caaa72d69ca4b14ccd1652f260001e0cc360fa0d | |
| parent | f706ab3b309a4c9a0425ac23d5ffff7ead48fcb2 (diff) | |
| download | s6-rc-55850e313752497880ffde33870540b0b57814c1.tar.gz | |
Propagate -L catchall changes to s6-rc-set-commit
s6-rc-set-install is undergoing changes, it might not work
properly. The rest is coming this week.
| -rw-r--r-- | NEWS | 2 | ||||
| -rw-r--r-- | doc/index.html | 4 | ||||
| -rw-r--r-- | doc/upgrade.html | 2 | ||||
| -rw-r--r-- | package/deps.mak | 7 | ||||
| -rw-r--r-- | package/info | 2 | ||||
| -rw-r--r-- | src/include/s6-rc/repo.h | 4 | ||||
| -rw-r--r-- | src/libs6rc/s6rc_read_major.c | 2 | ||||
| -rw-r--r-- | src/repo/deps-exe/s6-rc-set-commit | 1 | ||||
| -rw-r--r-- | src/repo/deps-exe/s6-rc-set-install | 1 | ||||
| -rw-r--r-- | src/repo/s6-rc-set-commit.c | 13 | ||||
| -rw-r--r-- | src/repo/s6rc_repo_compile.c | 9 | ||||
| -rw-r--r-- | src/repo/s6rc_repo_setcompile.c | 4 | ||||
| -rw-r--r-- | src/repo/s6rc_repo_setuptodate.c | 16 | ||||
| -rw-r--r-- | src/repo/s6rc_repo_sync.c | 2 |
14 files changed, 48 insertions, 21 deletions
@@ -1,6 +1,6 @@ Changelog for s6-rc. -In 0.7.1.0 +In 0.8.0.0 ---------- - Bugfixes. diff --git a/doc/index.html b/doc/index.html index 1292e10..f18b88e 100644 --- a/doc/index.html +++ b/doc/index.html @@ -69,8 +69,8 @@ requirement if you link against the shared version of the skalibs library. </li> <ul> <li> The current released version of s6-rc is -<a href="s6-rc-0.7.1.0.tar.gz">0.7.1.0</a>. -You can access its checksum <a href="s6-rc-0.7.1.0.tar.gz.sha256">here</a>. </li> +<a href="s6-rc-0.8.0.0.tar.gz">0.8.0.0</a>. +You can access its checksum <a href="s6-rc-0.8.0.0.tar.gz.sha256">here</a>. </li> <li> Alternatively, you can checkout a copy of the <a href="//git.skarnet.org/cgit/s6-rc/">s6-rc git repository</a>: diff --git a/doc/upgrade.html b/doc/upgrade.html index 38456cc..056450f 100644 --- a/doc/upgrade.html +++ b/doc/upgrade.html @@ -31,7 +31,7 @@ minor and bugfix version changes. <h1> What has changed in s6-rc </h1> -<h2> in 0.7.1.0 </h2> +<h2> in 0.8.0.0 </h2> <ul> <li> No functional changes. </li> diff --git a/package/deps.mak b/package/deps.mak index 7b28063..5c0023d 100644 --- a/package/deps.mak +++ b/package/deps.mak @@ -71,7 +71,8 @@ src/repo/s6rc_repo_sanitize_svname.o src/repo/s6rc_repo_sanitize_svname.lo: src/ src/repo/s6rc_repo_setcompile.o src/repo/s6rc_repo_setcompile.lo: src/repo/s6rc_repo_setcompile.c src/include/s6-rc/repo.h src/repo/s6rc_repo_setcopy.o src/repo/s6rc_repo_setcopy.lo: src/repo/s6rc_repo_setcopy.c src/include/s6-rc/repo.h src/repo/s6rc_repo_setdelete.o src/repo/s6rc_repo_setdelete.lo: src/repo/s6rc_repo_setdelete.c src/include/s6-rc/repo.h -src/repo/s6rc_repo_setuptodate.o src/repo/s6rc_repo_setuptodate.lo: src/repo/s6rc_repo_setuptodate.c src/include/s6-rc/repo.h +src/repo/s6rc_repo_setuptodate.o src/repo/s6rc_repo_setuptodate.lo: src/repo/s6rc_repo_setuptodate.c src/include/s6-rc/config.h src/include/s6-rc/repo.h src/include/s6-rc/s6rc-utils.h +src/repo/s6rc_repo_snap_from_compiled.o src/repo/s6rc_repo_snap_from_compiled.lo: src/repo/s6rc_repo_snap_from_compiled.c src/include/s6-rc/repo.h src/repo/s6rc_repo_sv_bcmpr.o src/repo/s6rc_repo_sv_bcmpr.lo: src/repo/s6rc_repo_sv_bcmpr.c src/include/s6-rc/repo.h src/repo/s6rc_repo_sv_cmpr.o src/repo/s6rc_repo_sv_cmpr.lo: src/repo/s6rc_repo_sv_cmpr.c src/include/s6-rc/repo.h src/repo/s6rc_repo_sync.o src/repo/s6rc_repo_sync.lo: src/repo/s6rc_repo_sync.c src/include/s6-rc/repo.h @@ -119,7 +120,7 @@ s6-rc-repo-sync: src/repo/s6-rc-repo-sync.o ${LIBS6RCREPO} -lskarnet s6-rc-set-change: EXTRA_LIBS := ${SPAWN_LIB} s6-rc-set-change: src/repo/s6-rc-set-change.o ${LIBS6RCREPO} -lskarnet s6-rc-set-commit: EXTRA_LIBS := ${SPAWN_LIB} -s6-rc-set-commit: src/repo/s6-rc-set-commit.o ${LIBS6RCREPO} -lskarnet +s6-rc-set-commit: src/repo/s6-rc-set-commit.o ${LIBS6RCREPO} ${LIBS6RC} -lskarnet s6-rc-set-copy: EXTRA_LIBS := ${SPAWN_LIB} s6-rc-set-copy: src/repo/s6-rc-set-copy.o ${LIBS6RCREPO} -lskarnet s6-rc-set-delete: EXTRA_LIBS := ${SPAWN_LIB} @@ -127,7 +128,7 @@ s6-rc-set-delete: src/repo/s6-rc-set-delete.o ${LIBS6RCREPO} -lskarnet s6-rc-set-fix: EXTRA_LIBS := ${SPAWN_LIB} s6-rc-set-fix: src/repo/s6-rc-set-fix.o ${LIBS6RCREPO} -lskarnet s6-rc-set-install: EXTRA_LIBS := ${SPAWN_LIB} -s6-rc-set-install: src/repo/s6-rc-set-install.o ${LIBS6RCREPO} -lskarnet +s6-rc-set-install: src/repo/s6-rc-set-install.o ${LIBS6RCREPO} ${LIBS6RC} -lskarnet s6-rc-set-new: EXTRA_LIBS := ${SPAWN_LIB} s6-rc-set-new: src/repo/s6-rc-set-new.o ${LIBS6RCREPO} -lskarnet s6-rc-set-status: EXTRA_LIBS := ${SPAWN_LIB} diff --git a/package/info b/package/info index 1b3e4c1..62be0d0 100644 --- a/package/info +++ b/package/info @@ -1,4 +1,4 @@ package=s6-rc -version=0.7.1.0 +version=0.8.0.0 category=admin package_macro_name=S6RC diff --git a/src/include/s6-rc/repo.h b/src/include/s6-rc/repo.h index 1615507..0607977 100644 --- a/src/include/s6-rc/repo.h +++ b/src/include/s6-rc/repo.h @@ -48,9 +48,9 @@ extern int s6rc_repo_makesetbundles (char const *, char const *, unsigned int) ; extern int s6rc_repo_makedefbundle (char const *, char const *, char const *) ; #define S6RC_REPO_COMPILE_BUFLEN(repolen, setlen) ((repolen) + (setlen) + 45) -extern int s6rc_repo_compile (char const *, char const *, char const *const *, uint8_t, char *, unsigned int, char const *) ; +extern int s6rc_repo_compile (char const *, char const *, char const *const *, uint8_t, char *, unsigned int, char const *, char const *) ; extern int s6rc_repo_refcompile (char const *, char *, unsigned int, char const *) ; -extern int s6rc_repo_setcompile (char const *, char const *, char const *, char *, unsigned int, char const *) ; +extern int s6rc_repo_setcompile (char const *, char const *, char const *, char *, unsigned int, char const *, char const *) ; extern int s6rc_repo_list_sets (char const *, stralloc *, genalloc *) ; extern int s6rc_repo_listrx (char const *, char const *, char const *, stralloc *, genalloc *) ; diff --git a/src/libs6rc/s6rc_read_major.c b/src/libs6rc/s6rc_read_major.c index 978f29c..2be5121 100644 --- a/src/libs6rc/s6rc_read_major.c +++ b/src/libs6rc/s6rc_read_major.c @@ -21,7 +21,7 @@ uint32_t s6rc_read_major (char const *compiled) memcpy(fn, compiled, clen) ; memcpy(fn + clen, "/major", 7) ; r = openreadnclose(fn, tmp, UINT32_FMT) ; - if (r == -1) return errno == ENOENT ? 6 : 0 ; /* up to 0.6.x.y doesn't have db/major */ + if (r == -1) return errno == ENOENT ? 7 : 0 ; /* up to 0.7.0.0 doesn't have db/major */ if (!r) return 0 ; if (tmp[r] != '\n') return (errno = EPROTO, 0) ; tmp[r] = 0 ; diff --git a/src/repo/deps-exe/s6-rc-set-commit b/src/repo/deps-exe/s6-rc-set-commit index 9fe69bb..3214aaa 100644 --- a/src/repo/deps-exe/s6-rc-set-commit +++ b/src/repo/deps-exe/s6-rc-set-commit @@ -1,3 +1,4 @@ ${LIBS6RCREPO} +${LIBS6RC} -lskarnet ${SPAWN_LIB} diff --git a/src/repo/deps-exe/s6-rc-set-install b/src/repo/deps-exe/s6-rc-set-install index 9fe69bb..3214aaa 100644 --- a/src/repo/deps-exe/s6-rc-set-install +++ b/src/repo/deps-exe/s6-rc-set-install @@ -1,3 +1,4 @@ ${LIBS6RCREPO} +${LIBS6RC} -lskarnet ${SPAWN_LIB} diff --git a/src/repo/s6-rc-set-commit.c b/src/repo/s6-rc-set-commit.c index 95af67d..6bfe03d 100644 --- a/src/repo/s6-rc-set-commit.c +++ b/src/repo/s6-rc-set-commit.c @@ -20,7 +20,7 @@ #include <s6-rc/config.h> #include <s6-rc/s6rc.h> -#define USAGE "s6-rc-set-commit [ -v verbosity ] [ -r repo ] [ -D defaultbundle ] [ -h fdhuser ] [ -K ] [ -f ] set" +#define USAGE "s6-rc-set-commit [ -v verbosity ] [ -r repodir ] [ -D default-bundle ] [ -h fdholder-user ] [ -L catchall-logger ] [ -K ] [ -f ] set" #define dieusage() strerr_dieusage(100, USAGE) enum golb_e @@ -35,6 +35,7 @@ enum gola_e GOLA_REPODIR, GOLA_DEFBUNDLE, GOLA_FDHUSER, + GOLA_CATCHALL, GOLA_N } ; @@ -49,7 +50,8 @@ static gol_arg const rgola[] = { .so = 'v', .lo = "verbosity", .i = GOLA_VERBOSITY }, { .so = 'r', .lo = "repodir", .i = GOLA_REPODIR }, { .so = 'D', .lo = "default-bundle", .i = GOLA_DEFBUNDLE }, - { .so = 'h', .lo = "fdholder-user", .i = GOLA_FDHUSER } + { .so = 'h', .lo = "fdholder-user", .i = GOLA_FDHUSER }, + { .so = 'L', .lo = "catchall-logger", .i = GOLA_CATCHALL }, } ; int main (int argc, char const *const *argv) @@ -69,6 +71,11 @@ int main (int argc, char const *const *argv) argc -= golc ; argv += golc ; if (wgola[GOLA_VERBOSITY] && !uint0_scan(wgola[GOLA_VERBOSITY], &verbosity)) strerr_dief1x(100, "verbosity needs to be an unsigned integer") ; + if (wgola[GOLA_CATCHALL]) + { + if (wgola[GOLA_CATCHALL][0] != '/') + strerr_dief(100, "catchall-logger needs to be an absolute path") ; + } if (!argc) dieusage() ; s6rc_repo_sanitize_setname(argv[0]) ; @@ -105,7 +112,7 @@ int main (int argc, char const *const *argv) size_t oldclen = S6RC_REPO_COMPILE_BUFLEN(strlen(wgola[GOLA_REPODIR]), strlen(argv[0])) ; char oldc[oldclen] ; - r = s6rc_repo_setcompile(wgola[GOLA_REPODIR], argv[0], wgola[GOLA_DEFBUNDLE], oldc, verbosity, wgola[GOLA_FDHUSER]) ; + r = s6rc_repo_setcompile(wgola[GOLA_REPODIR], argv[0], wgola[GOLA_DEFBUNDLE], oldc, verbosity, wgola[GOLA_FDHUSER], wgola[GOLA_CATCHALL]) ; if (r == -1) _exit(111) ; if (!r) _exit(1) ; if (r == 2) diff --git a/src/repo/s6rc_repo_compile.c b/src/repo/s6rc_repo_compile.c index 83fa744..bfb7639 100644 --- a/src/repo/s6rc_repo_compile.c +++ b/src/repo/s6rc_repo_compile.c @@ -16,7 +16,7 @@ #include <s6-rc/config.h> #include <s6-rc/repo.h> -int s6rc_repo_compile (char const *repo, char const *set, char const *const *rxs, uint8_t nrxs, char *oldc, unsigned int verbosity, char const *fdhuser) +int s6rc_repo_compile (char const *repo, char const *set, char const *const *rxs, uint8_t nrxs, char *oldc, unsigned int verbosity, char const *fdhuser, char const *catchall) { size_t repolen = strlen(repo) ; size_t setlen = strlen(set) ; @@ -38,7 +38,7 @@ int s6rc_repo_compile (char const *repo, char const *set, char const *const *rxs pid_t pid ; size_t m = 0 ; int wstat ; - char const *argv[9 + nrxs] ; + char const *argv[11 + nrxs] ; char fmtv[UINT_FMT] ; char src[nrxs * (repolen + 10 + (needprefix ? setlen + 1 : 0)) + totrxlen] ; char *w = src ; @@ -52,6 +52,11 @@ int s6rc_repo_compile (char const *repo, char const *set, char const *const *rxs argv[m++] = "-h" ; argv[m++] = fdhuser ; } + if (catchall) + { + argv[m++] = "-L" ; + argv[m++] = catchall ; + } argv[m++] = "--" ; argv[m++] = newc ; for (uint8_t i = 0 ; i < nrxs ; i++) diff --git a/src/repo/s6rc_repo_setcompile.c b/src/repo/s6rc_repo_setcompile.c index 55f06ca..1bdbea8 100644 --- a/src/repo/s6rc_repo_setcompile.c +++ b/src/repo/s6rc_repo_setcompile.c @@ -7,13 +7,13 @@ #include <s6-rc/repo.h> -int s6rc_repo_setcompile (char const *repo, char const *set, char const *defbundle, char *oldc, unsigned int verbosity, char const *fdhuser) +int s6rc_repo_setcompile (char const *repo, char const *set, char const *defbundle, char *oldc, unsigned int verbosity, char const *fdhuser, char const *catchall) { static char const *const rxs[4] = { "bundle", s6rc_repo_rxnames[1], s6rc_repo_rxnames[2], s6rc_repo_rxnames[3] } ; int r ; if (!s6rc_repo_makesetbundles(repo, set, verbosity)) return -1 ; if (!s6rc_repo_makedefbundle(repo, set, defbundle)) return -1 ; - r = s6rc_repo_compile(repo, set, rxs, 4, oldc, verbosity, fdhuser) ; + r = s6rc_repo_compile(repo, set, rxs, 4, oldc, verbosity, fdhuser, catchall) ; { int e = errno ; diff --git a/src/repo/s6rc_repo_setuptodate.c b/src/repo/s6rc_repo_setuptodate.c index 83e208e..b6bd35d 100644 --- a/src/repo/s6rc_repo_setuptodate.c +++ b/src/repo/s6rc_repo_setuptodate.c @@ -4,11 +4,14 @@ #include <skalibs/nonposix.h> #include <string.h> +#include <stdint.h> #include <errno.h> #include <skalibs/stat.h> #include <skalibs/strerr.h> +#include <s6-rc/config.h> +#include <s6-rc/s6rc-utils.h> #include <s6-rc/repo.h> int s6rc_repo_setuptodate (char const *repo, char const *set) @@ -28,15 +31,24 @@ int s6rc_repo_setuptodate (char const *repo, char const *set) memcpy(dstfn + repolen + 10, set, setlen + 1) ; if (stat(srcfn, &stsource) == -1) { - strerr_warnfu2sys("stat ", srcfn) ; + strerr_warnfusys("stat ", srcfn) ; return -1 ; } if (stat(dstfn, &stcompiled) == -1) { if (errno == ENOENT) return 0 ; - strerr_warnfu2sys("stat ", dstfn) ; + strerr_warnfusys("stat ", dstfn) ; return -1 ; } + { + uint32_t version = s6rc_read_major(dstfn) ; + if (!version) + { + strerr_warnfusys("read major version from ", dstfn) ; + return -1 ; + } + if (version < s6rc_get_major(S6RC_VERSION)) return 0 ; + } return stsource.st_mtim.tv_sec < stcompiled.st_mtim.tv_sec ? 1 : stsource.st_mtim.tv_sec > stcompiled.st_mtim.tv_sec ? 0 : diff --git a/src/repo/s6rc_repo_sync.c b/src/repo/s6rc_repo_sync.c index 64f4017..a2b5886 100644 --- a/src/repo/s6rc_repo_sync.c +++ b/src/repo/s6rc_repo_sync.c @@ -153,7 +153,7 @@ int s6rc_repo_sync (char const *repo, unsigned int verbosity, char const *fdhuse { char const *rxs[2] = { ato + repolen + 9, bun + repolen + 9 } ; char oldc[repolen + 49] ; - int r = s6rc_repo_compile(repo, ".ref", rxs, 2, oldc, verbosity, fdhuser) ; + int r = s6rc_repo_compile(repo, ".ref", rxs, 2, oldc, verbosity, fdhuser, 0) ; if (r < 0) goto err ; if (!r) { cleanup(ato, bun) ; return 0 ; } if (r == 2) rm_rf(oldc) ; |
