From 7a6203fffc16227e5a0f4477fff050c32ddd27b0 Mon Sep 17 00:00:00 2001 From: Rouven Czerwinski Date: Sun, 13 Dec 2020 06:19:08 +0100 Subject: [PATCH] bareboxTools: init at v2020.12.0 This adds the bareboxTools as a package. The buildBarebox function is intentionally modeled like the buildUBoot function, which should allow future expansion to build barebox for NixOS systems. The tools are useful on their own, since they allow flashing of systems via the different USB loader tools shipped in the scripts directory. --- pkgs/misc/barebox/default.nix | 96 +++++++++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 5 ++ 2 files changed, 101 insertions(+) create mode 100644 pkgs/misc/barebox/default.nix diff --git a/pkgs/misc/barebox/default.nix b/pkgs/misc/barebox/default.nix new file mode 100644 index 000000000000..78d4228abb3b --- /dev/null +++ b/pkgs/misc/barebox/default.nix @@ -0,0 +1,96 @@ +{ stdenv +, lib +, fetchurl +, bison +, dtc +, flex +, libusb1 +, lzop +, openssl +, pkgconfig +, buildPackages +}: + +let + buildBarebox = { + filesToInstall + , installDir ? "$out" + , defconfig + , extraMeta ? {} + , ... } @ args: stdenv.mkDerivation rec { + pname = "barebox-${defconfig}"; + + version = "2020.12.0"; + + src = fetchurl { + url = "https://www.barebox.org/download/barebox-${version}.tar.bz2"; + sha256 = "06vsd95ihaa2nywpqy6k0c7xwk2pzws4yvbp328yd2pfiigachrv"; + }; + + postPatch = '' + patchShebangs scripts + ''; + + nativeBuildInputs = [ + bison + dtc + flex + openssl + libusb1 + lzop + pkgconfig + ]; + depsBuildBuild = [ buildPackages.stdenv.cc ]; + + hardeningDisable = [ "all" ]; + + makeFlags = [ + "DTC=dtc" + "CROSS_COMPILE=${stdenv.cc.targetPrefix}" + ]; + + configurePhase = '' + runHook preConfigure + + make ${defconfig} + + runHook postConfigure + ''; + + installPhase = '' + runHook preInstall + + mkdir -p ${installDir} + cp ${lib.concatStringsSep " " filesToInstall} ${installDir} + + runHook postInstall + ''; + + enableParallelBuilding = true; + + dontStrip = true; + + meta = with lib; { + homepage = "https://www.barebox.org"; + description = "The Swiss Army Knive for bare metal"; + license = licenses.gpl2; + maintainers = with maintainers; [ emantor ]; + } // extraMeta; + } // removeAttrs args [ "extraMeta" ]; + +in { + inherit buildBarebox; + + bareboxTools = buildBarebox { + defconfig = "hosttools_defconfig"; + installDir = "$out/bin"; + extraMeta.platforms = lib.platforms.linux; + filesToInstall = [ + "scripts/bareboximd" + "scripts/imx/imx-usb-loader" + "scripts/omap4_usbboot" + "scripts/omap3-usb-loader" + "scripts/kwboot" + ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 83a4f9db748e..8fc72554c4f6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -19280,6 +19280,11 @@ in ubootWandboard ; + # Upstream Barebox: + inherit (callPackage ../misc/barebox {}) + buildbarebox + bareboxTools; + uclibc = callPackage ../os-specific/linux/uclibc { }; uclibcCross = callPackage ../os-specific/linux/uclibc {