Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ on:

jobs:
check:
uses: Emerging-Patterns/actions/.github/workflows/nix-flake-check.yml@73b2fbc64cefd6e22bd786437adb5f35190ee837
uses: Emerging-Patterns/actions/.github/workflows/nix-flake-check.yml@5b0aa4f0eaee72662e06479ecebcfd15e9762fe7
15 changes: 14 additions & 1 deletion bench/compare.nix
Original file line number Diff line number Diff line change
Expand Up @@ -194,23 +194,36 @@ def err_tail(path):

def port_listening(port):
want = f"{port:04X}"
tables = 0
for name in ("/proc/net/tcp", "/proc/net/tcp6"):
try:
lines = open(name, encoding="utf-8", errors="replace").read().splitlines()
except OSError:
continue
tables += 1
for line in lines[1:]:
parts = line.split()
if len(parts) < 4 or parts[3] != "0A":
continue
_ip, _, port_hex = parts[1].rpartition(":")
if port_hex.upper() == want:
return True
if tables:
return False
# no /proc (macOS): the port is taken once a bind to it is refused
probe = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
probe.bind(("127.0.0.1", port))
except OSError:
return True
finally:
probe.close()
return False

def wait_port(port, proc, err_path, timeout=30):
# A connect would be an accepted request. serve_once has only one, and
# serve's limit is the measured N, so readiness is the LISTEN row.
# serve's limit is the measured N, so readiness is the LISTEN row, or
# the bound port where there is no /proc.
deadline = time.time() + timeout
while time.time() < deadline:
if proc.poll() is not None:
Expand Down
6 changes: 3 additions & 3 deletions ez.lock.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ LICENSE = "309f5aae946e4db157750e002fb179a74ed0fe27fce09a7be68a6977b14f205f"
[tools]
[tools.bolt]
git = "https://github.com/Emerging-Patterns/bolt"
rev = "358c2da98df8d2d15c5ceaa3a56521212b9029ca"
tag = "v1.17.0"
rev = "7f5bb328187efa21598b4fed51cb1e154cf36330"
tag = "v1.19.0"
root = "."
narHash = "sha256-J+XYAGvL7FOs4NgRwGG8itNlYTIQBM7dNq/r5nrB1Z8="
narHash = "sha256-9d+ikveuzegJVH8nbEYSAxy8Pt0dYDyW4ISZml+MsNM="
entry = "main.bend"
6 changes: 3 additions & 3 deletions ez.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ entry = "dns.bend"
[tools]
[tools.bolt]
git = "https://github.com/Emerging-Patterns/bolt"
rev = "358c2da98df8d2d15c5ceaa3a56521212b9029ca"
tag = "v1.17.0"
rev = "7f5bb328187efa21598b4fed51cb1e154cf36330"
tag = "v1.19.0"
root = "."
narHash = "sha256-J+XYAGvL7FOs4NgRwGG8itNlYTIQBM7dNq/r5nrB1Z8="
narHash = "sha256-9d+ikveuzegJVH8nbEYSAxy8Pt0dYDyW4ISZml+MsNM="
entry = "main.bend"
6 changes: 3 additions & 3 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

97 changes: 54 additions & 43 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -16,52 +16,63 @@

outputs = { self, nixpkgs, ... }@inputs:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
version = "0.21.0"; # x-release-please-version
ez = inputs.ez.lib.${system};
ezBin = inputs.ez.packages.${system}.default;
bend = inputs.bend.packages.${system}.default;
bolt = ez.toolPackage { name = "bolt"; src = self; inherit bend; wrapFlags = ez.rtsFlags bend [ "--gpu" "off" ]; };
bend-cc = ez.bend-cc;
systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ];
forEach = nixpkgs.lib.genAttrs systems;
outputsFor = system:
let
pkgs = nixpkgs.legacyPackages.${system};
version = "0.21.0"; # x-release-please-version
ez = inputs.ez.lib.${system};
ezBin = inputs.ez.packages.${system}.default;
bend = inputs.bend.packages.${system}.default;
bolt = ez.toolPackage { name = "bolt"; src = self; inherit bend; wrapFlags = ez.rtsFlags bend [ "--gpu" "off" ]; };
bend-cc = ez.bend-cc;

bench = import ./bench {
inherit pkgs bend bend-cc self ez;
lib = pkgs.lib;
};
in {
packages.${system} = {
inherit bend bend-cc;
ez = ezBin;
inherit bolt;
} // bench.packages;
bench = import ./bench {
inherit pkgs bend bend-cc self ez;
lib = pkgs.lib;
};
in {
packages = {
inherit bend bend-cc;
ez = ezBin;
inherit bolt;
} // bench.packages;

apps.${system} = bench.apps;
apps = bench.apps;

checks.${system} = {
proofs = ez.mkProofs { ez = ezBin; src = self; };
lint = ez.mkLint { src = self; };
} // bench.checks;
checks = {
proofs = ez.mkProofs { ez = ezBin; src = self; };
lint = ez.mkLint { src = self; };
} // bench.checks;

devShells.${system}.default = ez.mkShell {
src = self;
packages = [
bend
bend-cc
ezBin
pkgs.openssl
pkgs.cacert
pkgs.python3
pkgs.hey
bench.packages.ezhttp-bench-drv
bench.packages.ezhttp-rust-ref
bench.packages.ezhttp-http-check
bench.packages.ezhttp-http-bench
];
extraHook = ''
export BEND_LIBSSL=${pkgs.openssl.out}/lib/libssl.so.3
export SSL_CERT_FILE=''${SSL_CERT_FILE:-${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt}
'';
};
devShells.default = ez.mkShell {
src = self;
packages = [
bend
bend-cc
ezBin
pkgs.openssl
pkgs.cacert
pkgs.python3
pkgs.hey
bench.packages.ezhttp-bench-drv
bench.packages.ezhttp-rust-ref
bench.packages.ezhttp-http-check
bench.packages.ezhttp-http-bench
];
extraHook = ''
export BEND_LIBSSL=${pkgs.openssl.out}/lib/libssl.so.3
export SSL_CERT_FILE=''${SSL_CERT_FILE:-${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt}
'';
};
};
perSystem = forEach outputsFor;
each = name: forEach (system: perSystem.${system}.${name});
in {
packages = each "packages";
checks = each "checks";
apps = each "apps";
devShells = each "devShells";
};
}
Loading