Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Jul 2015 20:49:38 +0000 (UTC)
From:      Jean-Sebastien Pedron <dumbbell@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r392600 - in head/devel: . cargo cargo/files
Message-ID:  <201507202049.t6KKncJi050156@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dumbbell (src committer)
Date: Mon Jul 20 20:49:38 2015
New Revision: 392600
URL: https://svnweb.freebsd.org/changeset/ports/392600

Log:
  devel/cargo: New port Rust's Package Manager
  
  Reviewed by:	jonathan, kwm
  Approved by:	jonathan, kwm
  Differential Revision:	https://reviews.freebsd.org/D2799

Added:
  head/devel/cargo/
  head/devel/cargo/Makefile   (contents, props changed)
  head/devel/cargo/distinfo   (contents, props changed)
  head/devel/cargo/files/
  head/devel/cargo/files/patch-configure   (contents, props changed)
  head/devel/cargo/pkg-descr   (contents, props changed)
  head/devel/cargo/pkg-plist   (contents, props changed)
Modified:
  head/devel/Makefile

Modified: head/devel/Makefile
==============================================================================
--- head/devel/Makefile	Mon Jul 20 20:26:40 2015	(r392599)
+++ head/devel/Makefile	Mon Jul 20 20:49:38 2015	(r392600)
@@ -192,6 +192,7 @@
     SUBDIR += caf
     SUBDIR += calibrator
     SUBDIR += capstone
+    SUBDIR += cargo
     SUBDIR += cask
     SUBDIR += catch
     SUBDIR += cbind

