[gnome-build-meta/valentindavid/rpi4: 4/4] Add support for dracut+ostree in rpi4 image



commit bb6bae452a911adf720dbfdb4cf2e6459f2cce61
Author: Valentin David <valentin david codethink co uk>
Date:   Mon May 18 16:03:44 2020 +0200

    Add support for dracut+ostree in rpi4 image

 elements/boards/raspberrypi-4/my-boot-script.bst   |  18 ++
 elements/boards/raspberrypi-4/my-deps.bst          |  36 +++
 elements/boards/raspberrypi-4/my-filesystem.bst    |   9 +
 elements/boards/raspberrypi-4/my-image-deps.bst    |   9 +
 elements/boards/raspberrypi-4/my-image.bst         | 143 ++++++++++++
 .../boards/raspberrypi-4/my-initial-scripts.bst    |   7 +
 elements/boards/raspberrypi-4/my-initramfs.bst     |  68 ++++++
 .../boards/raspberrypi-4/my-initramfs/deps.bst     |  21 ++
 .../raspberrypi-4/my-initramfs/initial-scripts.bst |   7 +
 elements/boards/raspberrypi-4/my-linux.bst         | 248 +++++++++++++++++++++
 elements/boards/raspberrypi-4/my-repo.bst          |  42 ++++
 elements/boards/raspberrypi-4/repair-mbr.bst       |  20 ++
 files/boards/raspberrypi-4/boot.script             |  15 ++
 .../raspberrypi-4/repair-mbr/module-setup.sh       |  20 ++
 .../raspberrypi-4/repair-mbr/repair-mbr.service    |  12 +
 junction.refs                                      |   2 +-
 16 files changed, 676 insertions(+), 1 deletion(-)
