Compare commits

...

7 commits

Author SHA1 Message Date
Andreas Mieke cc3ebba1f9
Version 1.1.0
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
- Add correct linker to Dockerfile
- Update README to reflect change in usage
- Add ARM instructions to README
2024-11-21 02:26:14 -05:00
Andreas Mieke f63168fe0a
docs: Update README for new release 2024-11-21 02:25:56 -05:00
Andreas Mieke cd2cf79ccf
feat(linker): Add cargo linker to dockerfile
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-11-21 01:41:39 -05:00
Andreas Mieke 56c1c804e6
revert: Base image doesn't do ARM :(
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-11-20 23:47:21 -05:00
Andreas Mieke 5e72c24b58
ci: Add manual event
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2024-11-20 23:42:04 -05:00
Andreas Mieke 79a66caa6d
feat(arch): Add ARM64 image build
All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful
2024-11-20 23:38:09 -05:00
Andreas Mieke 7d1aba878c
Merge branch 'release/1.0.0' into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-07-26 11:38:19 -04:00
3 changed files with 36 additions and 27 deletions

View file

@ -7,7 +7,7 @@ steps:
platforms: linux/amd64
registry: git.merp.digital
when:
- event: push
- event: [push, manual]
branch:
exclude: [develop, master]

View file

@ -6,4 +6,5 @@ RUN git clone https://github.com/OnionIoT/source.git
COPY openwrt-build-config source/.config
ENV FORCE_UNSAFE_CONFIGURE=1
ENV CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_LINKER=/source/staging_dir/toolchain-mipsel_24kc_gcc-7.3.0_musl/bin/mipsel-openwrt-linux-musl-gcc
RUN cd source && make -j12

View file

@ -1,35 +1,43 @@
# onion2s-build
Docker image for cross to build rust packages for the Onion Omega 2S(+)
Docker image for cross to build Rust packages for the Onion Omega 2S(+)
## Prerequisites
You will need to have the rustup version of cargo installed, for more information look at the official Rust documentation. You need Docker (or Podman) up and running, and you need to install cross with:
```sh
cargo install cross --git https://github.com/cross-rs/cross
cargo install cross
```
## Configuration
To compile for the Onion Omega 2S(+) you need to add the following configuration:
Cargo.toml:
```toml
[workspace.metadata.cross.target.mipsel-unknown-linux-musl]
image = "git.merp.digital/zenermerps/onion2s-build:latest"
build-std = ["std"]
```
.cargo/config:
```toml
[target.mipsel-unknown-linux-musl]
linker = "/source/staging_dir/toolchain-mipsel_24kc_gcc-7.3.0_musl/bin/mipsel-openwrt-linux-musl-gcc"
```
_Note_: cargo will complain that this location is deprecated, however (at least on macOS) moving the file to the suggested location results in an error about `Cargo.toml` not being found (while a `cargo.toml` exists). I assume this is due to some discrepancy between macOS's case-insensitive vs Linux's case-sensistive file system.
## Build
You then can use `cross` as replacement for `cargo`, you need to specify the target with: `--target mipsel-unknown-linux-musl`, this is all you need to compile for the Onion Omega 2S(+).
For example:
You will also need to install the nightly toolchain of Rust for your platform:
```sh
cross build --release --target mipsel-unknown-linux-musl
rustup install nightly
```
On the first run of cross, cross will also install a nightly toolchain that is able to run in the Docker image (amd64).
### A note on ARM Macs
When trying to run cross on an ARM based Mac, docker will try to download the image for the ARM arch. Since cross doesn't provide ARM base images, this will fail. However, utilizing Rosetta, it is possible to run AMD64 images. To use those, pull the image manually using docker:
```sh
docker pull --platform linux/amd64 git.merp.digital/zenermerps/onion2s-build:latest
```
This ensures docker will find an image with the correct name and tag, and doesn't try to download the non-existing ARM version.
## Configuration
To compile for the Onion Omega 2S(+) you need to add the following configuration to your `Cargo.toml`:
```toml
[package.metadata.cross.target.mipsel-unknown-linux-musl]
image = "git.merp.digital/zenermerps/onion2s-build:latest"
build-std = true
```
## Build
You then can use `cross +nightly` as replacement for `cargo`. You need to specify the correct target with: `--target mipsel-unknown-linux-musl`, this is all you need to compile for the Onion Omega 2S(+).
For example:
```sh
cross +nightly build --release --target mipsel-unknown-linux-musl
```