Skip to content

Commit cb7599b

Browse files
committed
rollup merge of rust-lang#20317: brson/rust-installer-v2
2 parents 021c2f3 + b12dfbb commit cb7599b

File tree

5 files changed

+83
-29
lines changed

5 files changed

+83
-29
lines changed

mk/dist.mk

+75-22
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
# * dist-docs - Stage docs for upload
2424

2525
PKG_NAME := $(CFG_PACKAGE_NAME)
26+
DOC_PKG_NAME := rust-docs-$(CFG_PACKAGE_VERS)
27+
MINGW_PKG_NAME := rust-mingw-$(CFG_PACKAGE_VERS)
2628

2729
# License suitable for displaying in a popup
2830
LICENSE.txt: $(S)COPYRIGHT $(S)LICENSE-APACHE $(S)LICENSE-MIT
@@ -229,10 +231,20 @@ dist-install-dir-$(1): prepare-base-dir-$(1) docs compiler-docs
229231
$$(Q)$$(PREPARE_MAN_CMD) $$(S)LICENSE-APACHE $$(PREPARE_DEST_DIR)
230232
$$(Q)$$(PREPARE_MAN_CMD) $$(S)LICENSE-MIT $$(PREPARE_DEST_DIR)
231233
$$(Q)$$(PREPARE_MAN_CMD) $$(S)README.md $$(PREPARE_DEST_DIR)
232-
$$(Q)[ ! -d doc ] || cp -r doc $$(PREPARE_DEST_DIR)
234+
$$(Q)mkdir -p $$(PREPARE_DEST_DIR)/share/doc/rust
235+
$$(Q)$$(PREPARE_MAN_CMD) $$(S)COPYRIGHT $$(PREPARE_DEST_DIR)/share/doc/rust
236+
$$(Q)$$(PREPARE_MAN_CMD) $$(S)LICENSE-APACHE $$(PREPARE_DEST_DIR)/share/doc/rust
237+
$$(Q)$$(PREPARE_MAN_CMD) $$(S)LICENSE-MIT $$(PREPARE_DEST_DIR)/share/doc/rust
238+
$$(Q)$$(PREPARE_MAN_CMD) $$(S)README.md $$(PREPARE_DEST_DIR)/share/doc/rust
233239

234240
dist/$$(PKG_NAME)-$(1).tar.gz: dist-install-dir-$(1)
235241
@$(call E, build: $$@)
242+
# Copy essential gcc components into installer
243+
ifdef CFG_WINDOWSY_$(1)
244+
$$(Q)rm -Rf dist/win-rust-gcc-$(1)
245+
$$(Q)$$(CFG_PYTHON) $$(S)src/etc/make-win-dist.py tmp/dist/$$(PKG_NAME)-$(1)-image dist/win-rust-gcc-$(1) $(1)
246+
$$(Q)cp -r $$(S)src/etc/third-party tmp/dist/$$(PKG_NAME)-$(1)-image/share/doc/
247+
endif
236248
$$(Q)$$(S)src/rust-installer/gen-installer.sh \
237249
--product-name=Rust \
238250
--verify-bin=rustc \
@@ -242,9 +254,50 @@ dist/$$(PKG_NAME)-$(1).tar.gz: dist-install-dir-$(1)
242254
--work-dir=tmp/dist \
243255
--output-dir=dist \
244256
--non-installed-prefixes=$$(NON_INSTALLED_PREFIXES) \
245-
--package-name=$$(PKG_NAME)-$(1)
257+
--package-name=$$(PKG_NAME)-$(1) \
258+
--component-name=rustc \
259+
--legacy-manifest-dirs=rustlib,cargo
246260
$$(Q)rm -R tmp/dist/$$(PKG_NAME)-$(1)-image
247261

