From e88537c41185433b810cab075c2f7b2a7ec7cd4f Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Tue, 28 Jan 2020 00:38:09 +0100 Subject: [PATCH] nova-image: write image to stdout --- apps/default.nix | 4 ++-- apps/nova-image/default.nix | 12 ++---------- apps/nova-iso/default.nix | 2 +- tests/driver-nova.nix | 2 +- 4 files changed, 6 insertions(+), 14 deletions(-) diff --git a/apps/default.nix b/apps/default.nix index 1fd70ee..dc235e1 100644 --- a/apps/default.nix +++ b/apps/default.nix @@ -30,8 +30,8 @@ rec { type = "app"; program = "${drv}/bin/nova-image"; function = attrs: bootDesc: - nixpkgs.runCommand "nova-iso" (attrs // { inherit bootDesc; }) - "XDG_CACHE_HOME=$TMPDIR ${drv}/bin/nova-image $bootDesc > $out"; + nixpkgs.runCommand "nova-iso" attrs + ''XDG_CACHE_HOME=$TMPDIR ${drv}/bin/nova-image "${bootDesc}" > $out''; }; nova-iso = let diff --git a/apps/nova-image/default.nix b/apps/nova-image/default.nix index 05b8b2c..a9a30f2 100644 --- a/apps/nova-image/default.nix +++ b/apps/nova-image/default.nix @@ -10,14 +10,6 @@ in nixpkgs.writeScriptBin "nova-image" (with nixpkgs.buildPackages; #!${runtimeShell} set -eu - out="$1" - shift - - if [ -e "$out" ]; then - echo "refusing to overwrite $out as output" > /dev/stderr - exit 1 - fi - CC="${cc}/bin/${cc.targetPrefix}cc" LD="${buildPackages.binutils}/bin/${buildPackages.binutils.targetPrefix}ld" @@ -39,6 +31,6 @@ in nixpkgs.writeScriptBin "nova-image" (with nixpkgs.buildPackages; -T${base-nova.src}/repos/base-nova/src/core/core-bss.ld \ -z max-page-size=0x1000 \ -Ttext=0x100000 -gc-sections \ - "''${CORE_NOVA:-${base-nova}/lib/core-nova.o}" "$TMPDIR/boot_modules.o" \ - -o "$out" + "''${CORE_NOVA:-${base-nova}/lib/core-nova.o}" "$TMPDIR/boot_modules.o" + cat a.out '') diff --git a/apps/nova-iso/default.nix b/apps/nova-iso/default.nix index 21d9478..172b8fb 100644 --- a/apps/nova-iso/default.nix +++ b/apps/nova-iso/default.nix @@ -15,7 +15,7 @@ nixpkgs.writeScriptBin "nova-iso" (with nixpkgs.buildPackages; trap "rm -rf $TMPDIR" err exit mkdir -p "$TMPDIR/boot/syslinux" - ${nova-image.program} "$TMPDIR/boot/image.elf" $@ + ${nova-image.program} $@ > "$TMPDIR/boot/image.elf" pushd "$TMPDIR" > /dev/null out="nova.iso" diff --git a/tests/driver-nova.nix b/tests/driver-nova.nix index 920bc89..4622a4e 100644 --- a/tests/driver-nova.nix +++ b/tests/driver-nova.nix @@ -145,7 +145,7 @@ let sotest = hostPkgs.runCommand "nova-${name}-sotest" env' '' export XDG_CACHE_HOME=''${TMPDIR:-/tmp} ${apps.nova-image.program} \ - image.elf "${./driver-nova-config.dhall} ${testConfig}" + "${./driver-nova-config.dhall} ${testConfig}" > image.elf cp "${testPkgs.bender}" bender cp "${testPkgs.NOVA}/hypervisor-x86_64" hypervisor mkdir -p $out/nix-support