Re: devel/cargo module: offline + features

2019-12-11 Thread Stuart Henderson
On 2019/12/11 09:51, Sebastien Marie wrote:
> Hi,
> 
> The following diff to devel/cargo module introduces two things:
> 
> - build rust crates using cargo --offline to enforce "no network" build. It
>   means that if network would be necessary, cargo will abort with error 
> instead of
>   using (or trying to use) network.
> 
> - provide proper MODCARGO_FEATURES functionality. currently the flags are 
> passed
>   only to build stage, resulting the install stage to rebuild things without 
> the
>   flags before installing.
> 
> - add a MODCARGO_NO_DEFAULT_FEATURES knob to permit overriding completely
>   features defined in Cargo.toml. Without it, features are added to default 
> ones.
> 
> Comments or OK ?

OK sthen@. I've done several full bulk builds with cargo --offline with
no fallout.

> Sebastien Marie
> 
> diff 6deeda83e36cd06f0fc98a19fbf83dc54a799766 
> /home/semarie/repos/openbsd/ports
> blob - 7e465f5957edcde8dfb487eb610b363a505ca700
> file + devel/cargo/cargo.port.mk
> --- devel/cargo/cargo.port.mk
> +++ devel/cargo/cargo.port.mk
> @@ -9,6 +9,9 @@ MODCARGO_CRATES ?=
>  # List of features to build (space separated list).
>  MODCARGO_FEATURES ?=
>  
> +# Force using only MODCARGO_FEATURES if Yes
> +MODCARGO_NO_DEFAULT_FEATURES ?=  No
> +
>  # List of crates to update (no version).
>  # Used to override a dependency with newer version.
>  MODCARGO_CRATES_UPDATE ?=
> @@ -143,10 +146,17 @@ MODCARGO_TEST_ARGS ?=
>  
>  # Manage crate features.
>  .if !empty(MODCARGO_FEATURES)
> -MODCARGO_BUILD_ARGS +=   --features='${MODCARGO_FEATURES}'
> -MODCARGO_TEST_ARGS +=--features='${MODCARGO_FEATURES}'
> +MODCARGO_BUILD_ARGS +=   --features='${MODCARGO_FEATURES}'
> +MODCARGO_INSTALL_ARGS += --features='${MODCARGO_FEATURES}'
> +MODCARGO_TEST_ARGS +=--features='${MODCARGO_FEATURES}'
>  .endif
>  
> +.if ${MODCARGO_NO_DEFAULT_FEATURES:L} == "yes"
> +MODCARGO_BUILD_ARGS +=   --no-default-features
> +MODCARGO_INSTALL_ARGS += --no-default-features
> +MODCARGO_TEST_ARGS +=--no-default-features
> +.endif
> +
>  # Helper for updating a crate.
>  MODCARGO_CARGO_UPDATE = \
>   ${MODCARGO_CARGO_RUN} update \
> @@ -162,6 +172,7 @@ MODCARGO_TEST ?=  Yes
>  MODCARGO_BUILD_TARGET = \
>   ${MODCARGO_CARGO_RUN} build \
>   --manifest-path ${MODCARGO_CARGOTOML} \
> + --offline \
>   --release \
>   --verbose \
>   ${MODCARGO_BUILD_ARGS} ;
> @@ -175,6 +186,7 @@ do-build:
>  MODCARGO_INSTALL_TARGET = \
>   ${MODCARGO_CARGO_RUN} install \
>   --root="${PREFIX}" \
> + --offline \
>   --verbose \
>   ${MODCARGO_INSTALL_ARGS} ; \
>   rm -- "${PREFIX}/.crates.toml" ;
> @@ -188,6 +200,7 @@ do-install:
>  MODCARGO_TEST_TARGET = \
>   ${MODCARGO_CARGO_RUN} test \
>   --manifest-path ${MODCARGO_CARGOTOML} \
> + --offline \
>   --release \
>   --verbose \
>   ${MODCARGO_TEST_ARGS} ;
> 



devel/cargo module: offline + features

2019-12-11 Thread Sebastien Marie
Hi,

The following diff to devel/cargo module introduces two things:

- build rust crates using cargo --offline to enforce "no network" build. It
  means that if network would be necessary, cargo will abort with error instead 
of
  using (or trying to use) network.

- provide proper MODCARGO_FEATURES functionality. currently the flags are passed
  only to build stage, resulting the install stage to rebuild things without the
  flags before installing.

- add a MODCARGO_NO_DEFAULT_FEATURES knob to permit overriding completely
  features defined in Cargo.toml. Without it, features are added to default 
ones.

Comments or OK ?
-- 
Sebastien Marie

diff 6deeda83e36cd06f0fc98a19fbf83dc54a799766 /home/semarie/repos/openbsd/ports
blob - 7e465f5957edcde8dfb487eb610b363a505ca700
file + devel/cargo/cargo.port.mk
--- devel/cargo/cargo.port.mk
+++ devel/cargo/cargo.port.mk
@@ -9,6 +9,9 @@ MODCARGO_CRATES ?=
 # List of features to build (space separated list).
 MODCARGO_FEATURES ?=
 
+# Force using only MODCARGO_FEATURES if Yes
+MODCARGO_NO_DEFAULT_FEATURES ?=No
+
 # List of crates to update (no version).
 # Used to override a dependency with newer version.
 MODCARGO_CRATES_UPDATE ?=
@@ -143,10 +146,17 @@ MODCARGO_TEST_ARGS ?=
 
 # Manage crate features.
 .if !empty(MODCARGO_FEATURES)
-MODCARGO_BUILD_ARGS += --features='${MODCARGO_FEATURES}'
-MODCARGO_TEST_ARGS +=  --features='${MODCARGO_FEATURES}'
+MODCARGO_BUILD_ARGS += --features='${MODCARGO_FEATURES}'
+MODCARGO_INSTALL_ARGS +=   --features='${MODCARGO_FEATURES}'
+MODCARGO_TEST_ARGS +=  --features='${MODCARGO_FEATURES}'
 .endif
 
+.if ${MODCARGO_NO_DEFAULT_FEATURES:L} == "yes"
+MODCARGO_BUILD_ARGS += --no-default-features
+MODCARGO_INSTALL_ARGS +=   --no-default-features
+MODCARGO_TEST_ARGS +=  --no-default-features
+.endif
+
 # Helper for updating a crate.
 MODCARGO_CARGO_UPDATE = \
${MODCARGO_CARGO_RUN} update \
@@ -162,6 +172,7 @@ MODCARGO_TEST ?=Yes
 MODCARGO_BUILD_TARGET = \
${MODCARGO_CARGO_RUN} build \
--manifest-path ${MODCARGO_CARGOTOML} \
+   --offline \
--release \
--verbose \
${MODCARGO_BUILD_ARGS} ;
@@ -175,6 +186,7 @@ do-build:
 MODCARGO_INSTALL_TARGET = \
${MODCARGO_CARGO_RUN} install \
--root="${PREFIX}" \
+   --offline \
--verbose \
${MODCARGO_INSTALL_ARGS} ; \
rm -- "${PREFIX}/.crates.toml" ;
@@ -188,6 +200,7 @@ do-install:
 MODCARGO_TEST_TARGET = \
${MODCARGO_CARGO_RUN} test \
--manifest-path ${MODCARGO_CARGOTOML} \
+   --offline \
--release \
--verbose \
${MODCARGO_TEST_ARGS} ;