262+
dist-doc-install-dir-$(1): docs compiler-docs
263+
$$(Q)mkdir -p tmp/dist/$$(DOC_PKG_NAME)-$(1)-image/share/doc/rust
264+
$$(Q)cp -r doc tmp/dist/$$(DOC_PKG_NAME)-$(1)-image/share/doc/rust/html
265+
266+
dist/$$(DOC_PKG_NAME)-$(1).tar.gz: dist-doc-install-dir-$(1)
267+
@$(call E, build: $$@)
268+
$$(Q)$$(S)src/rust-installer/gen-installer.sh \
269+
--product-name=Rust-Documentation \
270+
--rel-manifest-dir=rustlib \
271+
--success-message=Rust-documentation-is-installed. \
272+
--image-dir=tmp/dist/$$(DOC_PKG_NAME)-$(1)-image \
273+
--work-dir=tmp/dist \
274+
--output-dir=dist \
275+
--package-name=$$(DOC_PKG_NAME)-$(1) \
276+
--component-name=rust-docs \
277+
--legacy-manifest-dirs=rustlib,cargo \
278+
--bulk-dirs=share/doc/rust/html
279+
$$(Q)rm -R tmp/dist/$$(DOC_PKG_NAME)-$(1)-image
280+
281+
dist-mingw-install-dir-$(1):
282+
$$(Q)mkdir -p tmp/dist/rust-mingw-tmp-$(1)-image
283+
$$(Q)rm -Rf tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image
284+
$$(Q)$$(CFG_PYTHON) $$(S)src/etc/make-win-dist.py \
285+
tmp/dist/rust-mingw-tmp-$(1)-image tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image $(1)
286+
287+
dist/$$(MINGW_PKG_NAME)-$(1).tar.gz: dist-mingw-install-dir-$(1)
288+
@$(call E, build: $$@)
289+
$$(Q)$$(S)src/rust-installer/gen-installer.sh \
290+
--product-name=Rust-MinGW \
291+
--rel-manifest-dir=rustlib \
292+
--success-message=Rust-MinGW-is-installed. \
293+
--image-dir=tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image \
294+
--work-dir=tmp/dist \
295+
--output-dir=dist \
296+
--package-name=$$(MINGW_PKG_NAME)-$(1) \
297+
--component-name=rust-mingw \
298+
--legacy-manifest-dirs=rustlib,cargo
299+
$$(Q)rm -R tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image
300+
248301
endef
249302

250303
ifneq ($(CFG_ENABLE_DIST_HOST_ONLY),)
@@ -257,7 +310,16 @@ endif
257310

258311
dist-install-dirs: $(foreach host,$(CFG_HOST),dist-install-dir-$(host))
259312

260-
dist-tar-bins: $(foreach host,$(CFG_HOST),dist/$(PKG_NAME)-$(host).tar.gz)
313+
ifdef CFG_WINDOWSY_$(CFG_BUILD)
314+
MAYBE_MINGW_TARBALLS=$(foreach host,$(CFG_HOST),dist/$(MINGW_PKG_NAME)-$(host).tar.gz)
315+
endif
316+
317+
ifeq ($(CFG_DISABLE_DOCS),)
318+
MAYBE_DOC_TARBALLS=$(foreach host,$(CFG_HOST),dist/$(DOC_PKG_NAME)-$(host).tar.gz)
319+
endif
320+
321+
dist-tar-bins: $(foreach host,$(CFG_HOST),dist/$(PKG_NAME)-$(host).tar.gz) \
322+
$(MAYBE_DOC_TARBALLS) $(MAYBE_MINGW_TARBALLS)
261323

262324
# Just try to run the compiler for the build host
263325
distcheck-tar-bins: dist-tar-bins
@@ -289,27 +351,20 @@ distcheck-docs: dist-docs
289351
# Primary targets (dist, distcheck)
290352
######################################################################
291353

292-
ifdef CFG_WINDOWSY_$(CFG_BUILD)
293-
294-
dist: dist-win dist-tar-bins
295-
296-
distcheck: distcheck-win
297-
$(Q)rm -Rf tmp/distcheck
298-
@echo
299-
@echo -----------------------------------------------
300-
@echo "Rust ready for distribution (see ./dist)"
301-
@echo -----------------------------------------------
302-
303-
else
354+
MAYBE_DIST_TAR_SRC=dist-tar-src
355+
MAYBE_DISTCHECK_TAR_SRC=distcheck-tar-src
304356

