Skip to content

Commit

Permalink
Merge pull request #394 from eth-pkg/upcoming/noble/amd64/eth-node-lo…
Browse files Browse the repository at this point in the history
…destar/1.25.0-1

upcoming/noble/amd64/eth-node-lodestar/1.25.0-1
  • Loading branch information
eenagy authored Jan 15, 2025
2 parents 623bf40 + 0e23342 commit 7d9c6a8
Show file tree
Hide file tree
Showing 20 changed files with 722 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
eth-node-lodestar (1.25.0-1) noble; urgency=medium

* Support for 1.25.0-1

-- Eniko Nagy <[email protected]> Tue, 14 Jan 2025 18:40:41 +0100

Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name = "eth-node-lodestar"
architecture = "any"
summary = "TypeScript Implementation of Ethereum Consensus "
conflicts = []
recommends = []
provides = ["eth-node-consensus-client (= 1)"]
suggests = ["eth-node (= 1)"]
# node-gyp, not entirely sure if needed, let's add it
depends = ["python3"]
add_files = [
"debian/lodestar /usr/lib/eth-node-lodestar/bin",
"packages /usr/lib/eth-node-lodestar",
"node_modules /usr/lib/eth-node-lodestar"
]
add_links = ["/usr/lib/eth-node-lodestar/bin/lodestar /usr/bin/lodestar"]
add_manpages = []
long_doc = """
Lodestar is a TypeScript implementation of the
Ethereum Consensus specification developed by ChainSafe Systems.
"""
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name = "eth-node-lodestar"
maintainer = "Eniko Nagy <[email protected]>"
section = "net"
variants = []
build_depends = [
#"build-essential",
"libssl-dev",
"libjpeg-dev",
"libgif-dev",
"libpixman-1-dev",
"libpango1.0-dev",
"libffi-dev",
"git",
"python3 (>= 3.11)",
"python3-pip",
#"docker-ce",
#"docker-ce-cli",
#"containerd.io",
#"docker-buildx-plugin",
#"docker-compose-plugin"
]
packages = ["eth-node-lodestar"]
skip_debug_symbols = true

Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[verify]
package_hash=[
{ hash="52cb438f34fe6a3ec1eec632816751255658e280", name= "eth-node-lodestar_1.25.0-1.dsc"},
{ hash="062ac4d8e551026b3144bbca2f9de7004794c497", name= "eth-node-lodestar_1.25.0.orig.tar.gz"},
{ hash="62cb57df74c385600d616e0bc9ffc055f35ed787", name= "eth-node-lodestar_1.25.0-1.debian.tar.xz"},
{ hash="556be20590fa165ef204fb2612102c5d328f5bef", name= "eth-node-lodestar_1.25.0-1_amd64.deb"},
]
36 changes: 36 additions & 0 deletions releases/noble/amd64/eth-node-lodestar/1.25.0-1/pkg-builder.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
[package_fields]
spec_file = "eth-node-lodestar.sss"
package_name = "eth-node-lodestar"
version_number = "1.25.0"
revision_number = "1"
homepage="https://github.com/ChainSafe/lodestar"

[package_type]
# virtual | git | default
package_type="default"
tarball_url = "https://github.com/ChainSafe/lodestar/archive/refs/tags/v1.25.0.tar.gz"
## Provided by debian package maintainer not by team developing the software
tarball_hash = "bcec9254768e4d941307c76160c64f57952bece3030a972bc93d3b905a6147c4"

[package_type.language_env]
language_env = "javascript"
node_version = "20.12.2"
# https://nodejs.org/download/release/v20.12.2
node_binary_url = "https://nodejs.org/download/release/v20.12.2/node-v20.12.2-linux-x64.tar.gz"
node_binary_checksum = "f8f9b6877778ed2d5f920a5bd853f0f8a8be1c42f6d448c763a95625cbbb4b0d"
yarn_version = "1.22.19"

