* [RFC PATCH 0/3] Add helper and documentation for rust packaging
@ 2026-03-23 10:52 'Quirin Gylstorff' via isar-users
2026-03-23 10:52 ` [RFC PATCH 1/3] Add script to generate a recipe for cargo.io crates 'Quirin Gylstorff' via isar-users
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: 'Quirin Gylstorff' via isar-users @ 2026-03-23 10:52 UTC (permalink / raw)
To: isar-users
From: Quirin Gylstorff <quirin.gylstorff@siemens.com>
This adds based on https://rust-team.pages.debian.net/book/ some
documentation add a generator to package rust crates.
The generator is the same as used by Debian but we don't use the
approach from debcargo-conf as `debcargo cargo` executes the following
steps add once:
- fetch source
- generate orig tarball
- generate debian folder
As this is not compatible with the concepts of bitbake recipes we use
the http fetcher and the by `debcargo` generated debian folder. This
approach is intended to build crates stored in a registry(e.g. crates.io).
The crates package generated by this script should be package upstream
to avoid maintaining them forever.
Crates not in a registry need to manually packaged.
Quirin Gylstorff (3):
Add script to generate a recipe for cargo.io crates
Add example of a rust hello world as isar recipe
user_manual: add rust section
doc/user_manual.md | 66 ++++++++++++++
.../recipes-app/rust-hello-isar/files/rules | 27 ++++++
.../files/rust-hello-isar/Cargo.toml | 6 ++
.../files/rust-hello-isar/src/main.rs | 3 +
.../rust-hello-isar/rust-hello-isar_0.1.bb | 22 +++++
scripts/generate_cargo_crate.sh | 85 +++++++++++++++++++
6 files changed, 209 insertions(+)
create mode 100755 meta-isar/recipes-app/rust-hello-isar/files/rules
create mode 100644 meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml
create mode 100644 meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs
create mode 100644 meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb
create mode 100755 scripts/generate_cargo_crate.sh
--
2.53.0
--
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260323105332.2721282-1-Quirin.Gylstorff%40siemens.com.
^ permalink raw reply [flat|nested] 10+ messages in thread* [RFC PATCH 1/3] Add script to generate a recipe for cargo.io crates 2026-03-23 10:52 [RFC PATCH 0/3] Add helper and documentation for rust packaging 'Quirin Gylstorff' via isar-users @ 2026-03-23 10:52 ` 'Quirin Gylstorff' via isar-users 2026-03-23 11:21 ` 'Jan Kiszka' via isar-users 2026-03-23 10:52 ` [RFC PATCH 2/3] Add example of a rust hello world as isar recipe 'Quirin Gylstorff' via isar-users 2026-03-23 10:52 ` [RFC PATCH 3/3] user_manual: add rust section 'Quirin Gylstorff' via isar-users 2 siblings, 1 reply; 10+ messages in thread From: 'Quirin Gylstorff' via isar-users @ 2026-03-23 10:52 UTC (permalink / raw) To: isar-users From: Quirin Gylstorff <quirin.gylstorff@siemens.com> This script allows to create a recipe for building rust crates which are not part of Debian. It uses for this `debcargo package` and follows the process defined in https://rust-team.pages.debian.net/book. Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> --- scripts/generate_cargo_crate.sh | 85 +++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100755 scripts/generate_cargo_crate.sh diff --git a/scripts/generate_cargo_crate.sh b/scripts/generate_cargo_crate.sh new file mode 100755 index 00000000..759bbc9e --- /dev/null +++ b/scripts/generate_cargo_crate.sh @@ -0,0 +1,85 @@ +#!/bin/bash +# This software is a part of ISAR. +# Copyright (C) 2026 Siemens AG + +usage() { + echo "This script generates a scaffold for rust crates from crates.io." + echo "It uses debcargo to download and generate the debian folder." + echo "USAGE: $0 <CRATE_NAME> [CRATE_VERSION]" +} + +if [ $# -eq 0 ]; then + usage + exit 1 +fi +case $1 in + -h|--help) + usage + exit 0 + ;; + *) + true + ;; +esac + +package_name=$1 +package_version= +if [ $# -gt 1 ]; then + package_version=$2 +fi + +export NAME="isar-users isar" + +for dep in jq debcargo curl; do + if ! command -v "$dep" ;then + echo "Could not find tool dependency $dep !" + exit 1 + fi +done + +source_name="rust-$package_name" +mkdir -p "$source_name/files" +# generate in the current directory to avoid the following +# debcargo error: +# Invalid cross-device link (os error 18) +TMP_DIR=$(mktemp -d -p .) +pushd "$source_name" || exit 1 +debcargo package "$package_name" "$package_version" --directory "$TMP_DIR" +cp -r "${TMP_DIR}"/debian files/ +if [ -z "$package_version" ]; then + package_version=$(grep -oP "X-Cargo-Crate-Version:\K.*" "${TMP_DIR}"/debian/control | tr -d "[:blank:]") +fi +rm -rf "$TMP_DIR" +tarball_checksum="$(curl --silent "https://crates.io/api/v1/crates/${package_name}/${package_version}" | jq ".version.checksum" )" +if [ "${tarball_checksum}" = "null" ] ; then + echo "$package_name in $package_version could not be found in crates.io" + exit 1 +fi +cat << EOF >> "${source_name}_${package_version}".bb +inherit dpkg + +SRC_URI = "https://crates.io/api/v1/crates/${package_name}/\${PV}/download;downloadfilename=${PN}_${PV}.tar.gz" +SRC_URI += "file://debian" + +SRC_URI[sha256sum] = ${tarball_checksum} + +S = "\${WORKDIR}/${package_name}-\${PV}" + +# In most cases we want to package a library crate from crates.io +PROVIDES += "librust-${package_name}-dev" + +do_prepare_build() { + cp -r \${WORKDIR}/debian \${S}/ + cd \${WORKDIR} + tar cJf \${PN}_\${PV}.orig.tar.xz \${TAR_REPRO_OPTS} ${package_name}-\${PV} +} +EOF + + +popd || exit 1 + +echo "Finished generating isar scaffold for package $package_name in version $package_version" +echo "" +echo "Next steps:" +echo " - Check if the package builds and add the necessary patches, e.g. relax dependencies to the debian folder." +echo " - Also add the package to Debian by following https://rust-team.pages.debian.net/book/" -- 2.53.0 -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260323105332.2721282-2-Quirin.Gylstorff%40siemens.com. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH 1/3] Add script to generate a recipe for cargo.io crates 2026-03-23 10:52 ` [RFC PATCH 1/3] Add script to generate a recipe for cargo.io crates 'Quirin Gylstorff' via isar-users @ 2026-03-23 11:21 ` 'Jan Kiszka' via isar-users 0 siblings, 0 replies; 10+ messages in thread From: 'Jan Kiszka' via isar-users @ 2026-03-23 11:21 UTC (permalink / raw) To: Quirin Gylstorff, isar-users On 23.03.26 11:52, 'Quirin Gylstorff' via isar-users wrote: > From: Quirin Gylstorff <quirin.gylstorff@siemens.com> > > This script allows to create a recipe for building rust crates which > are not part of Debian. It uses for this `debcargo package` and follows > the process defined in https://rust-team.pages.debian.net/book. > > Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> > --- > scripts/generate_cargo_crate.sh | 85 +++++++++++++++++++++++++++++++++ > 1 file changed, 85 insertions(+) > create mode 100755 scripts/generate_cargo_crate.sh > > diff --git a/scripts/generate_cargo_crate.sh b/scripts/generate_cargo_crate.sh > new file mode 100755 > index 00000000..759bbc9e > --- /dev/null > +++ b/scripts/generate_cargo_crate.sh > @@ -0,0 +1,85 @@ > +#!/bin/bash > +# This software is a part of ISAR. > +# Copyright (C) 2026 Siemens AG > + > +usage() { > + echo "This script generates a scaffold for rust crates from crates.io." > + echo "It uses debcargo to download and generate the debian folder." > + echo "USAGE: $0 <CRATE_NAME> [CRATE_VERSION]" > +} > + > +if [ $# -eq 0 ]; then > + usage > + exit 1 > +fi > +case $1 in > + -h|--help) > + usage > + exit 0 > + ;; > + *) > + true > + ;; > +esac > + > +package_name=$1 > +package_version= > +if [ $# -gt 1 ]; then > + package_version=$2 > +fi > + > +export NAME="isar-users isar" > + > +for dep in jq debcargo curl; do > + if ! command -v "$dep" ;then > + echo "Could not find tool dependency $dep !" > + exit 1 > + fi > +done > + > +source_name="rust-$package_name" > +mkdir -p "$source_name/files" > +# generate in the current directory to avoid the following > +# debcargo error: > +# Invalid cross-device link (os error 18) > +TMP_DIR=$(mktemp -d -p .) > +pushd "$source_name" || exit 1 > +debcargo package "$package_name" "$package_version" --directory "$TMP_DIR" > +cp -r "${TMP_DIR}"/debian files/ > +if [ -z "$package_version" ]; then > + package_version=$(grep -oP "X-Cargo-Crate-Version:\K.*" "${TMP_DIR}"/debian/control | tr -d "[:blank:]") > +fi > +rm -rf "$TMP_DIR" > +tarball_checksum="$(curl --silent "https://crates.io/api/v1/crates/${package_name}/${package_version}" | jq ".version.checksum" )" > +if [ "${tarball_checksum}" = "null" ] ; then > + echo "$package_name in $package_version could not be found in crates.io" > + exit 1 > +fi > +cat << EOF >> "${source_name}_${package_version}".bb Maybe leave a comment like this behind: # Created by generate_cargo_crate.sh. # SPDX-License-Identifier: MIT-0 That license is like the MIT, except that it comes without the attribution paragraph, thus allows re-licensing without hassles. > +inherit dpkg > + > +SRC_URI = "https://crates.io/api/v1/crates/${package_name}/\${PV}/download;downloadfilename=${PN}_${PV}.tar.gz" > +SRC_URI += "file://debian" > + > +SRC_URI[sha256sum] = ${tarball_checksum} > + > +S = "\${WORKDIR}/${package_name}-\${PV}" > + > +# In most cases we want to package a library crate from crates.io > +PROVIDES += "librust-${package_name}-dev" > + > +do_prepare_build() { > + cp -r \${WORKDIR}/debian \${S}/ > + cd \${WORKDIR} > + tar cJf \${PN}_\${PV}.orig.tar.xz \${TAR_REPRO_OPTS} ${package_name}-\${PV} > +} > +EOF > + > + > +popd || exit 1 > + > +echo "Finished generating isar scaffold for package $package_name in version $package_version" > +echo "" > +echo "Next steps:" > +echo " - Check if the package builds and add the necessary patches, e.g. relax dependencies to the debian folder." > +echo " - Also add the package to Debian by following https://rust-team.pages.debian.net/book/" Jan -- Siemens AG, Foundational Technologies Linux Expert Center -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/a3d04266-0ac9-47b6-aed9-23a7b66a5877%40siemens.com. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [RFC PATCH 2/3] Add example of a rust hello world as isar recipe 2026-03-23 10:52 [RFC PATCH 0/3] Add helper and documentation for rust packaging 'Quirin Gylstorff' via isar-users 2026-03-23 10:52 ` [RFC PATCH 1/3] Add script to generate a recipe for cargo.io crates 'Quirin Gylstorff' via isar-users @ 2026-03-23 10:52 ` 'Quirin Gylstorff' via isar-users 2026-03-23 11:21 ` 'Jan Kiszka' via isar-users 2026-03-24 9:17 ` 'MOESSBAUER, Felix' via isar-users 2026-03-23 10:52 ` [RFC PATCH 3/3] user_manual: add rust section 'Quirin Gylstorff' via isar-users 2 siblings, 2 replies; 10+ messages in thread From: 'Quirin Gylstorff' via isar-users @ 2026-03-23 10:52 UTC (permalink / raw) To: isar-users From: Quirin Gylstorff <quirin.gylstorff@siemens.com> Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> --- .../recipes-app/rust-hello-isar/files/rules | 27 +++++++++++++++++++ .../files/rust-hello-isar/Cargo.toml | 6 +++++ .../files/rust-hello-isar/src/main.rs | 3 +++ .../rust-hello-isar/rust-hello-isar_0.1.bb | 22 +++++++++++++++ 4 files changed, 58 insertions(+) create mode 100755 meta-isar/recipes-app/rust-hello-isar/files/rules create mode 100644 meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml create mode 100644 meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs create mode 100644 meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rules b/meta-isar/recipes-app/rust-hello-isar/files/rules new file mode 100755 index 00000000..213cc876 --- /dev/null +++ b/meta-isar/recipes-app/rust-hello-isar/files/rules @@ -0,0 +1,27 @@ +#!/usr/bin/make -f + +export DEB_BUILD_MAINT_OPTIONS = hardening=+all +DPKG_EXPORT_BUILDFLAGS = 1 +include /usr/share/dpkg/default.mk +include /usr/share/rustc/architecture.mk +export DEB_HOST_RUST_TYPE +export PATH:=/usr/share/cargo/bin:$(PATH) +export CARGO=/usr/share/cargo/bin/cargo +export CARGO_HOME=$(CURDIR)/debian/cargo_home +export CARGO_REGISTRY=$(CURDIR)/debian/cargo_registry +export DEB_CARGO_CRATE=$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM) + +%: + dh $@ --buildsystem=cargo + +execute_after_dh_auto_clean: + $(CARGO) clean + rm -rf $(CARGO_HOME) + rm -rf $(CARGO_REGISTRY) + rm -f debian/cargo-checksum.json + +execute_before_dh_auto_configure: + $(CARGO) prepare-debian $(CARGO_REGISTRY) --link-from-system + rm -f Cargo.lock + touch debian/cargo-checksum.json + diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml new file mode 100644 index 00000000..f761691e --- /dev/null +++ b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "rust-hello-isar" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs new file mode 100644 index 00000000..50469bdf --- /dev/null +++ b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, isar!"); +} diff --git a/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb b/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb new file mode 100644 index 00000000..2d57b8c8 --- /dev/null +++ b/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb @@ -0,0 +1,22 @@ +# Sample application +# +# This software is a part of ISAR. +# Copyright (C) 2026 Siemens AG + +inherit dpkg + +DESCRIPTION = "Hello world example for Rust" +MAINTAINER = "isar-users <isar-users@googlegroups.com>" + +SRC_URI = "file://${PN} \ + file://rules" + +DEBIAN_BUILD_DEPENDS += "dh-cargo" + +S = "${WORKDIR}/${PN}" + +do_prepare_build() { + deb_debianize + install -m 644 ${WORKDIR}/rules ${S}/debian/rules +} + -- 2.53.0 -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260323105332.2721282-3-Quirin.Gylstorff%40siemens.com. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH 2/3] Add example of a rust hello world as isar recipe 2026-03-23 10:52 ` [RFC PATCH 2/3] Add example of a rust hello world as isar recipe 'Quirin Gylstorff' via isar-users @ 2026-03-23 11:21 ` 'Jan Kiszka' via isar-users 2026-03-23 12:03 ` 'Quirin Gylstorff' via isar-users 2026-03-24 9:17 ` 'MOESSBAUER, Felix' via isar-users 1 sibling, 1 reply; 10+ messages in thread From: 'Jan Kiszka' via isar-users @ 2026-03-23 11:21 UTC (permalink / raw) To: Quirin Gylstorff, isar-users On 23.03.26 11:52, 'Quirin Gylstorff' via isar-users wrote: > From: Quirin Gylstorff <quirin.gylstorff@siemens.com> > Was the recipe generated as well, just augmented afterwards? :) Jan > Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> > --- > .../recipes-app/rust-hello-isar/files/rules | 27 +++++++++++++++++++ > .../files/rust-hello-isar/Cargo.toml | 6 +++++ > .../files/rust-hello-isar/src/main.rs | 3 +++ > .../rust-hello-isar/rust-hello-isar_0.1.bb | 22 +++++++++++++++ > 4 files changed, 58 insertions(+) > create mode 100755 meta-isar/recipes-app/rust-hello-isar/files/rules > create mode 100644 meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml > create mode 100644 meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs > create mode 100644 meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb > > diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rules b/meta-isar/recipes-app/rust-hello-isar/files/rules > new file mode 100755 > index 00000000..213cc876 > --- /dev/null > +++ b/meta-isar/recipes-app/rust-hello-isar/files/rules > @@ -0,0 +1,27 @@ > +#!/usr/bin/make -f > + > +export DEB_BUILD_MAINT_OPTIONS = hardening=+all > +DPKG_EXPORT_BUILDFLAGS = 1 > +include /usr/share/dpkg/default.mk > +include /usr/share/rustc/architecture.mk > +export DEB_HOST_RUST_TYPE > +export PATH:=/usr/share/cargo/bin:$(PATH) > +export CARGO=/usr/share/cargo/bin/cargo > +export CARGO_HOME=$(CURDIR)/debian/cargo_home > +export CARGO_REGISTRY=$(CURDIR)/debian/cargo_registry > +export DEB_CARGO_CRATE=$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM) > + > +%: > + dh $@ --buildsystem=cargo > + > +execute_after_dh_auto_clean: > + $(CARGO) clean > + rm -rf $(CARGO_HOME) > + rm -rf $(CARGO_REGISTRY) > + rm -f debian/cargo-checksum.json > + > +execute_before_dh_auto_configure: > + $(CARGO) prepare-debian $(CARGO_REGISTRY) --link-from-system > + rm -f Cargo.lock > + touch debian/cargo-checksum.json > + > diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml > new file mode 100644 > index 00000000..f761691e > --- /dev/null > +++ b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml > @@ -0,0 +1,6 @@ > +[package] > +name = "rust-hello-isar" > +version = "0.1.0" > +edition = "2024" > + > +[dependencies] > diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs > new file mode 100644 > index 00000000..50469bdf > --- /dev/null > +++ b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs > @@ -0,0 +1,3 @@ > +fn main() { > + println!("Hello, isar!"); > +} > diff --git a/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb b/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb > new file mode 100644 > index 00000000..2d57b8c8 > --- /dev/null > +++ b/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb > @@ -0,0 +1,22 @@ > +# Sample application > +# > +# This software is a part of ISAR. > +# Copyright (C) 2026 Siemens AG > + > +inherit dpkg > + > +DESCRIPTION = "Hello world example for Rust" > +MAINTAINER = "isar-users <isar-users@googlegroups.com>" > + > +SRC_URI = "file://${PN} \ > + file://rules" > + > +DEBIAN_BUILD_DEPENDS += "dh-cargo" > + > +S = "${WORKDIR}/${PN}" > + > +do_prepare_build() { > + deb_debianize > + install -m 644 ${WORKDIR}/rules ${S}/debian/rules > +} > + -- Siemens AG, Foundational Technologies Linux Expert Center -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/a97c6fa1-480b-48b1-b096-ba1c27b6ca32%40siemens.com. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH 2/3] Add example of a rust hello world as isar recipe 2026-03-23 11:21 ` 'Jan Kiszka' via isar-users @ 2026-03-23 12:03 ` 'Quirin Gylstorff' via isar-users 2026-03-23 12:06 ` 'Quirin Gylstorff' via isar-users 0 siblings, 1 reply; 10+ messages in thread From: 'Quirin Gylstorff' via isar-users @ 2026-03-23 12:03 UTC (permalink / raw) To: Jan Kiszka, isar-users On 3/23/26 12:21 PM, Jan Kiszka wrote: > On 23.03.26 11:52, 'Quirin Gylstorff' via isar-users wrote: >> From: Quirin Gylstorff <quirin.gylstorff@siemens.com> >> > > Was the recipe generated as well, just augmented afterwards? :) No that was written manually. I was thinking about adding a generator but that should be discussed. Quirin > > Jan > >> Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> >> --- >> .../recipes-app/rust-hello-isar/files/rules | 27 +++++++++++++++++++ >> .../files/rust-hello-isar/Cargo.toml | 6 +++++ >> .../files/rust-hello-isar/src/main.rs | 3 +++ >> .../rust-hello-isar/rust-hello-isar_0.1.bb | 22 +++++++++++++++ >> 4 files changed, 58 insertions(+) >> create mode 100755 meta-isar/recipes-app/rust-hello-isar/files/rules >> create mode 100644 meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml >> create mode 100644 meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs >> create mode 100644 meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb >> >> diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rules b/meta-isar/recipes-app/rust-hello-isar/files/rules >> new file mode 100755 >> index 00000000..213cc876 >> --- /dev/null >> +++ b/meta-isar/recipes-app/rust-hello-isar/files/rules >> @@ -0,0 +1,27 @@ >> +#!/usr/bin/make -f >> + >> +export DEB_BUILD_MAINT_OPTIONS = hardening=+all >> +DPKG_EXPORT_BUILDFLAGS = 1 >> +include /usr/share/dpkg/default.mk >> +include /usr/share/rustc/architecture.mk >> +export DEB_HOST_RUST_TYPE >> +export PATH:=/usr/share/cargo/bin:$(PATH) >> +export CARGO=/usr/share/cargo/bin/cargo >> +export CARGO_HOME=$(CURDIR)/debian/cargo_home >> +export CARGO_REGISTRY=$(CURDIR)/debian/cargo_registry >> +export DEB_CARGO_CRATE=$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM) >> + >> +%: >> + dh $@ --buildsystem=cargo >> + >> +execute_after_dh_auto_clean: >> + $(CARGO) clean >> + rm -rf $(CARGO_HOME) >> + rm -rf $(CARGO_REGISTRY) >> + rm -f debian/cargo-checksum.json >> + >> +execute_before_dh_auto_configure: >> + $(CARGO) prepare-debian $(CARGO_REGISTRY) --link-from-system >> + rm -f Cargo.lock >> + touch debian/cargo-checksum.json >> + >> diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml >> new file mode 100644 >> index 00000000..f761691e >> --- /dev/null >> +++ b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml >> @@ -0,0 +1,6 @@ >> +[package] >> +name = "rust-hello-isar" >> +version = "0.1.0" >> +edition = "2024" >> + >> +[dependencies] >> diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs >> new file mode 100644 >> index 00000000..50469bdf >> --- /dev/null >> +++ b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs >> @@ -0,0 +1,3 @@ >> +fn main() { >> + println!("Hello, isar!"); >> +} >> diff --git a/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb b/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb >> new file mode 100644 >> index 00000000..2d57b8c8 >> --- /dev/null >> +++ b/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb >> @@ -0,0 +1,22 @@ >> +# Sample application >> +# >> +# This software is a part of ISAR. >> +# Copyright (C) 2026 Siemens AG >> + >> +inherit dpkg >> + >> +DESCRIPTION = "Hello world example for Rust" >> +MAINTAINER = "isar-users <isar-users@googlegroups.com>" >> + >> +SRC_URI = "file://${PN} \ >> + file://rules" >> + >> +DEBIAN_BUILD_DEPENDS += "dh-cargo" >> + >> +S = "${WORKDIR}/${PN}" >> + >> +do_prepare_build() { >> + deb_debianize >> + install -m 644 ${WORKDIR}/rules ${S}/debian/rules >> +} >> + > -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/96edc599-29fa-41a7-adf9-0f12f4ef702a%40siemens.com. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH 2/3] Add example of a rust hello world as isar recipe 2026-03-23 12:03 ` 'Quirin Gylstorff' via isar-users @ 2026-03-23 12:06 ` 'Quirin Gylstorff' via isar-users 0 siblings, 0 replies; 10+ messages in thread From: 'Quirin Gylstorff' via isar-users @ 2026-03-23 12:06 UTC (permalink / raw) To: isar-users On 3/23/26 1:03 PM, 'Quirin Gylstorff' via isar-users wrote: > > > On 3/23/26 12:21 PM, Jan Kiszka wrote: >> On 23.03.26 11:52, 'Quirin Gylstorff' via isar-users wrote: >>> From: Quirin Gylstorff <quirin.gylstorff@siemens.com> >>> >> >> Was the recipe generated as well, just augmented afterwards? :) > > No that was written manually. I was thinking about adding a generator > but that should be discussed. With an additional use case the next point of discussion would be not to use a bash script and build something more extensible. Quirin > > Quirin > >> >> Jan >> >>> Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> >>> --- >>> .../recipes-app/rust-hello-isar/files/rules | 27 +++++++++++++++++++ >>> .../files/rust-hello-isar/Cargo.toml | 6 +++++ >>> .../files/rust-hello-isar/src/main.rs | 3 +++ >>> .../rust-hello-isar/rust-hello-isar_0.1.bb | 22 +++++++++++++++ >>> 4 files changed, 58 insertions(+) >>> create mode 100755 meta-isar/recipes-app/rust-hello-isar/files/rules >>> create mode 100644 meta-isar/recipes-app/rust-hello-isar/files/ >>> rust-hello-isar/Cargo.toml >>> create mode 100644 meta-isar/recipes-app/rust-hello-isar/files/ >>> rust-hello-isar/src/main.rs >>> create mode 100644 meta-isar/recipes-app/rust-hello-isar/rust- >>> hello-isar_0.1.bb >>> >>> diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rules b/ >>> meta-isar/recipes-app/rust-hello-isar/files/rules >>> new file mode 100755 >>> index 00000000..213cc876 >>> --- /dev/null >>> +++ b/meta-isar/recipes-app/rust-hello-isar/files/rules >>> @@ -0,0 +1,27 @@ >>> +#!/usr/bin/make -f >>> + >>> +export DEB_BUILD_MAINT_OPTIONS = hardening=+all >>> +DPKG_EXPORT_BUILDFLAGS = 1 >>> +include /usr/share/dpkg/default.mk >>> +include /usr/share/rustc/architecture.mk >>> +export DEB_HOST_RUST_TYPE >>> +export PATH:=/usr/share/cargo/bin:$(PATH) >>> +export CARGO=/usr/share/cargo/bin/cargo >>> +export CARGO_HOME=$(CURDIR)/debian/cargo_home >>> +export CARGO_REGISTRY=$(CURDIR)/debian/cargo_registry >>> +export DEB_CARGO_CRATE=$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM) >>> + >>> +%: >>> + dh $@ --buildsystem=cargo >>> + >>> +execute_after_dh_auto_clean: >>> + $(CARGO) clean >>> + rm -rf $(CARGO_HOME) >>> + rm -rf $(CARGO_REGISTRY) >>> + rm -f debian/cargo-checksum.json >>> + >>> +execute_before_dh_auto_configure: >>> + $(CARGO) prepare-debian $(CARGO_REGISTRY) --link-from-system >>> + rm -f Cargo.lock >>> + touch debian/cargo-checksum.json >>> + >>> diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rust-hello- >>> isar/Cargo.toml b/meta-isar/recipes-app/rust-hello-isar/files/rust- >>> hello-isar/Cargo.toml >>> new file mode 100644 >>> index 00000000..f761691e >>> --- /dev/null >>> +++ b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/ >>> Cargo.toml >>> @@ -0,0 +1,6 @@ >>> +[package] >>> +name = "rust-hello-isar" >>> +version = "0.1.0" >>> +edition = "2024" >>> + >>> +[dependencies] >>> diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rust-hello- >>> isar/src/main.rs b/meta-isar/recipes-app/rust-hello-isar/files/rust- >>> hello-isar/src/main.rs >>> new file mode 100644 >>> index 00000000..50469bdf >>> --- /dev/null >>> +++ b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/ >>> src/main.rs >>> @@ -0,0 +1,3 @@ >>> +fn main() { >>> + println!("Hello, isar!"); >>> +} >>> diff --git a/meta-isar/recipes-app/rust-hello-isar/rust-hello- >>> isar_0.1.bb b/meta-isar/recipes-app/rust-hello-isar/rust-hello- >>> isar_0.1.bb >>> new file mode 100644 >>> index 00000000..2d57b8c8 >>> --- /dev/null >>> +++ b/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb >>> @@ -0,0 +1,22 @@ >>> +# Sample application >>> +# >>> +# This software is a part of ISAR. >>> +# Copyright (C) 2026 Siemens AG >>> + >>> +inherit dpkg >>> + >>> +DESCRIPTION = "Hello world example for Rust" >>> +MAINTAINER = "isar-users <isar-users@googlegroups.com>" >>> + >>> +SRC_URI = "file://${PN} \ >>> + file://rules" >>> + >>> +DEBIAN_BUILD_DEPENDS += "dh-cargo" >>> + >>> +S = "${WORKDIR}/${PN}" >>> + >>> +do_prepare_build() { >>> + deb_debianize >>> + install -m 644 ${WORKDIR}/rules ${S}/debian/rules >>> +} >>> + >> > -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/1ae1b3e4-e8a7-43ee-9c03-0a97bbcbf784%40siemens.com. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH 2/3] Add example of a rust hello world as isar recipe 2026-03-23 10:52 ` [RFC PATCH 2/3] Add example of a rust hello world as isar recipe 'Quirin Gylstorff' via isar-users 2026-03-23 11:21 ` 'Jan Kiszka' via isar-users @ 2026-03-24 9:17 ` 'MOESSBAUER, Felix' via isar-users 2026-03-24 10:03 ` 'Quirin Gylstorff' via isar-users 1 sibling, 1 reply; 10+ messages in thread From: 'MOESSBAUER, Felix' via isar-users @ 2026-03-24 9:17 UTC (permalink / raw) To: Gylstorff, Quirin, isar-users On Mon, 2026-03-23 at 11:52 +0100, 'Quirin Gylstorff' via isar-users wrote: > From: Quirin Gylstorff <quirin.gylstorff@siemens.com> > > Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> > --- > .../recipes-app/rust-hello-isar/files/rules | 27 +++++++++++++++++++ > .../files/rust-hello-isar/Cargo.toml | 6 +++++ > .../files/rust-hello-isar/src/main.rs | 3 +++ > .../rust-hello-isar/rust-hello-isar_0.1.bb | 22 +++++++++++++++ > 4 files changed, 58 insertions(+) > create mode 100755 meta-isar/recipes-app/rust-hello-isar/files/rules > create mode 100644 meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml > create mode 100644 meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs > create mode 100644 meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb > > diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rules b/meta-isar/recipes-app/rust-hello-isar/files/rules > new file mode 100755 > index 00000000..213cc876 > --- /dev/null > +++ b/meta-isar/recipes-app/rust-hello-isar/files/rules > @@ -0,0 +1,27 @@ > +#!/usr/bin/make -f > + > +export DEB_BUILD_MAINT_OPTIONS = hardening=+all > +DPKG_EXPORT_BUILDFLAGS = 1 > +include /usr/share/dpkg/default.mk > +include /usr/share/rustc/architecture.mk > +export DEB_HOST_RUST_TYPE > +export PATH:=/usr/share/cargo/bin:$(PATH) > +export CARGO=/usr/share/cargo/bin/cargo > +export CARGO_HOME=$(CURDIR)/debian/cargo_home > +export CARGO_REGISTRY=$(CURDIR)/debian/cargo_registry > +export DEB_CARGO_CRATE=$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM) Please also add fake proxies to ensure nothing is pulled directly from upstream. Or is this already taken by debcargo? > + > +%: > + dh $@ --buildsystem=cargo > + > +execute_after_dh_auto_clean: > + $(CARGO) clean > + rm -rf $(CARGO_HOME) > + rm -rf $(CARGO_REGISTRY) > + rm -f debian/cargo-checksum.json > + > +execute_before_dh_auto_configure: > + $(CARGO) prepare-debian $(CARGO_REGISTRY) --link-from-system > + rm -f Cargo.lock > + touch debian/cargo-checksum.json > + > diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml > new file mode 100644 > index 00000000..f761691e > --- /dev/null > +++ b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml > @@ -0,0 +1,6 @@ > +[package] > +name = "rust-hello-isar" > +version = "0.1.0" > +edition = "2024" > + > +[dependencies] > diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs > new file mode 100644 > index 00000000..50469bdf > --- /dev/null > +++ b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs > @@ -0,0 +1,3 @@ > +fn main() { > + println!("Hello, isar!"); > +} > diff --git a/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb b/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb > new file mode 100644 > index 00000000..2d57b8c8 > --- /dev/null > +++ b/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb > @@ -0,0 +1,22 @@ > +# Sample application > +# > +# This software is a part of ISAR. > +# Copyright (C) 2026 Siemens AG > + > +inherit dpkg > + > +DESCRIPTION = "Hello world example for Rust" > +MAINTAINER = "isar-users <isar-users@googlegroups.com>" > + > +SRC_URI = "file://${PN} \ You probably want ${BPN} > + file://rules" > + > +DEBIAN_BUILD_DEPENDS += "dh-cargo" > + > +S = "${WORKDIR}/${PN}" Same here. Felix > + > +do_prepare_build() { > + deb_debianize > + install -m 644 ${WORKDIR}/rules ${S}/debian/rules > +} > + > -- > 2.53.0 > > -- > You received this message because you are subscribed to the Google Groups "isar-users" group. > To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. > To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260323105332.2721282-3-Quirin.Gylstorff%40siemens.com. -- Siemens AG Linux Expert Center Friedrich-Ludwig-Bauer-Str. 3 85748 Garching, Germany -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/b6a2efa39ff793a9b9b5270215d7bdb138898c76.camel%40siemens.com. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH 2/3] Add example of a rust hello world as isar recipe 2026-03-24 9:17 ` 'MOESSBAUER, Felix' via isar-users @ 2026-03-24 10:03 ` 'Quirin Gylstorff' via isar-users 0 siblings, 0 replies; 10+ messages in thread From: 'Quirin Gylstorff' via isar-users @ 2026-03-24 10:03 UTC (permalink / raw) To: Moessbauer, Felix (FT RPD CED OES-DE), isar-users On 3/24/26 10:17 AM, Moessbauer, Felix (FT RPD CED OES-DE) wrote: > On Mon, 2026-03-23 at 11:52 +0100, 'Quirin Gylstorff' via isar-users > wrote: >> From: Quirin Gylstorff <quirin.gylstorff@siemens.com> >> >> Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> >> --- >> .../recipes-app/rust-hello-isar/files/rules | 27 +++++++++++++++++++ >> .../files/rust-hello-isar/Cargo.toml | 6 +++++ >> .../files/rust-hello-isar/src/main.rs | 3 +++ >> .../rust-hello-isar/rust-hello-isar_0.1.bb | 22 +++++++++++++++ >> 4 files changed, 58 insertions(+) >> create mode 100755 meta-isar/recipes-app/rust-hello-isar/files/rules >> create mode 100644 meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml >> create mode 100644 meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs >> create mode 100644 meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb >> >> diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rules b/meta-isar/recipes-app/rust-hello-isar/files/rules >> new file mode 100755 >> index 00000000..213cc876 >> --- /dev/null >> +++ b/meta-isar/recipes-app/rust-hello-isar/files/rules >> @@ -0,0 +1,27 @@ >> +#!/usr/bin/make -f >> + >> +export DEB_BUILD_MAINT_OPTIONS = hardening=+all >> +DPKG_EXPORT_BUILDFLAGS = 1 >> +include /usr/share/dpkg/default.mk >> +include /usr/share/rustc/architecture.mk >> +export DEB_HOST_RUST_TYPE >> +export PATH:=/usr/share/cargo/bin:$(PATH) >> +export CARGO=/usr/share/cargo/bin/cargo >> +export CARGO_HOME=$(CURDIR)/debian/cargo_home >> +export CARGO_REGISTRY=$(CURDIR)/debian/cargo_registry >> +export DEB_CARGO_CRATE=$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM) > > Please also add fake proxies to ensure nothing is pulled directly from > upstream. Or is this already taken by debcargo? The build uses a wrapper around cargo(https://salsa.debian.org/rust-team/rust/-/blob/debian/sid/debian/bin/cargo?ref_type=heads) which replaces crates.io with the local registry. In my opinion the Proxy should not be necessary. > >> + >> +%: >> + dh $@ --buildsystem=cargo >> + >> +execute_after_dh_auto_clean: >> + $(CARGO) clean >> + rm -rf $(CARGO_HOME) >> + rm -rf $(CARGO_REGISTRY) >> + rm -f debian/cargo-checksum.json >> + >> +execute_before_dh_auto_configure: >> + $(CARGO) prepare-debian $(CARGO_REGISTRY) --link-from-system >> + rm -f Cargo.lock >> + touch debian/cargo-checksum.json >> + >> diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml >> new file mode 100644 >> index 00000000..f761691e >> --- /dev/null >> +++ b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/Cargo.toml >> @@ -0,0 +1,6 @@ >> +[package] >> +name = "rust-hello-isar" >> +version = "0.1.0" >> +edition = "2024" >> + >> +[dependencies] >> diff --git a/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs >> new file mode 100644 >> index 00000000..50469bdf >> --- /dev/null >> +++ b/meta-isar/recipes-app/rust-hello-isar/files/rust-hello-isar/src/main.rs >> @@ -0,0 +1,3 @@ >> +fn main() { >> + println!("Hello, isar!"); >> +} >> diff --git a/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb b/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb >> new file mode 100644 >> index 00000000..2d57b8c8 >> --- /dev/null >> +++ b/meta-isar/recipes-app/rust-hello-isar/rust-hello-isar_0.1.bb >> @@ -0,0 +1,22 @@ >> +# Sample application >> +# >> +# This software is a part of ISAR. >> +# Copyright (C) 2026 Siemens AG >> + >> +inherit dpkg >> + >> +DESCRIPTION = "Hello world example for Rust" >> +MAINTAINER = "isar-users <isar-users@googlegroups.com>" >> + >> +SRC_URI = "file://${PN} \ > > You probably want ${BPN} > Good catch will fix in the next version. Quirin >> + file://rules" >> + >> +DEBIAN_BUILD_DEPENDS += "dh-cargo" >> + >> +S = "${WORKDIR}/${PN}" > > Same here. > > Felix > >> + >> +do_prepare_build() { >> + deb_debianize >> + install -m 644 ${WORKDIR}/rules ${S}/debian/rules >> +} >> + >> -- >> 2.53.0 >> >> -- >> You received this message because you are subscribed to the Google Groups "isar-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. >> To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260323105332.2721282-3-Quirin.Gylstorff%40siemens.com. > -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/4d3e308a-6736-4e56-88c3-70ace3d64e78%40siemens.com. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [RFC PATCH 3/3] user_manual: add rust section 2026-03-23 10:52 [RFC PATCH 0/3] Add helper and documentation for rust packaging 'Quirin Gylstorff' via isar-users 2026-03-23 10:52 ` [RFC PATCH 1/3] Add script to generate a recipe for cargo.io crates 'Quirin Gylstorff' via isar-users 2026-03-23 10:52 ` [RFC PATCH 2/3] Add example of a rust hello world as isar recipe 'Quirin Gylstorff' via isar-users @ 2026-03-23 10:52 ` 'Quirin Gylstorff' via isar-users 2 siblings, 0 replies; 10+ messages in thread From: 'Quirin Gylstorff' via isar-users @ 2026-03-23 10:52 UTC (permalink / raw) To: isar-users From: Quirin Gylstorff <quirin.gylstorff@siemens.com> Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> --- doc/user_manual.md | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/doc/user_manual.md b/doc/user_manual.md index 7520854b..75f72355 100644 --- a/doc/user_manual.md +++ b/doc/user_manual.md @@ -20,6 +20,7 @@ Copyright (C) 2016-2019, ilbers GmbH - [Customize and configure image](#customize-and-configure-image) - [Create a Custom Image Recipe](#create-a-custom-image-recipe) - [Add a Custom Application](#add-a-custom-application) + - [Rust in ISAR Builds](#rust-in-isar-builds) - [Build statistics collection](#build-statistics-collection) - [Isar Cross-compilation](#isar-cross-compilation) - [Examining and debugging package generation inside their schroot rootfs](#examining-and-debugging-package-generation-inside-their-schroot-rootfs) @@ -1039,6 +1040,71 @@ be installed via `IMAGE_INSTALL`. Have a look at `prebuilt-deb`. --- +## Rust in ISAR Builds + +This is a collection of recipes and links on how to +package rust crates. + +This document takes most of its input from https://rust-team.pages.debian.net/book +which contains the practices of the Debian rust team. + +### Crates on crates.io + +We provide a generator in `scripts/generate_cargo_crate.sh` which +generates the scaffold for these crates. This follows more or less +the approach of Debian with https://salsa.debian.org/rust-team/debcargo-conf. + +The user steps necessary are the following: + +1. Generate the package by calling: +`scripts/generate_cargo_crate.sh <CRATE_NAME> [CRATE_VERSION]`. + +2. Patch to build with the current Debian release, e.g. relax the dependencies +in `Cargo.toml` + + +### Crates not on crates.io + +There is currently no generator and it is recommended to follow the traditional +packaging approach, see also https://rust-team.pages.debian.net/book/process-workspace.html#general-setup. + +A working rules file could look like this: +``` +#!/usr/bin/make -f + +export DEB_BUILD_MAINT_OPTIONS = hardening=+all +DPKG_EXPORT_BUILDFLAGS = 1 +include /usr/share/dpkg/default.mk +include /usr/share/rustc/architecture.mk +export DEB_HOST_RUST_TYPE +export PATH:=/usr/share/cargo/bin:$(PATH) +export CARGO=/usr/share/cargo/bin/cargo +export CARGO_HOME=$(CURDIR)/debian/cargo_home +export CARGO_REGISTRY=$(CURDIR)/debian/cargo_registry +export DEB_CARGO_CRATE=$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM) + +%: + dh $@ --buildsystem=cargo + +execute_after_dh_auto_clean: + $(CARGO) clean + rm -rf $(CARGO_HOME) + rm -rf $(CARGO_REGISTRY) + rm -f debian/cargo-checksum.json + +execute_before_dh_auto_configure: + $(CARGO) prepare-debian $(CARGO_REGISTRY) --link-from-system + rm -f Cargo.lock + touch debian/cargo-checksum.json + +``` +This example works for a cargo application and cannot be reused by other components +as the file `debian/cargo-checksum.json` is empty. + +An example for the initial cargo crate can be found at `meta-isar/recipes-app/rust-hello-isar/`. + +--- + ## Build statistics collection While isar is building the system, build statistics is collected in -- 2.53.0 -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260323105332.2721282-4-Quirin.Gylstorff%40siemens.com. ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-03-24 10:03 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-03-23 10:52 [RFC PATCH 0/3] Add helper and documentation for rust packaging 'Quirin Gylstorff' via isar-users 2026-03-23 10:52 ` [RFC PATCH 1/3] Add script to generate a recipe for cargo.io crates 'Quirin Gylstorff' via isar-users 2026-03-23 11:21 ` 'Jan Kiszka' via isar-users 2026-03-23 10:52 ` [RFC PATCH 2/3] Add example of a rust hello world as isar recipe 'Quirin Gylstorff' via isar-users 2026-03-23 11:21 ` 'Jan Kiszka' via isar-users 2026-03-23 12:03 ` 'Quirin Gylstorff' via isar-users 2026-03-23 12:06 ` 'Quirin Gylstorff' via isar-users 2026-03-24 9:17 ` 'MOESSBAUER, Felix' via isar-users 2026-03-24 10:03 ` 'Quirin Gylstorff' via isar-users 2026-03-23 10:52 ` [RFC PATCH 3/3] user_manual: add rust section 'Quirin Gylstorff' via isar-users
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox