aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS7
-rw-r--r--doc/index.html4
-rw-r--r--doc/upgrade.html6
-rw-r--r--package/deps.mak10
-rw-r--r--package/info2
-rw-r--r--src/include/s6-rc/s6rc-utils.h3
-rw-r--r--src/libs6rc/deps-lib/s6rc2
-rw-r--r--src/libs6rc/s6rc_get_major.c21
-rw-r--r--src/libs6rc/s6rc_read_major.c30
-rw-r--r--src/s6-rc/s6-rc-compile.c16
10 files changed, 94 insertions, 7 deletions
diff --git a/NEWS b/NEWS
index 6279cf2..cb0fec6 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,12 @@
Changelog for s6-rc.
+In 0.7.1.0
+----------
+
+ - Bugfixes.
+ - Databases now embed the major version they were built with
+
+
In 0.7.0.0
----------
diff --git a/doc/index.html b/doc/index.html
index f5a594e..1292e10 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.0.0.tar.gz">0.7.0.0</a>.
-You can access its checksum <a href="s6-rc-0.7.0.0.tar.gz.sha256">here</a>. </li>
+<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>
<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 c093f5f..38456cc 100644
--- a/doc/upgrade.html
+++ b/doc/upgrade.html
@@ -31,6 +31,12 @@ minor and bugfix version changes.
<h1> What has changed in s6-rc </h1>
+<h2> in 0.7.1.0 </h2>
+
+<ul>
+ <li> No functional changes. </li>
+</ul>
+
<h2> in 0.7.0.0 </h2>
<ul>
diff --git a/package/deps.mak b/package/deps.mak
index 9f156e7..7b28063 100644
--- a/package/deps.mak
+++ b/package/deps.mak
@@ -10,6 +10,7 @@ src/libs6rc/s6rc_db_check_revdeps.o src/libs6rc/s6rc_db_check_revdeps.lo: src/li
src/libs6rc/s6rc_db_read.o src/libs6rc/s6rc_db_read.lo: src/libs6rc/s6rc_db_read.c src/include/s6-rc/s6rc-db.h
src/libs6rc/s6rc_db_read_sizes.o src/libs6rc/s6rc_db_read_sizes.lo: src/libs6rc/s6rc_db_read_sizes.c src/include/s6-rc/s6rc-db.h
src/libs6rc/s6rc_db_read_uint32.o src/libs6rc/s6rc_db_read_uint32.lo: src/libs6rc/s6rc_db_read_uint32.c src/include/s6-rc/s6rc-db.h
+src/libs6rc/s6rc_get_major.o src/libs6rc/s6rc_get_major.lo: src/libs6rc/s6rc_get_major.c src/include/s6-rc/s6rc-utils.h
src/libs6rc/s6rc_graph_clean.o src/libs6rc/s6rc_graph_clean.lo: src/libs6rc/s6rc_graph_clean.c src/include/s6-rc/s6rc-db.h src/include/s6-rc/s6rc-utils.h
src/libs6rc/s6rc_graph_closure.o src/libs6rc/s6rc_graph_closure.lo: src/libs6rc/s6rc_graph_closure.c src/include/s6-rc/s6rc-db.h src/include/s6-rc/s6rc-utils.h
src/libs6rc/s6rc_live_state_read.o src/libs6rc/s6rc_live_state_read.lo: src/libs6rc/s6rc_live_state_read.c src/include/s6-rc/s6rc-db.h src/include/s6-rc/s6rc-utils.h
@@ -19,6 +20,7 @@ src/libs6rc/s6rc_livedir_create.o src/libs6rc/s6rc_livedir_create.lo: src/libs6r
src/libs6rc/s6rc_livedir_prefix.o src/libs6rc/s6rc_livedir_prefix.lo: src/libs6rc/s6rc_livedir_prefix.c src/include/s6-rc/s6rc-utils.h
src/libs6rc/s6rc_livedir_prefixsize.o src/libs6rc/s6rc_livedir_prefixsize.lo: src/libs6rc/s6rc_livedir_prefixsize.c src/include/s6-rc/s6rc-utils.h
src/libs6rc/s6rc_lock.o src/libs6rc/s6rc_lock.lo: src/libs6rc/s6rc_lock.c src/include/s6-rc/s6rc-utils.h
+src/libs6rc/s6rc_read_major.o src/libs6rc/s6rc_read_major.lo: src/libs6rc/s6rc_read_major.c src/include/s6-rc/s6rc-utils.h
src/libs6rc/s6rc_read_uint.o src/libs6rc/s6rc_read_uint.lo: src/libs6rc/s6rc_read_uint.c src/include/s6-rc/s6rc-utils.h
src/libs6rc/s6rc_sanitize_dir.o src/libs6rc/s6rc_sanitize_dir.lo: src/libs6rc/s6rc_sanitize_dir.c src/include/s6-rc/s6rc-utils.h
src/libs6rc/s6rc_servicedir_block.o src/libs6rc/s6rc_servicedir_block.lo: src/libs6rc/s6rc_servicedir_block.c src/include/s6-rc/s6rc-servicedir.h
@@ -89,15 +91,15 @@ src/s6-rc/s6-rc-update.o src/s6-rc/s6-rc-update.lo: src/s6-rc/s6-rc-update.c src
src/s6-rc/s6-rc.o src/s6-rc/s6-rc.lo: src/s6-rc/s6-rc.c src/include/s6-rc/config.h src/include/s6-rc/s6rc.h
ifeq ($(strip $(STATIC_LIBS_ARE_PIC)),)
-libs6rc.a.xyzzy: src/libs6rc/s6rc_db_check_depcycles.o src/libs6rc/s6rc_db_check_pipelines.o src/libs6rc/s6rc_db_check_revdeps.o src/libs6rc/s6rc_db_read.o src/libs6rc/s6rc_db_read_sizes.o src/libs6rc/s6rc_db_read_uint32.o src/libs6rc/s6rc_graph_closure.o src/libs6rc/s6rc_graph_clean.o src/libs6rc/s6rc_live_state_size.o src/libs6rc/s6rc_live_state_read.o src/libs6rc/s6rc_livedir_canon.o src/libs6rc/s6rc_livedir_create.o src/libs6rc/s6rc_livedir_prefix.o src/libs6rc/s6rc_livedir_prefixsize.o src/libs6rc/s6rc_lock.o src/libs6rc/s6rc_read_uint.o src/libs6rc/s6rc_sanitize_dir.o src/libs6rc/s6rc_servicedir_internal.o src/libs6rc/s6rc_servicedir_block.o src/libs6rc/s6rc_servicedir_unblock.o src/libs6rc/s6rc_servicedir_copy_offline.o src/libs6rc/s6rc_servicedir_copy_online.o src/libs6rc/s6rc_servicedir_manage.o src/libs6rc/s6rc_servicedir_unsupervise.o
+libs6rc.a.xyzzy: src/libs6rc/s6rc_db_check_depcycles.o src/libs6rc/s6rc_db_check_pipelines.o src/libs6rc/s6rc_db_check_revdeps.o src/libs6rc/s6rc_db_read.o src/libs6rc/s6rc_db_read_sizes.o src/libs6rc/s6rc_db_read_uint32.o src/libs6rc/s6rc_get_major.o src/libs6rc/s6rc_graph_closure.o src/libs6rc/s6rc_graph_clean.o src/libs6rc/s6rc_live_state_size.o src/libs6rc/s6rc_live_state_read.o src/libs6rc/s6rc_livedir_canon.o src/libs6rc/s6rc_livedir_create.o src/libs6rc/s6rc_livedir_prefix.o src/libs6rc/s6rc_livedir_prefixsize.o src/libs6rc/s6rc_lock.o src/libs6rc/s6rc_read_major.o src/libs6rc/s6rc_read_uint.o src/libs6rc/s6rc_sanitize_dir.o src/libs6rc/s6rc_servicedir_internal.o src/libs6rc/s6rc_servicedir_block.o src/libs6rc/s6rc_servicedir_unblock.o src/libs6rc/s6rc_servicedir_copy_offline.o src/libs6rc/s6rc_servicedir_copy_online.o src/libs6rc/s6rc_servicedir_manage.o src/libs6rc/s6rc_servicedir_unsupervise.o
else
-libs6rc.a.xyzzy:src/libs6rc/s6rc_db_check_depcycles.lo src/libs6rc/s6rc_db_check_pipelines.lo src/libs6rc/s6rc_db_check_revdeps.lo src/libs6rc/s6rc_db_read.lo src/libs6rc/s6rc_db_read_sizes.lo src/libs6rc/s6rc_db_read_uint32.lo src/libs6rc/s6rc_graph_closure.lo src/libs6rc/s6rc_graph_clean.lo src/libs6rc/s6rc_live_state_size.lo src/libs6rc/s6rc_live_state_read.lo src/libs6rc/s6rc_livedir_canon.lo src/libs6rc/s6rc_livedir_create.lo src/libs6rc/s6rc_livedir_prefix.lo src/libs6rc/s6rc_livedir_prefixsize.lo src/libs6rc/s6rc_lock.lo src/libs6rc/s6rc_read_uint.lo src/libs6rc/s6rc_sanitize_dir.lo src/libs6rc/s6rc_servicedir_internal.lo src/libs6rc/s6rc_servicedir_block.lo src/libs6rc/s6rc_servicedir_unblock.lo src/libs6rc/s6rc_servicedir_copy_offline.lo src/libs6rc/s6rc_servicedir_copy_online.lo src/libs6rc/s6rc_servicedir_manage.lo src/libs6rc/s6rc_servicedir_unsupervise.lo
+libs6rc.a.xyzzy:src/libs6rc/s6rc_db_check_depcycles.lo src/libs6rc/s6rc_db_check_pipelines.lo src/libs6rc/s6rc_db_check_revdeps.lo src/libs6rc/s6rc_db_read.lo src/libs6rc/s6rc_db_read_sizes.lo src/libs6rc/s6rc_db_read_uint32.lo src/libs6rc/s6rc_get_major.lo src/libs6rc/s6rc_graph_closure.lo src/libs6rc/s6rc_graph_clean.lo src/libs6rc/s6rc_live_state_size.lo src/libs6rc/s6rc_live_state_read.lo src/libs6rc/s6rc_livedir_canon.lo src/libs6rc/s6rc_livedir_create.lo src/libs6rc/s6rc_livedir_prefix.lo src/libs6rc/s6rc_livedir_prefixsize.lo src/libs6rc/s6rc_lock.lo src/libs6rc/s6rc_read_major.lo src/libs6rc/s6rc_read_uint.lo src/libs6rc/s6rc_sanitize_dir.lo src/libs6rc/s6rc_servicedir_internal.lo src/libs6rc/s6rc_servicedir_block.lo src/libs6rc/s6rc_servicedir_unblock.lo src/libs6rc/s6rc_servicedir_copy_offline.lo src/libs6rc/s6rc_servicedir_copy_online.lo src/libs6rc/s6rc_servicedir_manage.lo src/libs6rc/s6rc_servicedir_unsupervise.lo
endif
libs6rc.pc: EXTRA_LIBS := -ls6 -lskarnet ${SPAWN_LIB}
libs6rc.so.xyzzy: EXTRA_LIBS := -ls6 -lskarnet ${SPAWN_LIB}
-libs6rc.so.xyzzy:src/libs6rc/s6rc_db_check_depcycles.lo src/libs6rc/s6rc_db_check_pipelines.lo src/libs6rc/s6rc_db_check_revdeps.lo src/libs6rc/s6rc_db_read.lo src/libs6rc/s6rc_db_read_sizes.lo src/libs6rc/s6rc_db_read_uint32.lo src/libs6rc/s6rc_graph_closure.lo src/libs6rc/s6rc_graph_clean.lo src/libs6rc/s6rc_live_state_size.lo src/libs6rc/s6rc_live_state_read.lo src/libs6rc/s6rc_livedir_canon.lo src/libs6rc/s6rc_livedir_create.lo src/libs6rc/s6rc_livedir_prefix.lo src/libs6rc/s6rc_livedir_prefixsize.lo src/libs6rc/s6rc_lock.lo src/libs6rc/s6rc_read_uint.lo src/libs6rc/s6rc_sanitize_dir.lo src/libs6rc/s6rc_servicedir_internal.lo src/libs6rc/s6rc_servicedir_block.lo src/libs6rc/s6rc_servicedir_unblock.lo src/libs6rc/s6rc_servicedir_copy_offline.lo src/libs6rc/s6rc_servicedir_copy_online.lo src/libs6rc/s6rc_servicedir_manage.lo src/libs6rc/s6rc_servicedir_unsupervise.lo
+libs6rc.so.xyzzy:src/libs6rc/s6rc_db_check_depcycles.lo src/libs6rc/s6rc_db_check_pipelines.lo src/libs6rc/s6rc_db_check_revdeps.lo src/libs6rc/s6rc_db_read.lo src/libs6rc/s6rc_db_read_sizes.lo src/libs6rc/s6rc_db_read_uint32.lo src/libs6rc/s6rc_get_major.lo src/libs6rc/s6rc_graph_closure.lo src/libs6rc/s6rc_graph_clean.lo src/libs6rc/s6rc_live_state_size.lo src/libs6rc/s6rc_live_state_read.lo src/libs6rc/s6rc_livedir_canon.lo src/libs6rc/s6rc_livedir_create.lo src/libs6rc/s6rc_livedir_prefix.lo src/libs6rc/s6rc_livedir_prefixsize.lo src/libs6rc/s6rc_lock.lo src/libs6rc/s6rc_read_major.lo src/libs6rc/s6rc_read_uint.lo src/libs6rc/s6rc_sanitize_dir.lo src/libs6rc/s6rc_servicedir_internal.lo src/libs6rc/s6rc_servicedir_block.lo src/libs6rc/s6rc_servicedir_unblock.lo src/libs6rc/s6rc_servicedir_copy_offline.lo src/libs6rc/s6rc_servicedir_copy_online.lo src/libs6rc/s6rc_servicedir_manage.lo src/libs6rc/s6rc_servicedir_unsupervise.lo
libs6rc.dylib.xyzzy: EXTRA_LIBS := -ls6 -lskarnet ${SPAWN_LIB}
-libs6rc.dylib.xyzzy:src/libs6rc/s6rc_db_check_depcycles.lo src/libs6rc/s6rc_db_check_pipelines.lo src/libs6rc/s6rc_db_check_revdeps.lo src/libs6rc/s6rc_db_read.lo src/libs6rc/s6rc_db_read_sizes.lo src/libs6rc/s6rc_db_read_uint32.lo src/libs6rc/s6rc_graph_closure.lo src/libs6rc/s6rc_graph_clean.lo src/libs6rc/s6rc_live_state_size.lo src/libs6rc/s6rc_live_state_read.lo src/libs6rc/s6rc_livedir_canon.lo src/libs6rc/s6rc_livedir_create.lo src/libs6rc/s6rc_livedir_prefix.lo src/libs6rc/s6rc_livedir_prefixsize.lo src/libs6rc/s6rc_lock.lo src/libs6rc/s6rc_read_uint.lo src/libs6rc/s6rc_sanitize_dir.lo src/libs6rc/s6rc_servicedir_internal.lo src/libs6rc/s6rc_servicedir_block.lo src/libs6rc/s6rc_servicedir_unblock.lo src/libs6rc/s6rc_servicedir_copy_offline.lo src/libs6rc/s6rc_servicedir_copy_online.lo src/libs6rc/s6rc_servicedir_manage.lo src/libs6rc/s6rc_servicedir_unsupervise.lo
+libs6rc.dylib.xyzzy:src/libs6rc/s6rc_db_check_depcycles.lo src/libs6rc/s6rc_db_check_pipelines.lo src/libs6rc/s6rc_db_check_revdeps.lo src/libs6rc/s6rc_db_read.lo src/libs6rc/s6rc_db_read_sizes.lo src/libs6rc/s6rc_db_read_uint32.lo src/libs6rc/s6rc_get_major.lo src/libs6rc/s6rc_graph_closure.lo src/libs6rc/s6rc_graph_clean.lo src/libs6rc/s6rc_live_state_size.lo src/libs6rc/s6rc_live_state_read.lo src/libs6rc/s6rc_livedir_canon.lo src/libs6rc/s6rc_livedir_create.lo src/libs6rc/s6rc_livedir_prefix.lo src/libs6rc/s6rc_livedir_prefixsize.lo src/libs6rc/s6rc_lock.lo src/libs6rc/s6rc_read_major.lo src/libs6rc/s6rc_read_uint.lo src/libs6rc/s6rc_sanitize_dir.lo src/libs6rc/s6rc_servicedir_internal.lo src/libs6rc/s6rc_servicedir_block.lo src/libs6rc/s6rc_servicedir_unblock.lo src/libs6rc/s6rc_servicedir_copy_offline.lo src/libs6rc/s6rc_servicedir_copy_online.lo src/libs6rc/s6rc_servicedir_manage.lo src/libs6rc/s6rc_servicedir_unsupervise.lo
ifeq ($(strip $(STATIC_LIBS_ARE_PIC)),)
libs6rcrepo.a.xyzzy: src/repo/s6rc_repo_badpipeline.o src/repo/s6rc_repo_badrx.o src/repo/s6rc_repo_checkset.o src/repo/s6rc_repo_cleanup.o src/repo/s6rc_repo_compile.o src/repo/s6rc_repo_fillset.o src/repo/s6rc_repo_fixset.o src/repo/s6rc_repo_flattenservices.o src/repo/s6rc_repo_getserviceflags.o src/repo/s6rc_repo_list_sets.o src/repo/s6rc_repo_listalldeps.o src/repo/s6rc_repo_listcontents.o src/repo/s6rc_repo_listdeps.o src/repo/s6rc_repo_listdeps_internal.o src/repo/s6rc_repo_listrx.o src/repo/s6rc_repo_lock.o src/repo/s6rc_repo_ls.o src/repo/s6rc_repo_makedefbundle.o src/repo/s6rc_repo_makesetbundles.o src/repo/s6rc_repo_makestores.o src/repo/s6rc_repo_makesvlist.o src/repo/s6rc_repo_makesvlist_byname.o src/repo/s6rc_repo_moveservices.o src/repo/s6rc_repo_removeinternals.o src/repo/s6rc_repo_rxnames.o src/repo/s6rc_repo_sanitize_setname.o src/repo/s6rc_repo_sanitize_svname.o src/repo/s6rc_repo_setcompile.o src/repo/s6rc_repo_setcopy.o src/repo/s6rc_repo_setdelete.o src/repo/s6rc_repo_setuptodate.o src/repo/s6rc_repo_sv_bcmpr.o src/repo/s6rc_repo_sv_cmpr.o src/repo/s6rc_repo_sync.o src/repo/s6rc_repo_syncset.o src/repo/s6rc_repo_syncset_tmp.o src/repo/s6rc_repo_touch.o src/repo/s6rc_repo_touchset.o src/repo/s6rc_repo_type_check.o
else
diff --git a/package/info b/package/info
index c0cd306..1b3e4c1 100644
--- a/package/info
+++ b/package/info
@@ -1,4 +1,4 @@
package=s6-rc
-version=0.7.0.0
+version=0.7.1.0
category=admin
package_macro_name=S6RC
diff --git a/src/include/s6-rc/s6rc-utils.h b/src/include/s6-rc/s6rc-utils.h
index 15a3b74..e453ade 100644
--- a/src/include/s6-rc/s6rc-utils.h
+++ b/src/include/s6-rc/s6rc-utils.h
@@ -24,4 +24,7 @@ extern int s6rc_livedir_canon (char const **) ;
extern int s6rc_live_state_size (char const *, uint32_t *, uint32_t *) ;
extern int s6rc_live_state_read (char const *, unsigned char *, uint32_t) ;
+extern uint32_t s6rc_get_major (char const *) ; /* always pass S6RC_VERSION */
+extern uint32_t s6rc_read_major (char const *) ; /* the major a db was compiled with */
+
#endif
diff --git a/src/libs6rc/deps-lib/s6rc b/src/libs6rc/deps-lib/s6rc
index f1a8370..c16ccdf 100644
--- a/src/libs6rc/deps-lib/s6rc
+++ b/src/libs6rc/deps-lib/s6rc
@@ -4,6 +4,7 @@ s6rc_db_check_revdeps.o
s6rc_db_read.o
s6rc_db_read_sizes.o
s6rc_db_read_uint32.o
+s6rc_get_major.o
s6rc_graph_closure.o
s6rc_graph_clean.o
s6rc_live_state_size.o
@@ -13,6 +14,7 @@ s6rc_livedir_create.o
s6rc_livedir_prefix.o
s6rc_livedir_prefixsize.o
s6rc_lock.o
+s6rc_read_major.o
s6rc_read_uint.o
s6rc_sanitize_dir.o
s6rc_servicedir_internal.o
diff --git a/src/libs6rc/s6rc_get_major.c b/src/libs6rc/s6rc_get_major.c
new file mode 100644
index 0000000..3bb9fb1
--- /dev/null
+++ b/src/libs6rc/s6rc_get_major.c
@@ -0,0 +1,21 @@
+/* ISC license. */
+
+#include <stdint.h>
+
+#include <skalibs/uint16.h>
+
+#include <s6-rc/s6rc-utils.h>
+
+uint32_t s6rc_get_major (char const *s)
+{
+ size_t len = 0, l ;
+ uint32_t acc = 0 ;
+ uint16_t u ;
+ l = uint16_scan(s + len, &u) ;
+ if (!l || s[len + l++] != '.') return 0 ;
+ len += l ; acc = acc << 16 | u ;
+ l = uint16_scan(s + len, &u) ;
+ if (!l || s[len + l++] != '.') return 0 ;
+ len += l ; acc = acc << 16 | u ;
+ return acc ;
+}
diff --git a/src/libs6rc/s6rc_read_major.c b/src/libs6rc/s6rc_read_major.c
new file mode 100644
index 0000000..978f29c
--- /dev/null
+++ b/src/libs6rc/s6rc_read_major.c
@@ -0,0 +1,30 @@
+/* ISC license. */
+
+#include <string.h>
+#include <stdint.h>
+#include <errno.h>
+
+#include <skalibs/uint32.h>
+#include <skalibs/djbunix.h>
+
+#include <s6-rc/s6rc-utils.h>
+
+#include <skalibs/posixishard.h>
+
+uint32_t s6rc_read_major (char const *compiled)
+{
+ size_t clen = strlen(compiled) ;
+ ssize_t r ;
+ uint32_t res ;
+ char tmp[UINT32_FMT] ;
+ char fn[clen + 7] ;
+ 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) return 0 ;
+ if (tmp[r] != '\n') return (errno = EPROTO, 0) ;
+ tmp[r] = 0 ;
+ if (uint320_scan(tmp, &res) != r) return (errno = EPROTO, 0) ;
+ return res ;
+}
diff --git a/src/s6-rc/s6-rc-compile.c b/src/s6-rc/s6-rc-compile.c
index 62b9aef..0d4e208 100644
--- a/src/s6-rc/s6-rc-compile.c
+++ b/src/s6-rc/s6-rc-compile.c
@@ -1573,6 +1573,21 @@ static inline void write_db (char const *compiled, s6rc_db_t const *db)
strerr_diefusys(111, "write to ", dbfn) ;
}
+static inline void write_major (char const *compiled)
+{
+ uint32_t version = s6rc_get_major(S6RC_VERSION) ;
+ size_t len ;
+ char fmt[UINT32_FMT] ;
+ if (!version)
+ {
+ cleanup(compiled) ;
+ strerr_dief(101, "invalid software version: ", S6RC_VERSION) ;
+ }
+ len = uint32_fmt(fmt, version) ;
+ fmt[len++] = '\n' ;
+ auto_file(compiled, "major", fmt, len) ;
+}
+
static inline void write_compiled (
char const *compiled,
s6rc_db_t const *db,
@@ -1585,6 +1600,7 @@ static inline void write_compiled (
{
if (verbosity >= 2) strerr_warni("writing compiled information to ", compiled) ;
init_compiled(compiled) ;
+ write_major(compiled) ;
write_sizes(compiled, db) ;
write_resolve(compiled, db, bundles, nbundles, bdeps) ;
stralloc_free(&data) ;