[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"
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
// Must not use `* as yargs`, see https://github.com/yargs/yargs/issues/1131
import yargs from "yargs";
import {hideBin} from "yargs/helpers";
import {registerCommandToYargs} from "@lodestar/utils";
import {cmds} from "./cmds/index.js";
import {globalOptions, rcConfigOption} from "./options/index.js";
import {getVersionData} from "./util/version.js";

const {version} = getVersionData();
const topBanner = `🌟 Lodestar: TypeScript Implementation of the Ethereum Consensus Beacon Chain.
* Version: ${version}
* by ChainSafe Systems, 2018-${new Date().getFullYear()}`;
const bottomBanner = `📖 For more information, check the CLI reference:
* https://chainsafe.github.io/lodestar/reference/cli
✍️ Give feedback and report issues on GitHub:
* https://github.com/ChainSafe/lodestar`;

export const yarg = yargs((hideBin as (args: string[]) => string[])(process.argv));

/**
* Common factory for running the CLI and running integration tests
* The CLI must actually be executed in a different script
*/
export function getLodestarCli(): yargs.Argv {
const lodestar = yarg
.env("LODESTAR")
.parserConfiguration({
// As of yargs v16.1.0 dot-notation breaks strictOptions()
// Manually processing options is typesafe tho more verbose
"dot-notation": false,
})
.options(globalOptions)
// blank scriptName so that help text doesn't display the cli name before each command
.scriptName("")
.demandCommand(1)
// Control show help behaviour below on .fail()
.showHelpOnFail(false)
.usage(topBanner)
.epilogue(bottomBanner)
.version(topBanner)
.alias("h", "help")
.alias("v", "version")
.recommendCommands();

// yargs.command and all ./cmds
for (const cmd of cmds) {
registerCommandToYargs(lodestar, cmd);
}

// throw an error if we see an unrecognized cmd
lodestar.recommendCommands().strict();
lodestar.config(...rcConfigOption);

return lodestar;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import fs from "node:fs";
import path from "node:path";
import {fileURLToPath} from "node:url";
import {findUpSync} from "find-up";
import {readAndGetGitData} from "./gitData/index.js";

// Global variable __dirname no longer available in ES6 modules.
// Solutions: https://stackoverflow.com/questions/46745014/alternative-for-dirname-in-node-js-when-using-es6-modules
// eslint-disable-next-line @typescript-eslint/naming-convention
const __dirname = path.dirname(fileURLToPath(import.meta.url));

type VersionJson = {
/** "0.28.2" */
version: string;
};

const BRANCH_IGNORE = /^(HEAD|master|unstable|main)$/;

/**
* Gathers all information on package version including Git data.
* @returns a version string, e.g.
* - Stable release: `v0.36.0/80c248bb`
* - Dev release: `v0.36.0-dev.80c248bb/80c248bb`
* - Test branch: `v0.36.0/developer-feature/80c248bb`
*/
export function getVersionData(): {
version: string;
commit: string;
} {
const parts: string[] = [];

/** Returns local version from `lerna.json` or `package.json` as `"0.28.2"` */
const localVersion = readCliPackageJson() || readVersionFromLernaJson();
if (localVersion) {
parts.push(`v${localVersion}`);
}

const {branch, commit} = readAndGetGitData();

// Add branch only if not present and not an ignore value
if (branch && !BRANCH_IGNORE.test(branch)) parts.push(branch);

// Add commit only if present. 7 characters to be consistent with Github
if (commit) {
const commitShort = commit.slice(0, 7);
// Don't add commit if it's already in the version string (dev versions)
if (!localVersion || !localVersion.includes(commitShort)) {
parts.push(commitShort);
}
}

return {
// Guard against empty parts array
version: parts.length > 0 ? parts.join("/") : "unknown",
commit,
};
}

/** Read version information from lerna.json */
function readVersionFromLernaJson(): string | undefined {
const filePath = findUpSync("lerna.json", {cwd: __dirname});
if (!filePath) return undefined;

const lernaJson = JSON.parse(fs.readFileSync(filePath, "utf8")) as VersionJson;
return lernaJson.version;
}

/** Read version information from package.json */
function readCliPackageJson(): string | undefined {
const filePath = findUpSync("package.json", {cwd: __dirname});
if (!filePath) return undefined;

const packageJson = JSON.parse(fs.readFileSync(filePath, "utf8")) as VersionJson;
return packageJson.version;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
// Must not use `* as yargs`, see https://github.com/yargs/yargs/issues/1131
import yargs from "yargs";
import {hideBin} from "yargs/helpers";
import {registerCommandToYargs} from "@lodestar/utils";
import {cmds} from "./cmds/index.js";

const topBanner = `Beacon chain multi-purpose and debugging tool.
Flare is a sudden brief burst of bright flame or light.
In the wrong hands, can lead people astray.
Use with care.
* by ChainSafe Systems, 2018-${new Date().getFullYear()}`;
const bottomBanner = `
✍️ Give feedback and report issues on GitHub:
* https://github.com/ChainSafe/lodestar`;

export const yarg = yargs((hideBin as (args: string[]) => string[])(process.argv));

/**
* Common factory for running the CLI and running integration tests
* The CLI must actually be executed in a different script
*/
export function getCli(): yargs.Argv {
const lodestar = yarg
.env("FLARE")
.parserConfiguration({
// As of yargs v16.1.0 dot-notation breaks strictOptions()
// Manually processing options is typesafe tho more verbose
"dot-notation": false,
})
// blank scriptName so that help text doesn't display the cli name before each command
.scriptName("")
.demandCommand(1)
// Control show help behaviour below on .fail()
.showHelpOnFail(false)
.usage(topBanner)
.epilogue(bottomBanner)
.version(topBanner)
.alias("h", "help")
.alias("v", "version")
.recommendCommands();

// yargs.command and all ./cmds
for (const cmd of cmds) {
registerCommandToYargs(lodestar, cmd);
}

// throw an error if we see an unrecognized cmd
lodestar.recommendCommands().strict();

return lodestar;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// Must not use `* as yargs`, see https://github.com/yargs/yargs/issues/1131
import yargs from "yargs";
import {hideBin} from "yargs/helpers";
import {registerCommandToYargs} from "@lodestar/utils";
import {getVersionData} from "../utils/version.js";
import {cmds, proverProxyStartCommand} from "./cmds/index.js";
import {globalOptions} from "./options.js";

const {version} = getVersionData();
const topBanner = `🌟 Lodestar Prover Proxy: Ethereum RPC proxy for RPC responses, verified against the trusted block hashes.
* Version: ${version}
* by ChainSafe Systems, 2018-${new Date().getFullYear()}`;
const bottomBanner = `📖 For more information, check the CLI reference:
* https://chainsafe.github.io/lodestar/reference/cli
✍️ Give feedback and report issues on GitHub:
* https://github.com/ChainSafe/lodestar`;

export const yarg = yargs((hideBin as (args: string[]) => string[])(process.argv));

/**
* Common factory for running the CLI and running integration tests
* The CLI must actually be executed in a different script
*/
export function getLodestarProverCli(): yargs.Argv {
const prover = yarg
.env("LODESTAR")
.parserConfiguration({
// As of yargs v16.1.0 dot-notation breaks strictOptions()
// Manually processing options is typesafe tho more verbose
"dot-notation": false,
})
.options(globalOptions)
// blank scriptName so that help text doesn't display the cli name before each command
.scriptName("")
.demandCommand(1)
// Control show help behaviour below on .fail()
.showHelpOnFail(false)
.usage(topBanner)
.epilogue(bottomBanner)
.version(topBanner)
.alias("h", "help")
.alias("v", "version")
.recommendCommands();

// yargs.command and all ./cmds
for (const cmd of cmds) {
registerCommandToYargs(prover, cmd);
}

// Register the proxy command as the default one
registerCommandToYargs(prover, {...proverProxyStartCommand, command: "*"});

// throw an error if we see an unrecognized cmd
prover.recommendCommands().strict();

return prover;
}
Loading

0 comments on commit 7d9c6a8

Please sign in to comment.