Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F142678069
D10799.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
15 KB
Referenced Files
None
Subscribers
None
D10799.diff
View Options
Index: head/lang/rust/Makefile
===================================================================
--- head/lang/rust/Makefile
+++ head/lang/rust/Makefile
@@ -105,6 +105,11 @@
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 @@
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 @@
${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.
#
Index: head/lang/rust/files/extra-patch-ino64
===================================================================
--- head/lang/rust/files/extra-patch-ino64
+++ head/lang/rust/files/extra-patch-ino64
@@ -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;
Index: head/lang/rust/files/old_fstat.c
===================================================================
--- head/lang/rust/files/old_fstat.c
+++ head/lang/rust/files/old_fstat.c
@@ -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@FBSD_1.0");
+int old_readdir(struct ODIR *);
+int
+readdir(struct ODIR *dirp)
+{
+
+ return (old_readdir(dirp));
+}
+*/
+
+__asm(".symver old_readdir_r, readdir_r@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@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));
+}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Jan 23, 4:00 AM (20 h, 30 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27874336
Default Alt Text
D10799.diff (15 KB)
Attached To
Mode
D10799: lang/rust: Update for ino64
Attached
Detach File
Event Timeline
Log In to Comment