You've already forked guix-tribes
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
5abdfc8fcc
|
|||
|
bc8ff14569
|
|||
|
ba211e1d18
|
|||
|
b08420710a
|
|||
|
061ea3da52
|
|||
|
07f831a909
|
|||
|
0bbeed9df9
|
|||
|
dfc6f3ebb3
|
+46
-10
@@ -16,13 +16,19 @@ Usage: update-plugin-pin [options] plugin [rev]
|
||||
|
||||
Pin a Tribes external plugin and refresh fixed-output hashes.
|
||||
|
||||
PLUGIN is the plugin slug. REV defaults to "master" resolved from the
|
||||
plugin checkout. The plugin manifest.json is the source of truth for plugin
|
||||
id, slug, version, provides, and requires metadata. By default the script expects
|
||||
the plugin checkout at ../tribes-plugin-$PLUGIN and the Guix plugin file at
|
||||
tribes/plugins/$PLUGIN.scm relative to the guix-tribes checkout.
|
||||
PLUGIN is the canonical plugin slug or, for older plugin layouts, the source
|
||||
repository basename. REV defaults to "master" resolved from the plugin checkout.
|
||||
The plugin manifest.json is the source of truth for plugin id, slug, version,
|
||||
provides, and requires metadata. By default the script expects the plugin
|
||||
checkout at ../tribes-plugin-$PLUGIN and the Guix plugin file at
|
||||
tribes/plugins/$PLUGIN.scm relative to the guix-tribes checkout. If those do not
|
||||
exist and PLUGIN starts with tribe-one-, it also tries the unprefixed source
|
||||
basename. Use --plugin-source-name when the source repository and Guix file
|
||||
basename differ from the canonical slug.
|
||||
|
||||
Options:
|
||||
--plugin-source-name NAME
|
||||
Source repository, Guix file, package, and Scheme symbol basename
|
||||
--plugin-repo PATH Local plugin git checkout
|
||||
--plugin-file PATH Guix plugin definition file to update
|
||||
--tribes-repo PATH Local Tribes git checkout used for the host plugin API
|
||||
@@ -133,6 +139,7 @@ my %opts;
|
||||
|
||||
GetOptionsFromArray(
|
||||
\@argv,
|
||||
'plugin-source-name=s' => \$opts{plugin_source_name},
|
||||
'plugin-repo=s' => \$opts{plugin_repo},
|
||||
'plugin-file=s' => \$opts{plugin_file},
|
||||
'tribes-repo=s' => \$opts{tribes_repo},
|
||||
@@ -168,16 +175,37 @@ my $default_tribes_repo = abs_path(File::Spec->catdir($default_guix_repo, '..',
|
||||
|
||||
my $guix_repo = $opts{guix_repo} ? abs_path($opts{guix_repo}) : $default_guix_repo;
|
||||
my $tribes_repo = $opts{tribes_repo} ? abs_path($opts{tribes_repo}) : $default_tribes_repo;
|
||||
|
||||
sub default_plugin_source_name {
|
||||
my ($plugin, $guix_repo) = @_;
|
||||
my @candidates = ($plugin);
|
||||
|
||||
if ($plugin =~ /^tribe-one-(.+)$/) {
|
||||
push @candidates, $1;
|
||||
}
|
||||
|
||||
for my $candidate (@candidates) {
|
||||
my $repo = File::Spec->catdir($guix_repo, '..', "tribes-plugin-$candidate");
|
||||
my $file = File::Spec->catfile($guix_repo, 'tribes', 'plugins', "$candidate.scm");
|
||||
return $candidate if -d File::Spec->catdir($repo, '.git') && -f $file;
|
||||
}
|
||||
|
||||
return $plugin;
|
||||
}
|
||||
|
||||
my $plugin_source_name = $opts{plugin_source_name} // default_plugin_source_name($plugin, $guix_repo);
|
||||
$plugin_source_name =~ /^[A-Za-z0-9._+-]+$/ or fail("Invalid plugin source name: $plugin_source_name");
|
||||
|
||||
my $plugin_repo =
|
||||
$opts{plugin_repo}
|
||||
? abs_path($opts{plugin_repo})
|
||||
: abs_path(File::Spec->catdir($guix_repo, '..', "tribes-plugin-$plugin"));
|
||||
: abs_path(File::Spec->catdir($guix_repo, '..', "tribes-plugin-$plugin_source_name"));
|
||||
my $plugin_file =
|
||||
$opts{plugin_file}
|
||||
? abs_path($opts{plugin_file})
|
||||
: File::Spec->catfile($guix_repo, 'tribes', 'plugins', "$plugin.scm");
|
||||
: File::Spec->catfile($guix_repo, 'tribes', 'plugins', "$plugin_source_name.scm");
|
||||
my $source_file = File::Spec->catfile($guix_repo, 'tribes', 'packages', 'source.scm');
|
||||
my $plugin_package_name = "tribes-plugin-$plugin";
|
||||
my $plugin_package_name = "tribes-plugin-$plugin_source_name";
|
||||
|
||||
-d File::Spec->catdir($plugin_repo, '.git') or fail("Plugin repo not found: $plugin_repo");
|
||||
-d File::Spec->catdir($tribes_repo, '.git') or fail("Tribes repo not found: $tribes_repo");
|
||||
@@ -253,7 +281,14 @@ my $version = $manifest->{version};
|
||||
my $provides_joined = join("\037", @{ $manifest->{provides} });
|
||||
my $requires_joined = join("\037", @{ $manifest->{requires} });
|
||||
|
||||
$plugin_slug eq $plugin or fail("Plugin manifest slug mismatch: expected $plugin, got $plugin_slug");
|
||||
if ($plugin_slug ne $plugin) {
|
||||
if (!defined($opts{plugin_source_name}) && $plugin eq $plugin_source_name) {
|
||||
print STDERR "Plugin argument '$plugin' matched source name; using manifest slug '$plugin_slug'.\n";
|
||||
$plugin = $plugin_slug;
|
||||
} else {
|
||||
fail("Plugin manifest slug mismatch: expected $plugin, got $plugin_slug");
|
||||
}
|
||||
}
|
||||
|
||||
my ($plugin_source_for_scheme, $tribes_source_for_scheme, $guix_load_path);
|
||||
my $source_hash;
|
||||
@@ -348,7 +383,7 @@ my $dummy_hash = '0' x 52;
|
||||
|
||||
my $text = read_file($plugin_file);
|
||||
my @candidates;
|
||||
for my $candidate ($plugin, ($plugin =~ tr/_/-/r)) {
|
||||
for my $candidate ($plugin_source_name, ($plugin_source_name =~ tr/_/-/r)) {
|
||||
push @candidates, $candidate unless grep { $_ eq $candidate } @candidates;
|
||||
}
|
||||
|
||||
@@ -502,6 +537,7 @@ write_file($plugin_file, $text);
|
||||
|
||||
print "Updated $plugin_file\n";
|
||||
print "plugin: $plugin\n";
|
||||
print "plugin source name: $plugin_source_name\n" if $plugin_source_name ne $plugin;
|
||||
print "plugin id: $plugin_id\n";
|
||||
print "commit: $commit\n";
|
||||
print "host tribes commit: $host_commit\n";
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
|
||||
set -eu
|
||||
|
||||
# External plugin pins to refresh. Each name maps to ../tribes-plugin-$name
|
||||
# and tribes/plugins/$name.scm unless update-plugin-pin is called with
|
||||
# different defaults in the future.
|
||||
plugins="sender aether supertest kobold trust"
|
||||
# External plugin pins to refresh. Each entry is canonical-slug:source-name.
|
||||
# The source name maps to ../tribes-plugin-$source_name and
|
||||
# tribes/plugins/$source_name.scm.
|
||||
plugins="tribe-one-sender:sender tribe-one-aether:aether tribe-one-supertest:supertest tribe-one-kobold:kobold tribe-one-trust:trust"
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
@@ -86,11 +86,15 @@ fi
|
||||
--tribes-repo "$tribes_repo" \
|
||||
$build_host_args
|
||||
|
||||
for plugin in $plugins; do
|
||||
for plugin_entry in $plugins; do
|
||||
plugin=${plugin_entry%%:*}
|
||||
plugin_source_name=${plugin_entry#*:}
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
"$update_plugin_pin" \
|
||||
--guix-repo "$guix_repo" \
|
||||
--tribes-repo "$tribes_repo" \
|
||||
--plugin-source-name "$plugin_source_name" \
|
||||
$build_host_args \
|
||||
"$plugin"
|
||||
done
|
||||
@@ -99,8 +103,9 @@ if [ "$commit_after" = true ]; then
|
||||
git -C "$guix_repo" add -- \
|
||||
tribes/packages/source.scm
|
||||
|
||||
for plugin in $plugins; do
|
||||
git -C "$guix_repo" add -- "tribes/plugins/$plugin.scm"
|
||||
for plugin_entry in $plugins; do
|
||||
plugin_source_name=${plugin_entry#*:}
|
||||
git -C "$guix_repo" add -- "tribes/plugins/$plugin_source_name.scm"
|
||||
done
|
||||
|
||||
if git -C "$guix_repo" diff --cached --quiet; then
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
(operating-system-host-name kobold-edge-operating-system))
|
||||
|
||||
(test-equal "kobold target includes trust provider"
|
||||
'("trust" "kobold")
|
||||
'("tribe-one-trust" "tribe-one-kobold")
|
||||
(target-plugin-names kobold-edge-operating-system))
|
||||
|
||||
(test-equal "sender target has expected host name"
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
(define valid-target
|
||||
`(("trusted_signers" . (,valid-signer))
|
||||
("channels" . (,valid-channel))
|
||||
("plugins" . ((("plugin_name" . "aether")
|
||||
("plugins" . ((("plugin_name" . "tribe-one-aether")
|
||||
("channel_id" . "guix-tribes")
|
||||
("enabled" . #t))))))
|
||||
|
||||
@@ -43,16 +43,16 @@
|
||||
("action" . "apply"))))
|
||||
|
||||
(test-equal "deployment request plugins preserve names"
|
||||
'("aether")
|
||||
'("tribe-one-aether")
|
||||
(deployment-request-plugins
|
||||
'(("schemaVersion" . "1")
|
||||
("action" . "apply")
|
||||
("plugins" . ("aether")))))
|
||||
("plugins" . ("tribe-one-aether")))))
|
||||
|
||||
(test-equal "host config plugins are updated in tribes block"
|
||||
'(("schemaVersion" . "1")
|
||||
("tribes" . (("host" . "example.com")
|
||||
("plugins" . ("aether"))
|
||||
("plugins" . ("tribe-one-aether"))
|
||||
("disabledPlugins" . ())))
|
||||
("edge" . (("certificateName" . "tribes"))))
|
||||
(host-config-with-plugins
|
||||
@@ -60,12 +60,12 @@
|
||||
("tribes" . (("host" . "example.com")
|
||||
("plugins" . ())))
|
||||
("edge" . (("certificateName" . "tribes"))))
|
||||
'("aether")))
|
||||
'("tribe-one-aether")))
|
||||
|
||||
(test-equal "system target plugin names include installed plugins"
|
||||
'("aether" "disabled")
|
||||
'("tribe-one-aether" "disabled")
|
||||
(system-target-plugin-names
|
||||
'(("plugins" . ((("plugin_name" . "aether")
|
||||
'(("plugins" . ((("plugin_name" . "tribe-one-aether")
|
||||
("enabled" . #t))
|
||||
(("plugin_name" . "disabled")
|
||||
("enabled" . #f)))))))
|
||||
@@ -73,7 +73,7 @@
|
||||
(test-equal "system target disabled plugin names include disabled plugins"
|
||||
'("disabled")
|
||||
(system-target-disabled-plugin-names
|
||||
'(("plugins" . ((("plugin_name" . "aether")
|
||||
'(("plugins" . ((("plugin_name" . "tribe-one-aether")
|
||||
("enabled" . #t))
|
||||
(("plugin_name" . "disabled")
|
||||
("enabled" . #f)))))))
|
||||
@@ -101,7 +101,7 @@
|
||||
guix-tribes-runtime-missing-capabilities)
|
||||
|
||||
(test-equal "resolve-target emits channel-aware plugin package refs"
|
||||
'("aether")
|
||||
'("tribe-one-aether")
|
||||
(let* ((plan (resolve-target valid-target))
|
||||
(hash-value (json-ref plan "plan_hash"))
|
||||
(resolved-plugins
|
||||
@@ -119,7 +119,7 @@
|
||||
(plan-plugins plan)))
|
||||
|
||||
(test-equal "resolve-target accepts spaced introduction fingerprints"
|
||||
'("sender")
|
||||
'("tribe-one-sender")
|
||||
(let* ((spaced-channel
|
||||
`(("id" . "guix-tribes")
|
||||
("channel_id" . "guix-tribes")
|
||||
@@ -134,29 +134,29 @@
|
||||
(resolve-target
|
||||
`(("trusted_signers" . (,valid-signer))
|
||||
("channels" . (,spaced-channel))
|
||||
("plugins" . ((("plugin_name" . "sender")
|
||||
("plugins" . ((("plugin_name" . "tribe-one-sender")
|
||||
("channel_id" . "guix-tribes")
|
||||
("enabled" . #t))))))))
|
||||
(plan-plugins plan)))
|
||||
|
||||
(test-equal "resolve-target satisfies org.tribe-one.caps.ui@1 from built-in Tribes UI"
|
||||
'("sender")
|
||||
'("tribe-one-sender")
|
||||
(let ((plan
|
||||
(resolve-target
|
||||
`(("trusted_signers" . (,valid-signer))
|
||||
("channels" . (,valid-channel))
|
||||
("plugins" . ((("plugin_name" . "sender")
|
||||
("plugins" . ((("plugin_name" . "tribe-one-sender")
|
||||
("channel_id" . "guix-tribes")
|
||||
("enabled" . #t))))))))
|
||||
(plan-plugins plan)))
|
||||
|
||||
(test-equal "resolve-target keeps disabled plugins installed but runtime-disabled"
|
||||
'(("aether") ("aether"))
|
||||
'(("tribe-one-aether") ("tribe-one-aether"))
|
||||
(let ((plan
|
||||
(resolve-target
|
||||
`(("trusted_signers" . (,valid-signer))
|
||||
("channels" . (,valid-channel))
|
||||
("plugins" . ((("plugin_name" . "aether")
|
||||
("plugins" . ((("plugin_name" . "tribe-one-aether")
|
||||
("channel_id" . "guix-tribes")
|
||||
("enabled" . #f))))))))
|
||||
(list (plan-plugins plan) (plan-disabled-plugins plan))))
|
||||
@@ -167,8 +167,8 @@
|
||||
(resolve-target
|
||||
`(("trusted_signers" . (,valid-signer))
|
||||
("channels" . (,valid-channel))
|
||||
("plugins" . ((("plugin_name" . "aether") ("enabled" . #t))
|
||||
(("plugin_name" . "aether") ("enabled" . #t))))))))
|
||||
("plugins" . ((("plugin_name" . "tribe-one-aether") ("enabled" . #t))
|
||||
(("plugin_name" . "tribe-one-aether") ("enabled" . #t))))))))
|
||||
|
||||
(test-equal "resolve-target rejects unknown plugins"
|
||||
"manifest_invalid"
|
||||
@@ -193,7 +193,7 @@
|
||||
("allowed_signer_ids" . ("signer-1"))
|
||||
("introduction" . (("commit" . "intro123")
|
||||
("fingerprint" . "0123456789ABCDEF0123456789ABCDEF01234567"))))))
|
||||
("plugins" . ((("plugin_name" . "aether")
|
||||
("plugins" . ((("plugin_name" . "tribe-one-aether")
|
||||
("channel_id" . "guix-tribes")
|
||||
("enabled" . #t))))))))
|
||||
|
||||
|
||||
@@ -19,16 +19,16 @@
|
||||
|
||||
(define plan-a
|
||||
'(("plan_hash" . "plan-a")
|
||||
("resolved_plugins" . ((("name" . "aether"))))))
|
||||
("resolved_plugins" . ((("name" . "tribe-one-aether"))))))
|
||||
|
||||
(define plan-b
|
||||
'(("plan_hash" . "plan-b")
|
||||
("resolved_plugins" . ((("name" . "aether"))))))
|
||||
("resolved_plugins" . ((("name" . "tribe-one-aether"))))))
|
||||
|
||||
(define plan-without-channel-delta
|
||||
'(("plan_hash" . "plan-without-channel-delta")
|
||||
("resolved_channels" . #())
|
||||
("resolved_plugins" . ((("name" . "supertest"))))))
|
||||
("resolved_plugins" . ((("name" . "tribe-one-supertest"))))))
|
||||
|
||||
(define plan-with-channel-pin
|
||||
'(("plan_hash" . "plan-with-channel-pin")
|
||||
@@ -38,7 +38,7 @@
|
||||
("branch" . "master")
|
||||
("commit" . "abc123")
|
||||
("position" . 10))))
|
||||
("resolved_plugins" . ((("name" . "supertest"))))))
|
||||
("resolved_plugins" . ((("name" . "tribe-one-supertest"))))))
|
||||
(define plan-with-branch-channel
|
||||
'(("plan_hash" . "plan-with-branch-channel")
|
||||
("resolved_channels" . #((("channel_id" . "guix-tribes")
|
||||
@@ -47,7 +47,7 @@
|
||||
("branch" . "master")
|
||||
("commit" . #f)
|
||||
("position" . 10))))
|
||||
("resolved_plugins" . ((("name" . "supertest"))))))
|
||||
("resolved_plugins" . ((("name" . "tribe-one-supertest"))))))
|
||||
|
||||
(define (delete-if-present path)
|
||||
(when (false-if-exception (lstat path))
|
||||
@@ -516,8 +516,8 @@
|
||||
(call-with-values
|
||||
(lambda ()
|
||||
(resolve-deployment
|
||||
'(("plugins" . ((("plugin_name" . "aether") ("enabled" . #t))
|
||||
(("plugin_name" . "aether") ("enabled" . #t)))))))
|
||||
'(("plugins" . ((("plugin_name" . "tribe-one-aether") ("enabled" . #t))
|
||||
(("plugin_name" . "tribe-one-aether") ("enabled" . #t)))))))
|
||||
(lambda (status payload)
|
||||
(test-equal "resolve-deployment returns 409 for explicit resolver errors"
|
||||
409 status)
|
||||
|
||||
@@ -62,6 +62,9 @@
|
||||
(contains? vcl ".connect_timeout = 1s;"))
|
||||
(test-assert "edge cache backend uses bounded first-byte timeout"
|
||||
(contains? vcl ".first_byte_timeout = 5s;"))
|
||||
(test-assert "edge cache gives admin API requests longer backend timeouts"
|
||||
(contains? vcl
|
||||
"sub vcl_backend_fetch {\n if (bereq.url ~ \"^/api/admin/\") {\n set bereq.connect_timeout = 1s;\n set bereq.first_byte_timeout = 35s;\n set bereq.between_bytes_timeout = 35s;"))
|
||||
(test-assert "edge cache retries only GET/HEAD 5xx backend responses"
|
||||
(contains? vcl
|
||||
"if ((bereq.method == \"GET\" || bereq.method == \"HEAD\") &&\n beresp.status >= 500 && beresp.status <= 599 &&\n bereq.retries < 5)"))
|
||||
|
||||
@@ -257,20 +257,20 @@
|
||||
|
||||
(define aether-edge-operating-system
|
||||
(ci-operating-system "tribes-ci-aether-edge"
|
||||
(list (plugin-by-name "aether"))))
|
||||
(list (plugin-by-name "tribe-one-aether"))))
|
||||
|
||||
(define kobold-edge-operating-system
|
||||
(ci-operating-system "tribes-ci-kobold-edge"
|
||||
(list (plugin-by-name "trust")
|
||||
(plugin-by-name "kobold"))))
|
||||
(list (plugin-by-name "tribe-one-trust")
|
||||
(plugin-by-name "tribe-one-kobold"))))
|
||||
|
||||
(define sender-edge-operating-system
|
||||
(ci-operating-system "tribes-ci-sender-edge"
|
||||
(list (plugin-by-name "sender"))))
|
||||
(list (plugin-by-name "tribe-one-sender"))))
|
||||
|
||||
(define supertest-edge-operating-system
|
||||
(ci-operating-system "tribes-ci-supertest-edge"
|
||||
(list (plugin-by-name "supertest"))))
|
||||
(list (plugin-by-name "tribe-one-supertest"))))
|
||||
|
||||
(define %substitute-operating-system-targets
|
||||
`((phase1 . ,phase1-operating-system)
|
||||
|
||||
+17
-18
@@ -8,12 +8,11 @@
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages elixir)
|
||||
#:use-module (gnu packages erlang)
|
||||
#:use-module (gnu packages node)
|
||||
#:use-module (gnu packages certs)
|
||||
#:use-module (gnu packages nss)
|
||||
#:use-module (gnu packages version-control)
|
||||
#:use-module (tribes packages otp)
|
||||
#:export (fetch-mix-deps
|
||||
fetch-npm-deps
|
||||
mix-release-package))
|
||||
@@ -44,14 +43,14 @@ SOURCE according to mix.lock."
|
||||
(string-append work "/ca-certificates.crt"))
|
||||
(define hex-lib-dir
|
||||
(string-append
|
||||
#$(file-append elixir-hex "/lib/elixir/1.19")
|
||||
#$(file-append elixir-hex-otp28 "/lib/elixir/1.19")
|
||||
":"
|
||||
#$(file-append elixir-hex "/lib/elixir/1.18")))
|
||||
#$(file-append elixir-hex-otp28 "/lib/elixir/1.18")))
|
||||
(define path
|
||||
(string-join
|
||||
(list #$(file-append elixir "/bin")
|
||||
#$(file-append elixir-hex "/bin")
|
||||
#$(file-append rebar3 "/bin")
|
||||
(list #$(file-append elixir-otp28 "/bin")
|
||||
#$(file-append elixir-hex-otp28 "/bin")
|
||||
#$(file-append rebar3-otp28 "/bin")
|
||||
#$(file-append bash-minimal "/bin")
|
||||
#$(file-append coreutils "/bin")
|
||||
#$(file-append findutils "/bin")
|
||||
@@ -82,7 +81,7 @@ SOURCE according to mix.lock."
|
||||
(setenv "MIX_ENV" #$mix-env)
|
||||
(setenv "MIX_TARGET" #$mix-target)
|
||||
(setenv "MIX_OS_CONCURRENCY_LOCK" "0")
|
||||
(setenv "MIX_REBAR3" #$(file-append rebar3 "/bin/rebar3"))
|
||||
(setenv "MIX_REBAR3" #$(file-append rebar3-otp28 "/bin/rebar3"))
|
||||
(setenv "REBAR_GLOBAL_CONFIG_DIR" (string-append work "/rebar3"))
|
||||
(setenv "REBAR_CACHE_DIR" (string-append work "/rebar3.cache"))
|
||||
(setenv "LANG" "C.UTF-8")
|
||||
@@ -280,16 +279,16 @@ MIX-FOD-DEPS as a pre-fetched dependency tree."
|
||||
(string-append work "/ca-certificates.crt"))
|
||||
(define hex-lib-dir
|
||||
(string-append
|
||||
#$(file-append elixir-hex "/lib/elixir/1.19")
|
||||
#$(file-append elixir-hex-otp28 "/lib/elixir/1.19")
|
||||
":"
|
||||
#$(file-append elixir-hex "/lib/elixir/1.18")))
|
||||
#$(file-append elixir-hex-otp28 "/lib/elixir/1.18")))
|
||||
(define aclocal-path
|
||||
(string-join (list #$@aclocal-dirs) ":"))
|
||||
(define path
|
||||
(string-join
|
||||
(list #$(file-append elixir "/bin")
|
||||
#$(file-append elixir-hex "/bin")
|
||||
#$(file-append rebar3 "/bin")
|
||||
(list #$(file-append elixir-otp28 "/bin")
|
||||
#$(file-append elixir-hex-otp28 "/bin")
|
||||
#$(file-append rebar3-otp28 "/bin")
|
||||
#$(file-append bash-minimal "/bin")
|
||||
#$(file-append coreutils "/bin")
|
||||
#$(file-append findutils "/bin")
|
||||
@@ -330,8 +329,8 @@ MIX-FOD-DEPS as a pre-fetched dependency tree."
|
||||
(setenv "MIX_OS_CONCURRENCY_LOCK" "0")
|
||||
(setenv "MIX_OS_DEPS_COMPILE_PARTITION_COUNT" "6")
|
||||
(setenv "HEX_OFFLINE" "1")
|
||||
(setenv "MIX_REBAR" #$(file-append rebar3 "/bin/rebar3"))
|
||||
(setenv "MIX_REBAR3" #$(file-append rebar3 "/bin/rebar3"))
|
||||
(setenv "MIX_REBAR" #$(file-append rebar3-otp28 "/bin/rebar3"))
|
||||
(setenv "MIX_REBAR3" #$(file-append rebar3-otp28 "/bin/rebar3"))
|
||||
(setenv "REBAR_GLOBAL_CONFIG_DIR" (string-append work "/rebar3"))
|
||||
(setenv "REBAR_CACHE_DIR" (string-append work "/rebar3.cache"))
|
||||
(setenv "SHELL" #$(file-append bash-minimal "/bin/sh"))
|
||||
@@ -386,9 +385,9 @@ MIX-FOD-DEPS as a pre-fetched dependency tree."
|
||||
findutils
|
||||
git-minimal
|
||||
nss-certs
|
||||
rebar3
|
||||
elixir
|
||||
elixir-hex)
|
||||
rebar3-otp28
|
||||
elixir-otp28
|
||||
elixir-hex-otp28)
|
||||
native-inputs))
|
||||
(inputs inputs)
|
||||
(arguments package-arguments)
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
(define-module (tribes packages otp)
|
||||
#:use-module (guix base32)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages elixir)
|
||||
#:use-module (gnu packages erlang)
|
||||
#:use-module (gnu packages perl)
|
||||
#:export (erlang-28
|
||||
rebar3-otp28
|
||||
elixir-otp28
|
||||
elixir-hex-otp28))
|
||||
|
||||
(define-public erlang-28
|
||||
(package
|
||||
(inherit erlang)
|
||||
(name "erlang-28")
|
||||
(version "28.5.0.2")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/erlang/otp")
|
||||
(commit (string-append "OTP-" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0far6szk9h85njn7vwpg4pp9zkxrbyak0w7cr8iymg90s693c34q"))
|
||||
(patches (search-patches "erlang-man-path.patch"))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments erlang)
|
||||
((#:configure-flags flags)
|
||||
`(append
|
||||
(map (lambda (flag)
|
||||
(if (string=? flag "--enable-wx")
|
||||
"--without-wx"
|
||||
flag))
|
||||
,flags)
|
||||
;; OTP does not automatically skip applications that depend on wx.
|
||||
'("--without-debugger"
|
||||
"--without-observer"
|
||||
"--without-et"
|
||||
"--without-reltool")))
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
;; OTP 28.5.0.2 no longer creates this directory during the first
|
||||
;; pass, but the inherited second-pass clean target still rmdirs it.
|
||||
(add-after 'copy-modified-compiler
|
||||
'create-erl-interface-erts-clean-dir
|
||||
(lambda _
|
||||
(mkdir-p "lib/erl_interface/src/erts")))))))
|
||||
(inputs
|
||||
(modify-inputs (package-inputs erlang)
|
||||
(delete "wxwidgets")))
|
||||
(propagated-inputs '())
|
||||
(native-inputs
|
||||
`(("perl" ,perl)
|
||||
("erlang-manpages"
|
||||
,(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/erlang/otp/releases/download"
|
||||
"/OTP-" version "/otp_doc_man_" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"02k1dvjfqq4pml8p789spkpj99szsiqqbzhd8kmb9dx30g565mzy"))))))))
|
||||
|
||||
(define-public rebar3-otp28
|
||||
(package
|
||||
(inherit rebar3)
|
||||
(name "rebar3-otp28")
|
||||
(native-inputs
|
||||
(modify-inputs (package-native-inputs rebar3)
|
||||
(replace "erlang" erlang-28)))))
|
||||
|
||||
(define-public elixir-otp28
|
||||
(package
|
||||
(inherit elixir)
|
||||
(name "elixir-otp28")
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments elixir)
|
||||
((#:tests? _ #f)
|
||||
#f)))
|
||||
(inputs
|
||||
(modify-inputs (package-inputs elixir)
|
||||
(replace "erlang" erlang-28)
|
||||
(replace "rebar3" rebar3-otp28)))))
|
||||
|
||||
(define-public elixir-hex-otp28
|
||||
(package
|
||||
(inherit elixir-hex)
|
||||
(name "elixir-hex-otp28")
|
||||
(inputs
|
||||
(modify-inputs (package-inputs elixir-hex)
|
||||
(replace "elixir" elixir-otp28)))))
|
||||
@@ -54,7 +54,7 @@
|
||||
"https://git.teralink.net/tribes/tribes.git")
|
||||
|
||||
(define %tribes-commit
|
||||
"f096578ec153342b29abfc5e900a82aefa378cb7")
|
||||
"8e2df14216624c1494f6e95c90520cd431c89ad8")
|
||||
|
||||
(define %tribes-revision "1")
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
(git-version "0.2.0" %tribes-revision %tribes-commit))
|
||||
|
||||
(define %tribes-source-sha256
|
||||
"0hcrf3b8ddp6a65si92slr3vrnvib855h4pyccgrsk10q34qapas")
|
||||
"11crm1wyfbwv5myn81xnb1cf2ccwz9gbnvi73jqssglnlyxxf5an")
|
||||
|
||||
(define %tribes-upstream-source
|
||||
(origin
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
%aether-home-page)
|
||||
|
||||
(define %aether-commit
|
||||
"80101b7e78808cea9151f1827777edea5c08ba1f")
|
||||
"995160f95e31efe4d026662885d4b016f144ce9a")
|
||||
|
||||
(define %aether-revision "1")
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
(git-version "0.2.0" %aether-revision %aether-commit))
|
||||
|
||||
(define %aether-source-sha256
|
||||
"0shylw4s75djanqm7h82j8advjg96im6n4wr6fz6kwbj5hs8aq4b")
|
||||
"1jp52q70z1djiglm03b81zh7zgn87gbf207xwih24h6a0zddsmgs")
|
||||
|
||||
(define %aether-mix-deps-sha256
|
||||
"1pk1qv8skbgzi0wg59zj9aiyxx2hxl2k6ngxqqbwvj7wsbiz95bb")
|
||||
@@ -68,7 +68,7 @@
|
||||
"External Tribes plugin artifact for Aether, packaged as a Guix-managed
|
||||
plugin directory."
|
||||
#:plugin-id "org.tribe-one.plugins.aether"
|
||||
#:plugin-slug "aether"
|
||||
#:plugin-slug "tribe-one-aether"
|
||||
#:display-name "Aether"
|
||||
#:provides '("org.tribe-one.caps.social@1" "org.tribe-one.caps.chat@1")
|
||||
#:requires '("org.tribe-one.caps.ui@1")
|
||||
@@ -104,7 +104,7 @@ artifact."
|
||||
"External Tribes plugin artifact for Aether, packaged as a Guix-managed
|
||||
plugin directory."
|
||||
#:plugin-id "org.tribe-one.plugins.aether"
|
||||
#:plugin-slug "aether"
|
||||
#:plugin-slug "tribe-one-aether"
|
||||
#:display-name "Aether"
|
||||
#:provides '("org.tribe-one.caps.social@1" "org.tribe-one.caps.chat@1")
|
||||
#:requires '("org.tribe-one.caps.ui@1")
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
(define guix-tribes-built-in-plugin-definitions
|
||||
(list
|
||||
(tribes-plugin-definition
|
||||
(name "tribes_ui")
|
||||
(name "tribe-one-tribes-ui")
|
||||
(package-name "tribes")
|
||||
(version "0.1.0")
|
||||
(synopsis "Default Tribes UI capability provider")
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
%kobold-home-page)
|
||||
|
||||
(define %kobold-commit
|
||||
"74b6c44e4dcfbeaf02f77620b5675f11781ad1eb")
|
||||
"4658b762411f014b531d4acc5aaea05463dbfca3")
|
||||
|
||||
(define %kobold-revision "1")
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
(git-version "0.1.0" %kobold-revision %kobold-commit))
|
||||
|
||||
(define %kobold-source-sha256
|
||||
"1xxysbslh1fa57873n4669mi874byv861w934mz9g3zszr120ijn")
|
||||
"0qrssm32apandr2m4fsh56v6ay7b31630k7g033f17fwxlrlbq34")
|
||||
|
||||
(define %kobold-mix-deps-sha256
|
||||
"1pk1qv8skbgzi0wg59zj9aiyxx2hxl2k6ngxqqbwvj7wsbiz95bb")
|
||||
@@ -68,7 +68,7 @@
|
||||
"External Tribes plugin artifact for Kobold distributed datasets,
|
||||
packaged as a Guix-managed plugin directory."
|
||||
#:plugin-id "org.tribe-one.plugins.kobold"
|
||||
#:plugin-slug "kobold"
|
||||
#:plugin-slug "tribe-one-kobold"
|
||||
#:display-name "Kobold"
|
||||
#:provides '("org.tribes.kobold.dataset@1")
|
||||
#:requires '("org.tribe-one.caps.ui@1" "org.tribes.alliance.trust@1")
|
||||
@@ -103,7 +103,7 @@ packaged as a Guix-managed plugin directory."
|
||||
"External Tribes plugin artifact for Kobold distributed datasets,
|
||||
packaged as a Guix-managed plugin directory."
|
||||
#:plugin-id "org.tribe-one.plugins.kobold"
|
||||
#:plugin-slug "kobold"
|
||||
#:plugin-slug "tribe-one-kobold"
|
||||
#:display-name "Kobold"
|
||||
#:provides '("org.tribes.kobold.dataset@1")
|
||||
#:requires '("org.tribe-one.caps.ui@1" "org.tribes.alliance.trust@1")
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
%sender-home-page)
|
||||
|
||||
(define %sender-commit
|
||||
"ee7d0ac29fb583e1c5f75001984622c2ba7e56b1")
|
||||
"cdbfef7cd300c581b74b7aa61e7c35fb52e7ccff")
|
||||
|
||||
(define %sender-revision "1")
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
(git-version "0.1.0" %sender-revision %sender-commit))
|
||||
|
||||
(define %sender-source-sha256
|
||||
"1bbgi20j99ym9yiv78w3j590wpf400bdkfiqf9s1ra31dgfzzq4v")
|
||||
"1nbybxiyihqv0avjkrl4x1k0iz5cyljcs38zvb6kln474v6qz0ly")
|
||||
|
||||
(define %sender-mix-deps-sha256
|
||||
"08mdy38247dqni8f84y09m8vz6hvjakvc4ml28x1jxqvq53s4nq3")
|
||||
@@ -72,7 +72,7 @@
|
||||
"External Tribes plugin artifact for RTMP ingest and HLS streaming,
|
||||
packaged as a Guix-managed plugin directory."
|
||||
#:plugin-id "org.tribe-one.plugins.sender"
|
||||
#:plugin-slug "sender"
|
||||
#:plugin-slug "tribe-one-sender"
|
||||
#:display-name "Sender"
|
||||
#:provides '("org.tribe-one.caps.sender@1")
|
||||
#:requires '("org.tribe-one.caps.ui@1")
|
||||
@@ -112,7 +112,7 @@ artifact."
|
||||
"External Tribes plugin artifact for RTMP ingest and HLS streaming,
|
||||
packaged as a Guix-managed plugin directory."
|
||||
#:plugin-id "org.tribe-one.plugins.sender"
|
||||
#:plugin-slug "sender"
|
||||
#:plugin-slug "tribe-one-sender"
|
||||
#:display-name "Sender"
|
||||
#:provides '("org.tribe-one.caps.sender@1")
|
||||
#:requires '("org.tribe-one.caps.ui@1")
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
%supertest-home-page)
|
||||
|
||||
(define %supertest-commit
|
||||
"afc38412c4362ea2e5b1fe9fe08f1cffe60edf34")
|
||||
"982243e64a132c4ae082234e775fa9f0e98b8eb4")
|
||||
|
||||
(define %supertest-revision "1")
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
(git-version "0.1.1" %supertest-revision %supertest-commit))
|
||||
|
||||
(define %supertest-source-sha256
|
||||
"1si0bis5k47j22cv7cbbah86ilrxvrbncld4isvyb17zan7ig0q6")
|
||||
"0mk4ph2ibnqvcca55n9dnlmfg6abm9p8bz3wsq8913crk55hw2qa")
|
||||
|
||||
(define %supertest-mix-deps-sha256
|
||||
"1pk1qv8skbgzi0wg59zj9aiyxx2hxl2k6ngxqqbwvj7wsbiz95bb")
|
||||
@@ -65,7 +65,7 @@
|
||||
#:description
|
||||
"External Tribes plugin artifact used by live rollout and sync tests."
|
||||
#:plugin-id "org.tribe-one.plugins.supertest"
|
||||
#:plugin-slug "supertest"
|
||||
#:plugin-slug "tribe-one-supertest"
|
||||
#:display-name "Supertest"
|
||||
#:provides '()
|
||||
#:requires '()
|
||||
@@ -95,7 +95,7 @@
|
||||
#:description
|
||||
"External Tribes plugin artifact used by live rollout and sync tests."
|
||||
#:plugin-id "org.tribe-one.plugins.supertest"
|
||||
#:plugin-slug "supertest"
|
||||
#:plugin-slug "tribe-one-supertest"
|
||||
#:display-name "Supertest"
|
||||
#:provides '()
|
||||
#:requires '()
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
%trust-home-page)
|
||||
|
||||
(define %trust-commit
|
||||
"f08af20cd5cd2dbbb50e4472bf1a5d8ed1b73c21")
|
||||
"157106aa66ecd7ce5f7f5a8a90c30a1f22e2fe74")
|
||||
|
||||
(define %trust-revision "1")
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
(git-version "0.1.0" %trust-revision %trust-commit))
|
||||
|
||||
(define %trust-source-sha256
|
||||
"1zsg57mr3bjxrxvim77z2as1jqr8a3anfp0jgqz0ycz6rzai58dp")
|
||||
"0k1gzpd5f5q3mczmxw0rwx7zwqxkspzk0zfpm1a130fd4dqc9y5z")
|
||||
|
||||
(define %trust-mix-deps-sha256
|
||||
"1pk1qv8skbgzi0wg59zj9aiyxx2hxl2k6ngxqqbwvj7wsbiz95bb")
|
||||
@@ -67,7 +67,7 @@
|
||||
#:description
|
||||
"External Tribes plugin artifact for tribe-to-tribe trust, alliance, and federation provider behavior."
|
||||
#:plugin-id "org.tribe-one.plugins.trust"
|
||||
#:plugin-slug "trust"
|
||||
#:plugin-slug "tribe-one-trust"
|
||||
#:display-name "Trust"
|
||||
#:provides '("org.tribes.alliance.trust@1" "org.tribes.federation.provider@1" "org.tribes.access.trust_provider@1")
|
||||
#:requires '("org.tribe-one.caps.ui@1")
|
||||
@@ -101,7 +101,7 @@
|
||||
#:description
|
||||
"External Tribes plugin artifact for tribe-to-tribe trust, alliance, and federation provider behavior."
|
||||
#:plugin-id "org.tribe-one.plugins.trust"
|
||||
#:plugin-slug "trust"
|
||||
#:plugin-slug "tribe-one-trust"
|
||||
#:display-name "Trust"
|
||||
#:provides '("org.tribes.alliance.trust@1" "org.tribes.federation.provider@1" "org.tribes.access.trust_provider@1")
|
||||
#:requires '("org.tribe-one.caps.ui@1")
|
||||
|
||||
@@ -169,6 +169,13 @@
|
||||
" }\n\n"
|
||||
" return (pass);\n"
|
||||
"}\n\n"
|
||||
"sub vcl_backend_fetch {\n"
|
||||
" if (bereq.url ~ \"^/api/admin/\") {\n"
|
||||
" set bereq.connect_timeout = 1s;\n"
|
||||
" set bereq.first_byte_timeout = 35s;\n"
|
||||
" set bereq.between_bytes_timeout = 35s;\n"
|
||||
" }\n"
|
||||
"}\n\n"
|
||||
"sub vcl_backend_response {\n"
|
||||
" if ((bereq.method == \"GET\" || bereq.method == \"HEAD\") &&\n"
|
||||
" beresp.status >= 500 && beresp.status <= 599 &&\n"
|
||||
|
||||
Reference in New Issue
Block a user