---
diff --git a/elements/boards/raspberrypi-4/my-boot-script.bst 
b/elements/boards/raspberrypi-4/my-boot-script.bst
new file mode 100644
index 00000000..cbdbfbbe
--- /dev/null
+++ b/elements/boards/raspberrypi-4/my-boot-script.bst
@@ -0,0 +1,18 @@
+kind: manual
+
+sources:
+- kind: local
+  path: files/boards/raspberrypi-4/boot.script
+
+variables:
+  board: rpi_4
+
+build-depends:
+- boards/raspberrypi-4/u-boot.bst
+
+config:
+  build-commands:
+  - mkimage -A arm64 -O efi -T script -n "Boot EFI with DT overlays" -d boot.script boot.scr
+
+  install-commands:
+  - install -Dm644 -t "%{install-root}%{indep-libdir}/u-boot/%{board}" boot.scr
diff --git a/elements/boards/raspberrypi-4/my-deps.bst b/elements/boards/raspberrypi-4/my-deps.bst
new file mode 100644
index 00000000..2b7c57c9
--- /dev/null
+++ b/elements/boards/raspberrypi-4/my-deps.bst
@@ -0,0 +1,36 @@
+kind: stack
+
+runtime-depends:
+- freedesktop-sdk.bst:components/avahi.bst
+- freedesktop-sdk.bst:components/util-linux.bst
+- freedesktop-sdk.bst:components/tzdata.bst
+- freedesktop-sdk.bst:components/systemd.bst
+- freedesktop-sdk.bst:components/xorg-server.bst
+- freedesktop-sdk.bst:components/shadow.bst
+- freedesktop-sdk.bst:vm/mesa-default.bst
+
+- core-deps/flatpak.bst
+- vm/ostree-config.bst
+- core-deps/eos-updater.bst
+
+- vm/plymouth-gnome-theme.bst
+- vm/dev-repo-script.bst
+
+- freedesktop-sdk.bst:vm/config/pulseaudio.bst
+- freedesktop-sdk.bst:vm/config/sudo.bst
+- freedesktop-sdk.bst:vm/config/journald.bst
+- vm/flathub-config.bst
+
+# And add GNOME core on top !
+- sdk-platform.bst
+- core.bst
+- core/systemd-presets.bst
+
+- boards/raspberrypi-4/my-initramfs.bst
+- vm/resize-root.bst
+- vm/eos-repartition.bst
+
+- freedesktop-sdk.bst:components/linux-firmware.bst
+- freedesktop-sdk.bst:components/wireless-regdb-bin.bst
+
+- vm/wpa-supplicant-config.bst
diff --git a/elements/boards/raspberrypi-4/my-filesystem.bst b/elements/boards/raspberrypi-4/my-filesystem.bst
new file mode 100644
index 00000000..098e1f3b
--- /dev/null
+++ b/elements/boards/raspberrypi-4/my-filesystem.bst
@@ -0,0 +1,9 @@
+kind: compose
+
+build-depends:
+- boards/raspberrypi-4/my-deps.bst
+
+config:
+  exclude:
+  - devel
+  - debug
diff --git a/elements/boards/raspberrypi-4/my-image-deps.bst b/elements/boards/raspberrypi-4/my-image-deps.bst
new file mode 100644
index 00000000..1cc79b22
--- /dev/null
+++ b/elements/boards/raspberrypi-4/my-image-deps.bst
@@ -0,0 +1,9 @@
+kind: stack
+
+runtime-depends:
+- freedesktop-sdk.bst:integration/mtab.bst
+- freedesktop-sdk.bst:components/genimage.bst
+- vm/qemu-tools.bst
+- core-deps/libostree.bst
+- boards/raspberrypi-4/u-boot.bst
+- boards/raspberrypi-4/my-boot-script.bst
diff --git a/elements/boards/raspberrypi-4/my-image.bst b/elements/boards/raspberrypi-4/my-image.bst
new file mode 100644
index 00000000..d77b428f
--- /dev/null
+++ b/elements/boards/raspberrypi-4/my-image.bst
@@ -0,0 +1,143 @@
+kind: script
+
+build-depends:
+- boards/raspberrypi-4/my-image-deps.bst
+- boards/raspberrypi-4/bsp/firmware.bst
+- boards/raspberrypi-4/my-repo.bst
+- boards/raspberrypi-4/my-linux.bst
+
+variables:
+  linux-root: B921B045-1DF0-41C3-AF44-4C6F280D3FAE
+  ostree-branch: gnome-os/aarch64/raspberrypi-4
+  board: rpi_4
+
+  sysroot: "/sysroot"
+
+environment:
+  OSTREE_REPO: "%{sysroot}/ostree/repo"
+
+config:
+  layout:
+  - element: ''
+    destination: '/sysroot'
+  - element: ''
+    destination: '/genimage'
+  - element: boards/raspberrypi-4/my-repo.bst
+    destination: '/source-repo'
+  - element: boards/raspberrypi-4/my-image-deps.bst
+    destination: '/'
+  - element: boards/raspberrypi-4/my-linux.bst
+    destination: '/kernel'
+  - element: boards/raspberrypi-4/bsp/firmware.bst
+    destination: '/firmware'
+
+  commands:
+  - mkdir -p "${OSTREE_REPO}"
+  - ostree init --repo="${OSTREE_REPO}" --mode=bare
+
+  - ostree config --group sysroot set bootloader auto
+  - ostree pull-local "/source-repo" %{ostree-branch}
+
+  - mkdir -p "%{sysroot}/boot"
+
+  - ostree admin init-fs "%{sysroot}"
+  - ostree admin os-init --sysroot="%{sysroot}" gnome-os
+
+  # U-Boot does not provide EFI variables at runtime. So /dev/gpt-auto-root
+  # is not available.
+  - |
+    ostree admin deploy --os="gnome-os" \
+         --sysroot="%{sysroot}" %{ostree-branch} \
+         --karg="rw" --karg="quiet" --karg="splash" \
+         --karg="root=LABEL=root" \
+         --karg="dwc_otg.lpm_enable=0" \
+         --karg-append="console=ttyAMA0,115200" \
+         --karg-append="console=tty1" \
+         --karg="plymouth.ignore-serial-consoles"
+
+  - |
+    mkdir -p "%{sysroot}/etc/ostree"
+    cp -r "%{sysroot}"/ostree/boot.1/gnome-os/*/*/etc/ostree/remotes.d "%{sysroot}/etc/ostree/remotes.d"
+
+  - |
+    ostree admin set-origin --sysroot="%{sysroot}" \
+           --index=0 \
+           GnomeOS dummy \
+           %{ostree-branch}
+
+  - |
+    cp -r "%{sysroot}"/ostree/boot.1/gnome-os/*/*/boot/EFI/ "%{sysroot}/boot/"
+
+  - |
+    cp -r "/kernel/boot/dtbs" "%{sysroot}/boot/dtb"
+
+  - |
+    cp /firmware/boot/* "%{sysroot}/boot/"
+
+  - |
+    cp "%{indep-libdir}/u-boot/%{board}/u-boot.bin" "%{sysroot}/boot/kernel8.img"
+    cp "%{indep-libdir}/u-boot/%{board}/boot.scr" "%{sysroot}/boot/"
+
+  # The dtb seems to be required by the firmware to be able to load u-boot
+  - |
+    cp -r "/kernel/boot/dtbs/broadcom/bcm2711-rpi-4-b.dtb" "%{sysroot}/boot/"
+
+  # FIXME: We should try to load the overlay from u-boot instead.
+  - |
+    mkdir -p "%{sysroot}/boot/overlays"
+    cp -r "/kernel/boot/dtbs/overlays/vc4-fkms-v3d.dtbo" "%{sysroot}/boot/overlays/"
+
+  - |
+    cat >"%{sysroot}/boot/config.txt" <<EOF
+    enable_uart=1
+    start_x=1
+    # FIXME: We should maybe try to load fdt and overlays from u-boot
+    device_tree_address=0x02600000
+    dtoverlay=vc4-fkms-v3d
+    dtparam=audio=on
+    EOF
+
+  - |
+    size=$(($(du -s -B 4K "%{sysroot}" | cut -f1)*4+200*1024))
+    cat >/genimage/genimage.cfg <<EOF
+    image efi.img {
+        vfat {
+            extraargs = "-F32 -n EFI"
+        }
+        mountpoint = "/boot"
+        size = 500M
+    }
+    image root.img {
+        ext4  {
+            label = "root"
+            use-mke2fs = true
+        }
+        size = ${size}K
+    }
+    image disk.img {
+        hdimage {
+            gpt = true
+            align = 1M
+        }
+        partition efi {
+            image = "efi.img"
+            partition-type = 0x0c
+            bootable = true
+            partition-type-uuid = "U"
+        }
+        partition root {
+            image = "root.img"
+            partition-type-uuid = "%{linux-root}"
+        }
+    }
+    EOF
+
+  - |
+    cd /genimage
+    genimage --rootpath "%{sysroot}"
+
+  - |
+    sfdisk --part-attrs /genimage/images/disk.img 2 55
+
+  - |
+    qemu-img convert -O qcow2 -f raw /genimage/images/disk.img "%{install-root}/disk.qcow2"
diff --git a/elements/boards/raspberrypi-4/my-initial-scripts.bst 
b/elements/boards/raspberrypi-4/my-initial-scripts.bst
new file mode 100644
index 00000000..d660ef2b
--- /dev/null
+++ b/elements/boards/raspberrypi-4/my-initial-scripts.bst
@@ -0,0 +1,7 @@
+kind: collect_initial_scripts
+
+build-depends:
+- boards/raspberrypi-4/deps.bst
+
+config:
+  path: /etc/fdsdk/initial_scripts
diff --git a/elements/boards/raspberrypi-4/my-initramfs.bst b/elements/boards/raspberrypi-4/my-initramfs.bst
new file mode 100644
index 00000000..f6298954
--- /dev/null
+++ b/elements/boards/raspberrypi-4/my-initramfs.bst
@@ -0,0 +1,68 @@
+kind: script
+
+build-depends:
+- freedesktop-sdk.bst:vm/prepare-image.bst
+- boards/raspberrypi-4/my-initramfs/deps.bst
+- boards/raspberrypi-4/my-initramfs/initial-scripts.bst
+
+variables:
+  uuidnamespace: aea54278-2587-4075-ae67-8688ace4ce3d
+
+config:
+  layout:
+  - element: ''
+    destination: '/tmp'
+  - element: ''
+    destination: '/var/tmp'
+  - element: ''
+    destination: '/efi'
+  - element: boards/raspberrypi-4/my-initramfs/deps.bst
+    destination: '/'
+  - element: boards/raspberrypi-4/my-initramfs/initial-scripts.bst
+    destination: '/'
+  - element: vm/prepare-image.bst
+    destination: '/'
+
+  commands:
+  - |
+    prepare-image.sh \
+       --seed "%{uuidnamespace}" \
+       --rootsource LABEL=root \
+       --efisource LABEL=EFI \
+       --efipath /boot >/dev/null
+
+  - |
+    mkdir -p "%{install-root}/usr/lib/"
+    cp -r /usr/lib/modules "%{install-root}/usr/lib/"
+
+  - |
+    version="$(ls -1 /lib/modules | head -n1)"
+    mkdir -p "%{install-root}/usr/lib/modules/${version}"
+    dracut -v --fstab \
+           --no-machineid \
+           --kver "${version}" \
+           --add ostree \
+           --add plymouth \
+           --add eos-repartition \
+           --add-drivers "rockchipdrm panfrost panel_simple analogix_dp pwm_bl drm_kms_helper" \
+           --install 'fsck.ext4' \
+           "%{install-root}/usr/lib/modules/${version}/initramfs"
+
+  - |
+    version="$(ls -1 /lib/modules | head -n1)"
+    cp /boot/vmlinuz "%{install-root}/usr/lib/modules/${version}/vmlinuz"
+
+  - dbus-uuidgen >/etc/machine-id
+  - SYSTEMD_RELAX_ESP_CHECKS=1 bootctl --path='/efi' --no-variables install
+  - rm /etc/machine-id
+
+  - |
+    cp -r /efi "%{install-root}/boot"
+
+  - |
+    cat <<EOF >"%{install-root}/boot/loader/loader.conf"
+    timeout 3
+    editor yes
+    console-mode keep
+    default *
+    EOF
diff --git a/elements/boards/raspberrypi-4/my-initramfs/deps.bst 
b/elements/boards/raspberrypi-4/my-initramfs/deps.bst
new file mode 100644
index 00000000..e0729170
--- /dev/null
+++ b/elements/boards/raspberrypi-4/my-initramfs/deps.bst
@@ -0,0 +1,21 @@
+kind: stack
+
+runtime-depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/util-linux.bst
+- freedesktop-sdk.bst:components/systemd.bst
+- freedesktop-sdk.bst:components/dbus.bst
+- freedesktop-sdk.bst:components/dracut.bst
+- freedesktop-sdk.bst:components/os-release.bst
+- freedesktop-sdk.bst:components/shadow.bst
+- freedesktop-sdk.bst:components/tzdata.bst
+- freedesktop-sdk.bst:components/pkg-config.bst
+- vm/plymouth-gnome-theme.bst
+
+- boards/raspberrypi-4/my-linux.bst
+- freedesktop-sdk.bst:components/linux-firmware.bst
+- freedesktop-sdk.bst:components/wireless-regdb-bin.bst
+
+- core-deps/libostree.bst
+- vm/eos-repartition.bst
+- boards/raspberrypi-4/repair-mbr.bst
diff --git a/elements/boards/raspberrypi-4/my-initramfs/initial-scripts.bst 
b/elements/boards/raspberrypi-4/my-initramfs/initial-scripts.bst
new file mode 100644
index 00000000..317190c9
--- /dev/null
+++ b/elements/boards/raspberrypi-4/my-initramfs/initial-scripts.bst
@@ -0,0 +1,7 @@
+kind: collect_initial_scripts
+
+build-depends:
+- boards/raspberrypi-4/my-initramfs/deps.bst
+
+config:
+  path: /etc/fdsdk/initial_scripts
diff --git a/elements/boards/raspberrypi-4/my-linux.bst b/elements/boards/raspberrypi-4/my-linux.bst
new file mode 100644
index 00000000..7b69fcaa
--- /dev/null
+++ b/elements/boards/raspberrypi-4/my-linux.bst
@@ -0,0 +1,248 @@
+kind: manual
+
+sources:
+- kind: git_tag
+  url: github_com:raspberrypi/linux.git
+  # tpreston/raspi4 builds against 5.5 a0262f184d79838604ca07ec785ec30c22abf3a6
+  # Aim to track 5.4 LTS work
+  # track: 5.4.y
+  track: a98ba9221895e03b8736312ce6666005da5968a1
+  track-tags: false
+
+depends:
+- freedesktop-sdk.bst:components/kmod.bst
+
+build-depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/bison.bst
+- freedesktop-sdk.bst:components/flex.bst
+- freedesktop-sdk.bst:components/bc.bst
+- freedesktop-sdk.bst:components/gzip.bst
+
+variables:
+  bootdir: /boot
+  kernel_arch: arm64
+  image-name: arch/arm64/boot/Image
+
+environment:
+  ARCH: '%{kernel_arch}'
+
+config:
+  configure-commands:
+  - |
+    # Generate the default kernel config for the target architecture
+    make defconfig
+
+  - |
+    # Modify the kernel config for additional features
+
+    # Kernel Config Options
+    scripts/config -e DEVTMPFS
+    scripts/config -e CGROUPS
+    scripts/config -e INOTIFY_USER
+    scripts/config -e SIGNALFD
+    scripts/config -e TIMERFD
+    scripts/config -e EPOLL
+    scripts/config -e NET
+    scripts/config -e SYSFS
+    scripts/config -e PROC_FS
+    scripts/config -e FHANDLE
+
+    # Kernel crypto/hash API
+    scripts/config -e CRYPTO_USER_API_HASH
+    scripts/config -e CRYPTO_HMAC
+    scripts/config -e CRYPTO_SHA256
+
+    # udev will fail to work with legacy sysfs
+    scripts/config -d SYSFS_DEPRECATED
+
+    # Boot is very slow with systemd when legacy PTYs are present
+    scripts/config -d LEGACY_PTYS
+    scripts/config -d LEGACY_PTY_COUNT
+
+    # Legacy hotplug confuses udev
+    scripts/config --set-str UEVENT_HELPER_PATH ""
+
+    # Userspace firmware loading not supported
+    scripts/config -d FW_LOADER_USER_HELPER
+
+    # Some udev/virtualization requires
+    scripts/config -e DMIID
+
+    # Support for some SCSI devices serial number retrieval
+    scripts/config -e BLK_DEV_BSG
+
+    # Required for PrivateNetwork= in service units
+    scripts/config -e NET_NS
+    scripts/config -e USER_NS
+
+    # Required for 9p support
+    scripts/config -e NET_9P
+    scripts/config -e NET_9P_VIRTIO
+    scripts/config -e 9P_FS
+    scripts/config -e 9P_FS_POSIX_ACL
+    scripts/config -e 9P_FS_SECURITY
+    scripts/config -e VIRTIO_PCI
+
+    # Strongly Recommended
+    scripts/config -e IPV6
+    scripts/config -e AUTOFS4_FS
+    scripts/config -e TMPFS_XATTR
+    scripts/config -e TMPFS_POSIX_ACL
+    scripts/config -e EXT4_FS_POSIX_ACL
+    scripts/config -e EXT4_FS_SECURITY
+    scripts/config -e XFS_POSIX_ACL
+    scripts/config -e BTRFS_FS_POSIX_ACL
+    scripts/config -e SECCOMP
+    scripts/config -e SECCOMP_FILTER
+    scripts/config -e CHECKPOINT_RESTORE
+
+    # Required for CPUShares= in resource control unit settings
+    scripts/config -e CGROUP_SCHED
+    scripts/config -e FAIR_GROUP_SCHED
+
+    # Required for CPUQuota= in resource control unit settings
+    scripts/config -e CFS_BANDWIDTH
+
+    # Required for IPAddressDeny=, IPAddressAllow= in resource control unit settings
+    scripts/config -e CGROUP_BPF
+
+    # For UEFI systems
+    scripts/config -e EFIVAR_FS
+    scripts/config -e EFI_PARTITION
+
+    # RT group scheduling (effectively) makes RT scheduling unavailable for userspace
+    scripts/config -d RT_GROUP_SCHED
+
+    # Required for 3D acceleration in qemu
+    scripts/config -e CONFIG_DRM_VIRTIO_GPU
+
+    # Required for systemd-nspawn
+    scripts/config -e DEVPTS_MULTIPLE_INSTANCES
+
+    # Sound with QEMU
+    scripts/config -e SND_HDA_GENERIC
+
+    scripts/config -e MMC
+    scripts/config -m PWRSEQ_SD8787
+    scripts/config -e MMC_BLOCK_MINORS=32
+    scripts/config -m SDIO_UART
+    scripts/config -e MMC_SDHCI
+    scripts/config -e MMC_SDHCI_PCI
+    scripts/config -e MMC_SDHCI_ACPI
+    scripts/config -e MMC_SDHCI_PLTFM
+    scripts/config -e MMC_SDHCI_OF_ARASAN
+    scripts/config -e MMC_SPI
+    scripts/config -e MMC_DW
+    scripts/config -e MMC_DW_PCI
+    scripts/config -e MMC_DW_ROCKCHIP
+
+    scripts/config -d DRM_LIMA
+
+    scripts/config -e DRM_PANFROST
+    scripts/config -m DRM_MALI_DISPLAY
+    scripts/config -m DRM_ANALOGIX_ANX78XX
+    scripts/config -m DRM_DW_HDMI_CEC
+    scripts/config -e DRM_LOAD_EDID_FIRMWARE
+
+    scripts/config -m BATTERY_CW2015
+
+    scripts/config -e FIRMWARE_EDID
+
+    scripts/config -m CRYPTO_DEV_ROCKCHIP
+    scripts/config -e PCIE_ROCKCHIP_HOST
+    scripts/config -e PHY_ROCKCHIP_DP
+    scripts/config -e PHY_ROCKCHIP_INNO_HDMI
+    scripts/config -e PHY_ROCKCHIP_PCIE
+    scripts/config -e ROCKCHIP_LVDS
+    scripts/config -e ROCKCHIP_MBOX
+    scripts/config -e ROCKCHIP_RGB
+    scripts/config -m SND_SOC_ROCKCHIP_MAX98090
+    scripts/config -m SND_SOC_ROCKCHIP_PDM
+    scripts/config -m VIDEO_ROCKCHIP_RGA
+    scripts/config -e ROCKCHIP_SUSPEND_MODE
+    scripts/config -e ROCKCHIP_SIP
+
+    scripts/config -e DRM_PANEL
+    scripts/config -m DRM_PANEL_LVDS
+    scripts/config -m DRM_PANEL_SIMPLE
+
+    scripts/config -m HID_MULTITOUCH
+
+    scripts/config -m SND_SOC_ES8316
+    scripts/config -m SND_SOC_SIMPLE_AMPLIFIER
+    scripts/config -m SND_SIMPLE_CARD
+
+    scripts/config -e CHARGER_GPIO
+    scripts/config -m PWRSEQ_SD8787
+    scripts/config -m PWRSEQ_SIMPLE
+    scripts/config -e GPIO_SYSCON
+
+    scripts/config -e RTC_DRV_RK808
+
+    scripts/config -e WIRELESS
+    scripts/config -m CFG80211
+    scripts/config -e CFG80211_WEXT
+    scripts/config -e MAC80211
+    scripts/config -e NETDEVICES
+    scripts/config -e WLAN
+
+    # Rpi4 support
+    scripts/config -e PCIE_BRCMSTB
+    scripts/config -e RASPBERRYPI_FIRMWARE
+    scripts/config -m SND_BCM2708_SOC_RPI_CIRRUS
+    scripts/config -m SND_BCM2708_SOC_RPI_DAC
+    scripts/config -m SND_BCM2708_SOC_RPI_PROTO
+    scripts/config -m SND_BCM2708_SOC_FE_PI_AUDIO
+    scripts/config -m SND_PISOUND
+    scripts/config -m SND_BCM2835
+    scripts/config -m VIDEO_BCM2835
+    scripts/config -m VIDEO_CODEC_BCM2835
+    scripts/config -e CLK_RASPBERRYPI
+    scripts/config -e BCM2835_POWER
+    scripts/config -m RPI_AXIPERF
+    scripts/config -m PWM_PCA9685
+    scripts/config -m MFD_ARIZONA_I2C
+    scripts/config -m MFD_ARIZONA_SPI
+    scripts/config -e MFD_WM5102
+    scripts/config -m BCMGENET
+
+    # Enable vc4 drm
+    scripts/config -e I2C_BCM2835
+    scripts/config -e DRM
+    scripts/config -e DRM_FBDEV_EMULATION
+    scripts/config -e DRM_VC4
+
+    # This was broken by this branch
+    scripts/config -d PCI_AARDVARK
+    scripts/config -d PCIE_ALTERA
+    scripts/config -d PCIE_ROCKCHIP_HOST
+
+  build-commands:
+  - |
+    make
+
+  install-commands:
+  - |
+    install -Dm644 "%{image-name}" '%{install-root}%{bootdir}/vmlinuz'
+    install -Dm644 System.map '%{install-root}%{bootdir}/System.map'
+    make INSTALL_MOD_PATH='%{install-root}%{prefix}' modules_install
+
+    rm %{install-root}%{indep-libdir}/modules/*/{source,build}
+
+  - |
+    make INSTALL_DTBS_PATH='%{install-root}%{bootdir}/dtbs' dtbs_install
+
+public:
+  bst:
+    integration-commands:
+    - |
+      cd '%{indep-libdir}/modules'
+      for version in *; do
+        depmod -b '%{prefix}' -a "$version";
+      done
+
+    split-rules:
+      devel:
+        (>):
+        - '%{bootdir}/System.map'
diff --git a/elements/boards/raspberrypi-4/my-repo.bst b/elements/boards/raspberrypi-4/my-repo.bst
new file mode 100644
index 00000000..d62911e0
--- /dev/null
+++ b/elements/boards/raspberrypi-4/my-repo.bst
@@ -0,0 +1,42 @@
+kind: script
+
+build-depends:
+- freedesktop-sdk.bst:vm/prepare-image.bst
+- core-deps/libostree.bst
+- boards/raspberrypi-4/my-initial-scripts.bst
+- boards/raspberrypi-4/my-filesystem.bst
+
+variables:
+  uuidnamespace: aea54278-2587-4075-ae67-8688ace4ce3d
+  ostree-branch: gnome-os/aarch64/raspberrypi-4
+
+environment:
+  OSTREE_REPO: "%{install-root}"
+
+config:
+  layout:
+  - element: ''
+    destination: /tmp
+  - element: core-deps/libostree.bst
+    destination: /
+  - element: boards/raspberrypi-4/my-filesystem.bst
+    destination: /sysroot
+  - element: boards/raspberrypi-4/my-initial-scripts.bst
+    destination: /
+  - element: vm/prepare-image.bst
+    destination: /
+
+  commands:
+  - |
+    prepare-image.sh \
+       --sysroot /sysroot \
+       --seed "%{uuidnamespace}" \
+       --rootsource LABEL=root \
+       --efisource LABEL=EFI \
+       --efipath /boot >/dev/null
+
+  - mkdir -p "${OSTREE_REPO}"
+  - ostree init --repo="${OSTREE_REPO}" --mode=archive
+  - mv /sysroot/etc /sysroot/usr/etc
+  - ostree commit --branch=%{ostree-branch} --timestamp="$(date --date="@${SOURCE_DATE_EPOCH}" 
--rfc-3339=seconds)" /sysroot
+
diff --git a/elements/boards/raspberrypi-4/repair-mbr.bst b/elements/boards/raspberrypi-4/repair-mbr.bst
new file mode 100644
index 00000000..210be094
--- /dev/null
+++ b/elements/boards/raspberrypi-4/repair-mbr.bst
@@ -0,0 +1,20 @@
+kind: manual
+
+sources:
+- kind: local
+  path: files/boards/raspberrypi-4/repair-mbr/module-setup.sh
+- kind: local
+  path: files/boards/raspberrypi-4/repair-mbr/repair-mbr.service
+- kind: local
+  path: files/boards/raspberrypi-4/repair-mbr/repair-mbr.sh
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+variables:
+  dir: "%{indep-libdir}/dracut/modules.d/50repair-mbr"
+
+config:
+  install-commands:
+  - install -Dm755 -t "%{install-root}%{dir}" module-setup.sh repair-mbr.sh
+  - install -Dm644 -t "%{install-root}%{dir}" repair-mbr.service
diff --git a/files/boards/raspberrypi-4/boot.script b/files/boards/raspberrypi-4/boot.script
new file mode 100644
index 00000000..e0fa46de
--- /dev/null
+++ b/files/boards/raspberrypi-4/boot.script
@@ -0,0 +1,15 @@
+# FIXME: This should load the device tree. But something does not work correctly.
+
+#load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} /dtb/${fdtfile};
+#fdt addr ${fdt_addr_r};
+#fdt resize 8192;
+#load ${devtype} ${devnum}:${distro_bootpart} ${ramdisk_addr_r} /dtb/overlays/vc4-kms-v3d-pi4.dtbo;
+#fdt apply ${ramdisk_addr_r};
+#load ${devtype} ${devnum}:${distro_bootpart} ${ramdisk_addr_r} /dtb/overlays/miniuart-bt.dtbo;
+#fdt apply ${ramdisk_addr_r};
+#fdt set /audio status on;
+
+fdt addr ${fdt_addr_r};
+bootefi bootmgr ${fdt_addr_r};
+load mmc ${devnum}:${distro_bootpart} ${kernel_addr_r} /efi/boot/bootaa64.efi;
+bootefi ${kernel_addr_r} ${fdt_addr_r};
diff --git a/files/boards/raspberrypi-4/repair-mbr/module-setup.sh 
b/files/boards/raspberrypi-4/repair-mbr/module-setup.sh
new file mode 100755
index 00000000..7f6a93cb
--- /dev/null
+++ b/files/boards/raspberrypi-4/repair-mbr/module-setup.sh
@@ -0,0 +1,20 @@
+check() {
+    return 0
+}
+
+depends() {
+    echo systemd
+    echo eos-repartition
+}
+
+install() {
+    dracut_install sfdisk
+    dracut_install sed
+
+    inst_script "$moddir/repair-mbr.sh" /bin/repair-mbr
+    inst_simple "$moddir/repair-mbr.service" \
+               "$systemdsystemunitdir/repair-mbr.service"
+    mkdir -p "${initdir}/$systemdsystemunitdir/initrd.target.wants"
+    ln_r "$systemdsystemunitdir/repair-mbr.service" \
+        "$systemdsystemunitdir/initrd.target.wants/repair-mbr.service"
+}
diff --git a/files/boards/raspberrypi-4/repair-mbr/repair-mbr.service 
b/files/boards/raspberrypi-4/repair-mbr/repair-mbr.service
new file mode 100644
index 00000000..e73f7063
--- /dev/null
+++ b/files/boards/raspberrypi-4/repair-mbr/repair-mbr.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Fix hybrid partitions
+ConditionPathExists=/etc/initrd-release
+
+DefaultDependencies=no
+Before=initrd-root-fs.target sysroot.mount systemd-fsck-root.service
+After=initrd-root-device.target dracut-pre-mount.service endless-reparition.service
+
+[Service]
+Type=oneshot
+ExecStart=-/bin/repair-mbr
+RemainAfterExit=yes
diff --git a/junction.refs b/junction.refs
index eb8c1e03..77f5a722 100644
--- a/junction.refs
+++ b/junction.refs
@@ -1,6 +1,6 @@
 projects:
   gnome:
     freedesktop-sdk.bst:
-    - ref: freedesktop-sdk-19.08beta.9-808-g722d7bebd56338026b257d6cd5e7408c76b265f3
+    - ref: freedesktop-sdk-19.08beta.9-848-g81bffba861bab3f62b616b0cf278bbc5b4065dc2
     openh264-extension.bst:
     - ref: openh264-2.0.0-3-32-gf855a9e434f18734cdb3bb8143d97f61de8e6add


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]