aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormandree <mandree@FreeBSD.org>2016-09-11 18:26:24 +0800
committermandree <mandree@FreeBSD.org>2016-09-11 18:26:24 +0800
commit8baf3dac918b585c4bacbc9d438dfb5eec15b1e0 (patch)
tree6f76c2b74cfa6800f5614ae89fe183489d9d5395
parent539af9ddaa6add91499a75930e9ec0dd146904d4 (diff)
downloadfreebsd-ports-gnome-8baf3dac918b585c4bacbc9d438dfb5eec15b1e0.tar.gz
freebsd-ports-gnome-8baf3dac918b585c4bacbc9d438dfb5eec15b1e0.tar.zst
freebsd-ports-gnome-8baf3dac918b585c4bacbc9d438dfb5eec15b1e0.zip
Fix most of the FreeBSD 11+ issues, except e2undo.
Pull in upstream Git patch for lib/ext2fs/unix_io.c to fix unaligned multi-block writes, and disable the two known failing e2undo patches ONLY for the exact 1.43.3_2, even if "ALLTESTS" is enabled. (Modify the post-patch:: target to avoid that.) The port is still marked BROKEN on FreeBSD 11+ to protect the innocent, but a TRYBROKEN=1 build that will not use e2undo should be fine now. Obtained from: Ted Y. Ts'o (upstream maintainer)
-rw-r--r--sysutils/e2fsprogs/Makefile16
-rw-r--r--sysutils/e2fsprogs/files/patch-lib_ext2fs_unix__io.c23
2 files changed, 36 insertions, 3 deletions
diff --git a/sysutils/e2fsprogs/Makefile b/sysutils/e2fsprogs/Makefile
index c31f6365fd8b..41c1e418b5ee 100644
--- a/sysutils/e2fsprogs/Makefile
+++ b/sysutils/e2fsprogs/Makefile
@@ -3,7 +3,7 @@
PORTNAME= e2fsprogs
PORTVERSION= 1.43.3
-PORTREVISION?= 1
+PORTREVISION?= 2
CATEGORIES?= sysutils
MASTER_SITES= KERNEL_ORG/linux/kernel/people/tytso/${PORTNAME}/v${PORTVERSION}
@@ -91,7 +91,7 @@ post-patch::
@${REINPLACE_CMD} -e 's/<malloc\.h>/<stdlib.h>/' ${WRKSRC}/*/*.c
.if empty(PORT_OPTIONS:MALLTESTS)
.for i in \
- d_fallocate_blkmap \
+ d_fallocate_blkmap \
f_baddir \
f_bbfile \
f_convert_bmap \
@@ -136,10 +136,19 @@ post-patch::
.endfor
.endif
.endif
+# XXX remove these on the next revision
+.if ${MASTERDIR} == ${.CURDIR} && ${OPSYS} == FreeBSD && ${OSVERSION} >= 1100000 && ${PORTVERSION} == 1.43.3 && ${PORTREVISION} == 2
+.for i in u_mke2fs_opt_oddsize u_mke2fs_opt_offset
+ @${MV} ${WRKSRC}/tests/${i} ${WRKSRC}/tests/disabled_test-${i}
+.endfor
+.endif
+# Master port stuff that is not to be seen by the slave ports.
.if ${MASTERDIR} == ${.CURDIR}
+# NOTE: The previous .if block goes all the way to the end of the file.
+
.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1100000
-BROKEN=self-test failures on FreeBSD 11+ hint to data corruption issues.
+BROKEN=Not ready for production on FreeBSD 11+, some e2undo cases are still failing.
.endif
pre-build:
@@ -211,6 +220,7 @@ post-install:
${INSTALL_DATA} ${WRKSRC}/${i} ${STAGEDIR}${DOCSDIR}
.endfor
.endif
+#
# the next line closes .if ${MASTERDIR} == ${.CURDIR}
.endif
diff --git a/sysutils/e2fsprogs/files/patch-lib_ext2fs_unix__io.c b/sysutils/e2fsprogs/files/patch-lib_ext2fs_unix__io.c
new file mode 100644
index 000000000000..fc03ebcd531f
--- /dev/null
+++ b/sysutils/e2fsprogs/files/patch-lib_ext2fs_unix__io.c
@@ -0,0 +1,23 @@
+commit d6cad379eb6c86ca58bf5b83a586577de412a2e6
+Author: Theodore Ts'o <tytso@mit.edu>
+Date: Sun Sep 11 00:25:48 2016 -0400
+
+ libext2fs: fix unaligned, multiblock writes in the unix_io handler
+
+ The read-modify-write code for the unaligned fallback code wasn't
+ working for multi-block writes. This was unmasked by FreeBSD 11-rc2,
+ since its malloc() is returning unaligned memory regions for large
+ memory regions.
+
+ Signed-off-by: Theodore Ts'o <tytso@mit.edu>
+
+--- lib/ext2fs/unix_io.c.orig 2016-09-02 04:17:32 UTC
++++ lib/ext2fs/unix_io.c
+@@ -300,6 +300,7 @@ static errcode_t raw_write_blk(io_channe
+ goto short_write;
+ size -= actual;
+ buf += actual;
++ location += actual;
+ }
+ return 0;
+