Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Oct 2018 18:17:27 +0200
From:      Jan Beich <jbeich@FreeBSD.org>
To:        Luca Pizzamiglio <pizzamig@freebsd.org>
Cc:        Mathieu Arnold <mat@freebsd.org>, svn-ports-head@freebsd.org, svn-ports-all@freebsd.org, ports-committers@freebsd.org
Subject:   Re: svn commit: r482294 - head/devel/sccache
Message-ID:  <woq7-s4iw-wny@FreeBSD.org>
In-Reply-To: <CAB88xy_2rP%2Bn5wtrxYiJqhxSng3MdaYaeB%2BnYTmx=45C=_GJOA@mail.gmail.com> (Luca Pizzamiglio's message of "Wed, 24 Oct 2018 15:45:39 %2B0200")
References:  <201810171315.w9HDFrgI039873@repo.freebsd.org> <20181024083541.4q726xezswwqe2xo@atuin.in.mat.cc> <CAB88xy_2rP%2Bn5wtrxYiJqhxSng3MdaYaeB%2BnYTmx=45C=_GJOA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Luca Pizzamiglio <pizzamig@freebsd.org> writes:

> Rust dependencies (crates) are statically linked in the final executable,
> so if a dependency crate fails to build, the whole application failed to
> build. Crates are not shared library, they are shared API statically linked
> to the final executable.

Crates aren't immutable, see below.

diff --git devel/sccache/Makefile devel/sccache/Makefile
index 7a2f12352ecb..17d610fdd656 100644
--- devel/sccache/Makefile
+++ devel/sccache/Makefile
@@ -2,7 +2,7 @@
 
 PORTNAME=	sccache
 DISTVERSION=	2.8.0.alpha0
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	devel
 
 MAINTAINER=	pizzamig@FreeBSD.org
@@ -39,7 +39,6 @@ CARGO_CRATES=	adler32-1.0.3 \
 		base64-0.9.2 \
 		bincode-0.8.0 \
 		bincode-1.0.1 \
-		bitflags-0.9.1 \
 		bitflags-1.0.4 \
 		buf_redux-0.6.3 \
 		bufstream-0.1.3 \
@@ -145,7 +144,6 @@ CARGO_CRATES=	adler32-1.0.3 \
 		num_cpus-1.8.0 \
 		number_prefix-0.2.8 \
 		openssl-0.10.11 \
-		openssl-0.9.24 \
 		openssl-sys-0.9.35 \
 		owning_ref-0.3.3 \
 		parking_lot-0.6.4 \
@@ -282,16 +280,11 @@ CARGO_CRATES=	adler32-1.0.3 \
 		xattr-0.2.2 \
 		zip-0.4.2
 
-.include <bsd.port.pre.mk>
-
-.if ${OPSYS} == FreeBSD && ${OSVERSION} > 1200084
-IGNORE=	openssl 1.1.1 is incompatible with the reqwest 0.8.8 dependencies
-.endif
-
 do-install-DOCS-on:
 	@${MKDIR} ${STAGEDIR}${DOCSDIR}
 	${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR}
 
 post-install:
 	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/sccache
-.include <bsd.port.post.mk>
+
+.include <bsd.port.mk>
diff --git devel/sccache/distinfo devel/sccache/distinfo
index 3168794b1eb1..9f1b09ac1b4f 100644
--- devel/sccache/distinfo
+++ devel/sccache/distinfo
@@ -29,8 +29,6 @@ SHA256 (rust/crates/bincode-0.8.0.tar.gz) = e103c8b299b28a9c6990458b7013dc4a8356
 SIZE (rust/crates/bincode-0.8.0.tar.gz) = 71632
 SHA256 (rust/crates/bincode-1.0.1.tar.gz) = 9f2fb9e29e72fd6bc12071533d5dc7664cb01480c59406f656d7ac25c7bd8ff7
 SIZE (rust/crates/bincode-1.0.1.tar.gz) = 14071
-SHA256 (rust/crates/bitflags-0.9.1.tar.gz) = 4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5
-SIZE (rust/crates/bitflags-0.9.1.tar.gz) = 12406
 SHA256 (rust/crates/bitflags-1.0.4.tar.gz) = 228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12
 SIZE (rust/crates/bitflags-1.0.4.tar.gz) = 15282
 SHA256 (rust/crates/buf_redux-0.6.3.tar.gz) = b9279646319ff816b05fb5897883ece50d7d854d12b59992683d4f8a71b0f949
@@ -241,8 +239,6 @@ SHA256 (rust/crates/number_prefix-0.2.8.tar.gz) = dbf9993e59c894e3c08aa1c2712914
 SIZE (rust/crates/number_prefix-0.2.8.tar.gz) = 5493
 SHA256 (rust/crates/openssl-0.10.11.tar.gz) = 6c24d3508b4fb6da175c10baac54c578b33f09c89ae90c6fe9788b3b4768efdc
 SIZE (rust/crates/openssl-0.10.11.tar.gz) = 164328
-SHA256 (rust/crates/openssl-0.9.24.tar.gz) = a3605c298474a3aa69de92d21139fb5e2a81688d308262359d85cdd0d12a7985
-SIZE (rust/crates/openssl-0.9.24.tar.gz) = 149235
 SHA256 (rust/crates/openssl-sys-0.9.35.tar.gz) = 912f301a749394e1025d9dcddef6106ddee9252620e6d0a0e5f8d0681de9b129
 SIZE (rust/crates/openssl-sys-0.9.35.tar.gz) = 44854
 SHA256 (rust/crates/owning_ref-0.3.3.tar.gz) = cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37
diff --git devel/sccache/files/patch-openssl-0.10 devel/sccache/files/patch-openssl-0.10
new file mode 100644
index 000000000000..dc4d413348ef
--- /dev/null
+++ devel/sccache/files/patch-openssl-0.10
@@ -0,0 +1,204 @@
+https://github.com/sfackler/rust-native-tls/commit/f1a7ea94752c
+
+--- Cargo.lock	2018-09-10 20:16:55 UTC
++++ Cargo.lock
+@@ -122,11 +122,6 @@ dependencies = [
+ 
+ [[package]]
+ name = "bitflags"
+-version = "0.9.1"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-
+-[[package]]
+-name = "bitflags"
+ version = "1.0.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ 
+@@ -943,7 +938,7 @@ source = "registry+https://github.com/rust-lang/crates
+ dependencies = [
+  "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
+  "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "openssl 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "openssl 0.10.11 (registry+https://github.com/rust-lang/crates.io-index)",
+  "schannel 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+  "security-framework 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
+  "security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
+@@ -1021,18 +1016,6 @@ dependencies = [
+ 
+ [[package]]
+ name = "openssl"
+-version = "0.9.24"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-dependencies = [
+- "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "openssl-sys 0.9.35 (registry+https://github.com/rust-lang/crates.io-index)",
+-]
+-
+-[[package]]
+-name = "openssl"
+ version = "0.10.11"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ dependencies = [
+@@ -2318,7 +2301,6 @@ dependencies = [
+ "checksum base64 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "85415d2594767338a74a30c1d370b2f3262ec1b4ed2d7bba5b3faf4de40467d9"
+ "checksum bincode 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e103c8b299b28a9c6990458b7013dc4a8356a9b854c51b9883241f5866fac36e"
+ "checksum bincode 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9f2fb9e29e72fd6bc12071533d5dc7664cb01480c59406f656d7ac25c7bd8ff7"
+-"checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"
+ "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12"
+ "checksum buf_redux 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b9279646319ff816b05fb5897883ece50d7d854d12b59992683d4f8a71b0f949"
+ "checksum bufstream 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f382711e76b9de6c744cc00d0497baba02fb00a787f088c879f01d09468e32"
+@@ -2424,7 +2406,6 @@ dependencies = [
+ "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30"
+ "checksum number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dbf9993e59c894e3c08aa1c2712914e9e6bf1fcbfc6bef283e2183df345a4fee"
+ "checksum openssl 0.10.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6c24d3508b4fb6da175c10baac54c578b33f09c89ae90c6fe9788b3b4768efdc"
+-"checksum openssl 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)" = "a3605c298474a3aa69de92d21139fb5e2a81688d308262359d85cdd0d12a7985"
+ "checksum openssl-sys 0.9.35 (registry+https://github.com/rust-lang/crates.io-index)" = "912f301a749394e1025d9dcddef6106ddee9252620e6d0a0e5f8d0681de9b129"
+ "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37"
+ "checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5"
+--- cargo-crates/native-tls-0.1.5/Cargo.toml.orig	2018-01-11 17:27:31 UTC
++++ cargo-crates/native-tls-0.1.5/Cargo.toml
+@@ -34,6 +34,6 @@ version = "0.1.15"
+ [target."cfg(any(target_os = \"macos\", target_os = \"ios\"))".dependencies.tempdir]
+ version = "0.3"
+ [target."cfg(not(any(target_os = \"windows\", target_os = \"macos\", target_os = \"ios\")))".dependencies.openssl]
+-version = "0.9.23"
++version = "0.10.1"
+ [target."cfg(target_os = \"windows\")".dependencies.schannel]
+ version = "0.1.7"
+--- cargo-crates/native-tls-0.1.5/src/imp/openssl.rs.orig	2018-01-11 17:27:24 UTC
++++ cargo-crates/native-tls-0.1.5/src/imp/openssl.rs
+@@ -6,25 +6,25 @@ use std::error;
+ use self::openssl::pkcs12;
+ use self::openssl::error::ErrorStack;
+ use self::openssl::ssl::{self, SslMethod, SslConnectorBuilder, SslConnector, SslAcceptorBuilder,
+-                         SslAcceptor, MidHandshakeSslStream, SslContextBuilder};
++                         SslAcceptor, MidHandshakeSslStream, SslContextBuilder, SslOptions};
+ use self::openssl::x509::X509;
+ 
+ use Protocol;
+ 
+ fn supported_protocols(protocols: &[Protocol], ctx: &mut SslContextBuilder) {
+     // This constant is only defined on OpenSSL 1.0.2 and above, so manually do it.
+-    let ssl_op_no_ssl_mask = ssl::SSL_OP_NO_SSLV2 | ssl::SSL_OP_NO_SSLV3 | ssl::SSL_OP_NO_TLSV1 |
+-        ssl::SSL_OP_NO_TLSV1_1 |
+-        ssl::SSL_OP_NO_TLSV1_2;
++    let ssl_op_no_ssl_mask = SslOptions::NO_SSLV2 | SslOptions::NO_SSLV3 | SslOptions::NO_TLSV1 |
++        SslOptions::NO_TLSV1_1 |
++        SslOptions::NO_TLSV1_2;
+ 
+     ctx.clear_options(ssl_op_no_ssl_mask);
+     let mut options = ssl_op_no_ssl_mask;
+     for protocol in protocols {
+         let op = match *protocol {
+-            Protocol::Sslv3 => ssl::SSL_OP_NO_SSLV3,
+-            Protocol::Tlsv10 => ssl::SSL_OP_NO_TLSV1,
+-            Protocol::Tlsv11 => ssl::SSL_OP_NO_TLSV1_1,
+-            Protocol::Tlsv12 => ssl::SSL_OP_NO_TLSV1_2,
++            Protocol::Sslv3 => SslOptions::NO_SSLV3,
++            Protocol::Tlsv10 => SslOptions::NO_TLSV1,
++            Protocol::Tlsv11 => SslOptions::NO_TLSV1_1,
++            Protocol::Tlsv12 => SslOptions::NO_TLSV1_2,
+             Protocol::__NonExhaustive => unreachable!(),
+         };
+         options &= !op;
+@@ -64,7 +64,7 @@ impl From<ssl::Error> for Error {
+ 
+ impl From<ErrorStack> for Error {
+     fn from(err: ErrorStack) -> Error {
+-        ssl::Error::Ssl(err).into()
++        err.into()
+     }
+ }
+ 
+@@ -132,11 +132,9 @@ pub enum HandshakeError<S> {
+ impl<S> From<ssl::HandshakeError<S>> for HandshakeError<S> {
+     fn from(e: ssl::HandshakeError<S>) -> HandshakeError<S> {
+         match e {
+-            ssl::HandshakeError::SetupFailure(e) => {
+-                HandshakeError::Failure(Error(ssl::Error::Ssl(e)))
+-            }
++            ssl::HandshakeError::SetupFailure(e) => HandshakeError::Failure(e.into()),
+             ssl::HandshakeError::Failure(e) => HandshakeError::Failure(Error(e.into_error())),
+-            ssl::HandshakeError::Interrupted(s) => {
++            ssl::HandshakeError::WouldBlock(s) => {
+                 HandshakeError::Interrupted(MidHandshakeTlsStream(s))
+             }
+         }
+@@ -157,8 +155,10 @@ impl TlsConnectorBuilder {
+         try!(self.0.set_certificate(&pkcs12.0.cert));
+         try!(self.0.set_private_key(&pkcs12.0.pkey));
+         try!(self.0.check_private_key());
+-        for cert in pkcs12.0.chain {
+-            try!(self.0.add_extra_chain_cert(cert));
++        if let Some(chain) = pkcs12.0.chain {
++            for cert in chain {
++                try!(self.0.add_extra_chain_cert(cert));
++            }
+         }
+         Ok(())
+     }
+@@ -183,7 +183,7 @@ pub struct TlsConnector(SslConnector);
+ 
+ impl TlsConnector {
+     pub fn builder() -> Result<TlsConnectorBuilder, Error> {
+-        let builder = try!(SslConnectorBuilder::new(SslMethod::tls()));
++        let builder = try!(SslConnector::builder(SslMethod::tls()));
+         Ok(TlsConnectorBuilder(builder))
+     }
+ 
+@@ -199,7 +199,12 @@ impl TlsConnector {
+     where
+         S: io::Read + io::Write,
+     {
+-        let s = try!(self.0.danger_connect_without_providing_domain_for_certificate_verification_and_server_name_indication(stream));
++        let c = try!(self.0.configure());
++        let s = try!(
++            c.use_server_name_indication(false)
++                .verify_hostname(false)
++                .connect("", stream)
++        );
+         Ok(TlsStream(s))
+     }
+ }
+@@ -248,12 +253,14 @@ pub struct TlsAcceptor(SslAcceptor);
+ 
+ impl TlsAcceptor {
+     pub fn builder(pkcs12: Pkcs12) -> Result<TlsAcceptorBuilder, Error> {
+-        let builder = try!(SslAcceptorBuilder::mozilla_intermediate(
+-            SslMethod::tls(),
+-            &pkcs12.0.pkey,
+-            &pkcs12.0.cert,
+-            &pkcs12.0.chain,
+-        ));
++        let mut builder = try!(SslAcceptor::mozilla_intermediate(SslMethod::tls()));
++        try!(builder.set_private_key(&pkcs12.0.pkey));
++        try!(builder.set_certificate(&pkcs12.0.cert));
++        if let Some(chain) = pkcs12.0.chain {
++            for cert in chain {
++                try!(builder.add_extra_chain_cert(cert));
++            }
++        }
+         Ok(TlsAcceptorBuilder(builder))
+     }
+ 
+@@ -307,12 +314,11 @@ impl<S: io::Read + io::Write> TlsStream<S> {
+ 
+     pub fn shutdown(&mut self) -> io::Result<()> {
+         match self.0.shutdown() {
+-            Ok(_) |
+-            Err(ssl::Error::ZeroReturn) => Ok(()),
+-            Err(ssl::Error::Stream(e)) |
+-            Err(ssl::Error::WantRead(e)) |
+-            Err(ssl::Error::WantWrite(e)) => Err(e),
+-            Err(e) => return Err(io::Error::new(io::ErrorKind::Other, e)),
++            Ok(_) => Ok(()),
++            Err(ref e) if e.code() == ssl::ErrorCode::ZERO_RETURN => Ok(()),
++            Err(e) => Err(e.into_io_error().unwrap_or_else(
++                |e| io::Error::new(io::ErrorKind::Other, e),
++            )),
+         }
+     }
+ 



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