Initial import into git

This commit is contained in:
Paul van Tilburg 2023-01-01 13:08:11 +01:00
commit 54b88801a1
Signed by: paul
GPG Key ID: C6DE073EDA9EEC4D
4 changed files with 121 additions and 0 deletions

18
Dockerfile.arm64 Normal file
View File

@ -0,0 +1,18 @@
FROM docker.io/rust:bullseye
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y g++-arm-linux-gnueabihf libc6-dev-armhf-cross
# Uncomment if you need to add more build dependencies to the image:
# RUN apt-get install -y <build-depend..>
RUN rustup target add armv7-unknown-linux-gnueabihf
RUN rustup toolchain install stable-armv7-unknown-linux-gnueabihf
RUN cargo install cargo-deb
WORKDIR /app
ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
CC_armv7_unknown_linux_gnueabihf=arm-linux-gnueabihf-gcc \
CXX_armv7_unknown_linux_gnueabihf=arm-linux-gnueabihf-g++
CMD ["cargo", "deb", "--target", "armv7-unknown-linux-gnueabihf"]

18
Dockerfile.armhf Normal file
View File

@ -0,0 +1,18 @@
FROM docker.io/rust:bullseye
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y g++-aarch64-linux-gnu libc6-dev-arm64-cross
# Uncomment if you need to add more build dependencies to the image:
# RUN apt-get install -y <build-depend..>
RUN rustup target add aarch64-unknown-linux-gnu
RUN rustup toolchain install stable-aarch64-unknown-linux-gnu
RUN cargo install cargo-deb
WORKDIR /app
ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc \
CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++
CMD ["cargo", "deb", "--target", "aarch64-unknown-linux-gnu"]

11
Dockerfile.i686 Normal file
View File

@ -0,0 +1,11 @@
FROM docker.io/rust:bullseye
RUN apt-get update && apt-get upgrade -y
# Uncomment if you need to add more build dependencies to the image:
# RUN apt-get install -y <build-depend..>
RUN cargo install cargo-deb
WORKDIR /app
CMD ["cargo", "deb"]

74
README.md Normal file
View File

@ -0,0 +1,74 @@
# Docker files for cross-builds using cargo-deb
These files allows you to build Debian packages for the (Debian) architectures
i686, armhf and arm64 using an amd64 system.
Note that the `Dockerfile`s use the full Rust Debian Buster Docker image and
not the slim version so that some common build-dependencies (such as
`libssl-dev`) are already present.
## Cross-compile to i686
Build the image:
```console
$ docker build . -t cargo-deb-crossbuild/i686 --platform linux/386 -f Dockerfile
STEP 1/5: FROM docker.io/rust:bullseye
Trying to pull docker.io/library/rust:bullseye...
Getting image source signatures
...
```
In your Rust project, run:
```console
$ docker run --rm -ti -v `pwd`:/app cargo-deb-crossbuild/i686
...
/app/target/debian/<your crate>.deb
```
You can find the resulting deb file in `./target/debian`.
## Cross-compile to arm64 (ARM v8)
Build the image:
```console
$ docker build . -t cargo-deb-crossbuild/arm64 --platform linux/arm64/v8 -f Dockerfile
STEP 1/5: FROM docker.io/rust:bullseye
Trying to pull docker.io/library/rust:bullseye...
Getting image source signatures
...
```
In your Rust project, run:
```console
$ docker run --rm -ti -v `pwd`:/app cargo-deb-crossbuild/arm64
...
/app/target/debian/<your crate>.deb
```
You can find the resulting deb file in `./target/debian`.
## Cross-compile to armhf (ARM v7)
Build the image:
```console
$ docker build . -t cargo-deb-crossbuild/armhf --platform linux/arm/v7 -f Dockerfile
STEP 1/5: FROM docker.io/rust:bullseye
Trying to pull docker.io/library/rust:bullseye...
Getting image source signatures
...
```
In your Rust project, run:
```console
$ docker run --rm -ti -v `pwd`:/app cargo-deb-crossbuild/armhf
...
/app/target/debian/<your crate>.deb
```
You can find the resulting deb file in `./target/debian`.