aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2026-10-05 18:16:38 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2026-10-05 18:16:38 +0000
commit55850e313752497880ffde33870540b0b57814c1 (patch)
treecaaa72d69ca4b14ccd1652f260001e0cc360fa0d
parentf706ab3b309a4c9a0425ac23d5ffff7ead48fcb2 (diff)
downloads6-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--NEWS2
-rw-r--r--doc/index.html4
-rw-r--r--doc/upgrade.html2
-rw-r--r--package/deps.mak7
-rw-r--r--package/info2
-rw-r--r--src/include/s6-rc/repo.h4
-rw-r--r--src/libs6rc/s6rc_read_major.c2
-rw-r--r--src/repo/deps-exe/s6-rc-set-commit1
-rw-r--r--src/repo/deps-exe/s6-rc-set-install1
-rw-r--r--src/repo/s6-rc-set-commit.c13
-rw-r--r--src/repo/s6rc_repo_compile.c9
-rw-r--r--src/repo/s6rc_repo_setcompile.c4
-rw-r--r--src/repo/s6rc_repo_setuptodate.c16
-rw-r--r--src/repo/s6rc_repo_sync.c2
14 files changed, 48 insertions, 21 deletions
diff --git a/NEWS b/NEWS
index d5c8630..212eb8c 100644
--- a/NEWS
+++ b/NEWS
@@ -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) ;