hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
################################################################################
#
# cargo
#
################################################################################
 
CARGO_VERSION = 0.24.0
CARGO_SITE = $(call github,rust-lang,cargo,$(CARGO_VERSION))
CARGO_LICENSE = Apache-2.0 or MIT
CARGO_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT
 
CARGO_DEPS_SHA512 = 60c12ce49a53cf986490f5a5fdf606f0374677902edfdc4d48ab1ba6094f3f23efc59626cd3776649c9386a9cab2a60332e5693aad6acbcbb92132efdcf9fe21
CARGO_DEPS_SITE = https://src.fedoraproject.org/repo/pkgs/cargo/$(CARGO_DEPS_SOURCE)/sha512/$(CARGO_DEPS_SHA512)
CARGO_DEPS_SOURCE = cargo-$(CARGO_VERSION)-vendor.tar.xz
 
CARGO_INSTALLER_VERSION = 4f994850808a572e2cc8d43f968893c8e942e9bf
CARGO_INSTALLER_SITE = $(call github,rust-lang,rust-installer,$(CARGO_INSTALLER_VERSION))
CARGO_INSTALLER_SOURCE = rust-installer-$(CARGO_INSTALLER_VERSION).tar.gz
 
HOST_CARGO_EXTRA_DOWNLOADS = \
   $(CARGO_DEPS_SITE)/$(CARGO_DEPS_SOURCE) \
   $(CARGO_INSTALLER_SITE)/$(CARGO_INSTALLER_SOURCE)
 
HOST_CARGO_DEPENDENCIES = \
   $(BR2_CMAKE_HOST_DEPENDENCY) \
   host-pkgconf \
   host-openssl \
   host-libhttpparser \
   host-libssh2 \
   host-libcurl \
   host-rustc \
   host-cargo-bin
 
HOST_CARGO_SNAP_BIN = $(HOST_CARGO_BIN_DIR)/cargo/bin/cargo
HOST_CARGO_HOME = $(HOST_DIR)/share/cargo
 
define HOST_CARGO_EXTRACT_DEPS
   @mkdir -p $(@D)/vendor
   $(call suitable-extractor,$(CARGO_DEPS_SOURCE)) \
       $(DL_DIR)/$(CARGO_DEPS_SOURCE) | \
       $(TAR) --strip-components=1 -C $(@D)/vendor $(TAR_OPTIONS) -
endef
 
HOST_CARGO_POST_EXTRACT_HOOKS += HOST_CARGO_EXTRACT_DEPS
 
define HOST_CARGO_EXTRACT_INSTALLER
   @mkdir -p $(@D)/src/rust-installer
   $(call suitable-extractor,$(CARGO_INSTALLER_SOURCE)) \
       $(DL_DIR)/$(CARGO_INSTALLER_SOURCE) | \
       $(TAR) --strip-components=1 -C $(@D)/src/rust-installer $(TAR_OPTIONS) -
endef
 
HOST_CARGO_POST_EXTRACT_HOOKS += HOST_CARGO_EXTRACT_INSTALLER
 
define HOST_CARGO_SETUP_DEPS
   mkdir -p $(@D)/.cargo
   ( \
       echo "[source.crates-io]"; \
       echo "registry = 'https://github.com/rust-lang/crates.io-index'"; \
       echo "replace-with = 'vendored-sources'"; \
       echo "[source.vendored-sources]"; \
       echo "directory = '$(@D)/vendor'"; \
   ) > $(@D)/.cargo/config
endef
 
HOST_CARGO_PRE_CONFIGURE_HOOKS += HOST_CARGO_SETUP_DEPS
 
HOST_CARGO_SNAP_OPTS = \
   --release \
   $(if $(VERBOSE),--verbose)
 
HOST_CARGO_ENV = \
   RUSTFLAGS="-Clink-arg=-Wl,-rpath,$(HOST_DIR)/lib" \
   CARGO_HOME=$(HOST_CARGO_HOME)
 
define HOST_CARGO_BUILD_CMDS
   (cd $(@D); $(HOST_MAKE_ENV) $(HOST_CARGO_ENV) $(HOST_CARGO_SNAP_BIN) \
       build $(HOST_CARGO_SNAP_OPTS))
endef
 
define HOST_CARGO_INSTALL_CMDS
   $(INSTALL) -D -m 0755 $(@D)/target/release/cargo $(HOST_DIR)/bin/cargo
   $(INSTALL) -D package/cargo/config.in \
       $(HOST_DIR)/share/cargo/config
   $(SED) 's/@RUSTC_TARGET_NAME@/$(RUSTC_TARGET_NAME)/' \
       $(HOST_DIR)/share/cargo/config
   $(SED) 's/@CROSS_PREFIX@/$(notdir $(TARGET_CROSS))/' \
       $(HOST_DIR)/share/cargo/config
endef
 
$(eval $(host-generic-package))