mirror of
https://github.com/kairos-io/osbuilder.git
synced 2025-07-20 10:09:39 +00:00
Merge pull request #80 from Itxaka/provider_cross_arch_artifacts
Restore cross-arch build of arm images
This commit is contained in:
commit
98f867fa04
@ -20,14 +20,19 @@ RUN go build \
|
|||||||
-o /usr/bin/enki
|
-o /usr/bin/enki
|
||||||
|
|
||||||
FROM opensuse/leap:$LEAP_VERSION as default
|
FROM opensuse/leap:$LEAP_VERSION as default
|
||||||
COPY --from=luet /usr/bin/luet /usr/bin/luet
|
|
||||||
ENV LUET_NOLOCK=true
|
|
||||||
ENV TMPDIR=/tmp
|
|
||||||
COPY luet.yaml /etc/luet/luet.yaml
|
|
||||||
|
|
||||||
RUN zypper ref && zypper dup -y
|
RUN zypper ref && zypper dup -y
|
||||||
## ISO+ Arm image + Netboot + cloud images Build depedencies
|
## ISO+ Arm image + Netboot + cloud images Build depedencies
|
||||||
RUN zypper ref && zypper in -y bc qemu-tools jq cdrtools docker git curl gptfdisk kpartx sudo xfsprogs parted util-linux-systemd e2fsprogs curl util-linux udev rsync grub2 dosfstools grub2-x86_64-efi squashfs mtools xorriso lvm2 zstd
|
RUN zypper ref && zypper in -y bc qemu-tools jq cdrtools docker git curl gptfdisk kpartx sudo xfsprogs parted util-linux-systemd e2fsprogs curl util-linux udev rsync grub2 dosfstools grub2-x86_64-efi squashfs mtools xorriso lvm2 zstd
|
||||||
|
COPY --from=luet /usr/bin/luet /usr/bin/luet
|
||||||
|
ENV LUET_NOLOCK=true
|
||||||
|
ENV TMPDIR=/tmp
|
||||||
|
ARG BUILDARCH
|
||||||
|
# copy both arches
|
||||||
|
COPY luet-arm64.yaml /tmp/luet-arm64.yaml
|
||||||
|
COPY luet-amd64.yaml /tmp/luet-amd64.yaml
|
||||||
|
# Set the default luet config to the current build arch
|
||||||
|
RUN mkdir -p /etc/luet/
|
||||||
|
RUN cp /tmp/luet-${BUILDARCH}.yaml /etc/luet/luet.yaml
|
||||||
|
|
||||||
## Live CD artifacts
|
## Live CD artifacts
|
||||||
RUN luet install -y livecd/grub2 --system-target /grub2
|
RUN luet install -y livecd/grub2 --system-target /grub2
|
||||||
@ -39,11 +44,23 @@ RUN luet install -y firmware/u-boot-rpi64 firmware/raspberrypi-firmware firmware
|
|||||||
## PineBook64 Pro
|
## PineBook64 Pro
|
||||||
RUN luet install -y arm-vendor-blob/u-boot-rockchip --system-target /pinebookpro/u-boot
|
RUN luet install -y arm-vendor-blob/u-boot-rockchip --system-target /pinebookpro/u-boot
|
||||||
|
|
||||||
## RAW images
|
## Odroid fw
|
||||||
|
RUN luet install -y firmware/odroid-c2 --system-target /firmware/odroid-c2
|
||||||
|
|
||||||
|
## RAW images for current arch
|
||||||
RUN luet install -y static/grub-efi --system-target /raw/grub
|
RUN luet install -y static/grub-efi --system-target /raw/grub
|
||||||
RUN luet install -y static/grub-config --system-target /raw/grubconfig
|
RUN luet install -y static/grub-config --system-target /raw/grubconfig
|
||||||
RUN luet install -y static/grub-artifacts --system-target /raw/grubartifacts
|
RUN luet install -y static/grub-artifacts --system-target /raw/grubartifacts
|
||||||
|
|
||||||
|
## RAW images for arm64
|
||||||
|
# Luet will install this artifacts from the current arch repo, so in x86 it will
|
||||||
|
# get them from the x86 repo and we want it to do it from the arm64 repo, even on x86
|
||||||
|
# so we use the arm64 luet config and use that to install those on x86
|
||||||
|
# This is being used by the prepare_arm_images.sh and build-arch-image.sh scripts
|
||||||
|
RUN luet install --config /tmp/luet-arm64.yaml -y static/grub-efi --system-target /arm/raw/grub
|
||||||
|
RUN luet install --config /tmp/luet-arm64.yaml -y static/grub-config --system-target /arm/raw/grubconfig
|
||||||
|
RUN luet install --config /tmp/luet-arm64.yaml -y static/grub-artifacts --system-target /arm/raw/grubartifacts
|
||||||
|
|
||||||
# remove luet tmp files. Side effect of setting the system-target is that it treats it as a root fs
|
# remove luet tmp files. Side effect of setting the system-target is that it treats it as a root fs
|
||||||
# so temporal files are stored in each dir
|
# so temporal files are stored in each dir
|
||||||
RUN rm -Rf /grub2/var/tmp
|
RUN rm -Rf /grub2/var/tmp
|
||||||
|
@ -7,15 +7,7 @@ if [ -z "$image" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -e "$WORKDIR/luet.yaml" ]; then
|
|
||||||
ls -liah $WORKDIR
|
|
||||||
echo "No valid config file"
|
|
||||||
cat "$WORKDIR/luet.yaml"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
sudo luet install --config $WORKDIR/luet.yaml -y --system-target $WORKDIR firmware/odroid-c2
|
|
||||||
# conv=notrunc ?
|
# conv=notrunc ?
|
||||||
dd if=$WORKDIR/bl1.bin.hardkernel of=$image conv=fsync bs=1 count=442
|
dd if=/firmware/odroid-c2/bl1.bin.hardkernel of=$image conv=fsync bs=1 count=442
|
||||||
dd if=$WORKDIR/bl1.bin.hardkernel of=$image conv=fsync bs=512 skip=1 seek=1
|
dd if=/firmware/odroid-c2/bl1.bin.hardkernel of=$image conv=fsync bs=512 skip=1 seek=1
|
||||||
dd if=$WORKDIR/u-boot.odroidc2 of=$image conv=fsync bs=512 seek=97
|
dd if=/firmware/odroid-c2/u-boot.odroidc2 of=$image conv=fsync bs=512 seek=97
|
@ -321,9 +321,9 @@ cp -rfv ${STATEDIR}/cOS/active.img ${RECOVERY}/cOS/recovery.img
|
|||||||
tune2fs -L ${SYSTEM_LABEL} ${RECOVERY}/cOS/recovery.img
|
tune2fs -L ${SYSTEM_LABEL} ${RECOVERY}/cOS/recovery.img
|
||||||
|
|
||||||
# Install real grub config to recovery
|
# Install real grub config to recovery
|
||||||
cp -rfv /raw/grubconfig/* $RECOVERY
|
cp -rfv /arm/raw/grubconfig/* $RECOVERY
|
||||||
mkdir -p $RECOVERY/grub2/fonts
|
mkdir -p $RECOVERY/grub2/fonts
|
||||||
cp -rfv /raw/grubartifacts/* $RECOVERY/grub2
|
cp -rfv /arm/raw/grubartifacts/* $RECOVERY/grub2
|
||||||
mv $RECOVERY/grub2/*pf2 $RECOVERY/grub2/fonts
|
mv $RECOVERY/grub2/*pf2 $RECOVERY/grub2/fonts
|
||||||
|
|
||||||
sync
|
sync
|
||||||
|
@ -291,78 +291,4 @@ var _ = Describe("Utils", Label("utils"), func() {
|
|||||||
Expect(err).To(HaveOccurred())
|
Expect(err).To(HaveOccurred())
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
Describe("CleanStack", Label("CleanStack"), func() {
|
|
||||||
var cleaner *utils.CleanStack
|
|
||||||
BeforeEach(func() {
|
|
||||||
cleaner = utils.NewCleanStack()
|
|
||||||
})
|
|
||||||
It("Adds a callback to the stack and pops it", func() {
|
|
||||||
var flag bool
|
|
||||||
callback := func() error {
|
|
||||||
flag = true
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
Expect(cleaner.Pop()).To(BeNil())
|
|
||||||
cleaner.Push(callback)
|
|
||||||
poppedJob := cleaner.Pop()
|
|
||||||
Expect(poppedJob).NotTo(BeNil())
|
|
||||||
poppedJob()
|
|
||||||
Expect(flag).To(BeTrue())
|
|
||||||
})
|
|
||||||
It("On Cleanup runs callback stack in reverse order", func() {
|
|
||||||
result := ""
|
|
||||||
callback1 := func() error {
|
|
||||||
result = result + "one "
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
callback2 := func() error {
|
|
||||||
result = result + "two "
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
callback3 := func() error {
|
|
||||||
result = result + "three "
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
cleaner.Push(callback1)
|
|
||||||
cleaner.Push(callback2)
|
|
||||||
cleaner.Push(callback3)
|
|
||||||
cleaner.Cleanup(nil)
|
|
||||||
Expect(result).To(Equal("three two one "))
|
|
||||||
})
|
|
||||||
It("On Cleanup keeps former error and all callbacks are executed", func() {
|
|
||||||
err := errors.New("Former error")
|
|
||||||
count := 0
|
|
||||||
callback := func() error {
|
|
||||||
count++
|
|
||||||
if count == 2 {
|
|
||||||
return errors.New("Cleanup Error")
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
cleaner.Push(callback)
|
|
||||||
cleaner.Push(callback)
|
|
||||||
cleaner.Push(callback)
|
|
||||||
err = cleaner.Cleanup(err)
|
|
||||||
Expect(count).To(Equal(3))
|
|
||||||
Expect(err.Error()).To(ContainSubstring("Former error"))
|
|
||||||
})
|
|
||||||
It("On Cleanup error reports first error and all callbacks are executed", func() {
|
|
||||||
var err error
|
|
||||||
count := 0
|
|
||||||
callback := func() error {
|
|
||||||
count++
|
|
||||||
if count >= 2 {
|
|
||||||
return errors.New(fmt.Sprintf("Cleanup error %d", count))
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
cleaner.Push(callback)
|
|
||||||
cleaner.Push(callback)
|
|
||||||
cleaner.Push(callback)
|
|
||||||
err = cleaner.Cleanup(err)
|
|
||||||
Expect(count).To(Equal(3))
|
|
||||||
Expect(err.Error()).To(ContainSubstring("Cleanup error 2"))
|
|
||||||
Expect(err.Error()).To(ContainSubstring("Cleanup error 3"))
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
15
tools-image/luet-amd64.yaml
Normal file
15
tools-image/luet-amd64.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
general:
|
||||||
|
debug: false
|
||||||
|
spinner_charset: 9
|
||||||
|
logging:
|
||||||
|
enable_emoji: false
|
||||||
|
repositories:
|
||||||
|
- name: "kairos"
|
||||||
|
description: "kairos repository"
|
||||||
|
type: "docker"
|
||||||
|
cached: true
|
||||||
|
enable: true
|
||||||
|
priority: 2
|
||||||
|
urls:
|
||||||
|
- "quay.io/kairos/packages"
|
||||||
|
reference: 20230718103103-repository.yaml
|
@ -4,20 +4,11 @@ general:
|
|||||||
logging:
|
logging:
|
||||||
enable_emoji: false
|
enable_emoji: false
|
||||||
repositories:
|
repositories:
|
||||||
- name: "kairos"
|
|
||||||
description: "kairos repository"
|
|
||||||
type: "docker"
|
|
||||||
arch: amd64
|
|
||||||
cached: true
|
|
||||||
priority: 2
|
|
||||||
urls:
|
|
||||||
- "quay.io/kairos/packages"
|
|
||||||
reference: 20230718103103-repository.yaml
|
|
||||||
- name: "kairos-arm64"
|
- name: "kairos-arm64"
|
||||||
description: "kairos repository arm64"
|
description: "kairos repository arm64"
|
||||||
type: "docker"
|
type: "docker"
|
||||||
arch: arm64
|
|
||||||
cached: true
|
cached: true
|
||||||
|
enable: true
|
||||||
priority: 2
|
priority: 2
|
||||||
urls:
|
urls:
|
||||||
- "quay.io/kairos/packages-arm64"
|
- "quay.io/kairos/packages-arm64"
|
@ -93,9 +93,9 @@ cp -rfv ${STATEDIR}/cOS/active.img ${RECOVERY}/cOS/recovery.img
|
|||||||
tune2fs -L ${SYSTEM_LABEL} ${RECOVERY}/cOS/recovery.img
|
tune2fs -L ${SYSTEM_LABEL} ${RECOVERY}/cOS/recovery.img
|
||||||
|
|
||||||
# Install real grub config to recovery
|
# Install real grub config to recovery
|
||||||
cp -rfv /raw/grubconfig/* $RECOVERY
|
cp -rfv /arm/raw/grubconfig/* $RECOVERY
|
||||||
mkdir -p $RECOVERY/grub2/fonts
|
mkdir -p $RECOVERY/grub2/fonts
|
||||||
cp -rfv /raw/grubartifacts/* $RECOVERY/grub2
|
cp -rfv /arm/raw/grubartifacts/* $RECOVERY/grub2
|
||||||
mv $RECOVERY/grub2/*pf2 $RECOVERY/grub2/fonts
|
mv $RECOVERY/grub2/*pf2 $RECOVERY/grub2/fonts
|
||||||
|
|
||||||
dd if=/dev/zero of=recovery_partition.img bs=1M count=$recovery_size
|
dd if=/dev/zero of=recovery_partition.img bs=1M count=$recovery_size
|
||||||
|
Loading…
Reference in New Issue
Block a user