kubo: 0.36.0 -> 0.37.0

https://github.com/ipfs/kubo/releases/tag/v0.37.0

Kubo v0.37.0 embeds the repository migration from repo version v16 to v17 and the kubo-fs-repo-migrations package will not reveive any more updates.
I'll keep the `kubo-fs-repo-migrations` and `kubo-migrator` packages around for now until a future version of Kubo no longer supports calling the external migration binaries.
Since the (newest) migrations are now built into Kubo, the NixOS module now needs to call `ipfs repo migrate --to=xx --allow-downgrade` instead of `fs-repo-migrations --to xx -y`.
The `--allow-downgrade` flag is only there for the unlikely situation that someone downgrades their local Kubo version with an overlay, separate channel input or similar means. It does however not work for rolling back the NixOS generation after a Kubo upgrade which increases the repo version (not all Kubo upgrades increase the repo version). This is because the Kubo version of the previous NixOS generation doesn't have the code for upgrading to or downgrading from the newer repo version.
Since we only have one version of Kubo in Nixpkgs at a time, migrations cannot be tested automatically. I manually verified that `ipfs repo migrate` uses binaries like `fs-repo-15-to-16` provided by the `kubo-fs-repo-migrations` packages for older migrations. I also tested that the migration from v16 to v17 works on my machine using the NixOS module.
This commit is contained in:
Luflosi
2025-10-19 12:39:48 +02:00
parent 5a967f4a1e
commit 5fcc08a907
3 changed files with 9 additions and 10 deletions

View File

@@ -167,7 +167,7 @@ in
autoMigrate = lib.mkOption { autoMigrate = lib.mkOption {
type = lib.types.bool; type = lib.types.bool;
default = true; default = true;
description = "Whether Kubo should try to run the fs-repo-migration at startup."; description = "Whether Kubo should try to migrate its filesystem repository automatically.";
}; };
enableGC = lib.mkOption { enableGC = lib.mkOption {
@@ -344,9 +344,6 @@ in
createHome = false; createHome = false;
uid = config.ids.uids.ipfs; uid = config.ids.uids.ipfs;
description = "IPFS daemon user"; description = "IPFS daemon user";
packages = [
pkgs.kubo-migrator
];
}; };
}; };
@@ -377,6 +374,7 @@ in
path = [ path = [
"/run/wrappers" "/run/wrappers"
cfg.package cfg.package
pkgs.kubo-fs-repo-migrations # Used by 'ipfs repo migrate --to=...'
]; ];
environment.IPFS_PATH = cfg.dataDir; environment.IPFS_PATH = cfg.dataDir;
@@ -388,7 +386,7 @@ in
rm -vf "$IPFS_PATH/api" rm -vf "$IPFS_PATH/api"
'' ''
+ lib.optionalString cfg.autoMigrate '' + lib.optionalString cfg.autoMigrate ''
'${lib.getExe pkgs.kubo-migrator}' -to '${cfg.package.repoVersion}' -y '${lib.getExe cfg.package}' repo migrate '--to=${cfg.package.repoVersion}' --allow-downgrade
'' ''
+ '' + ''
fi fi
@@ -412,7 +410,7 @@ in
serviceConfig = { serviceConfig = {
ExecStart = [ ExecStart = [
"" ""
"${cfg.package}/bin/ipfs daemon ${kuboFlags}" "${lib.getExe cfg.package} daemon ${kuboFlags}"
]; ];
User = cfg.user; User = cfg.user;
Group = cfg.group; Group = cfg.group;

View File

@@ -258,7 +258,8 @@ symlinkJoin {
longDescription = '' longDescription = ''
This package contains all the individual migrations in the bin directory. This package contains all the individual migrations in the bin directory.
This is used by fs-repo-migrations and could also be used by Kubo itself This is used by fs-repo-migrations and could also be used by Kubo itself
when starting it like this: ipfs daemon --migrate when starting it like this: `ipfs daemon --migrate`
or when calling `ipfs repo migrate --to=16`.
''; '';
}; };
} }

View File

@@ -8,15 +8,15 @@
buildGoModule rec { buildGoModule rec {
pname = "kubo"; pname = "kubo";
version = "0.36.0"; # When updating, also check if the repo version changed and adjust repoVersion below version = "0.37.0"; # When updating, also check if the repo version changed and adjust repoVersion below
rev = "v${version}"; rev = "v${version}";
passthru.repoVersion = "16"; # Also update kubo-migrator when changing the repo version passthru.repoVersion = "17";
# Kubo makes changes to its source tarball that don't match the git source. # Kubo makes changes to its source tarball that don't match the git source.
src = fetchurl { src = fetchurl {
url = "https://github.com/ipfs/kubo/releases/download/${rev}/kubo-source.tar.gz"; url = "https://github.com/ipfs/kubo/releases/download/${rev}/kubo-source.tar.gz";
hash = "sha256-JbWt6d1cX3F2lmivjszcxcyE+wKYk+Sy03xhb4E3oHw="; hash = "sha256-/7yWGxqqbiUajkWF5/YL/HUpH0/aevutQwy70VJuieA=";
}; };
# tarball contains multiple files/directories # tarball contains multiple files/directories