Here is a simple dockerfile to cross build:
<code>FROM debian:buster
ENV DEBIAN_FRONTEND=noninteractive
RUN useradd -u 501 -ms /bin/bash build
RUN apt-get clean && apt-get update
RUN apt-get install -y
git
sudo
sed
wget
cpio
unzip
rsync
bc
bison
flex
libssl-dev
make
kmod
libc6-dev
libncurses5-dev
crossbuild-essential-armhf
crossbuild-essential-arm64
WORKDIR /home/build
USER build
VOLUME ["/home/build"]
</code>
<code>FROM debian:buster
ENV DEBIAN_FRONTEND=noninteractive
RUN useradd -u 501 -ms /bin/bash build
RUN apt-get clean && apt-get update
RUN apt-get install -y
git
sudo
sed
wget
cpio
unzip
rsync
bc
bison
flex
libssl-dev
make
kmod
libc6-dev
libncurses5-dev
crossbuild-essential-armhf
crossbuild-essential-arm64
WORKDIR /home/build
USER build
VOLUME ["/home/build"]
</code>
FROM debian:buster
ENV DEBIAN_FRONTEND=noninteractive
RUN useradd -u 501 -ms /bin/bash build
RUN apt-get clean && apt-get update
RUN apt-get install -y
git
sudo
sed
wget
cpio
unzip
rsync
bc
bison
flex
libssl-dev
make
kmod
libc6-dev
libncurses5-dev
crossbuild-essential-armhf
crossbuild-essential-arm64
WORKDIR /home/build
USER build
VOLUME ["/home/build"]
and script I’m running:
<code># Defaults
IMAGE_NAME=${IMAGE_NAME:-"linux_builder"}
ARCH=${ARCH:-"arm"}
CORES=${CORES:-0}
KERNEL=${KERNEL:-"kernel7"}
CROSS_COMPILE=${CROSS_COMPILE:-"arm-linux-gnueabihf-"}
VOLUME="$(pwd)/fs"
# Run builder environment
podman run --rm
--device /dev/fuse
--cap-add SYS_ADMIN
--name $IMAGE_NAME
-v $VOLUME:"/home/build/fs"
-e ARCH=$ARCH
-e KERNEL=$KERNEL
-e CROSS_COMPILE=$CROSS_COMPILE
-it
$IMAGE_NAME
bash $@
</code>
<code># Defaults
IMAGE_NAME=${IMAGE_NAME:-"linux_builder"}
ARCH=${ARCH:-"arm"}
CORES=${CORES:-0}
KERNEL=${KERNEL:-"kernel7"}
CROSS_COMPILE=${CROSS_COMPILE:-"arm-linux-gnueabihf-"}
VOLUME="$(pwd)/fs"
# Run builder environment
podman run --rm
--device /dev/fuse
--cap-add SYS_ADMIN
--name $IMAGE_NAME
-v $VOLUME:"/home/build/fs"
-e ARCH=$ARCH
-e KERNEL=$KERNEL
-e CROSS_COMPILE=$CROSS_COMPILE
-it
$IMAGE_NAME
bash $@
</code>
# Defaults
IMAGE_NAME=${IMAGE_NAME:-"linux_builder"}
ARCH=${ARCH:-"arm"}
CORES=${CORES:-0}
KERNEL=${KERNEL:-"kernel7"}
CROSS_COMPILE=${CROSS_COMPILE:-"arm-linux-gnueabihf-"}
VOLUME="$(pwd)/fs"
# Run builder environment
podman run --rm
--device /dev/fuse
--cap-add SYS_ADMIN
--name $IMAGE_NAME
-v $VOLUME:"/home/build/fs"
-e ARCH=$ARCH
-e KERNEL=$KERNEL
-e CROSS_COMPILE=$CROSS_COMPILE
-it
$IMAGE_NAME
bash $@
When I checkout buildroot into home directory it compiles withour any problem.
But if I use mounted directory instead I get weird error:
<code> /bin/bash ./libtool --mode=install /usr/bin/install -c pkgconf '/home/build/buildroot/output/host/bin'
libtool: install: /usr/bin/install -c pkgconf /home/build/buildroot/output/host/bin/pkgconf
make[2]: Leaving directory '/home/build/fs/buildroot/output/build/host-pkgconf-1.6.3'
make[1]: Leaving directory '/home/build/fs/buildroot/output/build/host-pkgconf-1.6.3'
/usr/bin/install -m 0755 -D package/pkgconf/pkg-config.in /home/build/fs/buildroot/output/host/bin/pkg-config
/bin/sed -i -e 's,@STAGING_SUBDIR@,arm-buildroot-linux-gnueabihf/sysroot,g' /home/build/fs/buildroot/output/host/bin/pkg-config
/bin/sed: couldn't open temporary file /home/build/fs/buildroot/output/host/bin/sedWes6rs: Permission denied
make: *** [package/pkg-generic.mk:300: /home/build/fs/buildroot/output/build/host-pkgconf-1.6.3/.stamp_host_installed] Error 4
</code>
<code> /bin/bash ./libtool --mode=install /usr/bin/install -c pkgconf '/home/build/buildroot/output/host/bin'
libtool: install: /usr/bin/install -c pkgconf /home/build/buildroot/output/host/bin/pkgconf
make[2]: Leaving directory '/home/build/fs/buildroot/output/build/host-pkgconf-1.6.3'
make[1]: Leaving directory '/home/build/fs/buildroot/output/build/host-pkgconf-1.6.3'
/usr/bin/install -m 0755 -D package/pkgconf/pkg-config.in /home/build/fs/buildroot/output/host/bin/pkg-config
/bin/sed -i -e 's,@STAGING_SUBDIR@,arm-buildroot-linux-gnueabihf/sysroot,g' /home/build/fs/buildroot/output/host/bin/pkg-config
/bin/sed: couldn't open temporary file /home/build/fs/buildroot/output/host/bin/sedWes6rs: Permission denied
make: *** [package/pkg-generic.mk:300: /home/build/fs/buildroot/output/build/host-pkgconf-1.6.3/.stamp_host_installed] Error 4
</code>
/bin/bash ./libtool --mode=install /usr/bin/install -c pkgconf '/home/build/buildroot/output/host/bin'
libtool: install: /usr/bin/install -c pkgconf /home/build/buildroot/output/host/bin/pkgconf
make[2]: Leaving directory '/home/build/fs/buildroot/output/build/host-pkgconf-1.6.3'
make[1]: Leaving directory '/home/build/fs/buildroot/output/build/host-pkgconf-1.6.3'
/usr/bin/install -m 0755 -D package/pkgconf/pkg-config.in /home/build/fs/buildroot/output/host/bin/pkg-config
/bin/sed -i -e 's,@STAGING_SUBDIR@,arm-buildroot-linux-gnueabihf/sysroot,g' /home/build/fs/buildroot/output/host/bin/pkg-config
/bin/sed: couldn't open temporary file /home/build/fs/buildroot/output/host/bin/sedWes6rs: Permission denied
make: *** [package/pkg-generic.mk:300: /home/build/fs/buildroot/output/build/host-pkgconf-1.6.3/.stamp_host_installed] Error 4
The same problem is when running as root.
Any idea what is going on?
Thanks for help!