305357
# FIXME #13224: On OS X don't produce tarballs simply because --exclude-vcs don't work.
306358
# This is a huge hack because I just don't have time to figure out another solution.
307359
ifeq ($(CFG_OSTYPE), apple-darwin)
308360
MAYBE_DIST_TAR_SRC=
309361
MAYBE_DISTCHECK_TAR_SRC=
310-
else
311-
MAYBE_DIST_TAR_SRC=dist-tar-src
312-
MAYBE_DISTCHECK_TAR_SRC=distcheck-tar-src
362+
endif
363+
364+
# Don't bother with source tarballs on windows just because we historically haven't.
365+
ifeq ($(CFG_OSTYPE), pc-windows-gnu)
366+
MAYBE_DIST_TAR_SRC=
367+
MAYBE_DISTCHECK_TAR_SRC=
313368
endif
314369

315370
ifneq ($(CFG_DISABLE_DOCS),)
@@ -320,15 +375,13 @@ MAYBE_DIST_DOCS=dist-docs
320375
MAYBE_DISTCHECK_DOCS=distcheck-docs
321376
endif
322377

323-
dist: $(MAYBE_DIST_TAR_SRC) dist-osx dist-tar-bins $(MAYBE_DIST_DOCS)
378+
dist: $(MAYBE_DIST_TAR_SRC) dist-osx dist-win dist-tar-bins $(MAYBE_DIST_DOCS)
324379

325-
distcheck: $(MAYBE_DISTCHECK_TAR_SRC) distcheck-osx distcheck-tar-bins $(MAYBE_DISTCHECK_DOCS)
380+
distcheck: $(MAYBE_DISTCHECK_TAR_SRC) distcheck-osx distcheck-win distcheck-tar-bins $(MAYBE_DISTCHECK_DOCS)
326381
$(Q)rm -Rf tmp/distcheck
327382
@echo
328383
@echo -----------------------------------------------
329384
@echo "Rust ready for distribution (see ./dist)"
330385
@echo -----------------------------------------------
331386

332-
endif
333-
334387
.PHONY: dist distcheck

mk/install.mk

+6
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ ifeq (root user, $(USER) $(patsubst %,user,$(SUDO_USER)))
2020
$(Q)sudo -u "$$SUDO_USER" $(MAKE) prepare_install
2121
else
2222
$(Q)$(MAKE) prepare_install
23+
endif
24+
ifeq ($(CFG_DISABLE_DOCS),)
25+
$(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)"
2326
endif
2427
$(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)"
2528
# Remove tmp files because it's a decent amount of disk space
@@ -33,6 +36,9 @@ ifeq (root user, $(USER) $(patsubst %,user,$(SUDO_USER)))
3336
$(Q)sudo -u "$$SUDO_USER" $(MAKE) prepare_uninstall
3437
else
3538
$(Q)$(MAKE) prepare_uninstall
39+
endif
40+
ifeq ($(CFG_DISABLE_DOCS),)
41+
$(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
3642
endif
3743
$(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
3844
# Remove tmp files because it's a decent amount of disk space

mk/tests.mk

+1
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,7 @@ tidy:
289289
| grep '^$(S)src/doc' -v \
290290
| grep '^$(S)src/compiler-rt' -v \
291291
| grep '^$(S)src/libbacktrace' -v \
292+
| grep '^$(S)src/rust-installer' -v \
292293
| xargs $(CFG_PYTHON) $(S)src/etc/check-binaries.py
293294

294295
endif

src/etc/make-win-dist.py

-6
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,5 @@ def make_win_dist(rust_root, gcc_root, target_triple):
114114
for src in target_libs:
115115
shutil.copy(src, target_lib_dir)
116116

117-
# Copy license files
118-
lic_dir = os.path.join(rust_root, "bin", "third-party")
119-
if os.path.exists(lic_dir):
120-
shutil.rmtree(lic_dir) # copytree() won't overwrite existing files
121-
shutil.copytree(os.path.join(os.path.dirname(__file__), "third-party"), lic_dir)
122-
123117
if __name__=="__main__":
124118
make_win_dist(sys.argv[1], sys.argv[2], sys.argv[3])

0 commit comments

Comments
 (0)