tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

rust, rust-bin, bulk builds

[Several of us have been discussing on pkgsrc-changes about the rust-bin
package.  I'm moving that here because it's seeming more ecomplicated,
and summarizing the previous discussion with background.]


  lang/rust doesn't build reliably and this is agreed to be a problem.

  We now have lang/rust-bin which isntalls a binary from the rust
  project (and only works on platforms they support).

  There is a per-platform notion of whether lang/rust (build from binary
  bootstrap and source) or lang/rust-bin (rust project binary) should be
  used.  The point is to make bulk builds reliable so users have
  binaries of things like firefox.

  lang/rust and lang/rust-bin conflict because they both install rustc;
  nobody is surprised by this.

  lang/rust-bin has a PKGNAME of rust, not rust-bin.   The argument for
  this is that binary package users who want a rust compiler could  be
  unaware of this and do "pkgin install rust".  The argument against is
  that we usually use a -bin suffix for wrapped binaries, and that this
  package is different from lang/rust and should appear different, even
  if it installs things intended to be substantially the same.

  Another issue is that rust and rust-bin are marked to only build if
  the per-platform switch selects them, even when explicitly requested,
  and this is mostly about the PKGNAME being the same.  This means that
  bulk builds won't try to build rust (source).

  The consensus seems to be that rust-bin is likely to be with us for a
  long time.  However people would like rust (source) to work, and that
  remains the only option on NetBSD != amd64.

  The previous discussion reached agreemeent to change PKGNAME of
  rust-bin to rust-bin.

I tried to change PKGNAME to rust-bin (patch at end), and while this
worked for cbindgen, librsvg failed because the Makefile hardcodes a
dependency on rust the package name:

  BUILDLINK_API_DEPENDS.rust+=    rust>=1.39.0
  BUILDLINK_DEPMETHOD.rust?=      build
  .include "../../lang/rust/"

So, the question is what to do.  I can see multiple paths:

  1) Leave PKGNAME as is, remove the "don't build if not this type" logic,
  and hope the version numbers don't collide.

  2) Set PKGNAME of rust-bin to rust-bin, and add some API/ABI and
  DEPMETHOD variables that gets mapped in bl3 to rust vs rust-bin.

  3) Drop all API/ABI depends that are <= the older of rust and
  rust-bin, as nobody should be using inconsistent trees.  (While I know
  pkgsrc sort of supports building packages while other packages aren't
  up to date, I think that isn't wise and isn't particularly important
  to support, compared to the pain.  But I suspect many disagree wiht me
  on that.)  Set DEPMETHOD default to build.  Exxpect any other packges
  to switch on type.

Option 2 seems best long term to me, unless option 3 results in almost
no packges needing help, and is acceptable to most.

Option 1 also seems like a viable interim approach.

Index: rust/Makefile
RCS file: /cvsroot/pkgsrc/lang/rust/Makefile,v
retrieving revision 1.171
diff -u -p -r1.171 Makefile
--- rust/Makefile	3 Jun 2020 10:45:04 -0000	1.171
+++ rust/Makefile	4 Jun 2020 13:24:11 -0000
@@ -20,12 +20,6 @@ USE_TOOLS+=		bash ggrep gmake perl:build
 # build on 7).  Mark earlier versions as broken.
-.include ""
-.if ${RUST_TYPE} != "src"
-PKG_SKIP_REASON+=	"Rust source package, RUST_TYPE is bin"
Index: rust/
RCS file: /cvsroot/pkgsrc/lang/rust/,v
retrieving revision 1.4
diff -u -p -r1.4
--- rust/	18 May 2020 16:17:20 -0000	1.4
+++ rust/	4 Jun 2020 13:24:11 -0000
@@ -5,13 +5,14 @@ BUILDLINK_TREE+=	rust
 .if !defined(RUST_BUILDLINK3_MK)
-BUILDLINK_API_DEPENDS.rust+=	rust>=1.20.0
 .include "../../lang/rust/"
 .if ${RUST_TYPE} != "bin"
-BUILDLINK_PKGSRCDIR.rust?=	../../lang/rust
+BUILDLINK_API_DEPENDS.rust+=		rust>=1.20.0
+BUILDLINK_PKGSRCDIR.rust?=		../../lang/rust
-BUILDLINK_PKGSRCDIR.rust?=	../../lang/rust-bin
+BUILDLINK_API_DEPENDS.rust-bin+=	rust-bin>=1.20.0
+BUILDLINK_PKGSRCDIR.rust-bin?=		./../lang/rust-bin
Index: rust/
RCS file: /cvsroot/pkgsrc/lang/rust/,v
retrieving revision 1.13
diff -u -p -r1.13
--- rust/	21 May 2020 21:03:44 -0000	1.13
+++ rust/	4 Jun 2020 13:24:11 -0000
@@ -27,7 +27,7 @@ MASTER_SITES?=	-${MASTER_SITE_CRATESIO}$
 .if ${RUST_TYPE} != "bin"
 BUILD_DEPENDS+=	rust-[0-9]*:../../lang/rust
-BUILD_DEPENDS+=	rust-[0-9]*:../../lang/rust-bin
+BUILD_DEPENDS+=	rust-bin-[0-9]*:../../lang/rust-bin
 USE_TOOLS+=		bsdtar digest
Index: rust-bin/Makefile
RCS file: /cvsroot/pkgsrc/lang/rust-bin/Makefile,v
retrieving revision 1.7
diff -u -p -r1.7 Makefile
--- rust-bin/Makefile	3 Jun 2020 10:45:04 -0000	1.7
+++ rust-bin/Makefile	4 Jun 2020 13:24:11 -0000
@@ -1,21 +1,16 @@
 # $NetBSD: Makefile,v 1.7 2020/06/03 10:45:04 nia Exp $
-DISTNAME=	rust-1.42.0
+VERSION=	1.42.0
+PKGNAME=	rust-bin-${VERSION}
 COMMENT=	Safe, concurrent, practical language (official binaries)
 LICENSE=	mit OR apache-2.0
-.include "../../lang/rust/"
-.if ${RUST_TYPE} != "bin"
-PKG_SKIP_REASON+=	"Rust binary package, RUST_TYPE is src"
 ONLY_FOR_PLATFORM+=	Darwin-*-x86_64

Home | Main Index | Thread Index | Old Index