svn commit: r441843 - in head/lang/rust: . files

Konstantin Belousov kib at FreeBSD.org
Sat May 27 12:06:42 UTC 2017


Author: kib (src committer)
Date: Sat May 27 12:06:40 2017
New Revision: 441843
URL: https://svnweb.freebsd.org/changeset/ports/441843

Log:
  Fix lang/rust after ino64 src commit.
  
  Approved by:  bapt, dumbbell
  Sponsored by:	The FreeBSD Foundation
  Differential revision:	https://reviews.freebsd.org/D10799

Added:
  head/lang/rust/files/extra-patch-ino64   (contents, props changed)
  head/lang/rust/files/old_fstat.c   (contents, props changed)
Modified:
  head/lang/rust/Makefile

Modified: head/lang/rust/Makefile
==============================================================================
--- head/lang/rust/Makefile	Sat May 27 11:37:35 2017	(r441842)
+++ head/lang/rust/Makefile	Sat May 27 12:06:40 2017	(r441843)
@@ -105,6 +105,11 @@ DOCS_VARS=		rust_manifests+=${RUST_DOCS_
 PLIST_FILES=		lib/rustlib/components \
 			lib/rustlib/rust-installer-version
 
+.include <bsd.port.pre.mk>
+.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1200031
+EXTRA_PATCHES+=        ${PATCHDIR}/extra-patch-ino64
+.endif
+
 pre-fetch:
 	# FIXME: This is the same check for CONFLICTS as the standard
 	# one, except port origins are not compared. This allows
@@ -129,16 +134,27 @@ pre-fetch:
 		exit 1;\
 	fi
 
+LIBSTD=	rust-std-1.16.0-x86_64-unknown-freebsd/rust-std-x86_64-unknown-freebsd/lib/rustlib/x86_64-unknown-freebsd/lib/libstd-aef6cb139bd07bdc.rlib
+STDF=	std-aef6cb139bd07bdc.0.o
+
 post-extract:
 	@${MKDIR} \
 		${WRKSRC}/build/cache/${RUST_BOOTSTRAP_DIR} \
 		${WRKSRC}/build/cache/${CARGO_BOOTSTRAP_DIR}
 	${LN} -sf ${DISTDIR}/${DIST_SUBDIR}/${RUSTC_BOOTSTRAP} \
 		${WRKSRC}/build/cache/${RUST_BOOTSTRAP_DIR}
-	${LN} -sf ${DISTDIR}/${DIST_SUBDIR}/${RUST_STD_BOOTSTRAP} \
-		${WRKSRC}/build/cache/${RUST_BOOTSTRAP_DIR}
 	${LN} -sf ${DISTDIR}/${DIST_SUBDIR}/${CARGO_BOOTSTRAP} \
 		${WRKSRC}/build/cache/${CARGO_BOOTSTRAP_DIR}
+	${TAR} -x -C ${WRKSRC} -f ${DISTDIR}/${DIST_SUBDIR}/${RUST_STD_BOOTSTRAP}
+.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1200031
+	${CC} ${CFLAGS} -fPIC -c -o ${WRKSRC}/old_fstat.o ${FILESDIR}/old_fstat.c
+	(cd ${WRKSRC} && ${AR} x ${WRKSRC}/${LIBSTD} ${STDF})
+	${LD} -r -o ${WRKSRC}/std.xx.o ${WRKSRC}/${STDF} ${WRKSRC}/old_fstat.o
+	${MV} ${WRKSRC}/std.xx.o ${WRKSRC}/${STDF}
+	(cd ${WRKSRC} && ${AR} r ${WRKSRC}/${LIBSTD} ${STDF})
+	${TAR} -cy -C ${WRKSRC} -f ${WRKSRC}/rustc.tbz rust-std-1.16.0-x86_64-unknown-freebsd
+	${MV} ${WRKSRC}/rustc.tbz ${WRKSRC}/build/cache/${RUST_STD_BOOTSTRAP}
+.endif
 
 post-patch:
 	@test ! -f ${WRKSRC}/mk/main.mk || \
@@ -204,7 +220,7 @@ post-install:
 		${STAGEDIR}${PREFIX}/lib/*.so \
 		${STAGEDIR}${PREFIX}/lib/rustlib/*/lib/*.so
 
-.include <bsd.port.mk>
+.include <bsd.port.post.mk>
 
 # "make gen-registry" is a special target to ease this port update.
 #

Added: head/lang/rust/files/extra-patch-ino64
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/rust/files/extra-patch-ino64	Sat May 27 12:06:40 2017	(r441843)
@@ -0,0 +1,313 @@
+--- ./src/liblibc/src/unix/bsd/freebsdlike/freebsd/mod.rs.orig	2017-04-24 18:56:45.000000000 +0000
++++ ./src/liblibc/src/unix/bsd/freebsdlike/freebsd/mod.rs	2017-05-25 16:28:37.280076000 +0000
+@@ -1,8 +1,8 @@
+ pub type fflags_t = u32;
+ pub type clock_t = i32;
+-pub type ino_t = u32;
++pub type ino_t = u64;
+ pub type lwpid_t = i32;
+-pub type nlink_t = u16;
++pub type nlink_t = u64;
+ pub type blksize_t = u32;
+ pub type clockid_t = ::c_int;
+ pub type sem_t = _sem;
+@@ -40,10 +40,13 @@
+     }
+ 
+     pub struct dirent {
+-        pub d_fileno: u32,
++        pub d_fileno: u64,
++        pub d_off: u64,
+         pub d_reclen: u16,
+         pub d_type: u8,
+-        pub d_namlen: u8,
++        pub d_pad0: u8,
++        pub d_namlen: u16,
++        pub d_pad1: u16,
+         pub d_name: [::c_char; 256],
+     }
+ 
+--- ./src/liblibc/src/unix/bsd/freebsdlike/freebsd/x86.rs.orig	2017-04-24 18:56:45.000000000 +0000
++++ ./src/liblibc/src/unix/bsd/freebsdlike/freebsd/x86.rs	2017-05-25 16:25:42.303616000 +0000
+@@ -7,25 +7,30 @@
+     pub struct stat {
+         pub st_dev: ::dev_t,
+         pub st_ino: ::ino_t,
+-        pub st_mode: ::mode_t,
+         pub st_nlink: ::nlink_t,
++        pub st_mode: ::mode_t,
++        pub st_pad0: ::uint16_t,
+         pub st_uid: ::uid_t,
+         pub st_gid: ::gid_t,
++        pub st_pad1: ::uint32_t,
+         pub st_rdev: ::dev_t,
++        pub st_atime_ext ::i32,
+         pub st_atime: ::time_t,
+         pub st_atime_nsec: ::c_long,
++        pub st_mtime_ext ::i32,
+         pub st_mtime: ::time_t,
+         pub st_mtime_nsec: ::c_long,
++        pub st_ctime_ext ::i32,
+         pub st_ctime: ::time_t,
+         pub st_ctime_nsec: ::c_long,
++        pub st_birthtime_ext ::i32,
++        pub st_birthtime: ::time_t,
++        pub st_birthtime_nsec: ::c_long,
+         pub st_size: ::off_t,
+         pub st_blocks: ::blkcnt_t,
+         pub st_blksize: ::blksize_t,
+         pub st_flags: ::fflags_t,
+-        pub st_gen: ::uint32_t,
+-        pub st_lspare: ::int32_t,
+-        pub st_birthtime: ::time_t,
+-        pub st_birthtime_nsec: ::c_long,
+-        __unused: [u8; 8],
++        pub st_gen: ::uint64_t,
++        pub st_lspare: [::uint64_t; 10],
+     }
+ }
+--- ./src/liblibc/src/unix/bsd/freebsdlike/freebsd/x86_64.rs.orig	2017-04-24 18:56:45.000000000 +0000
++++ ./src/liblibc/src/unix/bsd/freebsdlike/freebsd/x86_64.rs	2017-05-25 16:25:42.303910000 +0000
+@@ -7,10 +7,12 @@
+     pub struct stat {
+         pub st_dev: ::dev_t,
+         pub st_ino: ::ino_t,
+-        pub st_mode: ::mode_t,
+         pub st_nlink: ::nlink_t,
++        pub st_mode: ::mode_t,
++        pub st_pad0: ::uint16_t,
+         pub st_uid: ::uid_t,
+         pub st_gid: ::gid_t,
++        pub st_pad1: ::uint32_t,
+         pub st_rdev: ::dev_t,
+         pub st_atime: ::time_t,
+         pub st_atime_nsec: ::c_long,
+@@ -18,13 +20,13 @@
+         pub st_mtime_nsec: ::c_long,
+         pub st_ctime: ::time_t,
+         pub st_ctime_nsec: ::c_long,
++        pub st_birthtime: ::time_t,
++        pub st_birthtime_nsec: ::c_long,
+         pub st_size: ::off_t,
+         pub st_blocks: ::blkcnt_t,
+         pub st_blksize: ::blksize_t,
+         pub st_flags: ::fflags_t,
+-        pub st_gen: ::uint32_t,
+-        pub st_lspare: ::int32_t,
+-        pub st_birthtime: ::time_t,
+-        pub st_birthtime_nsec: ::c_long,
++        pub st_gen: ::uint64_t,
++        pub st_spare: [::int64_t; 10],
+     }
+ }
+--- ./src/liblibc/src/unix/bsd/freebsdlike/mod.rs.orig	2017-04-24 18:56:45.000000000 +0000
++++ ./src/liblibc/src/unix/bsd/freebsdlike/mod.rs	2017-05-25 16:25:42.304391000 +0000
+@@ -1,4 +1,4 @@
+-pub type dev_t = u32;
++pub type dev_t = u64;
+ pub type mode_t = u16;
+ pub type pthread_attr_t = *mut ::c_void;
+ pub type rlim_t = i64;
+--- ./src/libstd/os/freebsd/raw.rs.orig	2017-04-24 18:53:46.000000000 +0000
++++ ./src/libstd/os/freebsd/raw.rs	2017-05-25 16:25:42.304715000 +0000
+@@ -38,32 +38,48 @@
+ #[stable(feature = "raw_ext", since = "1.1.0")]
+ pub struct stat {
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+-    pub st_dev: u32,
++    pub st_dev: u64,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+-    pub st_ino: u32,
++    pub st_ino: u64,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
++    pub st_nlink: u64,
++    #[stable(feature = "raw_ext", since = "1.1.0")]
+     pub st_mode: u16,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+-    pub st_nlink: u16,
++    pub st_pad0: u16,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+     pub st_uid: u32,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+     pub st_gid: u32,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+-    pub st_rdev: u32,
++    pub st_pad1: u32,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
++    pub st_rdev: u64,
++    #[cfg(target_arch = "x86")]
++    pub st_atime_ext: c_long,
++    #[stable(feature = "raw_ext", since = "1.1.0")]
+     pub st_atime: c_long,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+     pub st_atime_nsec: c_long,
++    #[cfg(target_arch = "x86")]
++    pub st_mtime_ext: c_long,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+     pub st_mtime: c_long,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+     pub st_mtime_nsec: c_long,
++    #[cfg(target_arch = "x86")]
++    pub st_ctime_ext: c_long,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+     pub st_ctime: c_long,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+     pub st_ctime_nsec: c_long,
++    #[cfg(target_arch = "x86")]
++    pub st_birthtime_ext: c_long,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
++    pub st_birthtime: c_long,
++    #[stable(feature = "raw_ext", since = "1.1.0")]
++    pub st_birthtime_nsec: c_long,
++    #[stable(feature = "raw_ext", since = "1.1.0")]
+     pub st_size: i64,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+     pub st_blocks: i64,
+@@ -72,14 +88,7 @@
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+     pub st_flags: u32,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+-    pub st_gen: u32,
++    pub st_gen: u64,
+     #[stable(feature = "raw_ext", since = "1.1.0")]
+-    pub st_lspare: i32,
+-    #[stable(feature = "raw_ext", since = "1.1.0")]
+-    pub st_birthtime: c_long,
+-    #[stable(feature = "raw_ext", since = "1.1.0")]
+-    pub st_birthtime_nsec: c_long,
+-    #[cfg(target_arch = "x86")]
+-    #[stable(feature = "raw_ext", since = "1.1.0")]
+-    pub __unused: [u8; 8],
++    pub st_spare: [u64; 10],
+ }
+--- ./src/libstd/os/freebsd/fs.rs.orig	2017-04-24 18:53:46.000000000 +0000
++++ ./src/libstd/os/freebsd/fs.rs	2017-05-25 16:25:42.304989000 +0000
+@@ -74,8 +74,6 @@
+     fn st_flags(&self) -> u32;
+     #[stable(feature = "metadata_ext2", since = "1.8.0")]
+     fn st_gen(&self) -> u32;
+-    #[stable(feature = "metadata_ext2", since = "1.8.0")]
+-    fn st_lspare(&self) -> u32;
+ }
+ 
+ #[stable(feature = "metadata_ext", since = "1.1.0")]
+@@ -146,9 +144,6 @@
+     }
+     fn st_flags(&self) -> u32 {
+         self.as_inner().as_inner().st_flags as u32
+-    }
+-    fn st_lspare(&self) -> u32 {
+-        self.as_inner().as_inner().st_lspare as u32
+     }
+ }
+ 
+--- ./src/vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86_64.rs.orig	2017-04-24 20:20:26.000000000 +0000
++++ ./src/vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86_64.rs	2017-05-25 16:25:42.305261000 +0000
+@@ -7,10 +7,12 @@
+     pub struct stat {
+         pub st_dev: ::dev_t,
+         pub st_ino: ::ino_t,
+-        pub st_mode: ::mode_t,
+         pub st_nlink: ::nlink_t,
++        pub st_mode: ::mode_t,
++        pub st_pad0: u16,
+         pub st_uid: ::uid_t,
+         pub st_gid: ::gid_t,
++        pub st_pad1: ::u32,
+         pub st_rdev: ::dev_t,
+         pub st_atime: ::time_t,
+         pub st_atime_nsec: ::c_long,
+@@ -18,13 +20,13 @@
+         pub st_mtime_nsec: ::c_long,
+         pub st_ctime: ::time_t,
+         pub st_ctime_nsec: ::c_long,
++        pub st_birthtime: ::time_t,
++        pub st_birthtime_nsec: ::c_long,
+         pub st_size: ::off_t,
+         pub st_blocks: ::blkcnt_t,
+         pub st_blksize: ::blksize_t,
+         pub st_flags: ::fflags_t,
+-        pub st_gen: ::uint32_t,
+-        pub st_lspare: ::int32_t,
+-        pub st_birthtime: ::time_t,
+-        pub st_birthtime_nsec: ::c_long,
++        pub st_gen: ::uint64_t,
++        pub st_spare: [u64; 10],
+     }
+ }
+--- ./src/vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs.orig	2017-04-24 20:20:26.000000000 +0000
++++ ./src/vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs	2017-05-25 16:28:29.708287000 +0000
+@@ -1,8 +1,8 @@
+ pub type fflags_t = u32;
+ pub type clock_t = i32;
+-pub type ino_t = u32;
++pub type ino_t = u64;
+ pub type lwpid_t = i32;
+-pub type nlink_t = u16;
++pub type nlink_t = u64;
+ pub type blksize_t = u32;
+ pub type clockid_t = ::c_int;
+ pub type sem_t = _sem;
+@@ -40,10 +40,13 @@
+     }
+ 
+     pub struct dirent {
+-        pub d_fileno: u32,
++        pub d_fileno: u64,
++        pub d_off: u64,
+         pub d_reclen: u16,
+         pub d_type: u8,
+-        pub d_namlen: u8,
++        pub d_pad0: u8,
++        pub d_namlen: u16,
++        pub d_pad1: u16,
+         pub d_name: [::c_char; 256],
+     }
+ 
+--- ./src/vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86.rs.orig	2017-04-24 20:20:26.000000000 +0000
++++ ./src/vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86.rs	2017-05-25 16:25:42.305967000 +0000
+@@ -7,25 +7,30 @@
+     pub struct stat {
+         pub st_dev: ::dev_t,
+         pub st_ino: ::ino_t,
+-        pub st_mode: ::mode_t,
+         pub st_nlink: ::nlink_t,
++        pub st_mode: ::mode_t,
++        pub st_pad0: u16,
+         pub st_uid: ::uid_t,
+         pub st_gid: ::gid_t,
++        pub st_pad1: u32,
+         pub st_rdev: ::dev_t,
++        pub st_atime_ext: ::i32,
+         pub st_atime: ::time_t,
+         pub st_atime_nsec: ::c_long,
++        pub st_mtime_ext: ::i32,
+         pub st_mtime: ::time_t,
+         pub st_mtime_nsec: ::c_long,
++        pub st_ctime_ext: ::i32,
+         pub st_ctime: ::time_t,
+         pub st_ctime_nsec: ::c_long,
++        pub st_birthtime_ext: ::i32,
++        pub st_birthtime: ::time_t,
++        pub st_birthtime_nsec: ::c_long,
+         pub st_size: ::off_t,
+         pub st_blocks: ::blkcnt_t,
+         pub st_blksize: ::blksize_t,
+         pub st_flags: ::fflags_t,
+-        pub st_gen: ::uint32_t,
+-        pub st_lspare: ::int32_t,
+-        pub st_birthtime: ::time_t,
+-        pub st_birthtime_nsec: ::c_long,
+-        __unused: [u8; 8],
++        pub st_gen: ::uint64_t,
++        pub st_spare: [u64; 10],
+     }
+ }
+--- ./src/vendor/libc/src/unix/bsd/freebsdlike/mod.rs.orig	2017-04-24 20:20:26.000000000 +0000
++++ ./src/vendor/libc/src/unix/bsd/freebsdlike/mod.rs	2017-05-25 16:25:42.306480000 +0000
+@@ -1,4 +1,4 @@
+-pub type dev_t = u32;
++pub type dev_t = u64;
+ pub type mode_t = u16;
+ pub type pthread_attr_t = *mut ::c_void;
+ pub type rlim_t = i64;

Added: head/lang/rust/files/old_fstat.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/rust/files/old_fstat.c	Sat May 27 12:06:40 2017	(r441843)
@@ -0,0 +1,103 @@
+/* $FreeBSD$ */
+
+#include <sys/syscall.h>
+#include <dlfcn.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+struct stat;
+
+int
+fstat(int fd, struct stat *sb)
+{
+
+	return (syscall(SYS_freebsd11_fstat, fd, sb));
+}
+
+int
+stat(const char *path, struct stat *sb)
+{
+
+	return (syscall(SYS_freebsd11_stat, path, sb));
+}
+
+int
+lstat(const char *path, struct stat *sb)
+{
+
+	return (syscall(SYS_freebsd11_lstat, path, sb));
+}
+
+int
+fstatat(int fd, const char *path, struct stat *sb, int flag)
+{
+
+	return (syscall(SYS_freebsd11_fstatat, fd, path, sb, flag));
+}
+
+struct ODIR;
+struct freebsd11_dirent;
+
+/*
+__asm(".symver  old_readdir, readdir at FBSD_1.0");
+int old_readdir(struct ODIR *);
+int
+readdir(struct ODIR *dirp)
+{
+
+	return (old_readdir(dirp));
+}
+*/
+
+__asm(".symver  old_readdir_r, readdir_r at FBSD_1.0");
+int old_readdir_r(struct ODIR *, struct freebsd11_dirent *,
+    struct freebsd11_dirent **);
+int
+readdir_r(struct ODIR *dirp, struct freebsd11_dirent *entry,
+    struct freebsd11_dirent **result)
+{
+	void *libc;
+	void *fptr;
+	int error;
+
+	libc = dlopen("libc.so.7", RTLD_LAZY | RTLD_GLOBAL);
+	if (libc == NULL) {
+		fprintf(stderr, "libc open: %s\n", dlerror());
+		abort();
+	}
+	fptr = dlvsym(libc, "readdir_r", "FBSD_1.0");
+	if (fptr == NULL) {
+		fprintf(stderr, "readdir_r: %s\n", dlerror());
+		abort();
+	}
+	error = ((int (*)(struct ODIR *, struct freebsd11_dirent *,
+	    struct freebsd11_dirent **))fptr)(dirp, entry, result);
+	dlclose(libc);
+	return (error);
+}
+
+/*
+__asm(".symver	old_scandir, scandir at FBSD_1.0");
+int old_scandir(const char *, struct freebsd11_dirent ***,
+    int (*)(const struct freebsd11_dirent *),
+    int (*)(const struct freebsd11_dirent **,
+	const struct freebsd11_dirent **));
+int
+scandir(const char *dirname, struct freebsd11_dirent ***namelist,
+    int (*select)(const struct freebsd11_dirent *),
+    int (*dcomp)(const struct freebsd11_dirent **,
+	const struct freebsd11_dirent **))
+{
+
+	return (old_scandir(dirname, namelist, select, dcomp));
+}
+*/
+
+struct old_statfs;
+int
+fstatfs(int fd, struct old_statfs *buf)
+{
+
+	return (syscall(SYS_freebsd11_fstatfs, fd, buf));
+}


More information about the svn-ports-all mailing list