From 9e5f805266e4bb47b9d5728010cd501ee0d04711 Mon Sep 17 00:00:00 2001 From: Eniko Nagy <4188977+eenagy@users.noreply.github.com> Date: Wed, 8 Jan 2025 12:27:10 +0100 Subject: [PATCH 1/2] upcoming/noble/amd64/eth-node-nethermind/1.30.1-1 --- templates/upcoming.sh | 3 +- templates/update-dotnet-packages.sh | 41 -- .../1.30.1-1/eth-node-nethermind.changelog | 6 + .../1.30.1-1/eth-node-nethermind.sps | 19 + .../1.30.1-1/eth-node-nethermind.sss | 11 + .../1.30.1-1/pkg-builder-verify.toml | 7 + .../1.30.1-1/pkg-builder.toml | 45 ++ .../src/.pc/001-build-date.patch/.timestamp | 0 .../src/Nethermind/Directory.Build.props | 29 + .../Nethermind/Nethermind.Runner/Program.cs | 579 ++++++++++++++++++ .../1.30.1-1/src/debian/copyright | 19 + .../eth-node-nethermind.lintian-overrides | 24 + .../src/debian/patches/001-build-date.patch | 36 ++ .../1.30.1-1/src/debian/patches/series | 1 + .../1.30.1-1/src/debian/rules | 45 ++ .../src/debian/source/lintian-overrides | 11 + .../1.30.1-1/src/debian/tests/control | 7 + .../1.30.1-1/src/debian/tests/tests | 18 + .../src/debian/tests/tests-with-dotnet | 23 + 19 files changed, 882 insertions(+), 42 deletions(-) delete mode 100644 templates/update-dotnet-packages.sh create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.changelog create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sps create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sss create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder-verify.toml create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder.toml create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/.timestamp create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Directory.Build.props create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Nethermind.Runner/Program.cs create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/copyright create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/eth-node-nethermind.lintian-overrides create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/001-build-date.patch create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/series create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/rules create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/source/lintian-overrides create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/control create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests create mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests-with-dotnet diff --git a/templates/upcoming.sh b/templates/upcoming.sh index 34ba5997d..cff88c6a6 100644 --- a/templates/upcoming.sh +++ b/templates/upcoming.sh @@ -257,7 +257,8 @@ function main(){ CLIENT_REPOSITORY=${REPOSITORIES[$CLIENT_NAME]} LATEST_RELEASE=$(get_latest_release "$CLIENT_REPOSITORY") TAG_NAME=$(echo "$LATEST_RELEASE" | tr '/' '\n' | tail -n1) - CLIENT_VERSION=$(echo "$TAG_NAME" | sed 's/^v//g') + #CLIENT_VERSION=$(echo "$TAG_NAME" | sed 's/^v//g') + CLIENT_VERSION="1.30.1" RELEASE_DIR="releases/$CODENAME/$ARCH/eth-node-$CLIENT_NAME/$CLIENT_VERSION-$CLIENT_REVISION" UPCOMING_DIR="upcoming/$CODENAME/$ARCH/eth-node-$CLIENT_NAME/$CLIENT_VERSION-$CLIENT_REVISION" diff --git a/templates/update-dotnet-packages.sh b/templates/update-dotnet-packages.sh deleted file mode 100644 index 8312a3408..000000000 --- a/templates/update-dotnet-packages.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash - -# Directory for downloads -DOWNLOAD_DIR="~/.pkg-builder/dotnet" -mkdir -p "$DOWNLOAD_DIR" - -#!/bin/bash - -# Directory for downloads -DOWNLOAD_DIR="./packages" -mkdir -p "$DOWNLOAD_DIR" - -PACKAGES=( - "netstandard-targeting-pack" - "dotnet-targeting-pack" - "dotnet-runtime-deps" - "dotnet-host" - "dotnet-hostfxr" - "dotnet-runtime" - "aspnetcore-targeting-pack" - "aspnetcore-runtime" - "dotnet-sdk" -) -DOWNLOAD_DIR=~/.pkg-builder/dotnet -mkdir -p $DOWNLOAD_DIR -for package in "${PACKAGES[@]}"; do - package_name=$(apt search "$package" 2>/dev/null | grep -o "^$package[^/]*" | sort -V | tail -n1) - cd $DOWNLOAD_DIR && apt download $package_name - cd - -done - -# Iterate over all files in current directory -for file in "$DOWNLOAD_DIR"/*.deb; do - if [ -f "$file" ]; then - hash=$(shasum $file | cut -d' ' -f1) - filename=$(basename $file) - name="${filename%%_*}" - url="https://s3.eu-central-1.amazonaws.com/eth-pkg.com/backup/20241212/$filename" - echo "{ name = \"$filename\", hash = \"$hash\", url=\"$url\"}," - fi -done \ No newline at end of file diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.changelog b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.changelog new file mode 100644 index 000000000..ac688fc76 --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.changelog @@ -0,0 +1,6 @@ +eth-node-nethermind (1.30.1-1) noble; urgency=medium + + * Support for 1.30.1-1 + + -- Eniko Nagy Wed, 08 Jan 2025 12:26:12 +0100 + diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sps b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sps new file mode 100644 index 000000000..1c8aa3450 --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sps @@ -0,0 +1,19 @@ +name = "eth-node-nethermind" +architecture = "any" +summary = "Nethermind Ethereum client" +conflicts = [] +recommends = [] +provides = ["eth-node-execution-client (= 1)"] +suggests = ["eth-node (= 1)"] +# TODO can't add depends, piuparts are failing +#depends = ["aspnetcore-runtime-7.0", "ca-certificates"] +depends = [] +add_files = [ + "src/Nethermind/artifacts/bin /usr/lib/eth-node-nethermind", + "src/Nethermind/artifacts/obj /usr/lib/eth-node-nethermind" + ] +add_links = ["/usr/lib/eth-node-nethermind/bin/Nethermind.Runner/release/nethermind /usr/bin/nethermind"] +add_manpages = [] +long_doc = """ +Nethermind is a high-performance, highly configurable full Ethereum protocol execution client built on .NET that runs on Linux, Windows, and macOS, and supports Clique, Aura, and Ethash. Nethermind offers very fast sync speeds and support for external plugins. Enjoy reliable access to rich on-chain data thanks to high-performance JSON-RPC based on the Kestrel web server. Healthy node monitoring is secured with Grafana analytics and Seq logging. +""" diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sss b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sss new file mode 100644 index 000000000..ae49d20ea --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sss @@ -0,0 +1,11 @@ +name = "eth-node-nethermind" +maintainer = "Eniko Nagy " +section = "net" +variants = [] +build_depends = [ + "libsnappy-dev", + "dotnet-sdk-8.0" +] +packages = ["eth-node-nethermind"] +skip_debug_symbols = true + diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder-verify.toml b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder-verify.toml new file mode 100644 index 000000000..1a9eb4a94 --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder-verify.toml @@ -0,0 +1,7 @@ +[verify] +package_hash=[ + { hash="10d1aa9f6dcc69b5a71797e6b7666c7c992333f2", name= "eth-node-nethermind_1.30.1-1.dsc"}, + { hash="fe0a78885b8650f379a25ed19e2fad8048d031c1", name= "eth-node-nethermind_1.30.1.orig.tar.gz"}, + { hash="527e9e46cd005792bce3c50498a710e72ecc2377", name= "eth-node-nethermind_1.30.1-1.debian.tar.xz"}, + { hash="a271511c266f0464499ed4987daffaa18326732d", name= "eth-node-nethermind_1.30.1-1_amd64.deb"}, +] diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder.toml b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder.toml new file mode 100644 index 000000000..4ccbfb1e2 --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder.toml @@ -0,0 +1,45 @@ +[package_fields] +spec_file = "eth-node-nethermind.sss" +package_name = "eth-node-nethermind" +version_number = "1.30.1" +revision_number = "1" +homepage="https://github.com/NethermindEth/nethermind" + +[package_type] +# virtual | git | default +package_type="default" +tarball_url = "https://github.com/NethermindEth/nethermind/archive/refs/tags/1.30.1.tar.gz" +## Provided by debian package maintainer not by team developing the software +tarball_hash = "3418ba0e29741659afd2b301c0bf515ed16d19e235b4722be7c5e15cc10fbff1" + +[package_type.language_env] +language_env = "dotnet" +# Because MS force pushes the security update onto packages, without using revision numbers +dotnet_packages = [ + { name = "aspnetcore-runtime-9.0_9.0.0-rtm+build1-0ubuntu1~24.04.1~ppa1_amd64", hash = "67d5e89bc094658af2aad53b858e66e115c7f5a1", url = "https://s3.eu-central-1.amazonaws.com/eth-pkg.com/backup/noble/20250107/aspnetcore-runtime-9.0_9.0.0-rtm%2Bbuild1-0ubuntu1~24.04.1~ppa1_amd64.deb" }, + { name = "aspnetcore-targeting-pack-9.0_9.0.0-rtm+build1-0ubuntu1~24.04.1~ppa1_amd64", hash = "69eb6e3307ad8c6c11139eb67bfe9f180f48b45c", url = "https://s3.eu-central-1.amazonaws.com/eth-pkg.com/backup/noble/20250107/aspnetcore-targeting-pack-9.0_9.0.0-rtm%2Bbuild1-0ubuntu1~24.04.1~ppa1_amd64.deb" }, + { name = "dotnet-apphost-pack-9.0_9.0.0-rtm+build1-0ubuntu1~24.04.1~ppa1_amd64", hash = "6b5331b566ecbb81fc1c4137482d9a050f016f08", url = "https://s3.eu-central-1.amazonaws.com/eth-pkg.com/backup/noble/20250107/dotnet-apphost-pack-9.0_9.0.0-rtm%2Bbuild1-0ubuntu1~24.04.1~ppa1_amd64.deb" }, + { name = "dotnet-host-9.0_9.0.0-rtm+build1-0ubuntu1~24.04.1~ppa1_amd64", hash = "a4b6f4eedbef7523ad2c8927f2baf79a437aa664", url = "https://s3.eu-central-1.amazonaws.com/eth-pkg.com/backup/noble/20250107/dotnet-host-9.0_9.0.0-rtm%2Bbuild1-0ubuntu1~24.04.1~ppa1_amd64.deb" }, + { name = "dotnet-hostfxr-9.0_9.0.0-rtm+build1-0ubuntu1~24.04.1~ppa1_amd64", hash = "7da909a17153494b0b391e8693f34063e25160f4", url = "https://s3.eu-central-1.amazonaws.com/eth-pkg.com/backup/noble/20250107/dotnet-hostfxr-9.0_9.0.0-rtm%2Bbuild1-0ubuntu1~24.04.1~ppa1_amd64.deb" }, + { name = "dotnet-runtime-9.0_9.0.0-rtm+build1-0ubuntu1~24.04.1~ppa1_amd64", hash = "aa377e9742c43222b6db063f01b06a7f68bc400b", url = "https://s3.eu-central-1.amazonaws.com/eth-pkg.com/backup/noble/20250107/dotnet-runtime-9.0_9.0.0-rtm%2Bbuild1-0ubuntu1~24.04.1~ppa1_amd64.deb" }, + { name = "dotnet-sdk-9.0_9.0.101-0ubuntu1~24.04.1~ppa1_amd64", hash = "7ffd077e478049cce63ad14a3d1d21b30a1922d7", url = "https://s3.eu-central-1.amazonaws.com/eth-pkg.com/backup/noble/20250107/dotnet-sdk-9.0_9.0.101-0ubuntu1~24.04.1~ppa1_amd64.deb" }, + { name = "dotnet-targeting-pack-9.0_9.0.0-rtm+build1-0ubuntu1~24.04.1~ppa1_amd64", hash = "79d8f651e6c8cd836f747adec9e14ea9a6bf7eda", url = "https://s3.eu-central-1.amazonaws.com/eth-pkg.com/backup/noble/20250107/dotnet-targeting-pack-9.0_9.0.0-rtm%2Bbuild1-0ubuntu1~24.04.1~ppa1_amd64.deb" }, + { name = "dotnet-templates-9.0_9.0.101-0ubuntu1~24.04.1~ppa1_amd64", hash = "1d3f028015cc0f1f57e9ad40b0258e619a375411", url = "https://s3.eu-central-1.amazonaws.com/eth-pkg.com/backup/noble/20250107/dotnet-templates-9.0_9.0.101-0ubuntu1~24.04.1~ppa1_amd64.deb" }, + { name = "netstandard-targeting-pack-2.1-9.0_9.0.101-0ubuntu1~24.04.1~ppa1_amd64", hash = "14b6d57f5f56e092d87744b61969e99761f95024", url = "https://s3.eu-central-1.amazonaws.com/eth-pkg.com/backup/noble/20250107/netstandard-targeting-pack-2.1-9.0_9.0.101-0ubuntu1~24.04.1~ppa1_amd64.deb" }, +] +use_backup_version = false + +[build_env] +codename="noble numbat" +arch = "amd64" +pkg_builder_version="0.2.9" +debcrafter_version = "2711b53" +run_lintian=true +run_piuparts=true +run_autopkgtest=true +lintian_version="2.116.3" +piuparts_version="1.1.7" +autopkgtest_version="5.28" +sbuild_version="0.85.6" +# package directory +workdir="~/.pkg-builder/packages/noble" diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/.timestamp b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/.timestamp new file mode 100644 index 000000000..e69de29bb diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Directory.Build.props b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Directory.Build.props new file mode 100644 index 000000000..069dd7eeb --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Directory.Build.props @@ -0,0 +1,29 @@ + + + + Debug + true + latest + direct + net9.0 + true + true + + + + $([System.DateTimeOffset]::UtcNow.ToUnixTimeSeconds()) + Demerzel Solutions Limited + Nethermind + $(Commit) + 1.30.0 + + + + + + <_Parameter1>BuildTimestamp + <_Parameter2>$(BuildTimestamp) + + + + diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Nethermind.Runner/Program.cs b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Nethermind.Runner/Program.cs new file mode 100644 index 000000000..7444a9830 --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Nethermind.Runner/Program.cs @@ -0,0 +1,579 @@ +// SPDX-FileCopyrightText: 2024 Demerzel Solutions Limited +// SPDX-License-Identifier: LGPL-3.0-only + +using System; +using System.Collections.Generic; +using System.CommandLine; +using System.CommandLine.Help; +using System.CommandLine.Invocation; +using System.CommandLine.Parsing; +using System.IO; +using System.IO.Abstractions; +using System.Linq; +using System.Reflection; +using System.Runtime; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +#if !DEBUG +using DotNetty.Common; +#endif +using Nethermind.Api; +using Nethermind.Api.Extensions; +using Nethermind.Config; +using Nethermind.Consensus.AuRa; +using Nethermind.Consensus.Clique; +using Nethermind.Consensus.Ethash; +using Nethermind.Core; +using Nethermind.Core.Exceptions; +using Nethermind.Db.Rocks; +using Nethermind.Hive; +using Nethermind.Init.Snapshot; +using Nethermind.KeyStore.Config; +using Nethermind.Logging; +using Nethermind.Logging.NLog; +using Nethermind.Runner; +using Nethermind.Runner.Ethereum; +using Nethermind.Runner.Ethereum.Api; +using Nethermind.Runner.Logging; +using Nethermind.Seq.Config; +using Nethermind.Serialization.Json; +using Nethermind.UPnP.Plugin; +using NLog; +using NLog.Config; +using ILogger = Nethermind.Logging.ILogger; +using NullLogger = Nethermind.Logging.NullLogger; + +Console.Title = ProductInfo.Name; +// Increase regex cache size as more added in log coloring matches +Regex.CacheSize = 128; +#if !DEBUG +ResourceLeakDetector.Level = ResourceLeakDetector.DetectionLevel.Disabled; +#endif + +ManualResetEventSlim exit = new(true); +ILogger logger = new(SimpleConsoleLogger.Instance); +ProcessExitSource? processExitSource = default; +var unhandledError = "A critical error has occurred"; + +AppDomain.CurrentDomain.UnhandledException += (sender, e) => +{ + ILogger criticalLogger = GetCriticalLogger(); + + if (e.ExceptionObject is Exception ex) + criticalLogger.Error($"{unhandledError}.", ex); + else + criticalLogger.Error($"{unhandledError}: {e.ExceptionObject}"); +}; + +try +{ + return await ConfigureAsync(args); +} +catch (Exception ex) +{ + ILogger criticalLogger = GetCriticalLogger(); + + ex = ex is AggregateException aex ? aex.InnerException : ex; + + criticalLogger.Error($"{unhandledError}.", ex); + + return ex is IExceptionWithExitCode exc ? exc.ExitCode : ExitCodes.GeneralError; +} +finally +{ + NLogManager.Shutdown(); +} + +async Task ConfigureAsync(string[] args) +{ + CliConfiguration cli = ConfigureCli(); + ParseResult parseResult = cli.Parse(args); + // Suppress logs if run with `--help` or `--version` + bool silent = parseResult.CommandResult.Children + .Any(c => c is OptionResult { Option: HelpOption or VersionOption }); + + ConsoleHelpers.EnableConsoleColorOutput(); + + ConfigureLogger(parseResult); + + if (!silent) + { + logger.Info("Nethermind is starting up"); + logger.Info($"Version: {ProductInfo.Version}"); + } + + AppDomain.CurrentDomain.ProcessExit += (_, _) => + { + processExitSource?.Exit(ExitCodes.SigTerm); + exit.Wait(); + }; + GlobalDiagnosticsContext.Set("version", ProductInfo.Version); + + PluginLoader pluginLoader = new( + parseResult.GetValue(BasicOptions.PluginsDirectory) ?? "plugins", + new FileSystem(), + silent ? NullLogger.Instance : logger, + typeof(AuRaPlugin), + typeof(CliquePlugin), + typeof(EthashPlugin), + typeof(NethDevPlugin), + typeof(HivePlugin), + typeof(UPnPPlugin) + ); + pluginLoader.Load(); + + CheckForDeprecatedOptions(parseResult); + + // leaving here as an example of adding Debug plugin + // IPluginLoader mevLoader = SinglePluginLoader.Instance; + // CompositePluginLoader pluginLoader = new (pluginLoader, mevLoader); + + TypeDiscovery.Initialize(typeof(INethermindPlugin)); + + AddConfigurationOptions(cli.RootCommand); + + cli.RootCommand.SetAction((result, token) => RunAsync(result, pluginLoader, token)); + + try + { + return await cli.InvokeAsync(args); + } + finally + { + exit.Wait(); + } +} + +async Task RunAsync(ParseResult parseResult, PluginLoader pluginLoader, CancellationToken cancellationToken) +{ + processExitSource = new(cancellationToken); + + IConfigProvider configProvider = CreateConfigProvider(parseResult); + IInitConfig initConfig = configProvider.GetConfig(); + IKeyStoreConfig keyStoreConfig = configProvider.GetConfig(); + ISnapshotConfig snapshotConfig = configProvider.GetConfig(); + IPluginConfig pluginConfig = configProvider.GetConfig(); + + pluginLoader.OrderPlugins(pluginConfig); + + ResolveDataDirectory(parseResult.GetValue(BasicOptions.DataDirectory), + initConfig, keyStoreConfig, snapshotConfig); + + NLogManager logManager = new(initConfig.LogFileName, initConfig.LogDirectory, initConfig.LogRules); + + logger = logManager.GetClassLogger(); + + ConfigureSeqLogger(configProvider); + ResolveDatabaseDirectory(parseResult.GetValue(BasicOptions.DatabasePath), initConfig); + + logger.Info("Configuration complete"); + + EthereumJsonSerializer serializer = new(); + + if (logger.IsDebug) + { + logger.Debug($"Nethermind configuration:\n{serializer.Serialize(initConfig, true)}"); + + logger.Debug($"Server GC: {GCSettings.IsServerGC}"); + logger.Debug($"GC latency mode: {GCSettings.LatencyMode}"); + logger.Debug($"LOH compaction mode: {GCSettings.LargeObjectHeapCompactionMode}"); + } + + if (logger.IsInfo) logger.Info($"RocksDB: v{DbOnTheRocks.GetRocksDbVersion()}"); + + ApiBuilder apiBuilder = new(configProvider, logManager); + IList plugins = []; + + foreach (Type pluginType in pluginLoader.PluginTypes) + { + try + { + if (Activator.CreateInstance(pluginType) is INethermindPlugin plugin) + plugins.Add(plugin); + } + catch (Exception ex) + { + if (logger.IsError) logger.Error($"Failed to create plugin {pluginType.FullName}", ex); + } + } + + INethermindApi nethermindApi = apiBuilder.Create(plugins.OfType()); + ((List)nethermindApi.Plugins).AddRange(plugins); + nethermindApi.ProcessExit = processExitSource; + + EthereumRunner ethereumRunner = new(nethermindApi); + try + { + await ethereumRunner.Start(processExitSource.Token); + await processExitSource.ExitTask; + } + catch (OperationCanceledException) + { + if (logger.IsTrace) logger.Trace("Nethermind operation was canceled."); + } + catch (Exception ex) + { + if (logger.IsError) logger.Error(unhandledError, ex); + + processExitSource.Exit(ex is IExceptionWithExitCode withExit ? withExit.ExitCode : ExitCodes.GeneralError); + } + + logger.Info("Nethermind is shutting down... Please wait until all activities are stopped."); + + await ethereumRunner.StopAsync(); + + logger.Info("Nethermind is shut down"); + + exit.Set(); + + return processExitSource.ExitCode; +} + +void AddConfigurationOptions(CliCommand command) +{ + IEnumerable configTypes = TypeDiscovery + .FindNethermindBasedTypes(typeof(IConfig)) + .Where(ct => ct.IsInterface); + + foreach (Type configType in + configTypes.Where(ct => !ct.IsAssignableTo(typeof(INoCategoryConfig))).OrderBy(c => c.Name)) + { + if (configType is null) + continue; + + ConfigCategoryAttribute? typeLevel = configType.GetCustomAttribute(); + + if (typeLevel is not null && typeLevel.DisabledForCli) + continue; + + bool categoryHidden = typeLevel?.HiddenFromDocs == true; + + foreach (PropertyInfo propertyInfo in + configType.GetProperties(BindingFlags.Public | BindingFlags.Instance).OrderBy(p => p.Name)) + { + ConfigItemAttribute? configItemAttribute = propertyInfo.GetCustomAttribute(); + + if (configItemAttribute?.DisabledForCli != true) + { + bool hidden = categoryHidden || configItemAttribute?.HiddenFromDocs == true; + + command.Add(new CliOption( + $"--{ConfigExtensions.GetCategoryName(configType)}.{propertyInfo.Name}", + $"--{ConfigExtensions.GetCategoryName(configType)}-{propertyInfo.Name}".ToLowerInvariant()) + { + Description = configItemAttribute?.Description, + HelpName = "value", + Hidden = hidden + }); + } + + if (configItemAttribute?.IsPortOption == true) + ConfigExtensions.AddPortOptionName(configType, propertyInfo.Name); + } + } +} + +void CheckForDeprecatedOptions(ParseResult parseResult) +{ + CliOption[] deprecatedOptions = + [ + BasicOptions.ConfigurationDirectory, + BasicOptions.DatabasePath, + BasicOptions.LoggerConfigurationSource, + BasicOptions.PluginsDirectory + ]; + + foreach (CliToken token in parseResult.Tokens) + { + foreach (CliOption option in deprecatedOptions) + { + if (option.Aliases.Contains(token.Value, StringComparison.Ordinal)) + logger.Warn($"{token} option is deprecated. Use {option.Name} instead."); + } + } +} + +CliConfiguration ConfigureCli() +{ + CliRootCommand rootCommand = + [ + BasicOptions.Configuration, + BasicOptions.ConfigurationDirectory, + BasicOptions.DatabasePath, + BasicOptions.DataDirectory, + BasicOptions.LoggerConfigurationSource, + BasicOptions.LogLevel, + BasicOptions.PluginsDirectory + ]; + + var versionOption = (VersionOption)rootCommand.Children.SingleOrDefault(c => c is VersionOption); + + if (versionOption is not null) + { + versionOption.Action = new AnonymousCliAction(r => + { + Console.WriteLine($""" + Version: {ProductInfo.Version} + Commit: {ProductInfo.Commit} + Build date: {ProductInfo.BuildTimestamp:u} + Runtime: {ProductInfo.Runtime} + Platform: {ProductInfo.OS} {ProductInfo.OSArchitecture} + """); + + return ExitCodes.Ok; + }); + } + + return new(rootCommand) + { + EnableDefaultExceptionHandler = false, + ProcessTerminationTimeout = Timeout.InfiniteTimeSpan + }; +} + +void ConfigureLogger(ParseResult parseResult) +{ + string nLogConfig = Path.GetFullPath( + parseResult.GetValue(BasicOptions.LoggerConfigurationSource) + ?? "NLog.config".GetApplicationResourcePath()); + + try + { + LogManager.Configuration = new XmlLoggingConfiguration(nLogConfig); + } + catch (Exception ex) + { + logger.Error($"Failed to load logging configuration file.", ex); + return; + } + + using NLogManager logManager = new("nethermind.log"); + + logger = logManager.GetClassLogger(); + + string? logLevel = parseResult.GetValue(BasicOptions.LogLevel); + + // TODO: dynamically switch log levels from CLI + if (logLevel is not null) + NLogConfigurator.ConfigureLogLevels(logLevel); +} + +void ConfigureSeqLogger(IConfigProvider configProvider) +{ + ISeqConfig seqConfig = configProvider.GetConfig(); + + if (!seqConfig.MinLevel.Equals("Off", StringComparison.Ordinal)) + { + if (logger.IsInfo) + logger.Info($"Seq logging is enabled on {seqConfig.ServerUrl} with level of {seqConfig.MinLevel}"); + + NLogConfigurator.ConfigureSeqBufferTarget(seqConfig.ServerUrl, seqConfig.ApiKey, seqConfig.MinLevel); + } + else + { + // Clear it up; otherwise, internally it will keep requesting localhost as `all` target includes this. + NLogConfigurator.ClearSeqTarget(); + } +} + +IConfigProvider CreateConfigProvider(ParseResult parseResult) +{ + ConfigProvider configProvider = new(); + Dictionary configArgs = []; + + foreach (SymbolResult child in parseResult.RootCommandResult.Children) + { + if (child is OptionResult result) + { + var value = result.GetValueOrDefault(); + + if (value is not null) + configArgs.Add(result.Option.Name.TrimStart('-'), value); + } + } + + IConfigSource argsSource = new ArgsConfigSource(configArgs); + configProvider.AddSource(argsSource); + configProvider.AddSource(new EnvConfigSource()); + + string configFile = parseResult.GetValue(BasicOptions.Configuration) + ?? Environment.GetEnvironmentVariable("NETHERMIND_CONFIG") + ?? "mainnet"; + + // If configFile is not a path, handle it + if (string.IsNullOrEmpty(Path.GetDirectoryName(configFile))) + { + string configsDir = parseResult.GetValue(BasicOptions.ConfigurationDirectory) + ?? "configs".GetApplicationResourcePath(); + + configFile = Path.Join(configsDir, configFile); + + // If the configFile doesn't have an extension, try with supported file extensions + if (!Path.HasExtension(configFile)) + { + string? fallback; + + foreach (var ext in new[] { ".json", ".cfg" }) + { + fallback = $"{configFile}{ext}"; + + if (File.Exists(fallback)) + { + configFile = fallback; + break; + } + } + } + // For backward compatibility. To be removed in the future. + else if (Path.GetExtension(configFile).Equals(".cfg", StringComparison.Ordinal)) + { + var name = Path.GetFileNameWithoutExtension(configFile)!; + + configFile = $"{configFile[..^4]}.json"; + + logger.Warn($"'{name}.cfg' is deprecated. Use '{name}' instead."); + } + } + else + { + configFile = configFile.GetApplicationResourcePath(); + } + + // Resolve the full path for logging purposes + configFile = Path.GetFullPath(configFile); + + if (!File.Exists(configFile)) + throw new FileNotFoundException("Configuration file not found.", configFile); + + logger.Info($"Loading configuration from {configFile}"); + + configProvider.AddSource(new JsonConfigSource(configFile)); + configProvider.Initialize(); + + var (ErrorMsg, Errors) = configProvider.FindIncorrectSettings(); + + if (Errors.Any()) + logger.Warn($"Invalid configuration settings:\n{ErrorMsg}"); + + return configProvider; +} + +ILogger GetCriticalLogger() +{ + try + { + return new NLogManager("nethermind.log").GetClassLogger(); + } + catch + { + if (logger.IsWarn) logger.Warn("File logging failed. Using console logging."); + + return logger; + } +} + +void ResolveDatabaseDirectory(string? path, IInitConfig initConfig) +{ + if (string.IsNullOrWhiteSpace(path)) + { + initConfig.BaseDbPath ??= string.Empty.GetApplicationResourcePath("db"); + } + else + { + string dbPath = initConfig.BaseDbPath.GetApplicationResourcePath(path); + + if (logger.IsDebug) logger.Debug($"{nameof(initConfig.BaseDbPath)}: {Path.GetFullPath(dbPath)}"); + + initConfig.BaseDbPath = dbPath; + } +} + +void ResolveDataDirectory(string? path, IInitConfig initConfig, IKeyStoreConfig keyStoreConfig, ISnapshotConfig snapshotConfig) +{ + if (string.IsNullOrWhiteSpace(path)) + { + initConfig.BaseDbPath ??= string.Empty.GetApplicationResourcePath("db"); + keyStoreConfig.KeyStoreDirectory ??= string.Empty.GetApplicationResourcePath("keystore"); + initConfig.LogDirectory ??= string.Empty.GetApplicationResourcePath("logs"); + } + else + { + string newDbPath = initConfig.BaseDbPath.GetApplicationResourcePath(path); + string newKeyStorePath = keyStoreConfig.KeyStoreDirectory.GetApplicationResourcePath(path); + string newLogDirectory = initConfig.LogDirectory.GetApplicationResourcePath(path); + string newSnapshotPath = snapshotConfig.SnapshotDirectory.GetApplicationResourcePath(path); + + if (logger.IsInfo) + { + logger.Info($"{nameof(initConfig.BaseDbPath)}: {Path.GetFullPath(newDbPath)}"); + logger.Info($"{nameof(keyStoreConfig.KeyStoreDirectory)}: {Path.GetFullPath(newKeyStorePath)}"); + logger.Info($"{nameof(initConfig.LogDirectory)}: {Path.GetFullPath(newLogDirectory)}"); + + if (snapshotConfig.Enabled) + logger.Info($"{nameof(snapshotConfig.SnapshotDirectory)}: {Path.GetFullPath(newSnapshotPath)}"); + } + + initConfig.BaseDbPath = newDbPath; + keyStoreConfig.KeyStoreDirectory = newKeyStorePath; + initConfig.LogDirectory = newLogDirectory; + snapshotConfig.SnapshotDirectory = newSnapshotPath; + } +} + +static class BasicOptions +{ + public static CliOption Configuration { get; } = + new("--config", "-c") + { + Description = "The path to the configuration file or the file name (also without extension) of any of the configuration files in the configuration files directory.", + HelpName = "network or file name" + }; + + public static CliOption ConfigurationDirectory { get; } = + new("--configs-dir", "--configsDirectory", "-cd") + { + Description = "The path to the configuration files directory.", + HelpName = "path" + }; + + public static CliOption DatabasePath { get; } = new("--db-dir", "--baseDbPath", "-d") + { + Description = "The path to the Nethermind database directory.", + HelpName = "path" + }; + + public static CliOption DataDirectory { get; } = new("--data-dir", "--datadir", "-dd") + { + Description = "The path to the Nethermind data directory.", + HelpName = "path" + }; + + public static CliOption LoggerConfigurationSource { get; } = + new("--logger-config", "--loggerConfigSource", "-lcs") + { + Description = "The path to the logging configuration file.", + HelpName = "path" + }; + + public static CliOption LogLevel { get; } = new("--log", "-l") + { + Description = "Log level (severity). Allowed values: off, trace, debug, info, warn, error.", + HelpName = "level" + }; + + public static CliOption PluginsDirectory { get; } = + new("--plugins-dir", "--pluginsDirectory", "-pd") + { + Description = "The path to the Nethermind plugins directory.", + HelpName = "path" + }; +} + +class AnonymousCliAction(Func action) : SynchronousCliAction +{ + private readonly Func _action = action ?? throw new ArgumentNullException(nameof(action)); + + /// + public override int Invoke(ParseResult parseResult) => _action(parseResult); +} diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/copyright b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/copyright new file mode 100644 index 000000000..604c596ce --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/copyright @@ -0,0 +1,19 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: nethermind +Upstream-Contact: https://github.com/NethermindEth/nethermind/ +Source: + +Files: * +License: LGPL-3.0 + + +Files: debian/* +License: GPL-3+ + +License: LGPL-3.0 + The full text of the LGPL version 3.0 is distributed in + /usr/share/common-licenses/LGPL-3.0 on Debian systems. + +License: GPL-3+ + The full text of the GPL version 3 is distributed in + /usr/share/common-licenses/GPL-3 on Debian systems. \ No newline at end of file diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/eth-node-nethermind.lintian-overrides b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/eth-node-nethermind.lintian-overrides new file mode 100644 index 000000000..0c7580c58 --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/eth-node-nethermind.lintian-overrides @@ -0,0 +1,24 @@ +# Not a bug +eth-node-nethermind: embedded-library bzip2 * +eth-node-nethermind: embedded-library gmp * +eth-node-nethermind: embedded-library zlib * +eth-node-nethermind: embedded-library libzstd * + +# Most likely a bug +eth-node-nethermind: library-not-linked-against-libc * + +eth-node-nethermind: executable-not-elf-or-script [usr/lib/eth-node-nethermind/bin/Nethermind.Runner/release/*] + +eth-node-nethermind: initial-upload-closes-no-bugs [usr/share/doc/eth-node-nethermind/changelog.Debian.gz:1] +eth-node-nethermind: maintainer-script-ignores-errors [postrm] +eth-node-nethermind: no-manual-page [usr/bin/nethermind] + + +eth-node-nethermind: unstripped-binary-or-object * + +# TODO +eth-node-nethermind: extended-description-line-too-long line 1 +# TODO +eth-node-nethermind: copyright-without-copyright-notice +eth-node-nethermind: package-has-unnecessary-activation-of-ldconfig-trigger + diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/001-build-date.patch b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/001-build-date.patch new file mode 100644 index 000000000..47d797528 --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/001-build-date.patch @@ -0,0 +1,36 @@ +Index: eth-node-nethermind-1.30.0/src/Nethermind/Directory.Build.props +=================================================================== +--- eth-node-nethermind-1.30.0.orig/src/Nethermind/Directory.Build.props ++++ eth-node-nethermind-1.30.0/src/Nethermind/Directory.Build.props +@@ -11,7 +11,6 @@ + + + +- $([System.DateTimeOffset]::UtcNow.ToUnixTimeSeconds()) + Demerzel Solutions Limited + Nethermind + $(Commit) +@@ -19,11 +18,4 @@ + + + +- +- +- <_Parameter1>BuildTimestamp +- <_Parameter2>$(BuildTimestamp) +- +- +- + +Index: eth-node-nethermind-1.30.0/src/Nethermind/Nethermind.Runner/Program.cs +=================================================================== +--- eth-node-nethermind-1.30.0.orig/src/Nethermind/Nethermind.Runner/Program.cs ++++ eth-node-nethermind-1.30.0/src/Nethermind/Nethermind.Runner/Program.cs +@@ -316,7 +316,6 @@ CliConfiguration ConfigureCli() + Console.WriteLine($""" + Version: {ProductInfo.Version} + Commit: {ProductInfo.Commit} +- Build date: {ProductInfo.BuildTimestamp:u} + Runtime: {ProductInfo.Runtime} + Platform: {ProductInfo.OS} {ProductInfo.OSArchitecture} + """); diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/series b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/series new file mode 100644 index 000000000..50eed271a --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/series @@ -0,0 +1 @@ +001-build-date.patch diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/rules b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/rules new file mode 100644 index 000000000..37c960eb1 --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/rules @@ -0,0 +1,45 @@ +#!/usr/bin/make -f +export CI=true +export DOTNET_CLI_TELEMETRY_OPTOUT=1 + +%: + dh $@ + +override_dh_auto_build: + cd src/Nethermind/Nethermind.Runner && dotnet build -c release + # Delete all other archs then x64 + find src/Nethermind/artifacts/obj -type f -name '*.AssemblyReference.cache' -delete + rm -rf src/Nethermind/artifacts/bin/Nethermind.Runner/release/runtimes/linux-arm64 + rm -rf src/Nethermind/artifacts/bin/Nethermind.Runner/release/runtimes/linux-arm + rm -rf src/Nethermind/artifacts/bin/Nethermind.Runner/release/runtimes/linux-musl-arm64 + rm -rf src/Nethermind/artifacts/bin/Nethermind.Runner/release/runtimes/linux-musl-arm + rm -rf src/Nethermind/artifacts/bin/Nethermind.Runner/release/runtimes/ios-arm64 + rm -rf src/Nethermind/artifacts/bin/Nethermind.Runner/release/runtimes/maccatalyst-arm64 + rm -rf src/Nethermind/artifacts/bin/Nethermind.Runner/release/runtimes/maccatalyst-x64 + rm -rf src/Nethermind/artifacts/bin/Nethermind.Runner/release/runtimes/tvos-arm64 + +# TODO fix tests +override_dh_auto_test: + # Skip tests as they are failing + # Run Nethermind tests: + # use || true to see if EthereumTests also fails or not + #cd src/Nethermind && dotnet test Nethermind.sln -c release || true + # Run Ethereum Foundation tests: + #cd src/Nethermind && dotnet test EthereumTests.sln -c release + + +override_dh_auto_clean: + # on ubuntu clean fails, before dependency installation + # on bookworm clean succeeds, even if dependency is not installed + -make -j1 clean + + +override_dh_dwz: + # skip of optimization of DWARF debug information in ELF binaries via dwz + +override_dh_strip: + # error: strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/eth-node-nethermind/usr/lib/eth-node-nethermind/bin/Nethermind.Runner/release/runtimes/linux-arm64/native/libgmp.so returned exit code 1 + +override_dh_shlibdeps: + # cannot find library libjemalloc.so.1 needed + dh_shlibdeps --exclude=librocksdb-musl.so --exclude=librocksdb-jemalloc.so diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/source/lintian-overrides b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/source/lintian-overrides new file mode 100644 index 000000000..c2a73b7f8 --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/source/lintian-overrides @@ -0,0 +1,11 @@ +eth-node-nethermind source: source-is-missing [src/Nethermind/Nethermind.Evm/Data/JSTracers/evmdisTracer.js] +eth-node-nethermind source: source-is-missing [src/Nethermind/Nethermind.Evm/Data/JSTracers/_bigInteger.js] +eth-node-nethermind source: debian-rules-ignores-make-clean-error * + +# TODO +eth-node-nethermind source: missing-field-in-dep5-copyright Copyright [debian/copyright:10] + +#TODO +eth-node-nethermind source: missing-field-in-dep5-copyright Copyright [debian/copyright:6] + +eth-node-nethermind source: no-newline-at-end [debian/changelog] diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/control b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/control new file mode 100644 index 000000000..a43506ed2 --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/control @@ -0,0 +1,7 @@ +# These tests are run by autopkgtests + +Tests: tests +Depends: @, shunit2 + +Tests: tests-with-dotnet +Depends: @, shunit2, aspnetcore-runtime-8.0 \ No newline at end of file diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests new file mode 100644 index 000000000..ec3bcd929 --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests @@ -0,0 +1,18 @@ +#!/usr/bin/env sh + +exec 2>&1 + +set -e + +test_binary_in_path(){ + output="$(which nethermind)" + assertEquals "/usr/bin/nethermind" "$output" +} + + +test_invocation_without_dotnet(){ + output="$(nethermind 2>&1 || true)" + assertContains "You must install .NET to run this application." "$output" +} + +. shunit2 \ No newline at end of file diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests-with-dotnet b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests-with-dotnet new file mode 100644 index 000000000..747a8ee22 --- /dev/null +++ b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests-with-dotnet @@ -0,0 +1,23 @@ +#!/usr/bin/env sh + +exec 2>&1 + +set -e + +test_binary_in_path(){ + ls -la /usr/lib/eth-node-nethermind/bin || true + ls -la /usr/lib/eth-node-nethermind/bin/Nethermind.Runner || true + output="$(which nethermind)" + assertEquals "/usr/bin/nethermind" "$output" +} + +# test_invocation_with_dotnet(){ +# output="$(nethermind --version)" +# echo "$output" +# # checked against https://github.com/NethermindEth/nethermind/releases/download/1.21.1/nethermind-1.21.1-9b435ba0-linux-x64.zip +# assertEquals "$output" "Version: 1.27.0 +# OS: Linux x64 +# Runtime: .NET 8.0.6" +# } + +. shunit2 \ No newline at end of file From 6daf6181d21f9ad04bc4679d1bd70716bd9b7036 Mon Sep 17 00:00:00 2001 From: Eniko Nagy <4188977+eenagy@users.noreply.github.com> Date: Wed, 8 Jan 2025 12:35:47 +0100 Subject: [PATCH 2/2] releases/noble/amd64/eth-node-nethermind/1.30.1-1 --- .../1.30.1-1/eth-node-nethermind.changelog | 0 .../eth-node-nethermind/1.30.1-1/eth-node-nethermind.sps | 0 .../eth-node-nethermind/1.30.1-1/eth-node-nethermind.sss | 0 .../eth-node-nethermind/1.30.1-1/pkg-builder-verify.toml | 7 +++++++ .../amd64/eth-node-nethermind/1.30.1-1/pkg-builder.toml | 0 .../1.30.1-1/src/.pc/001-build-date.patch/.timestamp | 0 .../src/Nethermind/Directory.Build.props | 0 .../src/Nethermind/Nethermind.Runner/Program.cs | 0 .../eth-node-nethermind/1.30.1-1/src/debian/copyright | 0 .../src/debian/eth-node-nethermind.lintian-overrides | 0 .../1.30.1-1/src/debian/patches/001-build-date.patch | 0 .../eth-node-nethermind/1.30.1-1/src/debian/patches/series | 0 .../amd64/eth-node-nethermind/1.30.1-1/src/debian/rules | 0 .../1.30.1-1/src/debian/source/lintian-overrides | 0 .../eth-node-nethermind/1.30.1-1/src/debian/tests/control | 0 .../eth-node-nethermind/1.30.1-1/src/debian/tests/tests | 0 .../1.30.1-1/src/debian/tests/tests-with-dotnet | 0 .../eth-node-nethermind/1.30.1-1/pkg-builder-verify.toml | 7 ------- 18 files changed, 7 insertions(+), 7 deletions(-) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.changelog (100%) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sps (100%) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sss (100%) create mode 100644 releases/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder-verify.toml rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder.toml (100%) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/.timestamp (100%) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Directory.Build.props (100%) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Nethermind.Runner/Program.cs (100%) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/copyright (100%) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/eth-node-nethermind.lintian-overrides (100%) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/001-build-date.patch (100%) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/series (100%) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/rules (100%) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/source/lintian-overrides (100%) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/control (100%) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests (100%) rename {upcoming => releases}/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests-with-dotnet (100%) delete mode 100644 upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder-verify.toml diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.changelog b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.changelog similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.changelog rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.changelog diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sps b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sps similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sps rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sps diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sss b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sss similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sss rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/eth-node-nethermind.sss diff --git a/releases/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder-verify.toml b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder-verify.toml new file mode 100644 index 000000000..9a6ffbe51 --- /dev/null +++ b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder-verify.toml @@ -0,0 +1,7 @@ +[verify] +package_hash=[ + { hash="8a519287aaa019ec4d534bcb47b51ed6a3cbe82d", name= "eth-node-nethermind_1.30.1-1.dsc"}, + { hash="ba47ce8576abc2b5fc54d022190b878f77ad4ad4", name= "eth-node-nethermind_1.30.1.orig.tar.gz"}, + { hash="e0c372dceb34e3567f6aed409c4ade802531aca9", name= "eth-node-nethermind_1.30.1-1.debian.tar.xz"}, + { hash="81a7f2ad317b2332a32745cd08fe50b449bdd073", name= "eth-node-nethermind_1.30.1-1_amd64.deb"}, +] diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder.toml b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder.toml similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder.toml rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder.toml diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/.timestamp b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/.timestamp similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/.timestamp rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/.timestamp diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Directory.Build.props b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Directory.Build.props similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Directory.Build.props rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Directory.Build.props diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Nethermind.Runner/Program.cs b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Nethermind.Runner/Program.cs similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Nethermind.Runner/Program.cs rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/.pc/001-build-date.patch/src/Nethermind/Nethermind.Runner/Program.cs diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/copyright b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/copyright similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/copyright rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/copyright diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/eth-node-nethermind.lintian-overrides b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/eth-node-nethermind.lintian-overrides similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/eth-node-nethermind.lintian-overrides rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/eth-node-nethermind.lintian-overrides diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/001-build-date.patch b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/001-build-date.patch similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/001-build-date.patch rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/001-build-date.patch diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/series b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/series similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/series rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/patches/series diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/rules b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/rules similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/rules rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/rules diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/source/lintian-overrides b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/source/lintian-overrides similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/source/lintian-overrides rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/source/lintian-overrides diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/control b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/control similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/control rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/control diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests-with-dotnet b/releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests-with-dotnet similarity index 100% rename from upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests-with-dotnet rename to releases/noble/amd64/eth-node-nethermind/1.30.1-1/src/debian/tests/tests-with-dotnet diff --git a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder-verify.toml b/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder-verify.toml deleted file mode 100644 index 1a9eb4a94..000000000 --- a/upcoming/noble/amd64/eth-node-nethermind/1.30.1-1/pkg-builder-verify.toml +++ /dev/null @@ -1,7 +0,0 @@ -[verify] -package_hash=[ - { hash="10d1aa9f6dcc69b5a71797e6b7666c7c992333f2", name= "eth-node-nethermind_1.30.1-1.dsc"}, - { hash="fe0a78885b8650f379a25ed19e2fad8048d031c1", name= "eth-node-nethermind_1.30.1.orig.tar.gz"}, - { hash="527e9e46cd005792bce3c50498a710e72ecc2377", name= "eth-node-nethermind_1.30.1-1.debian.tar.xz"}, - { hash="a271511c266f0464499ed4987daffaa18326732d", name= "eth-node-nethermind_1.30.1-1_amd64.deb"}, -]