Added: head/devel/cargo/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/cargo/Makefile	Mon Jul 20 20:49:38 2015	(r392600)
@@ -0,0 +1,156 @@
+# Created by: Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME=	cargo
+PORTVERSION=	0.4.0.20150720
+CATEGORIES=	devel
+
+MAINTAINER=	dumbbell@FreeBSD.org
+COMMENT=	Rust's Package Manager
+# ' <-- Help Vim syntax hilighting...
+
+LICENSE=	APACHE20 \
+		MIT
+LICENSE_COMB=	dual
+LICENSE_FILE=	${WRKSRC}/LICENSE-APACHE \
+		${WRKSRC}/LICENSE-MIT
+
+# The following files are required:
+#
+# Main source archive from GitHub
+#   This is the source of Cargo, taken from GitHub.
+#
+# :bootstrap
+#   Like Rust, this is a prebuilt "cargo" used to bootstrap it, because
+#   Cargo is a standard Rust package itself.
+#
+# :registry
+#   Cargo clones several Git repositories for its dependencies and
+#   caches them in its "registry". This is an archive of this registry
+#   so nothing is downloaded during the build.
+#
+# :rust_installer
+#   This is a collection of mainly shell scripts which are used to
+#   install Cargo.
+
+MASTER_SITES=	https://static.rust-lang.org/cargo-dist/2015-04-02/:bootstrap \
+		LOCAL/dumbbell:registry
+
+DISTFILES=	${CARGO_BOOT}:bootstrap
+EXTRACT_ONLY=	${DISTNAME}${_GITHUB_EXTRACT_SUFX} \
+		${DISTFILE_rust_installer}
+
+.if (${.TARGET} != gen-registry) && !defined(SKIP_CARGO_REGISTRY)
+DISTFILES+=	${CARGO_REGISTRY}:registry
+EXTRACT_ONLY+=	${CARGO_REGISTRY}
+.endif
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	rust-lang
+GH_PROJECT=	${PORTNAME} \
+		rust-installer:rust_installer
+GH_TAGNAME=	9c5ffcb871 \
+		c37d374:rust_installer
+
+CARGO_BOOT_SIG=	x86_64-unknown-freebsd
+CARGO_BOOT=	${PORTNAME}-nightly-${CARGO_BOOT_SIG}${EXTRACT_SUFX}
+CARGO_REGISTRY=	${DISTNAME:S/${GH_ACCOUNT}-${PORTNAME}/${PORTNAME}-registry/}${EXTRACT_SUFX}
+
+USES=		gmake python:2,build pkgconfig
+
+# The bootstrapped cargo is built with OpenSSL from ports (libssl.so.8).
+USE_OPENSSL=	yes
+WITH_OPENSSL_PORT=yes
+
+# We don't USES=cmake here, because cmake is not Cargo's build system.
+# It's used by a bundled dependency (libgit2).
+BUILD_DEPENDS=	${LOCALBASE}/bin/cmake:${PORTSDIR}/devel/cmake \
+		rustc:${PORTSDIR}/lang/rust-nightly
+LIB_DEPENDS=	libssh2.so:${PORTSDIR}/security/libssh2 \
+		libcurl.so:${PORTSDIR}/ftp/curl
+
+# FIXME: Don't add rust as a runtime dependency. As we need rust-nightly
+# to build Cargo, the same version would be pulled by installing Cargo,
+# preventing its use with the stable version of Rust.
+# RUN_DEPENDS=	rustc:${PORTSDIR}/lang/rust
+
+HAS_CONFIGURE=	yes
+CONFIGURE_ARGS=	--mandir=${MANPREFIX}/man
+MAKE_ENV+=	LD_LIBRARY_PATH="${WRKSRC}/target/snapshot/cargo/lib"
+
+# git log -1 --date=short --pretty=format:'%cd'
+CFG_VER_DATE=	${PORTVERSION:C/.*\.([0-9]{4})([0-9]{2})([0-9]{2})/\1-\2-\3/}
+# git rev-parse --short HEAD
+CFG_VER_HASH=	${GH_TAGNAME}
+
+.if defined(BATCH) || defined(PACKAGE_BUILDING)
+MAKE_ARGS+=	VERBOSE=1
+.endif
+
+MAKE_JOBS_UNSAFE=	yes
+
+.include <bsd.port.pre.mk>
+
+post-extract:
+	@(${RMDIR} ${WRKSRC}/src/rust-installer && \
+	  ${MV} ${WRKSRC_rust_installer} ${WRKSRC}/src/rust-installer)
+	@${MKDIR} ${WRKSRC}/target/dl
+	${LN} -sf ${DISTDIR}/${CARGO_BOOT} ${WRKSRC}/target/dl/
+
+post-patch:
+	${REINPLACE_CMD} \
+		-e 's|^CFG_VER_DATE =.*|CFG_VER_DATE = ${CFG_VER_DATE}|' \
+		-e 's|^CFG_VER_HASH =.*|CFG_VER_HASH = ${CFG_VER_HASH}|' \
+		${WRKSRC}/Makefile.in
+
+# In case the previous "make stage" failed, this ensures rust's
+# install.sh won't backup previously staged files before reinstalling
+# new ones. Otheriwe, the staging directory is polluted with unneeded
+# files.
+pre-install:
+	@if test -f ${STAGEDIR}${PREFIX}/lib/rustlib/manifest-cargo; then \
+		${SED} -E -e 's,^(dir|file:),${STAGEDIR},' \
+		< ${STAGEDIR}${PREFIX}/lib/rustlib/manifest-cargo \
+		| ${XARGS} ${RM}; \
+	fi
+	@${RM} \
+		${STAGEDIR}${PREFIX}/lib/rustlib/components \
+		${STAGEDIR}${PREFIX}/lib/rustlib/manifest-cargo \
+		${STAGEDIR}${PREFIX}/lib/rustlib/rust-installer-version \
+		${STAGEDIR}${PREFIX}/lib/rustlib/uninstall.sh
+
+post-install:
+	@${RM} ${STAGEDIR}${PREFIX}/lib/rustlib/install.log
+	@${MV} ${STAGEDIR}${PREFIX}/share/man/man1/cargo.1 \
+		${STAGEDIR}${PREFIX}/man/man1/cargo.1
+	@${RMDIR} ${STAGEDIR}${PREFIX}/share/man/man1 \
+		${STAGEDIR}${PREFIX}/share/man
+	@${REINPLACE_CMD} -e 's|${STAGEDIR}||' \
+		-e 's|share/man/man1/cargo\.1|man/man1/cargo.1.gz|' \
+		${STAGEDIR}${PREFIX}/lib/rustlib/manifest-cargo
+	@${RM} ${STAGEDIR}${PREFIX}/lib/rustlib/manifest-cargo.bak
+	@${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/cargo
+	@${RM} \
+		${STAGEDIR}${PREFIX}/lib/rustlib/components \
+		${STAGEDIR}${PREFIX}/lib/rustlib/rust-installer-version \
+		${STAGEDIR}${PREFIX}/lib/rustlib/uninstall.sh
+
+# "make gen-registry" is a special target to ease this port update.
+#
+# After changing the version number and the Git revision, you can run
+# "make registry" to update the distinfo and create a new snapshot of
+# the registry. The new registry is written to ${DISTDIR} and can be
+# uploaded.
+
+gen-registry:
+	${MAKE} -DSKIP_CARGO_REGISTRY makesum
+	${MAKE} -DSKIP_CARGO_REGISTRY
+	cd ${WRKDIR} && \
+		${TAR} cvf - \
+		--exclude libgit2/tests/ \
+		--exclude curl/tests/ \
+		--exclude 'index/github.com-*/.git/' \
+		.cargo | ${GZIP_CMD} > ${DISTDIR}/${CARGO_REGISTRY}
+	${MAKE} makesum
+
+.include <bsd.port.post.mk>

Added: head/devel/cargo/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/cargo/distinfo	Mon Jul 20 20:49:38 2015	(r392600)
@@ -0,0 +1,8 @@
+SHA256 (cargo-nightly-x86_64-unknown-freebsd.tar.gz) = de678e858de5d2923cc206b7aa1cc84ddc67be00748160f66fc9b7325409e7c7
+SIZE (cargo-nightly-x86_64-unknown-freebsd.tar.gz) = 7663548
+SHA256 (cargo-registry-0.4.0.20150720-9c5ffcb871_GH0.tar.gz) = 7d8b5d53e0d3f28e0f8d0078586a8d94c834d9f6c35e00b56abe00bd54ee9944
+SIZE (cargo-registry-0.4.0.20150720-9c5ffcb871_GH0.tar.gz) = 16391914
+SHA256 (rust-lang-cargo-0.4.0.20150720-9c5ffcb871_GH0.tar.gz) = af6a6b609b3d6bf52f55fdcc2f8e299016e9b805748e824ec6b92d4f8ed92c07
+SIZE (rust-lang-cargo-0.4.0.20150720-9c5ffcb871_GH0.tar.gz) = 351554
+SHA256 (rust-lang-rust-installer-c37d374_GH0.tar.gz) = 7cc41029b14de023dd4f250b332470c98cf9d1a77d174a20e93d78d07e4255f1
+SIZE (rust-lang-rust-installer-c37d374_GH0.tar.gz) = 19267

Added: head/devel/cargo/files/patch-configure
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/cargo/files/patch-configure	Mon Jul 20 20:49:38 2015	(r392600)
@@ -0,0 +1,12 @@
+--- configure.orig	2015-05-02 23:16:20 UTC
++++ configure
+@@ -341,8 +341,7 @@ validate_opt
+ 
+ step_msg "looking for build programs"
+ 
+-probe_need CFG_CURLORWGET  curl wget
+-probe_need CFG_PYTHON      python
++probe_need CFG_PYTHON      python2.7 python2 python
+ probe_need CFG_CC          cc gcc clang
+ 
+ if [ ! -z "${CFG_LOCAL_RUST_ROOT}" ]; then

Added: head/devel/cargo/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/cargo/pkg-descr	Mon Jul 20 20:49:38 2015	(r392600)
@@ -0,0 +1,4 @@
+Cargo is Cargo, Rust's Package Manager. Cargo downloads your Rust
+project’s dependencies and compiles your project.
+
+WWW: http://doc.crates.io/

Added: head/devel/cargo/pkg-plist
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/cargo/pkg-plist	Mon Jul 20 20:49:38 2015	(r392600)
@@ -0,0 +1,9 @@
+bin/cargo
+etc/bash_completion.d/cargo
+lib/rustlib/manifest-cargo
+man/man1/cargo.1.gz
+%%PORTDOCS%%%%DOCSDIR%%/LICENSE-APACHE
+%%PORTDOCS%%%%DOCSDIR%%/LICENSE-MIT
+%%PORTDOCS%%%%DOCSDIR%%/LICENSE-THIRD-PARTY
+%%PORTDOCS%%%%DOCSDIR%%/README.md
+share/zsh/site-functions/_cargo



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201507202049.t6KKncJi050156>