diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000000..b40d613a41a --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "src/rust-installer"] + path = src/rust-installer + url = https://github.com/rust-lang/rust-installer.git diff --git a/Makefile.in b/Makefile.in index c8242541b52..8ba2b4a6fd4 100644 --- a/Makefile.in +++ b/Makefile.in @@ -53,6 +53,7 @@ else TARGET_$(1) = $$(TARGET_ROOT)/$(1) endif DISTDIR_$(1) = $$(TARGET_$(1))/dist +IMGDIR_$(1) = $$(DISTDIR_$(1))/$$(PKG_NAME)-$(1)-image PKGDIR_$(1) = $$(DISTDIR_$(1))/$$(PKG_NAME)-$(1) BIN_TARGETS_$(1) := $$(BIN_TARGETS:%=$$(TARGET_$(1))/%$$(X)) endef @@ -128,6 +129,8 @@ $(DOC_DIR)/%: src/doc/% # === Distribution +NON_INSTALLED_PREFIXES := README.md,LICENSE-MIT,LICENSE-APACHE,LICENSE-THIRD-PARTY + define DO_DIST_TARGET dist-$(1): $$(DISTDIR_$(1))/$$(PKG_NAME)-$(1).tar.gz @@ -147,34 +150,38 @@ distcheck-$(1): dist-$(1) --prefix=$$(TARGET_$(1))/distcheck/install --uninstall [ -f $$(TARGET_$(1))/distcheck/install/bin/cargo$(X) ] && exit 1 || exit 0 -$$(DISTDIR_$(1))/$$(PKG_NAME)-$(1).tar.gz: prepare-manifest-$(1) - tar -czvf $$@ -C $$(@D) $$(PKG_NAME)-$(1) - -prepare-manifest-$(1): +prepare-image-$(1): @[ -f $$(TARGET_$(1))/cargo$$(X) ] || echo 'Please run `make` first' @[ -f $$(TARGET_$(1))/cargo$$(X) ] - rm -rf $$(PKGDIR_$(1)) - mkdir -p $$(PKGDIR_$(1))/bin $$(PKGDIR_$(1))/lib/cargo \ - $$(PKGDIR_$(1))/share/man/man1 \ - $$(PKGDIR_$(1))/share/doc/cargo \ - $$(PKGDIR_$(1))/share/zsh/site-functions \ - $$(PKGDIR_$(1))/etc/bash_completion.d - cp $$(TARGET_$(1))/cargo$$(X) $$(PKGDIR_$(1))/bin - cp src/etc/cargo.1 $$(PKGDIR_$(1))/share/man/man1 - cp src/etc/_cargo $$(PKGDIR_$(1))/share/zsh/site-functions/_cargo - cp src/etc/cargo.bashcomp.sh $$(PKGDIR_$(1))/etc/bash_completion.d/cargo - #cp $$(BIN_TARGETS_$(1)) $$(PKGDIR_$(1))/lib/cargo + rm -rf $$(IMGDIR_$(1)) + mkdir -p $$(IMGDIR_$(1))/bin $$(IMGDIR_$(1))/lib/cargo \ + $$(IMGDIR_$(1))/share/man/man1 \ + $$(IMGDIR_$(1))/share/doc/cargo \ + $$(IMGDIR_$(1))/share/zsh/site-functions \ + $$(IMGDIR_$(1))/etc/bash_completion.d + cp $$(TARGET_$(1))/cargo$$(X) $$(IMGDIR_$(1))/bin + cp src/etc/cargo.1 $$(IMGDIR_$(1))/share/man/man1 + cp src/etc/_cargo $$(IMGDIR_$(1))/share/zsh/site-functions/_cargo + cp src/etc/cargo.bashcomp.sh $$(IMGDIR_$(1))/etc/bash_completion.d/cargo cp README.md LICENSE-MIT LICENSE-APACHE LICENSE-THIRD-PARTY \ - $$(PKGDIR_$(1))/share/doc/cargo - (cd $$(PKGDIR_$(1)) && find . -type f | sed 's/^\.\///') \ - > $$(DISTDIR_$(1))/manifest-$$(PKG_NAME).in - cp src/etc/install.sh $$(PKGDIR_$(1)) + $$(IMGDIR_$(1))/share/doc/cargo cp README.md LICENSE-MIT LICENSE-APACHE LICENSE-THIRD-PARTY \ - $$(PKGDIR_$(1)) - mv $$(DISTDIR_$(1))/manifest-$$(PKG_NAME).in \ - $$(PKGDIR_$(1))/lib/cargo/manifest.in - -install-$(1): prepare-manifest-$(1) + $$(IMGDIR_$(1)) + +$$(DISTDIR_$(1))/$$(PKG_NAME)-$(1).tar.gz: prepare-image-$(1) + sh src/rust-installer/gen-installer.sh \ + --product-name=Cargo \ + --verify-bin=cargo \ + --rel-manifest-dir=cargo \ + --success-message=Cargo-is-ready-to-roll. \ + --image-dir=$$(IMGDIR_$(1)) \ + --work-dir=./$$(DISTDIR_$(1)) \ + --output-dir=./$$(DISTDIR_$(1)) \ + --non-installed-prefixes=$$(NON_INSTALLED_PREFIXES) \ + --package-name=$$(PKG_NAME)-$(1) + rm -Rf $$(IMGDIR_$(1)) + +install-$(1): $$(DISTDIR_$(1))/$$(PKG_NAME)-$(1).tar.gz $$(PKGDIR_$(1))/install.sh \ --prefix="$$(CFG_PREFIX)" \ --destdir="$$(DESTDIR)" $$(MAYBE_DISABLE_VERIFY) diff --git a/README.md b/README.md index 45151e0c3fd..1e328f726ab 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ Cargo can then be compiled like many other standard unix-like projects: ```sh git clone https://github.com/rust-lang/cargo cd cargo +git submodule init ./.travis.install.deps.sh ./configure --local-rust-root=`pwd`/rustc make diff --git a/src/rust-installer b/src/rust-installer new file mode 160000 index 00000000000..26ee1572c38 --- /dev/null +++ b/src/rust-installer @@ -0,0 +1 @@ +Subproject commit 26ee1572c38f4b263903c61e959083029d028348