Unverified Commit ea81a246 authored by Naïm Favier's avatar Naïm Favier
Browse files

make-iso9660-image: use `__structuredAttrs`

Makes it easier to enable discarding of references, a feature of Nix
2.14 which requires structured attrs.
parent 56226c46
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -47,16 +47,16 @@ assert usbBootable -> isohybridMbrImage != "";

stdenv.mkDerivation {
  name = isoName;
  builder = ./make-iso9660-image.sh;
  __structuredAttrs = true;

  buildCommandPath = ./make-iso9660-image.sh;
  nativeBuildInputs = [ xorriso syslinux zstd libossp_uuid ];

  inherit isoName bootable bootImage compressImage volumeID efiBootImage efiBootable isohybridMbrImage usbBootable;

  # !!! should use XML.
  sources = map (x: x.source) contents;
  targets = map (x: x.target) contents;

  # !!! should use XML.
  objects = map (x: x.object) storeContents;
  symlinks = map (x: x.symlink) storeContents;

+8 −17
Original line number Diff line number Diff line
source $stdenv/setup

sources_=($sources)
targets_=($targets)

objects=($objects)
symlinks=($symlinks)


# Remove the initial slash from a path, since genisofs likes it that way.
stripSlash() {
    res="$1"
@@ -35,13 +26,13 @@ if test -n "$bootable"; then
    # The -boot-info-table option modifies the $bootImage file, so
    # find it in `contents' and make a copy of it (since the original
    # is read-only in the Nix store...).
    for ((i = 0; i < ${#targets_[@]}; i++)); do
        stripSlash "${targets_[$i]}"
    for ((i = 0; i < ${#targets[@]}; i++)); do
        stripSlash "${targets[$i]}"
        if test "$res" = "$bootImage"; then
            echo "copying the boot image ${sources_[$i]}"
            cp "${sources_[$i]}" boot.img
            echo "copying the boot image ${sources[$i]}"
            cp "${sources[$i]}" boot.img
            chmod u+w boot.img
            sources_[$i]=boot.img
            sources[$i]=boot.img
        fi
    done

@@ -66,9 +57,9 @@ touch pathlist


# Add the individual files.
for ((i = 0; i < ${#targets_[@]}; i++)); do
    stripSlash "${targets_[$i]}"
    addPath "$res" "${sources_[$i]}"
for ((i = 0; i < ${#targets[@]}; i++)); do
    stripSlash "${targets[$i]}"
    addPath "$res" "${sources[$i]}"
done