diff options
author | Robert Clausecker <fuz@FreeBSD.org> | 2024-09-27 10:48:46 +0000 |
---|---|---|
committer | Robert Clausecker <fuz@FreeBSD.org> | 2024-11-06 15:17:35 +0000 |
commit | 6e2da9672f79f44048d597f0f61e4646cdeade9d (patch) | |
tree | c92e4b3158e3419e8cec38e00227d08dcdaab3e9 /filesystems | |
parent | 432f2ebe088377708fb08514ea86f2c19a5b0ad5 (diff) |
Diffstat (limited to 'filesystems')
687 files changed, 24638 insertions, 0 deletions
diff --git a/filesystems/Makefile b/filesystems/Makefile new file mode 100644 index 000000000000..5b0e6dbca81c --- /dev/null +++ b/filesystems/Makefile @@ -0,0 +1,144 @@ + COMMENT = File systems and related utilities + + SUBDIR += acfgfs + SUBDIR += afuse + SUBDIR += archivemount + SUBDIR += automount + SUBDIR += avfs + SUBDIR += bindfs + SUBDIR += cfs + SUBDIR += chironfs + SUBDIR += clamfs + SUBDIR += cramfs + SUBDIR += cryptofs + SUBDIR += curlftpfs + SUBDIR += darling-dmg + SUBDIR += dsbmc + SUBDIR += dsbmc-cli + SUBDIR += dsbmd + SUBDIR += e2fsprogs + SUBDIR += e2fsprogs-core + SUBDIR += e2fsprogs-libblkid + SUBDIR += e2tools + SUBDIR += encfs + SUBDIR += exfat + SUBDIR += exfat-utils + SUBDIR += ext2 + SUBDIR += fstyp + SUBDIR += fswatch-mon + SUBDIR += fusefs-libs + SUBDIR += fusefs-libs3 + SUBDIR += genromfs + SUBDIR += gitfs + SUBDIR += gphotofs + SUBDIR += gvfs + SUBDIR += hfsexplorer + SUBDIR += hfsfuse + SUBDIR += hfsutils + SUBDIR += httpdirfs + SUBDIR += httpfs + SUBDIR += ifuse + SUBDIR += jmtpfs + SUBDIR += kio-fuse + SUBDIR += libbde + SUBDIR += libfsapfs + SUBDIR += libfsext + SUBDIR += libfsfat + SUBDIR += libfshfs + SUBDIR += libfsntfs + SUBDIR += libfsxfs + SUBDIR += libmodi + SUBDIR += linux-c7-dosfstools + SUBDIR += lizardfs + SUBDIR += lkl + SUBDIR += ltfs + SUBDIR += mergerfs + SUBDIR += mhddfs + SUBDIR += moosefs2-cgi + SUBDIR += moosefs2-cgiserv + SUBDIR += moosefs2-chunkserver + SUBDIR += moosefs2-cli + SUBDIR += moosefs2-client + SUBDIR += moosefs2-master + SUBDIR += moosefs2-metalogger + SUBDIR += moosefs2-netdump + SUBDIR += moosefs3-cgi + SUBDIR += moosefs3-cgiserv + SUBDIR += moosefs3-chunkserver + SUBDIR += moosefs3-cli + SUBDIR += moosefs3-client + SUBDIR += moosefs3-master + SUBDIR += moosefs3-metalogger + SUBDIR += moosefs3-netdump + SUBDIR += mp3fs + SUBDIR += mtools + SUBDIR += mtpfs + SUBDIR += nbt + SUBDIR += ntfs + SUBDIR += ntfs-compression + SUBDIR += ntfs2btrfs + SUBDIR += openzfs + SUBDIR += openzfs-kmod + SUBDIR += p5-Filesys-Statvfs + SUBDIR += p5-Fuse + SUBDIR += pear-Horde_Vfs + SUBDIR += pod + SUBDIR += progsreiserfs + SUBDIR += py-dfvfs + SUBDIR += py-fs + SUBDIR += py-fs2 + SUBDIR += py-fsspec + SUBDIR += py-fsspec-xrootd + SUBDIR += py-fusepy + SUBDIR += py-gcsfs + SUBDIR += py-libzfs + SUBDIR += py-llfuse + SUBDIR += py-prometheus-zfs + SUBDIR += py-pyfakefs + SUBDIR += py-s3fs + SUBDIR += py-zfs-autobackup + SUBDIR += R-cran-fs + SUBDIR += rar2fs + SUBDIR += rubygem-aws-sdk-efs + SUBDIR += rubygem-winrm-fs + SUBDIR += s3backer + SUBDIR += s3fs + SUBDIR += sandboxfs + SUBDIR += scan_ffs + SUBDIR += securefs + SUBDIR += simple-mtpfs + SUBDIR += smbnetfs + SUBDIR += sqlfs + SUBDIR += squashfs-tools + SUBDIR += squashfs-tools-ng + SUBDIR += squashfuse + SUBDIR += sshfs + SUBDIR += tclvfs + SUBDIR += ufs + SUBDIR += ufs_copy + SUBDIR += unionfs + SUBDIR += unreliablefs + SUBDIR += vzvol + SUBDIR += webdavfs + SUBDIR += wimlib + SUBDIR += xfsm + SUBDIR += xfsprogs + SUBDIR += xfuse + SUBDIR += zap + SUBDIR += zfs-periodic + SUBDIR += zfs-replicate + SUBDIR += zfs-snap-diff + SUBDIR += zfs-snapshot-clean + SUBDIR += zfs-snapshot-mgmt + SUBDIR += zfs-stats + SUBDIR += zfs-stats-lite + SUBDIR += zfsnap + SUBDIR += zfsnap2 + SUBDIR += zfstools + SUBDIR += zip + SUBDIR += zisofs-tools + SUBDIR += zrepl + SUBDIR += zrepl-dsh2dsh + SUBDIR += zxfer + +.include <bsd.port.subdir.mk> diff --git a/filesystems/R-cran-fs/Makefile b/filesystems/R-cran-fs/Makefile new file mode 100644 index 000000000000..3d9974d540de --- /dev/null +++ b/filesystems/R-cran-fs/Makefile @@ -0,0 +1,26 @@ +PORTNAME= fs +DISTVERSION= 1.6.5 +CATEGORIES= filesystems sysutils +DISTNAME= ${PORTNAME}_${DISTVERSION} + +MAINTAINER= uzsolt@FreeBSD.org +COMMENT= Cross-Platform File System Operations Based on 'libuv' +WWW= https://fs.r-lib.org + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +TEST_DEPENDS= R-cran-covr>0:devel/R-cran-covr \ + R-cran-crayon>0:devel/R-cran-crayon \ + R-cran-knitr>0:print/R-cran-knitr \ + R-cran-pillar>=1.0.0:devel/R-cran-pillar \ + R-cran-rmarkdown>0:textproc/R-cran-rmarkdown \ + R-cran-spelling>0:textproc/R-cran-spelling \ + R-cran-testthat>=3.0.0:devel/R-cran-testthat \ + R-cran-tibble>=1.1.0:devel/R-cran-tibble \ + R-cran-vctrs>=0.3.0:devel/R-cran-vctrs \ + R-cran-withr>0:devel/R-cran-withr + +USES= cran:auto-plist,compiles + +.include <bsd.port.mk> diff --git a/filesystems/R-cran-fs/distinfo b/filesystems/R-cran-fs/distinfo new file mode 100644 index 000000000000..e5669da26a36 --- /dev/null +++ b/filesystems/R-cran-fs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730355406 +SHA256 (fs_1.6.5.tar.gz) = 0e3b4d40215bee77b52d158a2e4967f4408721576aaf39bc6a77024522c70b34 +SIZE (fs_1.6.5.tar.gz) = 1200455 diff --git a/filesystems/R-cran-fs/pkg-descr b/filesystems/R-cran-fs/pkg-descr new file mode 100644 index 000000000000..fcc21a216d41 --- /dev/null +++ b/filesystems/R-cran-fs/pkg-descr @@ -0,0 +1,2 @@ +A cross-platform interface to file system operations, built on top of the +'libuv' C library. diff --git a/filesystems/acfgfs/Makefile b/filesystems/acfgfs/Makefile new file mode 100644 index 000000000000..6a62ea14b229 --- /dev/null +++ b/filesystems/acfgfs/Makefile @@ -0,0 +1,22 @@ +PORTNAME= acfgfs +DISTVERSION= 0.6.3.4 +CATEGORIES= filesystems sysutils + +MAINTAINER= ports@FreeBSD.org +COMMENT= FUSE file system driver for Arcan window managers +WWW= https://arcan-fe.com/ + +LICENSE= BSD3CLAUSE +LICENSE_FILE= ${WRKSRC:H:H:H}/data/distr/LICENSE.BSD + +LIB_DEPENDS= libarcan_shmif_ext.so:multimedia/arcan + +USES= cmake compiler:c11 fuse:3 pkgconfig +USE_GITHUB= yes +GH_ACCOUNT= letoram +GH_PROJECT= arcan +WRKSRC_SUBDIR= src/tools/${PORTNAME} +PLIST_FILES= bin/arcan_cfgfs \ + share/man/man1/arcan_cfgfs.1.gz + +.include <bsd.port.mk> diff --git a/filesystems/acfgfs/distinfo b/filesystems/acfgfs/distinfo new file mode 100644 index 000000000000..e7950a44e17b --- /dev/null +++ b/filesystems/acfgfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1728130449 +SHA256 (letoram-arcan-0.6.3.4_GH0.tar.gz) = 8ffdd67e99df7fae4de739f530f51ca1583eb6b6dbb2fd4cd5c29913e85200e5 +SIZE (letoram-arcan-0.6.3.4_GH0.tar.gz) = 12951187 diff --git a/filesystems/acfgfs/pkg-descr b/filesystems/acfgfs/pkg-descr new file mode 100644 index 000000000000..977d242c44a2 --- /dev/null +++ b/filesystems/acfgfs/pkg-descr @@ -0,0 +1,2 @@ +Acfgfs is a tool that lets you mount certain arcan applications as a FUSE +file-system. The application has to explicitly support it (e.g., Durden). diff --git a/filesystems/afuse/Makefile b/filesystems/afuse/Makefile new file mode 100644 index 000000000000..808794a7224b --- /dev/null +++ b/filesystems/afuse/Makefile @@ -0,0 +1,30 @@ +PORTNAME= afuse +PORTVERSION= 0.4.1 +PORTREVISION= 2 +CATEGORIES= filesystems +MASTER_SITES= https://BSDforge.com/projects/source/sysutils/afuse/ +PKGNAMEPREFIX= fusefs- + +MAINTAINER= portmaster@BSDforge.com +COMMENT= File system automounting implemented in user-space using FUSE +WWW= https://github.com/pcarrier/afuse + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +USES= cpe fuse pkgconfig +GNU_CONFIGURE= yes + +PORTDOCS= AUTHORS README + +OPTIONS_DEFINE= DOCS +DOCS_SUB_FILES= pkg-message + +post-install: + ${INSTALL_MAN} ${FILESDIR}/afuse.1 ${STAGEDIR}${PREFIX}/share/man/man1 + +post-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${PORTDOCS:S,^,${WRKSRC}/,} ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.mk> diff --git a/filesystems/afuse/distinfo b/filesystems/afuse/distinfo new file mode 100644 index 000000000000..3dca6b32c27b --- /dev/null +++ b/filesystems/afuse/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905207 +SHA256 (afuse-0.4.1.tar.gz) = c6e0555a65d42d3782e0734198bbebd22486386e29cb00047bc43c3eb726dca8 +SIZE (afuse-0.4.1.tar.gz) = 121957 diff --git a/filesystems/afuse/files/afuse.1 b/filesystems/afuse/files/afuse.1 new file mode 100644 index 000000000000..f6212f74aa3f --- /dev/null +++ b/filesystems/afuse/files/afuse.1 @@ -0,0 +1,95 @@ +.TH AFUSE 1 "October 12, 2006" +.SH NAME +AFUSE \- automounting file system implemented in user-space using FUSE +.SH DESCRIPTION +usage: afuse mountpoint [options] +.SS "general options:" +.TP +\fB\-o\fR opt,[opt...] +mount options +.TP +\fB\-h\fR \fB\-\-help\fR +print help +.TP +\fB\-V\fR \fB\-\-version\fR +print FUSE version information +.SS "AFUSE options:" +.TP +\fB\-o\fR \fB\ mount_template=CMD\fR +template for CMD to execute to mount (*) +.TP +\fB\-o\fR \fB\ unmount_template=CMD\fR +template for CMD to execute to unmount (*) (**) +.TP +(*) - When executed, %r and %m are expanded in templates to the root +directory name for the new mount point, and the actual directory to +mount onto respectively to mount onto. Both templates are REQUIRED. +.TP +(**)- The unmount command must perform a lazy unmount operation. E.g. the +\-u \-z options to fusermount, or \-l for regular mount. +.SS "FUSE options:" +.TP +\fB\-d\fR \fB\-o\fR debug +enable debug output (implies \fB\-f\fR) +.TP +\fB\-f\fR +foreground operation +.TP +\fB\-s\fR +disable multi\-threaded operation +.TP +\fB\-o\fR allow_other +allow access to other users +.TP +\fB\-o\fR allow_root +allow access to root +.TP +\fB\-o\fR nonempty +allow mounts over non\-empty file/dir +.HP +\fB\-o\fR default_permissions enable permission checking by kernel +.TP +\fB\-o\fR fsname=NAME +set filesystem name +.TP +\fB\-o\fR large_read +issue large read requests (2.4 only) +.TP +\fB\-o\fR max_read=N +set maximum size of read requests +.TP +\fB\-o\fR hard_remove +immediate removal (don't hide files) +.TP +\fB\-o\fR use_ino +let filesystem set inode numbers +.TP +\fB\-o\fR readdir_ino +try to fill in d_ino in readdir +.TP +\fB\-o\fR direct_io +use direct I/O +.TP +\fB\-o\fR kernel_cache +cache files in kernel +.TP +\fB\-o\fR umask=M +set file permissions (octal) +.TP +\fB\-o\fR uid=N +set file owner +.TP +\fB\-o\fR gid=N +set file group +.TP +\fB\-o\fR entry_timeout=T +cache timeout for names (1.0s) +.TP +\fB\-o\fR negative_timeout=T +cache timeout for deleted names (0.0s) +.TP +\fB\-o\fR attr_timeout=T +cache timeout for attributes (1.0s) +.SH AUTHOR +This manual page was written by Varun Hiremath <varunhiremath@gmail.com>, +for the Debian project (but may be used by others). diff --git a/filesystems/afuse/files/patch-src_afuse.c b/filesystems/afuse/files/patch-src_afuse.c new file mode 100644 index 000000000000..31a49171dcfc --- /dev/null +++ b/filesystems/afuse/files/patch-src_afuse.c @@ -0,0 +1,11 @@ +--- src/afuse.c.orig 2013-02-13 02:36:47 UTC ++++ src/afuse.c +@@ -29,7 +29,7 @@ + #include <string.h> + #include <stddef.h> + #include <unistd.h> +-#include <alloca.h> ++//#include <alloca.h> + #include <fcntl.h> + #include <dirent.h> + #include <errno.h> diff --git a/filesystems/afuse/files/pkg-message.in b/filesystems/afuse/files/pkg-message.in new file mode 100644 index 000000000000..bf89bc245d9b --- /dev/null +++ b/filesystems/afuse/files/pkg-message.in @@ -0,0 +1,8 @@ +[ +{ type: install + message: <<EOM +Additional info about program usage can be found at +%%DOCSDIR%%/README. +EOM +} +] diff --git a/filesystems/afuse/pkg-descr b/filesystems/afuse/pkg-descr new file mode 100644 index 000000000000..7372b291f353 --- /dev/null +++ b/filesystems/afuse/pkg-descr @@ -0,0 +1,16 @@ +Afuse is an automounting file system implemented in user-space +using FUSE. Afuse currently implements the most basic +functionality that can be expected by an automounter; that is it +manages a directory of virtual directories. If one of these virtual +directories is accessed and is not already automounted, afuse will +attempt to mount a filesystem onto that directory. If the mount +succeeds the requested access proceeds as normal, otherwise it will +fail with an error. + +The advantage of using afuse over traditional automounters is that +afuse is designed to run entirely in user-space by individual users. +This way an automounting action can take advantage of the invoking +users environment, for example allowing access to an ssh-agent for +password-less sshfs mounts, or allowing access to a graphical +environment to get user input to complete a mount (i.e. popping up +a window asking for a password). diff --git a/filesystems/afuse/pkg-plist b/filesystems/afuse/pkg-plist new file mode 100644 index 000000000000..ca1d3709154f --- /dev/null +++ b/filesystems/afuse/pkg-plist @@ -0,0 +1,3 @@ +bin/afuse +@comment bin/afuse-avahissh +share/man/man1/afuse.1.gz diff --git a/filesystems/archivemount/Makefile b/filesystems/archivemount/Makefile new file mode 100644 index 000000000000..b29e53e95b7e --- /dev/null +++ b/filesystems/archivemount/Makefile @@ -0,0 +1,28 @@ +PORTNAME= archivemount +DISTVERSION= 0.9.1 +PORTREVISION= 1 +CATEGORIES= filesystems sysutils +MASTER_SITES= https://www.cybernoia.de/software/archivemount/ + +MAINTAINER= jirnov@gmail.com +COMMENT= Mount archives with FUSE +WWW= https://www.cybernoia.de/software/archivemount.html + +LICENSE= LGPL20 +LICENSE_FILE= ${WRKSRC}/COPYING + +USES= fuse iconv libarchive pkgconfig +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share + +PLIST_FILES= bin/archivemount \ + share/man/man1/archivemount.1.gz \ + sbin/mount_archive + +SUB_FILES= pkg-message + +post-install: + ${RLN} ${STAGEDIR}${PREFIX}/bin/archivemount \ + ${STAGEDIR}${PREFIX}/sbin/mount_archive + +.include <bsd.port.mk> diff --git a/filesystems/archivemount/distinfo b/filesystems/archivemount/distinfo new file mode 100644 index 000000000000..f80191a890d9 --- /dev/null +++ b/filesystems/archivemount/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1663696814 +SHA256 (archivemount-0.9.1.tar.gz) = c529b981cacb19541b48ddafdafb2ede47a40fcaf16c677c1e2cd198b159c5b3 +SIZE (archivemount-0.9.1.tar.gz) = 133251 diff --git a/filesystems/archivemount/files/pkg-message.in b/filesystems/archivemount/files/pkg-message.in new file mode 100644 index 000000000000..a1fa17f41d3e --- /dev/null +++ b/filesystems/archivemount/files/pkg-message.in @@ -0,0 +1,10 @@ +[ +{ type: install + message: <<EOM +Make sure you have fusefs.ko loaded then use archivemount +or mount_archive command or add an entry to the /etc/fstab such as: + +/path/to/archive /mnt/path fusefs ro,late,mountprog=%%PREFIX%%/sbin/mount_archive 0 0 +EOM +} +] diff --git a/filesystems/archivemount/pkg-descr b/filesystems/archivemount/pkg-descr new file mode 100644 index 000000000000..c1889e81a9c3 --- /dev/null +++ b/filesystems/archivemount/pkg-descr @@ -0,0 +1,4 @@ +Archivemount is a piece of glue code between libarchive +(http://people.freebsd.org/~kientzle/libarchive/) and FUSE +(http://fuse.sourceforge.net). It can be used to mount a (possibly compressed) +archive (as in .tar.gz or .tar.bz2) and use it like an ordinary filesystem. diff --git a/filesystems/automount/Makefile b/filesystems/automount/Makefile new file mode 100644 index 000000000000..d20e8eafb67e --- /dev/null +++ b/filesystems/automount/Makefile @@ -0,0 +1,36 @@ +PORTNAME= automount +DISTVERSION= 1.7.9 +CATEGORIES= filesystems sysutils +MASTER_SITES= https://raw.github.com/vermaden/automount/master/ + +MAINTAINER= vermaden@interia.pl +COMMENT= FreeBSD's devd(8) based automount solution +WWW= https://github.com/vermaden/automount/ + +LICENSE= BSD2CLAUSE + +PLIST_FILES= sbin/automount etc/devd/automount_devd.conf etc/automount.conf.sample + +NO_BUILD= yes +NO_ARCH= yes + +OPTIONS_DEFINE= NTFS3G EXT4 EXFAT HFS +OPTIONS_DEFAULT= NTFS3G EXT4 EXFAT HFS +NTFS3G_DESC= Enable NTFS write support with ntfs-3g over FUSE +NTFS3G_RUN_DEPENDS= fusefs-ntfs>=0:filesystems/ntfs +EXT4_DESC= Support EXT2/3/4 filesystem +EXT4_RUN_DEPENDS= fusefs-lkl>=0:filesystems/lkl +HFS_DESC= Support macOS HFS filesystem +HFS_RUN_DEPENDS= fusefs-hfsfuse>=0:filesystems/hfsfuse +EXFAT_DESC= Support Microsoft exFAT filesystem +EXFAT_RUN_DEPENDS= fusefs-exfat>=0:filesystems/exfat \ + exfat-utils>=0:filesystems/exfat-utils + +do-install: + ${INSTALL_SCRIPT} ${WRKDIR}/automount ${STAGEDIR}${PREFIX}/sbin + ${INSTALL_DATA} ${WRKDIR}/automount_devd.conf \ + ${STAGEDIR}${PREFIX}/etc/devd + ${INSTALL_DATA} ${WRKDIR}/automount.conf \ + ${STAGEDIR}${PREFIX}/etc/automount.conf.sample + +.include <bsd.port.mk> diff --git a/filesystems/automount/distinfo b/filesystems/automount/distinfo new file mode 100644 index 000000000000..4ac0eb1e32f9 --- /dev/null +++ b/filesystems/automount/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1692819472 +SHA256 (automount-1.7.9.tar.gz) = 30e2ec4b6168979f0aada174b73dc8cdfc6097d8a7d7add57504b6733ee21b37 +SIZE (automount-1.7.9.tar.gz) = 7802 diff --git a/filesystems/automount/pkg-descr b/filesystems/automount/pkg-descr new file mode 100644 index 000000000000..63bc37be8cf3 --- /dev/null +++ b/filesystems/automount/pkg-descr @@ -0,0 +1,8 @@ +The automount(8) is devd(8) based automounter for FreeBSD. + +It supports most popular filesystems: +NTFS/FAT/exFAT/EXT2/EXT3/EXT4/UFS/HFS/XFS/ISO9660 + +There are several ways to automount devices on FreeBSD. + +Make sure you are using only one solution at any given time. diff --git a/filesystems/automount/pkg-message b/filesystems/automount/pkg-message new file mode 100644 index 000000000000..e8a180cde268 --- /dev/null +++ b/filesystems/automount/pkg-message @@ -0,0 +1,10 @@ +[ +{ type: install + message: <<EOM + +You must run below command to activate automount(8). + + # service devd restart +EOM +} +] diff --git a/filesystems/avfs/Makefile b/filesystems/avfs/Makefile new file mode 100644 index 000000000000..e72960be92e5 --- /dev/null +++ b/filesystems/avfs/Makefile @@ -0,0 +1,43 @@ +PORTNAME= avfs +PORTVERSION= 1.1.4 +CATEGORIES= filesystems sysutils +MASTER_SITES= SF/avf/${PORTNAME}/${PORTVERSION} + +MAINTAINER= danfe@FreeBSD.org +COMMENT= Virtual File System library +WWW= https://avf.sourceforge.net/ + +# FUSE daemon is licensed as GPLv2, shared library is LGPLv2 +LICENSE= LGPL20 GPLv2 +LICENSE_COMB= multi + +RUN_DEPENDS= ${LOCALBASE}/bin/bash:shells/bash + +USES= libtool pkgconfig tar:bz2 shebangfix perl5 +USE_PERL5= run +SHEBANG_FILES= extfs/uimg scripts/umountavfs scripts/mountavfs +USE_LDCONFIG= yes +GNU_CONFIGURE= yes +CONFIGURE_ENV= PERL="${PERL}" + +INSTALL_TARGET= install-strip + +OPTIONS_DEFINE= DAV DEBUG FUSE ZSTD +OPTIONS_SUB= yes + +DAV_DESC= Build the DAV module (requires libneon) +DAV_LIB_DEPENDS= libneon.so:www/neon +DAV_CONFIGURE_ENABLE= dav + +DEBUG_CONFIGURE_ENABLE= debug + +FUSE_CONFIGURE_ENABLE= fuse +FUSE_USES= fuse + +ZSTD_LIB_DEPENDS= libzstd.so:archivers/zstd +ZSTD_CONFIGURE_WITH= zstd + +post-patch: + @${REINPLACE_CMD} -e '/#include/s,neon/,,' ${WRKSRC}/modules/dav*.? + +.include <bsd.port.mk> diff --git a/filesystems/avfs/distinfo b/filesystems/avfs/distinfo new file mode 100644 index 000000000000..da7f15db88bc --- /dev/null +++ b/filesystems/avfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905202 +SHA256 (avfs-1.1.4.tar.bz2) = 3a7981af8557f864ae10d4b204c29969588fdb526e117456e8efd54bf8faa12b +SIZE (avfs-1.1.4.tar.bz2) = 614657 diff --git a/filesystems/avfs/files/patch-scripts_mountavfs b/filesystems/avfs/files/patch-scripts_mountavfs new file mode 100644 index 000000000000..1042b3533c9e --- /dev/null +++ b/filesystems/avfs/files/patch-scripts_mountavfs @@ -0,0 +1,11 @@ +--- scripts/mountavfs.orig 2016-09-16 18:43:19 UTC ++++ scripts/mountavfs +@@ -14,7 +14,7 @@ else + MntDir=${HOME}/.avfs + fi + +-grep -qE "avfsd ${MntDir}" /proc/mounts || { ++mount -p | grep -qE "${MntDir}.*fusefs" || { + if [ ! -e "$MntDir" ]; then + mkdir -p "$MntDir" + fi diff --git a/filesystems/avfs/files/patch-scripts_umountavfs b/filesystems/avfs/files/patch-scripts_umountavfs new file mode 100644 index 000000000000..e93c9c659029 --- /dev/null +++ b/filesystems/avfs/files/patch-scripts_umountavfs @@ -0,0 +1,16 @@ +--- scripts/umountavfs.orig 2016-09-16 18:43:19 UTC ++++ scripts/umountavfs +@@ -14,11 +14,11 @@ else + MntDir="${HOME}/.avfs" + fi + +-grep -qE "${MntDir}.*avfsd" /proc/mounts && { ++mount -p | grep -qE "${MntDir}.*fusefs" && { + echo unMounting AVFS on $MntDir... + if type -p fusermount > /dev/null 2>&1 ; then + fusermount -u -z "$MntDir" + else +- umount -l "$MntDir" ++ umount "$MntDir" + fi + } diff --git a/filesystems/avfs/pkg-descr b/filesystems/avfs/pkg-descr new file mode 100644 index 000000000000..4bdc41f8adbd --- /dev/null +++ b/filesystems/avfs/pkg-descr @@ -0,0 +1,8 @@ +AVFS is a system, which enables all programs to look inside gzip, tar, +zip, etc. files or view remote (ftp, http, dav, etc.) files, without +recompiling the programs. + +Shared library and FUSE daemon are provided. + +AVFS is (C) under the GNU GPL. The shared library supporting AVFS with +LD_PRELOAD is (C) under the GNU LGPL. diff --git a/filesystems/avfs/pkg-plist b/filesystems/avfs/pkg-plist new file mode 100644 index 000000000000..77e9a9d3032b --- /dev/null +++ b/filesystems/avfs/pkg-plist @@ -0,0 +1,51 @@ +bin/avfs-config +%%FUSE%%bin/avfsd +bin/davpass +bin/ftppass +%%FUSE%%bin/mountavfs +%%FUSE%%bin/umountavfs +include/avfs.h +include/virtual.h +lib/avfs/extfs/README +lib/avfs/extfs/a +lib/avfs/extfs/apt +lib/avfs/extfs/audio +lib/avfs/extfs/bpp +lib/avfs/extfs/deb +lib/avfs/extfs/deba +lib/avfs/extfs/debd +lib/avfs/extfs/dpkg +lib/avfs/extfs/extfs.ini +lib/avfs/extfs/ftplist +lib/avfs/extfs/hp48 +lib/avfs/extfs/iso9660 +lib/avfs/extfs/lslR +lib/avfs/extfs/mailfs +lib/avfs/extfs/patchfs +lib/avfs/extfs/rpm +lib/avfs/extfs/rpms +lib/avfs/extfs/trpm +lib/avfs/extfs/u7z +lib/avfs/extfs/uace +lib/avfs/extfs/uadf +lib/avfs/extfs/uar +lib/avfs/extfs/uarc +lib/avfs/extfs/uarj +lib/avfs/extfs/uc1541 +lib/avfs/extfs/ucab +lib/avfs/extfs/ucpio +lib/avfs/extfs/udar +lib/avfs/extfs/uextrar +lib/avfs/extfs/uha +lib/avfs/extfs/uimg +lib/avfs/extfs/ulha +lib/avfs/extfs/upp +lib/avfs/extfs/uxdms +lib/avfs/extfs/uxpk +lib/avfs/extfs/uzip +lib/avfs/extfs/uzoo +lib/libavfs.a +lib/libavfs.so +lib/libavfs.so.0 +lib/libavfs.so.0.0.2 +libdata/pkgconfig/avfs.pc diff --git a/filesystems/bindfs/Makefile b/filesystems/bindfs/Makefile new file mode 100644 index 000000000000..5b631a370acb --- /dev/null +++ b/filesystems/bindfs/Makefile @@ -0,0 +1,28 @@ +PORTNAME= bindfs +DISTVERSION= 1.17.7 +PORTREVISION= 1 +CATEGORIES= filesystems +MASTER_SITES= https://bindfs.org/downloads/ +PKGNAMEPREFIX= fusefs- + +MAINTAINER= doralitze@chaotikum.org +COMMENT= FUSE based bindfs implementation way more powerful than nullfs +WWW= https://bindfs.org/ + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +USES= fuse:3 localbase:ldflags pkgconfig +GNU_CONFIGURE= yes + +CONFIGURE_ENV+= fuse3_LIBS="-L${LOCALBASE}/lib -lfuse3" +CONFIGURE_ARGS= --with-fuse3 + +PLIST_FILES= bin/bindfs \ + share/man/man1/bindfs.1.gz + +post-patch: + @${REINPLACE_CMD} -e 's|-pthread|-lthr|g' \ + ${PATCH_WRKSRC}/configure + +.include <bsd.port.mk> diff --git a/filesystems/bindfs/distinfo b/filesystems/bindfs/distinfo new file mode 100644 index 000000000000..c6ae2d4b1980 --- /dev/null +++ b/filesystems/bindfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1718036736 +SHA256 (bindfs-1.17.7.tar.gz) = c0b060e94c3a231a1d4aa0bcf266ff189981a4ef38e42fbe23296a7d81719b7a +SIZE (bindfs-1.17.7.tar.gz) = 427251 diff --git a/filesystems/bindfs/pkg-descr b/filesystems/bindfs/pkg-descr new file mode 100644 index 000000000000..67d40ef6ebe3 --- /dev/null +++ b/filesystems/bindfs/pkg-descr @@ -0,0 +1,4 @@ +This port features a fuse implementation of bindfs. Bindfs is like nullfs exept +for the fact that it features more options and filters. The most important +difference is that you may overwrite the ownership of files when mounting the +desired directory somewhere else. diff --git a/filesystems/cfs/Makefile b/filesystems/cfs/Makefile new file mode 100644 index 000000000000..64e9f5e1b7a5 --- /dev/null +++ b/filesystems/cfs/Makefile @@ -0,0 +1,36 @@ +PORTNAME= cfs +DISTVERSION= 1.5.0 +PORTREVISION= 1 +CATEGORIES= filesystems security +MASTER_SITES= http://www.bayofrum.net/dist/${PORTNAME}/ + +MAINTAINER= crees@FreeBSD.org +COMMENT= Cryptographic file system implemented as a user-space NFS server +WWW= https://www.bayofrum.net/cgi-bin/fossil/cfs/ + +LICENSE= BSD0CLAUSE + +ALL_TARGET= cfs +MAKE_ARGS= CC="${CC}" + +CFSD_BOOTSTRAP= ${PREFIX}/cfsd-bootstrap +USE_RC_SUBR= cfsd +SUB_FILES= pkg-message +SUB_LIST= CFSD_BOOTSTRAP=${CFSD_BOOTSTRAP} +PLIST_SUB= CFSD_BOOTSTRAP=${CFSD_BOOTSTRAP} + +post-patch: + ${REINPLACE_CMD} 's/^\.TH SSH/.TH CFSSH/' ${WRKSRC}/cfssh.1 + +do-install: + cd ${WRKSRC}; \ + ${INSTALL_PROGRAM} ccat cfsd cname ${STAGEDIR}${PREFIX}/sbin; \ + ${INSTALL_PROGRAM} cattach cdetach cmkdir cpasswd ${STAGEDIR}${PREFIX}/bin; \ + ${INSTALL_SCRIPT} cfssh ${STAGEDIR}${PREFIX}/bin/cfssh; \ + ${INSTALL_MAN} cattach.1 cdetach.1 cmkdir.1 cpasswd.1 cfssh.1 ${STAGEDIR}${PREFIX}/share/man/man1; \ + ${INSTALL_MAN} ccat.8 cfsd.8 cname.8 ${STAGEDIR}${PREFIX}/share/man/man8; \ + ${MKDIR} ${STAGEDIR}${PREFIX}/share/doc/cfs; \ + ${INSTALL_DATA} README.install notes.ms ${STAGEDIR}${PREFIX}/share/doc/cfs + ${INSTALL} -d -m 0 ${STAGEDIR}${CFSD_BOOTSTRAP} + +.include <bsd.port.mk> diff --git a/filesystems/cfs/distinfo b/filesystems/cfs/distinfo new file mode 100644 index 000000000000..6c65d06b258a --- /dev/null +++ b/filesystems/cfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1676460427 +SHA256 (cfs-1.5.0.tar.gz) = dfae1656fb9a063ce3eeae3774de2c59af86f7bf72d1461237a0b61df58a7810 +SIZE (cfs-1.5.0.tar.gz) = 110065 diff --git a/filesystems/cfs/files/cfsd.in b/filesystems/cfs/files/cfsd.in new file mode 100644 index 000000000000..4a090ed7482e --- /dev/null +++ b/filesystems/cfs/files/cfsd.in @@ -0,0 +1,49 @@ +#!/bin/sh + +# PROVIDE: cfsd +# REQUIRE: mountd +# KEYWORD: shutdown +# +# Add the following line to /etc/rc.conf to enable cfsd: +# +# cfsd_enable=YES +# +# Additional options: +# +# cfsd_port=3049 # the port to listen to +# cfsd_mountpoint=/crypt # the CFS mountpoint +# + +. /etc/rc.subr + +name=cfsd +rcvar=cfsd_enable +desc="Cryptographic File System daemon" + +load_rc_config $name + +: ${cfsd_enable:=no} +: ${cfsd_port=3049} +: ${cfsd_mountpoint=/crypt} + +command=%%PREFIX%%/sbin/cfsd +command_args="$cfsd_port > /dev/null 2>&1" +required_dirs="%%CFSD_BOOTSTRAP%% $cfsd_mountpoint" +start_postcmd=cfsd_poststart +stop_precmd=cfsd_prestop + +cfsd_poststart() +{ + if [ -n "$cfsd_mountpoint" ]; then + mount -o port="$cfsd_port",udp,nfsv2,nolockd 127.0.0.1:%%CFSD_BOOTSTRAP%% "$cfsd_mountpoint" + fi +} + +cfsd_prestop() +{ + if [ -n "$cfsd_mountpoint" ]; then + umount "$cfsd_mountpoint" + fi +} + +run_rc_command $1 diff --git a/filesystems/cfs/files/pkg-message.in b/filesystems/cfs/files/pkg-message.in new file mode 100644 index 000000000000..11b2ce5ab5e1 --- /dev/null +++ b/filesystems/cfs/files/pkg-message.in @@ -0,0 +1,26 @@ +[ +{ type: install + message: <<EOM +Quick start instructions: + + - add the following entry to /etc/exports: + + %%CFSD_BOOTSTRAP%% 127.0.0.1 + + - create the default CFS mountpoint (if you want to use a different + mountpoint, set the cfsd_mountpoint variable in /etc/rc.conf): + + # mkdir /crypt + + - enable rpcbind, mountd and cfsd in /etc/rc.conf: + + cfsd_enable="YES" + mountd_enable="YES" + + - start mountd and cfsd, or restart: + + # service mountd start + # service cfsd start +EOM +} +] diff --git a/filesystems/cfs/pkg-descr b/filesystems/cfs/pkg-descr new file mode 100644 index 000000000000..0ade618d36f1 --- /dev/null +++ b/filesystems/cfs/pkg-descr @@ -0,0 +1,9 @@ +This is CFS, Matt Blaze's Cryptographic File System. It provides +transparent encryption and decryption of selected directory trees. +It is implemented as a user-level NFS server and thus does not +require any kernel modifications. + +For an overview of how to use it, read "${PREFIX}/share/doc/cfs/notes.ms" +and the manual pages. There is a paper describing CFS at: + + https://www.scs.stanford.edu/nyu/02fa/lab/cfs.pdf diff --git a/filesystems/cfs/pkg-plist b/filesystems/cfs/pkg-plist new file mode 100644 index 000000000000..cb9d85095792 --- /dev/null +++ b/filesystems/cfs/pkg-plist @@ -0,0 +1,19 @@ +bin/cattach +bin/cdetach +bin/cmkdir +bin/cpasswd +bin/cfssh +sbin/ccat +sbin/cfsd +sbin/cname +share/doc/cfs/README.install +share/doc/cfs/notes.ms +share/man/man1/cattach.1.gz +share/man/man1/cdetach.1.gz +share/man/man1/cmkdir.1.gz +share/man/man1/cpasswd.1.gz +share/man/man1/cfssh.1.gz +share/man/man8/ccat.8.gz +share/man/man8/cfsd.8.gz +share/man/man8/cname.8.gz +@dir(,,0) %%CFSD_BOOTSTRAP%% diff --git a/filesystems/chironfs/Makefile b/filesystems/chironfs/Makefile new file mode 100644 index 000000000000..018db229218e --- /dev/null +++ b/filesystems/chironfs/Makefile @@ -0,0 +1,30 @@ +PORTNAME= chironfs +PORTVERSION= 1.1.1 +PORTREVISION= 3 +CATEGORIES= filesystems +MASTER_SITES= https://BSDforge.com/projects/source/sysutils/chironfs/ +PKGNAMEPREFIX= fusefs- + +MAINTAINER= portmaster@BSDforge.com +COMMENT= FUSE based filesystem with replication at the filesystem level +WWW= https://BSDforge.com/projects/sysutils/fusefs-chironfs/ + +LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/doc/copyright + +USES= fuse localbase:ldflags +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share + +PLIST_FILES= bin/chironfs bin/chirctl share/man/man8/chironfs.8.gz +PORTDOCS= * + +OPTIONS_DEFINE= DOCS + +post-patch: + @${REINPLACE_CMD} -e 's,-liconv,${ICONV_LIB},' ${WRKSRC}/src/Makefile.* + +post-patch-DOCS-off: + @${REINPLACE_CMD} -e 's, doc , ,' ${WRKSRC}/Makefile.in + +.include <bsd.port.mk> diff --git a/filesystems/chironfs/distinfo b/filesystems/chironfs/distinfo new file mode 100644 index 000000000000..91f1eb78d555 --- /dev/null +++ b/filesystems/chironfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905042 +SHA256 (chironfs-1.1.1.tar.gz) = 9381aa3773fb4797e6aed5a3a5e83a3d342e7950aab3f63fc94a4fdca92791c9 +SIZE (chironfs-1.1.1.tar.gz) = 444036 diff --git a/filesystems/chironfs/pkg-descr b/filesystems/chironfs/pkg-descr new file mode 100644 index 000000000000..8cc07f74f9c9 --- /dev/null +++ b/filesystems/chironfs/pkg-descr @@ -0,0 +1,8 @@ +Chiron FS is a FUSE based filesystem which implements +replication at the FILESYSTEM LEVEL like RAID 1 does at +the DEVICE LEVEL. + +The replicated filesystems may be of any kind you want. +The only requisite is that you mount it. +No need for special configuration files. The setup is as +simple as one mount command (or one line in fstab). diff --git a/filesystems/clamfs/Makefile b/filesystems/clamfs/Makefile new file mode 100644 index 000000000000..bbd947525e7f --- /dev/null +++ b/filesystems/clamfs/Makefile @@ -0,0 +1,42 @@ +PORTNAME= clamfs +DISTVERSION= 1.2.0 +PORTREVISION= 5 +CATEGORIES= filesystems security +MASTER_SITES= https://github.com/burghardt/${PORTNAME}/releases/download/${PORTNAME}-${DISTVERSION}/ + +MAINTAINER= anastasios@mageirias.com +COMMENT= User-space fs with on-access antivirus scanning +WWW= https://github.com/burghardt/clamfs + +LICENSE= GPLv2 + +BUILD_DEPENDS= boost-libs>=1.33:devel/boost-libs +LIB_DEPENDS= libPocoFoundation.so:devel/poco \ + libPocoNet.so:devel/poco \ + libPocoXML.so:devel/poco \ + librlog.so:devel/rlog +RUN_DEPENDS= clamd:security/clamav + +USES= autoreconf compiler:c++11-lib fuse:3 pkgconfig + +GNU_CONFIGURE= yes + +PLIST_FILES= bin/clamfs \ + share/man/man1/clamfs.1.gz + +PORTDOCS= * +OPTIONS_DEFINE= DOCS + +post-patch: + @${REINPLACE_CMD} -e 's|-Werror ||g' ${WRKSRC}/configure.ac + +post-patch-DOCS-on: + @${REINPLACE_CMD} -e '/socket=/s/ctl/sock/' \ + ${WRKSRC}/doc/clamfs.xml ${WRKSRC}/doc/debug.xml + +post-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/doc/clamfs.xml ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/doc/debug.xml ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.mk> diff --git a/filesystems/clamfs/distinfo b/filesystems/clamfs/distinfo new file mode 100644 index 000000000000..de1d9eab16af --- /dev/null +++ b/filesystems/clamfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1651043979 +SHA256 (clamfs-1.2.0.tar.gz) = d391afeedb4e5418f8a65c42598489f55047604c7e3eabf0ee2f44110899e42a +SIZE (clamfs-1.2.0.tar.gz) = 196903 diff --git a/filesystems/clamfs/pkg-descr b/filesystems/clamfs/pkg-descr new file mode 100644 index 000000000000..25c5ebda1e8d --- /dev/null +++ b/filesystems/clamfs/pkg-descr @@ -0,0 +1,10 @@ +ClamFS is a FUSE-based user-space file system for Linux with +on-access anti-virus file scanning through clamd daemon + +Features + - User-space file system + - Configuration stored in XML files + - FUSE used as file system back-end + - Scan files using ClamAV + - ScanCache speeds up file access + - Sends mail to administrator when detect virus diff --git a/filesystems/clamfs/pkg-message b/filesystems/clamfs/pkg-message new file mode 100644 index 000000000000..28c11e54ac06 --- /dev/null +++ b/filesystems/clamfs/pkg-message @@ -0,0 +1,16 @@ +[ +{ type: install + message: <<EOM +In order to use clamfs, you should load fusefs.ko module and start clamd. + +Type: + + sudo kldload fusefs.ko + sudo service clamav-freshclam onestart + sudo service clamav-daemon onestart + +For more info please visit: + https://github.com/burghardt/clamfs#additional-configuration-steps-for-freebsd +EOM +} +] diff --git a/filesystems/cramfs/Makefile b/filesystems/cramfs/Makefile new file mode 100644 index 000000000000..7faf71c22319 --- /dev/null +++ b/filesystems/cramfs/Makefile @@ -0,0 +1,30 @@ +PORTNAME= cramfs +PORTVERSION= 1.1 +PORTREVISION= 1 +CATEGORIES= filesystems sysutils +MASTER_SITES= SF + +MAINTAINER= portmaster@BSDforge.com +COMMENT= Linux Compressed ROM FileSystem +WWW= https://sourceforge.net/projects/cramfs/ + +LICENSE= GPLv2+ +LICENSE_FILE= ${WRKSRC}/COPYING + +USES= gmake + +MAKEFILE= GNUmakefile + +PLIST_FILES= sbin/cramfsck sbin/mkcramfs + +.include <bsd.port.options.mk> + +.if ${OPSYS} == FreeBSD +CFLAGS+= -Wno-error=incompatible-function-pointer-types +.endif + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/cramfsck ${STAGEDIR}${PREFIX}/sbin + ${INSTALL_PROGRAM} ${WRKSRC}/mkcramfs ${STAGEDIR}${PREFIX}/sbin + +.include <bsd.port.mk> diff --git a/filesystems/cramfs/distinfo b/filesystems/cramfs/distinfo new file mode 100644 index 000000000000..766181316d36 --- /dev/null +++ b/filesystems/cramfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905204 +SHA256 (cramfs-1.1.tar.gz) = 133caca2c4e7c64106555154ee0ff693f5cf5beb9421ce2eb86baee997d22368 +SIZE (cramfs-1.1.tar.gz) = 24179 diff --git a/filesystems/cramfs/files/patch-GNUmakefile b/filesystems/cramfs/files/patch-GNUmakefile new file mode 100644 index 000000000000..39ee95d61ca9 --- /dev/null +++ b/filesystems/cramfs/files/patch-GNUmakefile @@ -0,0 +1,10 @@ +--- GNUmakefile.orig Wed Nov 29 12:51:59 2006 ++++ GNUmakefile Wed Nov 29 12:52:06 2006 +@@ -1,5 +1,5 @@ +-CC = gcc +-CFLAGS = -W -Wall -O2 -g ++CC ?= gcc ++CFLAGS ?= -W -Wall -O2 -g + CPPFLAGS = -I. + LDLIBS = -lz + PROGS = mkcramfs cramfsck diff --git a/filesystems/cramfs/files/patch-cramfsck.c b/filesystems/cramfs/files/patch-cramfsck.c new file mode 100644 index 000000000000..9a685b5565dc --- /dev/null +++ b/filesystems/cramfs/files/patch-cramfsck.c @@ -0,0 +1,39 @@ +--- cramfsck.c.orig Wed Nov 29 12:49:40 2006 ++++ cramfsck.c Wed Nov 29 12:51:12 2006 +@@ -47,13 +47,14 @@ + #include <stdlib.h> + #include <errno.h> + #include <string.h> +-#include <sys/sysmacros.h> + #include <utime.h> + #include <sys/ioctl.h> + #define _LINUX_STRING_H_ +-#include <linux/fs.h> + #include <linux/cramfs_fs.h> + #include <zlib.h> ++ ++#define BLKGETSIZE _IO(0x12,96) ++#define MAP_ANONYMOUS 0x20 + + /* Exit codes used by fsck-type programs */ + #define FSCK_OK 0 /* No errors */ +@@ -603,8 +603,17 @@ + } + + if (opt_extract) { +- if (mknod(path, i->mode, devtype) < 0) { +- die(FSCK_ERROR, 1, "mknod failed: %s", path); ++ switch(type) { ++ default: ++ if (mknod(path, i->mode, devtype) < 0) { ++ die(FSCK_ERROR, 1, "mknod failed: %s", path); ++ } ++ break; ++ case 'p': ++ if (mkfifo(path, i->mode) < 0) { ++ die(FSCK_ERROR, 1, "mkfifo failed: %s", path); ++ } ++ break; + } + change_file_status(path, i); + } diff --git a/filesystems/cramfs/files/patch-mkcramfs.c b/filesystems/cramfs/files/patch-mkcramfs.c new file mode 100644 index 000000000000..5e4f1328f7a5 --- /dev/null +++ b/filesystems/cramfs/files/patch-mkcramfs.c @@ -0,0 +1,12 @@ +--- mkcramfs.c.orig Wed Nov 29 12:47:30 2006 ++++ mkcramfs.c Wed Nov 29 12:49:25 2006 +@@ -36,6 +36,9 @@ + #include <linux/cramfs_fs.h> + #include <zlib.h> + ++#define MAP_ANONYMOUS MAP_ANON ++typedef long long loff_t; ++ + /* Exit codes used by mkfs-type programs */ + #define MKFS_OK 0 /* No errors */ + #define MKFS_ERROR 8 /* Operational error */ diff --git a/filesystems/cramfs/pkg-descr b/filesystems/cramfs/pkg-descr new file mode 100644 index 000000000000..827f6c3addcd --- /dev/null +++ b/filesystems/cramfs/pkg-descr @@ -0,0 +1,3 @@ +Cramfs is a Linux filesystem designed to be simple, small, +and to compress things well. It is used on a number of +embedded systems and small devices. diff --git a/filesystems/cryptofs/Makefile b/filesystems/cryptofs/Makefile new file mode 100644 index 000000000000..32a62fa52c02 --- /dev/null +++ b/filesystems/cryptofs/Makefile @@ -0,0 +1,28 @@ +PORTNAME= cryptofs +PORTVERSION= 0.6.0 +PORTREVISION= 7 +CATEGORIES= filesystems +MASTER_SITES= https://BSDforge.com/projects/source/sysutils/fusefs-cryptofs/ +PKGNAMEPREFIX= fusefs- + +MAINTAINER= portmaster@BSDforge.com +COMMENT= Encrypted filesystem for FUSE +WWW= https://BSDforge.com/projects/sysutils/fusefs-cryptofs/ + +LICENSE= GPLv2+ +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libgcrypt.so:security/libgcrypt + +GNU_CONFIGURE= yes +USES= fuse gnome pkgconfig +USE_GNOME= glib20 +DOCS= README cryptofs.conf + +OPTIONS_DEFINE= DOCS + +post-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} + cd ${WRKSRC} && ${INSTALL_DATA} ${DOCS} ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.mk> diff --git a/filesystems/cryptofs/distinfo b/filesystems/cryptofs/distinfo new file mode 100644 index 000000000000..ecdb77dac141 --- /dev/null +++ b/filesystems/cryptofs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905170 +SHA256 (cryptofs-0.6.0.tar.gz) = d884199e38ee09848841dda247db1db0361236b1ce8cc7dd3acb5031f80f6b57 +SIZE (cryptofs-0.6.0.tar.gz) = 352805 diff --git a/filesystems/cryptofs/pkg-descr b/filesystems/cryptofs/pkg-descr new file mode 100644 index 000000000000..1f24e29d4552 --- /dev/null +++ b/filesystems/cryptofs/pkg-descr @@ -0,0 +1,17 @@ +CryptoFS is a encrypted filesystem for Filesystem in Userspace (FUSE) and +the Linux Userland FileSystem (LUFS). Visit http://fuse.sourceforge.net/ +for more information on FUSE, or http://lufs.sourceforge.net/lufs/ for +more information on LUFS. + +CryptoFS will use a normal directory to store files encrypted. The +mountpoint will contain the decrypted files. Every file stored in this +mountpoint will be written encrypted (data and filename) to the directory +that was mounted. If you unmount the directory the encrypted data can only +be access by mounting the directory with the correct key again. Like other +FUSE/LUFS filesystems it does not need root access or any complicated setup +like creating a filesystem on a encrypted disk using the loop device. + +CryptoFS can be build for FUSE, and LUFS. When you build for FUSE you get +a program to mount the filesystem. For LUFS a shared library will be built +that can be used by LUFS's lufsd. Both methods can use the same encrypted +directory. diff --git a/filesystems/cryptofs/pkg-plist b/filesystems/cryptofs/pkg-plist new file mode 100644 index 000000000000..f7ae325d2bbd --- /dev/null +++ b/filesystems/cryptofs/pkg-plist @@ -0,0 +1,3 @@ +bin/cryptofs +%%PORTDOCS%%%%DOCSDIR%%/README +%%PORTDOCS%%%%DOCSDIR%%/cryptofs.conf diff --git a/filesystems/curlftpfs/Makefile b/filesystems/curlftpfs/Makefile new file mode 100644 index 000000000000..6789a2976b05 --- /dev/null +++ b/filesystems/curlftpfs/Makefile @@ -0,0 +1,35 @@ +PORTNAME= curlftpfs +PORTVERSION= 0.9.2 +PORTREVISION= 8 +CATEGORIES= filesystems +MASTER_SITES= SF +PKGNAMEPREFIX= fusefs- +DIST_SUBDIR= ${PORTNAME} + +PATCH_SITES= https://sources.debian.org/data/main/c/curlftpfs/0.9.2-9/debian/patches/ +PATCHFILES= fix-CURLOPT_INFILESIZE.patch \ + free_ftpfs_file-memleak-fix.patch \ + nocache-memleak-fix.patch \ + curlftpfs__no_verify_hostname.patch \ + consistent-feature-flag.patch +PATCH_DIST_STRIP= -p1 + +MAINTAINER= rodrigo@FreeBSD.org +COMMENT= Mount remote FTP directories +WWW= https://curlftpfs.sourceforge.net/ + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libcurl.so:ftp/curl + +USES= fuse gnome pkgconfig +USE_GNOME= glib20 + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX= ${PREFIX}/share + +PLIST_FILES= bin/curlftpfs \ + share/man/man1/${PORTNAME}.1.gz + +.include <bsd.port.mk> diff --git a/filesystems/curlftpfs/distinfo b/filesystems/curlftpfs/distinfo new file mode 100644 index 000000000000..822419798166 --- /dev/null +++ b/filesystems/curlftpfs/distinfo @@ -0,0 +1,13 @@ +TIMESTAMP = 1730467218 +SHA256 (curlftpfs/curlftpfs-0.9.2.tar.gz) = 4eb44739c7078ba0edde177bdd266c4cfb7c621075f47f64c85a06b12b3c6958 +SIZE (curlftpfs/curlftpfs-0.9.2.tar.gz) = 365503 +SHA256 (curlftpfs/fix-CURLOPT_INFILESIZE.patch) = 19734139dfcd5252f5b8005343afba89e809bed6b476901c24dc6c3535e36501 +SIZE (curlftpfs/fix-CURLOPT_INFILESIZE.patch) = 644 +SHA256 (curlftpfs/free_ftpfs_file-memleak-fix.patch) = accd3b5a322bacbf4ccdc8433ce3fc97b6d6284a56ab29daa1579424e7e41f39 +SIZE (curlftpfs/free_ftpfs_file-memleak-fix.patch) = 425 +SHA256 (curlftpfs/nocache-memleak-fix.patch) = 75db4498ca4879078e25e87da4ef57d648f22aee692e3b5ae23030762f6b4ac2 +SIZE (curlftpfs/nocache-memleak-fix.patch) = 1864 +SHA256 (curlftpfs/curlftpfs__no_verify_hostname.patch) = f69d4537447acbb559a14efbd8f880cde2b20f06ca2b0edd2229f8bb319675db +SIZE (curlftpfs/curlftpfs__no_verify_hostname.patch) = 872 +SHA256 (curlftpfs/consistent-feature-flag.patch) = afd83c6640c281517e9aea548f760f911e4f5bf00485645e4368ffb0b90c9784 +SIZE (curlftpfs/consistent-feature-flag.patch) = 1724 diff --git a/filesystems/curlftpfs/files/patch-ftpfs.c b/filesystems/curlftpfs/files/patch-ftpfs.c new file mode 100644 index 000000000000..766e1e826e68 --- /dev/null +++ b/filesystems/curlftpfs/files/patch-ftpfs.c @@ -0,0 +1,304 @@ +--- ftpfs.c.orig 2008-04-29 23:05:47 UTC ++++ ftpfs.c +@@ -257,6 +257,7 @@ static int ftpfs_getdir(const char* path, fuse_cache_d + int err = 0; + CURLcode curl_res; + char* dir_path = get_fulldir_path(path); ++ char* dir_path_uri = path_to_uri(dir_path); + + DEBUG(1, "ftpfs_getdir: %s\n", dir_path); + struct buffer buf; +@@ -264,7 +265,7 @@ static int ftpfs_getdir(const char* path, fuse_cache_d + + pthread_mutex_lock(&ftpfs.lock); + cancel_previous_multi(); +- curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, dir_path); ++ curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, dir_path_uri); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_WRITEDATA, &buf); + curl_res = curl_easy_perform(ftpfs.connection); + pthread_mutex_unlock(&ftpfs.lock); +@@ -278,6 +279,7 @@ static int ftpfs_getdir(const char* path, fuse_cache_d + NULL, NULL, NULL, 0, h, filler); + } + ++ free_uri(dir_path_uri); + free(dir_path); + buf_free(&buf); + return op_return(err, "ftpfs_getdir"); +@@ -287,6 +289,7 @@ static int ftpfs_getattr(const char* path, struct stat + int err; + CURLcode curl_res; + char* dir_path = get_dir_path(path); ++ char* dir_path_uri = path_to_uri(dir_path); + + DEBUG(2, "ftpfs_getattr: %s dir_path=%s\n", path, dir_path); + struct buffer buf; +@@ -294,7 +297,7 @@ static int ftpfs_getattr(const char* path, struct stat + + pthread_mutex_lock(&ftpfs.lock); + cancel_previous_multi(); +- curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, dir_path); ++ curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, dir_path_uri); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_WRITEDATA, &buf); + curl_res = curl_easy_perform(ftpfs.connection); + pthread_mutex_unlock(&ftpfs.lock); +@@ -309,6 +312,7 @@ static int ftpfs_getattr(const char* path, struct stat + err = parse_dir((char*)buf.p, dir_path + strlen(ftpfs.host) - 1, + name, sbuf, NULL, 0, NULL, NULL); + ++ free_uri(dir_path_uri); + free(dir_path); + buf_free(&buf); + if (err) return op_return(-ENOENT, "ftpfs_getattr"); +@@ -329,6 +333,7 @@ static size_t ftpfs_read_chunk(const char* full_path, + int running_handles = 0; + int err = 0; + struct ftpfs_file* fh = get_ftpfs_file(fi); ++ char* full_path_uri = path_to_uri(full_path); /* TODO: optimize bu pushing up conversion to context */ + + DEBUG(2, "ftpfs_read_chunk: %s %p %zu %lld %p %p\n", + full_path, rbuf, size, offset, fi, fh); +@@ -355,7 +360,7 @@ static size_t ftpfs_read_chunk(const char* full_path, + + cancel_previous_multi(); + +- curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path); ++ curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path_uri); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_WRITEDATA, &fh->buf); + if (offset) { + char range[15]; +@@ -444,6 +449,7 @@ static size_t ftpfs_read_chunk(const char* full_path, + + pthread_mutex_unlock(&ftpfs.lock); + ++ free_uri(full_path_uri); + if (err) return CURLFTPFS_BAD_READ; + return size; + } +@@ -497,11 +503,12 @@ int write_thread_ctr = 0; + static void *ftpfs_write_thread(void *data) { + struct ftpfs_file *fh = data; + char range[15]; +- ++ char* full_path_uri = path_to_uri(fh->full_path); /* TODO: optimize bu pushing up conversion to context */ ++ + DEBUG(2, "enter streaming write thread #%d path=%s pos=%lld\n", ++write_thread_ctr, fh->full_path, fh->pos); + + +- curl_easy_setopt_or_die(fh->write_conn, CURLOPT_URL, fh->full_path); ++ curl_easy_setopt_or_die(fh->write_conn, CURLOPT_URL, full_path_uri); + curl_easy_setopt_or_die(fh->write_conn, CURLOPT_UPLOAD, 1); + curl_easy_setopt_or_die(fh->write_conn, CURLOPT_INFILESIZE, -1); + curl_easy_setopt_or_die(fh->write_conn, CURLOPT_READFUNCTION, write_data_bg); +@@ -541,6 +548,8 @@ static void *ftpfs_write_thread(void *data) { + + sem_post(&fh->data_written); /* ftpfs_write may return */ + ++ free_uri(full_path_uri); ++ + return NULL; + } + +@@ -619,16 +628,19 @@ static void free_ftpfs_file(struct ftpfs_file *fh) { + } + + static int buffer_file(struct ftpfs_file *fh) { ++ char* full_path_uri = path_to_uri(fh->full_path); /* TODO: optimize bu pushing up conversion to context */ + // If we want to write to the file, we have to load it all at once, + // modify it in memory and then upload it as a whole as most FTP servers + // don't support resume for uploads. + pthread_mutex_lock(&ftpfs.lock); + cancel_previous_multi(); +- curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, fh->full_path); ++ curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path_uri); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_WRITEDATA, &fh->buf); + CURLcode curl_res = curl_easy_perform(ftpfs.connection); + pthread_mutex_unlock(&ftpfs.lock); + ++ free_uri(full_path_uri); ++ + if (curl_res != 0) { + return -EACCES; + } +@@ -641,10 +653,11 @@ static int create_empty_file(const char * path) + int err = 0; + + char *full_path = get_full_path(path); ++ char* full_path_uri = path_to_uri(full_path); + + pthread_mutex_lock(&ftpfs.lock); + cancel_previous_multi(); +- curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path); ++ curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path_uri); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_INFILESIZE, 0); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_UPLOAD, 1); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_READDATA, NULL); +@@ -654,7 +667,9 @@ static int create_empty_file(const char * path) + + if (curl_res != 0) { + err = -EPERM; +- } ++ } ++ ++ free_uri(full_path_uri); + free(full_path); + return err; + } +@@ -873,6 +888,7 @@ static int ftpfs_chmod(const char* path, mode_t mode) + + struct curl_slist* header = NULL; + char* full_path = get_dir_path(path); ++ char* full_path_uri = path_to_uri(full_path); + char* filename = get_file_name(path); + char* cmd = g_strdup_printf("SITE CHMOD %.3o %s", mode_c, filename); + struct buffer buf; +@@ -883,7 +899,7 @@ static int ftpfs_chmod(const char* path, mode_t mode) + pthread_mutex_lock(&ftpfs.lock); + cancel_previous_multi(); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_POSTQUOTE, header); +- curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path); ++ curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path_uri); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_WRITEDATA, &buf); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_NOBODY, ftpfs.safe_nobody); + CURLcode curl_res = curl_easy_perform(ftpfs.connection); +@@ -894,12 +910,13 @@ static int ftpfs_chmod(const char* path, mode_t mode) + if (curl_res != 0) { + err = -EPERM; + } +- ++ + buf_free(&buf); + curl_slist_free_all(header); ++ free_uri(full_path_uri); + free(full_path); + free(filename); +- free(cmd); ++ free(cmd); + return op_return(err, "ftpfs_chmod"); + } + +@@ -910,6 +927,7 @@ static int ftpfs_chown(const char* path, uid_t uid, gi + + struct curl_slist* header = NULL; + char* full_path = get_dir_path(path); ++ char* full_path_uri = path_to_uri(full_path); + char* filename = get_file_name(path); + char* cmd = g_strdup_printf("SITE CHUID %i %s", uid, filename); + char* cmd2 = g_strdup_printf("SITE CHGID %i %s", gid, filename); +@@ -922,7 +940,7 @@ static int ftpfs_chown(const char* path, uid_t uid, gi + pthread_mutex_lock(&ftpfs.lock); + cancel_previous_multi(); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_POSTQUOTE, header); +- curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path); ++ curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path_uri); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_WRITEDATA, &buf); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_NOBODY, ftpfs.safe_nobody); + CURLcode curl_res = curl_easy_perform(ftpfs.connection); +@@ -936,6 +954,7 @@ static int ftpfs_chown(const char* path, uid_t uid, gi + + buf_free(&buf); + curl_slist_free_all(header); ++ free_uri(full_path_uri); + free(full_path); + free(filename); + free(cmd); +@@ -999,6 +1018,7 @@ static int ftpfs_rmdir(const char* path) { + int err = 0; + struct curl_slist* header = NULL; + char* full_path = get_dir_path(path); ++ char* full_path_uri = path_to_uri(full_path); + char* filename = get_file_name(path); + char* cmd = g_strdup_printf("RMD %s", filename); + struct buffer buf; +@@ -1012,7 +1032,7 @@ static int ftpfs_rmdir(const char* path) { + pthread_mutex_lock(&ftpfs.lock); + cancel_previous_multi(); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_POSTQUOTE, header); +- curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path); ++ curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path_uri); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_WRITEDATA, &buf); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_NOBODY, ftpfs.safe_nobody); + CURLcode curl_res = curl_easy_perform(ftpfs.connection); +@@ -1026,6 +1046,7 @@ static int ftpfs_rmdir(const char* path) { + + buf_free(&buf); + curl_slist_free_all(header); ++ free_uri(full_path_uri); + free(full_path); + free(filename); + free(cmd); +@@ -1036,6 +1057,7 @@ static int ftpfs_mkdir(const char* path, mode_t mode) + int err = 0; + struct curl_slist* header = NULL; + char* full_path = get_dir_path(path); ++ char* full_path_uri = path_to_uri(full_path); + char* filename = get_file_name(path); + char* cmd = g_strdup_printf("MKD %s", filename); + struct buffer buf; +@@ -1046,7 +1068,7 @@ static int ftpfs_mkdir(const char* path, mode_t mode) + pthread_mutex_lock(&ftpfs.lock); + cancel_previous_multi(); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_POSTQUOTE, header); +- curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path); ++ curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path_uri); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_WRITEDATA, &buf); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_NOBODY, ftpfs.safe_nobody); + CURLcode curl_res = curl_easy_perform(ftpfs.connection); +@@ -1060,6 +1082,7 @@ static int ftpfs_mkdir(const char* path, mode_t mode) + + buf_free(&buf); + curl_slist_free_all(header); ++ free_uri(full_path_uri); + free(full_path); + free(filename); + free(cmd); +@@ -1074,6 +1097,7 @@ static int ftpfs_unlink(const char* path) { + int err = 0; + struct curl_slist* header = NULL; + char* full_path = get_dir_path(path); ++ char* full_path_uri = path_to_uri(full_path); + char* filename = get_file_name(path); + char* cmd = g_strdup_printf("DELE %s", filename); + struct buffer buf; +@@ -1084,7 +1108,7 @@ static int ftpfs_unlink(const char* path) { + pthread_mutex_lock(&ftpfs.lock); + cancel_previous_multi(); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_POSTQUOTE, header); +- curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path); ++ curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, full_path_uri); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_WRITEDATA, &buf); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_NOBODY, ftpfs.safe_nobody); + CURLcode curl_res = curl_easy_perform(ftpfs.connection); +@@ -1098,6 +1122,7 @@ static int ftpfs_unlink(const char* path) { + + buf_free(&buf); + curl_slist_free_all(header); ++ free_uri(full_path_uri); + free(full_path); + free(filename); + free(cmd); +@@ -1299,6 +1324,7 @@ static int ftpfs_readlink(const char *path, char *link + int err; + CURLcode curl_res; + char* dir_path = get_dir_path(path); ++ char* dir_path_uri = path_to_uri(dir_path); + + DEBUG(2, "dir_path: %s %s\n", path, dir_path); + struct buffer buf; +@@ -1306,7 +1332,7 @@ static int ftpfs_readlink(const char *path, char *link + + pthread_mutex_lock(&ftpfs.lock); + cancel_previous_multi(); +- curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, dir_path); ++ curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_URL, dir_path_uri); + curl_easy_setopt_or_die(ftpfs.connection, CURLOPT_WRITEDATA, &buf); + curl_res = curl_easy_perform(ftpfs.connection); + pthread_mutex_unlock(&ftpfs.lock); +@@ -1321,6 +1347,7 @@ static int ftpfs_readlink(const char *path, char *link + err = parse_dir((char*)buf.p, dir_path + strlen(ftpfs.host) - 1, + name, NULL, linkbuf, size, NULL, NULL); + ++ free_uri(dir_path_uri); + free(dir_path); + buf_free(&buf); + if (err) return op_return(-ENOENT, "ftpfs_readlink"); diff --git a/filesystems/curlftpfs/files/patch-ftpfs.h b/filesystems/curlftpfs/files/patch-ftpfs.h new file mode 100644 index 000000000000..1f577d3af78a --- /dev/null +++ b/filesystems/curlftpfs/files/patch-ftpfs.h @@ -0,0 +1,11 @@ +--- ftpfs.h.orig 2008-04-25 10:32:30 UTC ++++ ftpfs.h +@@ -75,7 +75,7 @@ extern struct ftpfs ftpfs; + do { if (level <= ftpfs.debug) {\ + int i = 0; \ + while (++i < level) fprintf(stderr, " "); \ +- fprintf(stderr, "%ld ", time(NULL));\ ++ fprintf(stderr, "%lld ", time(NULL));\ + fprintf(stderr, __FILE__ ":%d ", __LINE__);\ + fprintf(stderr, args);\ + }\ diff --git a/filesystems/curlftpfs/files/patch-path__utils.c b/filesystems/curlftpfs/files/patch-path__utils.c new file mode 100644 index 000000000000..7855c90e7043 --- /dev/null +++ b/filesystems/curlftpfs/files/patch-path__utils.c @@ -0,0 +1,75 @@ +--- path_utils.c.orig 2007-11-20 19:27:58 UTC ++++ path_utils.c +@@ -92,3 +92,72 @@ char* get_dir_path(const char* path) { + + return ret; + } ++ ++/* ++ * the chars not needed to be escaped: ++ * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" ++ */ ++static inline int is_unreserved_rfc3986(char c) ++{ ++ int is_locase_alpha = (c >= 'a' && c <= 'z'); ++ int is_upcase_alpha = (c >= 'A' && c <= 'Z'); ++ int is_digit = (c >= '0' && c <= '9'); ++ int is_special = c == '-' ++ || c == '.' ++ || c == '_' ++ || c == '~'; ++ int is_unreserved = is_locase_alpha ++ || is_upcase_alpha ++ || is_digit ++ || is_special; ++ ++ return is_unreserved; ++} ++ ++static inline int is_unreserved(char c) ++{ ++ return is_unreserved_rfc3986(c) || c == '/'; ++} ++ ++char* path_to_uri(const char* path) ++{ ++ static const char hex[] = "0123456789ABCDEF"; ++ size_t path_len = strlen(path); ++ size_t host_len = strlen(ftpfs.host); ++ /* at worst: c -> %XX */ ++ char * encoded_path = malloc (3 * path_len + 1); ++ const char * s = path; ++ char * d = encoded_path; ++ ++ /* ++ * 'path' is always prefixed with 'ftpfs.host' ++ */ ++ memcpy (d, ftpfs.host, host_len); ++ s += host_len; ++ d += host_len; ++ ++ for (; *s; ++s) ++ { ++ char c = *s; ++ if (is_unreserved (c)) ++ { ++ *d++ = c; ++ } ++ else ++ { ++ unsigned int hi = ((unsigned)c >> 4) & 0xF; ++ unsigned int lo = ((unsigned)c >> 0) & 0xF; ++ *d++ = '%'; ++ *d++ = hex[hi]; ++ *d++ = hex[lo]; ++ } ++ } ++ *d = '\0'; ++ ++ return encoded_path; ++} ++ ++void free_uri(char* path) ++{ ++ free(path); ++} diff --git a/filesystems/curlftpfs/files/patch-path__utils.h b/filesystems/curlftpfs/files/patch-path__utils.h new file mode 100644 index 000000000000..8c1c22344c95 --- /dev/null +++ b/filesystems/curlftpfs/files/patch-path__utils.h @@ -0,0 +1,14 @@ +--- path_utils.h.orig 2007-11-20 19:27:58 UTC ++++ path_utils.h +@@ -6,4 +6,11 @@ char* get_full_path(const char* path); + char* get_fulldir_path(const char* path); + char* get_dir_path(const char* path); + ++/* ++ * Transforms UNIX path to RFC3986 encoded path ++ * (CURLOPT_URL accepts only such paths) ++ */ ++char* path_to_uri(const char* path); ++void free_uri(char* path); ++ + #endif /* __CURLFTPFS_PATH_UTILS_H__ */ diff --git a/filesystems/curlftpfs/pkg-descr b/filesystems/curlftpfs/pkg-descr new file mode 100644 index 000000000000..49c7d0da385d --- /dev/null +++ b/filesystems/curlftpfs/pkg-descr @@ -0,0 +1,11 @@ +CurlFtpFS is a filesystem for accessing FTP hosts based on FUSE and +libcurl. + +CurlFtpFS differentiates itself from other FTP filesystems because it +features: + + * SSLv3 and TLSv1 support + * connecting through tunneling HTTP proxies + * automatically reconnection if the server times out + * transform absolute symlinks to point back into the ftp file + system diff --git a/filesystems/darling-dmg/Makefile b/filesystems/darling-dmg/Makefile new file mode 100644 index 000000000000..a965a7139c5c --- /dev/null +++ b/filesystems/darling-dmg/Makefile @@ -0,0 +1,33 @@ +PORTNAME= darling-dmg +DISTVERSIONPREFIX=v +DISTVERSION= 1.0.4 +CATEGORIES= filesystems sysutils + +MAINTAINER= freebsd@sysctl.cz +COMMENT= FUSE module for .dmg files (containing an HFS+ filesystem) +WWW= https://github.com/darlinghq/darling-dmg + +LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= libxml2>0:textproc/libxml2 +LIB_DEPENDS= libicuuc.so:devel/icu + +USES= cmake fuse ssl +USE_GNOME= libxml2 + +USE_GITHUB= yes +GH_ACCOUNT= darlinghq +GH_PROJECT= darling-dmg +GH_TAGNAME= a36bf0c + +PLIST_FILES= bin/darling-dmg \ + lib/libdmg.so + +.include <bsd.port.pre.mk> + +post-patch: + ${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' \ + ${WRKSRC}/CMakeLists.txt + +.include <bsd.port.post.mk> diff --git a/filesystems/darling-dmg/distinfo b/filesystems/darling-dmg/distinfo new file mode 100644 index 000000000000..686997207b39 --- /dev/null +++ b/filesystems/darling-dmg/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1717086354 +SHA256 (darlinghq-darling-dmg-v1.0.4-a36bf0c_GH0.tar.gz) = 94278f67eac84d906410ab46a9364c5c4cf08c2374385c7decf02c79a05d94e1 +SIZE (darlinghq-darling-dmg-v1.0.4-a36bf0c_GH0.tar.gz) = 56210 diff --git a/filesystems/darling-dmg/files/patch-CMakeLists.txt b/filesystems/darling-dmg/files/patch-CMakeLists.txt new file mode 100644 index 000000000000..bfb3590a26cf --- /dev/null +++ b/filesystems/darling-dmg/files/patch-CMakeLists.txt @@ -0,0 +1,16 @@ +--- CMakeLists.txt.orig 2019-07-20 22:33:49 UTC ++++ CMakeLists.txt +@@ -41,7 +41,12 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} + "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/") + + add_definitions(-D_FILE_OFFSET_BITS=64) +-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -ggdb -O0") ++SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") ++ ++if(${CMAKE_SYSTEM_NAME} MATCHES FreeBSD) ++ include_directories("%%LOCALBASE%%//include") ++ link_directories("%%LOCALBASE%%/lib") ++endif() + + include(FindLibxml2) + diff --git a/filesystems/darling-dmg/pkg-descr b/filesystems/darling-dmg/pkg-descr new file mode 100644 index 000000000000..0a7d431c5991 --- /dev/null +++ b/filesystems/darling-dmg/pkg-descr @@ -0,0 +1,7 @@ +FUSE module for .dmg files (containing an HFS+ filesystem) + +Supported file types + +* DMG (UDIF) files containing an Apple Disk Image. +* Apple Disk Images containing an HFS+/HFSX file system. +* HFS+/HFSX file systems (incl. file systems embedded within HFS). diff --git a/filesystems/dsbmc-cli/Makefile b/filesystems/dsbmc-cli/Makefile new file mode 100644 index 000000000000..618c45a973a4 --- /dev/null +++ b/filesystems/dsbmc-cli/Makefile @@ -0,0 +1,22 @@ +PORTNAME= dsbmc-cli +PORTVERSION= 0.4 +PORTREVISION= 1 +CATEGORIES= filesystems sysutils +MASTER_SITES= http://freeshell.de/~mk/download/ + +MAINTAINER= mk@nic-nac-project.org +COMMENT= Command-line client for DSBMD +WWW= https://freeshell.de/~mk/projects/dsbmc-cli.html + +LICENSE= BSD2CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE + +RUN_DEPENDS= dsbmd>=0.3:filesystems/dsbmd + +USES= tar:tgz + +MAKE_ARGS= MANDIR="${PREFIX}/share/man/man1" + +PLIST_FILES= bin/dsbmc-cli share/man/man1/dsbmc-cli.1.gz + +.include <bsd.port.mk> diff --git a/filesystems/dsbmc-cli/distinfo b/filesystems/dsbmc-cli/distinfo new file mode 100644 index 000000000000..4df195151c9a --- /dev/null +++ b/filesystems/dsbmc-cli/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1559776172 +SHA256 (dsbmc-cli-0.4.tgz) = 68b081f9d6634a57ac8f317af7f0523cd04505790e6a5680a8c26e43bac308a6 +SIZE (dsbmc-cli-0.4.tgz) = 21308 diff --git a/filesystems/dsbmc-cli/pkg-descr b/filesystems/dsbmc-cli/pkg-descr new file mode 100644 index 000000000000..676ace3523cf --- /dev/null +++ b/filesystems/dsbmc-cli/pkg-descr @@ -0,0 +1,4 @@ +dsbmc-cli is a command-line client for DSBMD that provides a simple interface +to query information about storage devices, and to send requests to mount, +unmount and eject these. Furthermore, it can be used as automounter and +autounmounter. diff --git a/filesystems/dsbmc/Makefile b/filesystems/dsbmc/Makefile new file mode 100644 index 000000000000..dc7efcab0ba1 --- /dev/null +++ b/filesystems/dsbmc/Makefile @@ -0,0 +1,24 @@ +PORTNAME= dsbmc +DISTVERSION= 1.2 +PORTREVISION= 1 +CATEGORIES= filesystems sysutils + +MAINTAINER= mk@nic-nac-project.org +COMMENT= Qt client for DSBMD that lets you mount media, and more +WWW= https://github.com/mrclksr/DSBMC + +LICENSE= BSD2CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE + +RUN_DEPENDS= dsbmd>=0.3:filesystems/dsbmd + +USES= compiler:c++11-lang desktop-file-utils gl qmake qt:5 tar:tgz + +USE_GL= gl +USE_QT= buildtools:build core gui linguisttools:build widgets + +USE_GITHUB= yes +GH_ACCOUNT= mrclksr +GH_PROJECT= DSBMC + +.include <bsd.port.mk> diff --git a/filesystems/dsbmc/distinfo b/filesystems/dsbmc/distinfo new file mode 100644 index 000000000000..54db0704df9e --- /dev/null +++ b/filesystems/dsbmc/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1612973352 +SHA256 (mrclksr-DSBMC-1.2_GH0.tar.gz) = 511c2e2454290614c526872c9abeaf127a7d074b2acec5edf4a02cac2bb324f5 +SIZE (mrclksr-DSBMC-1.2_GH0.tar.gz) = 38680 diff --git a/filesystems/dsbmc/files/patch-src_mainwin.cpp b/filesystems/dsbmc/files/patch-src_mainwin.cpp new file mode 100644 index 000000000000..eb6e5ef3efba --- /dev/null +++ b/filesystems/dsbmc/files/patch-src_mainwin.cpp @@ -0,0 +1,13 @@ +Add Qt5.14 compatibility + +--- src/mainwin.cpp.orig 2020-04-04 08:18:00 UTC ++++ src/mainwin.cpp +@@ -27,6 +27,8 @@ + #include <QSpinBox> + #include <QMenuBar> + #include <QMessageBox> ++#include <QMoveEvent> ++#include <QResizeEvent> + #include <QStatusBar> + #include <errno.h> + diff --git a/filesystems/dsbmc/pkg-descr b/filesystems/dsbmc/pkg-descr new file mode 100644 index 000000000000..89f7c093e72d --- /dev/null +++ b/filesystems/dsbmc/pkg-descr @@ -0,0 +1,2 @@ +DSBMC is a Qt client for DSBMD. It allows you to mount, unmount, open media +in a file manager, set the reading speed of a CD/DVD or play a CD/DVD. diff --git a/filesystems/dsbmc/pkg-plist b/filesystems/dsbmc/pkg-plist new file mode 100644 index 000000000000..8eb4f23eed53 --- /dev/null +++ b/filesystems/dsbmc/pkg-plist @@ -0,0 +1,3 @@ +bin/dsbmc +share/applications/dsbmc.desktop +%%DATADIR%%/dsbmc_de.qm diff --git a/filesystems/dsbmd/Makefile b/filesystems/dsbmd/Makefile new file mode 100644 index 000000000000..915d7182d96a --- /dev/null +++ b/filesystems/dsbmd/Makefile @@ -0,0 +1,43 @@ +PORTNAME= dsbmd +PORTVERSION= 1.11.4 +CATEGORIES= filesystems sysutils + +MAINTAINER= mk@nic-nac-project.org +COMMENT= Media mounting daemon +WWW= https://github.com/mrclksr/DSBMD + +LICENSE= BSD2CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= tar:tgz + +USE_RC_SUBR= dsbmd + +USE_GITHUB= yes +GH_ACCOUNT= mrclksr +GH_PROJECT= DSBMD + +PLIST_FILES= "@sample etc/dsbmd.conf.sample" \ + libexec/dsbmd + +PORTDOCS= readme.mdoc + +OPTIONS_DEFINE= DOCS EXFAT EXT4 HFS LKL MTP NTFS PTP +OPTIONS_DEFAULT= EXT4 MTP NTFS PTP + +EXFAT_DESC= exFAT filesystem support +EXT4_DESC= Ext4 filesystem support +HFS_DESC= HFS+ support +LKL_DESC= Btrfs and XFS support through Linux Kernel Library +NTFS_DESC= Mount NTFS filesystems with read and write support +PTP_DESC= Picture Transfer Protocol support + +EXFAT_RUN_DEPENDS= mount.exfat:filesystems/exfat +EXT4_RUN_DEPENDS= fuse-ext2:filesystems/ext2 +HFS_RUN_DEPENDS= hfsfuse:filesystems/hfsfuse +LKL_RUN_DEPENDS= lklfuse:filesystems/lkl +MTP_RUN_DEPENDS= jmtpfs:filesystems/jmtpfs +NTFS_RUN_DEPENDS= ntfs-3g:filesystems/ntfs +PTP_RUN_DEPENDS= gphotofs:filesystems/gphotofs + +.include <bsd.port.mk> diff --git a/filesystems/dsbmd/distinfo b/filesystems/dsbmd/distinfo new file mode 100644 index 000000000000..893dc203c2e4 --- /dev/null +++ b/filesystems/dsbmd/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1618517134 +SHA256 (mrclksr-DSBMD-1.11.4_GH0.tar.gz) = 8efd286bb21f516f1285602ba052212e200392b06a1979ca0338f05d65a8535d +SIZE (mrclksr-DSBMD-1.11.4_GH0.tar.gz) = 53458 diff --git a/filesystems/dsbmd/files/dsbmd.in b/filesystems/dsbmd/files/dsbmd.in new file mode 100644 index 000000000000..95eb922d3c64 --- /dev/null +++ b/filesystems/dsbmd/files/dsbmd.in @@ -0,0 +1,44 @@ +#!/bin/sh + +# PROVIDE: dsbmd +# REQUIRE: LOGIN devfs devd mountlate +# KEYWORD: shutdown +# +# Add these lines to /etc/rc.conf.local or /etc/rc.conf +# to enable this service: +# +# dsbmd_enable (bool): Set to NO by default. +# Set it to YES to enable dsbmd. +# + +. /etc/rc.subr + +name=dsbmd +command=%%PREFIX%%/libexec/dsbmd +rcvar=dsbmd_enable +pidfile=/var/run/dsbmd.pid +stop_cmd=dsbmd_stop + +load_rc_config $name + +: ${dsbmd_enable:="NO"} + +dsbmd_stop() +{ + if [ -f ${pidfile} ]; then + echo "Stopping ${name}." + pid=$(cat ${pidfile}) + n=0 + while [ $n -lt 5 ]; do + kill ${pid} 2>/dev/null || return 0 + n=$(($n + 1)) + sleep 1 + done + kill -KILL ${pid} 2>/dev/null + else + echo "${name} is not running." + return 1 + fi +} + +run_rc_command "$1" diff --git a/filesystems/dsbmd/pkg-descr b/filesystems/dsbmd/pkg-descr new file mode 100644 index 000000000000..0829e6d49107 --- /dev/null +++ b/filesystems/dsbmd/pkg-descr @@ -0,0 +1,9 @@ +DSBMD is a media/filesystem type detecting daemon that allows clients to mount +storage devices. + +DSBMD watches the mount table for changes, monitors devd events for new storage +devices, polls CD/DVD drives and card readers for media change events, deter- +mines media types, volume names, and filesystem types. Mountable devices, +changes in the mount table as well as device add/remove events and altered +states of mountable devices are presented to clients. Clients can request DSBMD +to mount, unmount, and eject media, or set the CD/DVD reading speed. diff --git a/filesystems/e2fsprogs-core/Makefile b/filesystems/e2fsprogs-core/Makefile new file mode 100644 index 000000000000..03e90db801f3 --- /dev/null +++ b/filesystems/e2fsprogs-core/Makefile @@ -0,0 +1,331 @@ +PORTNAME= e2fsprogs +PORTVERSION= 1.47.1 +PORTREVISION?= 0 # NOTE: when bumping PORTREVISION, also bump ../e2fsprogs/Makefile! +CATEGORIES?= filesystems sysutils +MASTER_SITES= KERNEL_ORG/linux/kernel/people/tytso/${PORTNAME}/v${PORTVERSION} + +MAINTAINER?= mandree@FreeBSD.org +COMMENT?= Utilities & library to manipulate ext2/3/4 filesystems +WWW= https://e2fsprogs.sourceforge.net/ + +LICENSE?= GPLv2+ +.if !defined(_no_license_file) +LICENSE_FILE?= ${WRKSRC}/NOTICE +.endif +LICENSE_DISTFILES_GPLv2+ = ${DISTNAME}${EXTRACT_SUFX} + +USES= cpe gmake makeinfo pkgconfig tar:xz +CPE_VENDOR= e2fsprogs_project +USE_CSTD= gnu99 +# this seems a bit redundant to the --rpath below, but +# the latter should be more robust in case someone needs +# to deal with the file systems from a system not yet fully booted. +.if !defined(PKGNAMESUFFIX) +USE_LDCONFIG= ${PREFIX}/lib/e2fsprogs +.endif +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX= ${PREFIX}/share + +# while we use the system blkid, we need to --enable-libblkid +# so that the tools get built: +CONFIGURE_ARGS?=--disable-fsck \ + --disable-e2initrd-helper \ + --disable-libuuid \ + --disable-uuidd \ + --enable-libblkid \ + --enable-elf-shlibs \ + --libdir='${PREFIX}/lib/e2fsprogs/' \ + --includedir='${PREFIX}/include/e2fsprogs/' \ + --with-root-prefix='${PREFIX}' \ + LDFLAGS='${LDFLAGS} -L${LOCALBASE}/lib -Wl,--rpath -Wl,${LOCALBASE}/lib/e2fsprogs' +CONFIGURE_ENV?= LIBS='-Wl,--as-needed ${LIBS} -lexecinfo -lelf' +CPPFLAGS+= ${_FUSEFS_CFLAGS} -I${WRKSRC}/lib -I${LOCALBASE}/include +CFLAGS+= -Wno-unused-command-line-argument # -D_FILE_OFFSET_BITS=64 # the latter for fuse-libs +MAKE_ARGS+= pkgconfigdir='${PREFIX}/libdata/pkgconfig' +MAKE_ENV+= CHECK_CMD=@true + +PORTSCOUT= ignore:1 # cannot handle the version in the directory + +.if !defined(MASTERDIR) +CPPFLAGS+= -D__GNUC_PREREQ\(a,b\)=1 + +INSTALL_TARGET= install install-libs + +OPTIONS_DEFINE= DOCS NLS FUSEFS PARALLELTESTS SLOWTESTS BASHTESTS LIBUNWIND +OPTIONS_EXCLUDE+= EXAMPLES +OPTIONS_SUB= yes + +OPTIONS_SINGLE= SELFTEST +OPTIONS_SINGLE_SELFTEST= NOTESTS SMALLTESTS ALLTESTS +OPTIONS_DEFAULT= SMALLTESTS +FUSEFS_DESC= Build user-land ext2/3/4 FUSE module (slow!) +SELFTEST_DESC= Choose which set of self-tests to run +NOTESTS_DESC= Do not run any self-tests (Tier-1, DISCOURAGED) +SMALLTESTS_DESC=Run tests that need <500 MB disk space (DEFAULT) +ALLTESTS_DESC= Run most self-tests (needs more RAM/disk space) +PARALLELTESTS_DESC= Parallelize self-tests (needs more disk space) +SLOWTESTS_DESC= Enable slow tests that are skipped by default +BASHTESTS_DESC= Enable tests that require the GNU bash shell +LIBUNWIND_DESC= Backtrace with libunwind (do set WITH_DEBUG_PORTS+=${PKGORIGIN}!) + +FUSEFS_CONFIGURE_ENABLE= fuse2fs +FUSEFS_USES= fuse:3 +# we can't use FUSEFS_CFLAGS, see below for workaround +FUSEFS_LIBS= -Wl,--as-needed -lfuse3 -lpthread +FUSEFS_LDFLAGS= -L${LOCALBASE}/lib + +NLS_USES= gettext iconv:build + +BASHTESTS_BUILD_DEPENDS= ${BASH_CMD}:shells/bash +BASH_CMD= ${LOCALBASE}/bin/bash + +LIB_DEPENDS+= libblkid.so:filesystems/e2fsprogs-libblkid +LIB_DEPENDS+= libuuid.so:misc/e2fsprogs-libuuid + +LIBUNWIND_LIB_DEPENDS= libunwind.so:devel/libunwind +LIBUNWIND_LIBS+= -L${LOCALBASE}/lib -lunwind +LIBUNWIND_LDFLAGS+= -rdynamic +LIBUNWIND_EXTRA_PATCHES=${FILESDIR}/extrapatch-e2fsck_sigcatcher.c + +PORTDOCS= NOTICE README RELEASE-NOTES SUBMITTING-PATCHES +.endif + +# even under DEVELOPER, no REINPLACE_CMD warnings desired +# it simply makes no sense to warn about dozens of files +# for systematic edits that run over files that don't need the edits. +# a "warn if nothing was edited by one command" would be acceptable, +# but until we have that in the framework, just +# avoid Tools/scripts/sed_checked altogether: +REINPLACE_CMD= ${SED} ${REINPLACE_ARGS} + +PKGDEINSTALL= ${PKGINSTALL} + +MAKE_ARGS+= V=1 + +.include <bsd.port.options.mk> + +.if ${MASTERDIR} == ${.CURDIR} +PKGNAMESUFFIX= -core +.endif + +.if !empty(PORT_OPTIONS:MFUSEFS) +# this dance is required becuse the -I must go before the default -I${LOCALBASE}/include, so we can't use FUSEFS_CFLAGS +_FUSEFS_CFLAGS= -I${LOCALBASE}/include/fuse3 +.else +_FUSEFS_CFLAGS= +.endif + +. if ! empty(ARCH:Mpowerpc*) +# Fix powerpc64/powerpc SIGSEGV, +# see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=231570 (ppc64) +# see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242798 (ppc32 - untested) +USES+= compiler:c11 +. endif + +.if empty(PORT_OPTIONS:MNOTESTS) && ${MASTERDIR} == ${.CURDIR} +USES+= perl5 +USE_PERL5= build +.endif + +.include <bsd.port.pre.mk> + +.if ${PORT_OPTIONS:MNLS} +. if empty(ICONV_LIB) +libintl= ${LOCALBASE}/lib/libintl.a +. else +libintl= ${LOCALBASE}/lib/libintl.a ${LOCALBASE}/lib/libiconv.a +. endif +.else +CONFIGURE_ARGS+=--disable-nls +libintl= +.endif + +.if ${MASTERDIR} == ${.CURDIR} && (${ARCH} == "aarch64" || ${ARCH} == "riscv64") +EXTRA_PATCHES+= ${FILESDIR}/extrapatch-no-sbrk +.endif + +post-patch:: +.if !empty(DISTFILES) + @${REINPLACE_CMD} -e 's/<malloc\.h>/<stdlib.h>/' ${WRKSRC}/*/*.c + @${REINPLACE_CMD} -e 's,/etc/blkid.tab,${ETCDIR}/blkid.tab,' ${WRKSRC}/misc/blkid* ${WRKSRC}/lib/blkid/blkidP.h + @${REINPLACE_CMD} -E -e 's/__GNUC_PREREQ\>/__GNUC_PREREQ__/' ${WRKSRC}/*/*/*.[ch] ${WRKSRC}/*/*.c +. if empty(PORT_OPTIONS:MALLTESTS) +. for i in \ + d_fallocate_blkmap \ + f_baddir \ + f_bbfile \ + f_convert_bmap \ + f_detect_junk \ + f_inode_ea_collision \ + f_lpffile \ + f_no_cache_corrupt_inode \ + f_opt_extent \ + j_corrupt_descr_csum \ + m_bigjournal \ + m_hugefile_slack \ + m_offset \ + m_raid_opt \ + r_32to64bit \ + r_32to64bit_expand_full \ + r_32to64bit_meta \ + r_32to64bit_move_itable \ + r_64to32bit \ + r_64to32bit_meta \ + r_expand_full \ + r_min_itable \ + t_change_uuid_mounted \ + t_dangerous \ + t_disable_changed_csum_seed_mounted \ + t_disable_mcsum \ + t_disable_mcsum_noinitbg \ + t_disable_mcsum_yesinitbg \ + t_enable_mcsum \ + t_enable_mcsum_initbg \ + t_iexpand_full \ + t_iexpand_mcsum \ + t_uninit_bg_rm \ + u_dryrun \ + u_mke2fs_opt_offset + @${MV} ${WRKSRC}/tests/${i} ${WRKSRC}/tests/disabled_test-${i} +. endfor +. endif +. if ${PORT_OPTIONS:MBASHTESTS} + ${REINPLACE_CMD} -e 's}^SHELL *=.*}SHELL = ${_CHECK_SHELL}}' ${WRKSRC}/MCONFIG.in +. else +. for i in f_large_dir + @${MV} ${WRKSRC}/tests/${i} ${WRKSRC}/tests/disabled_test-${i} +. endfor +. endif +.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 !empty(PORT_OPTIONS:MNOTESTS) && (${OPSYS} == FreeBSD) && (${OSVERSION} >= 1500000 || (${ARCH} != amd64)) +BROKEN= it was not tested on your system by the maintainer; you must run self-tests +.endif + +pre-build: +# fix up Makefile ordering for parallel builds + cd ${WRKSRC}/lib/et && ${DO_MAKE_BUILD} compile_et + cd ${WRKSRC}/lib/ss && _ET_DIR_OVERRIDE=../et ../et/compile_et ss_err.et \ + && ${REINPLACE_CMD} -f ${FILESDIR}/fix-ss_err.h.sed ss_err.h + cd ${WRKSRC}/lib/support && ${DO_MAKE_BUILD} prof_err.h + +.if ${PORT_OPTIONS:MPARALLELTESTS} +_CHECK_JOBS=${_MAKE_JOBS} +.else +_CHECK_JOBS= +.endif + +_checkaddargs= +.if ${PORT_OPTIONS:MBASHTESTS} +_CHECK_SHELL=${LOCALBASE}/bin/bash +_checkaddargs+=--eval SHELL:=${BASH_CMD} +.else +_CHECK_SHELL=${SH} +.endif + +.if !defined(TMPDIR) +_checkaddargs+=TMPDIR=${WRKDIR}/tmp +.endif + +.if ${PORT_OPTIONS:MSLOWTESTS} +_check_target=SKIP_SLOW_TESTS= check +_check_timeout=7200 +.else +_check_target=check +_check_timeout=180 +.endif + +.if ${PORT_OPTIONS:MLIBUNWIND} +_staticlibs+=${LOCALBASE}/lib/libunwind.a /usr/lib/liblzma.a /usr/lib/libmd.a +.endif + +post-build: +# Relink e2fsck statically - We need to make sure that tools for the root file +# system are statically linked against anything that is outside the root fs, +# else we're in trouble if e2fsck is needed for boot: +# (we don't use e2fsck.static, since we can link libc.so dynamically) +# NOTE: we need to link libgcc statically, it might be under /usr/local! +# => do not add a -Bdynamic - but instead list the dynamic libraries +# before the -Bstatic + cd ${WRKSRC}/e2fsck && ${RM} -f e2fsck \ + && ${MAKE_CMD} e2fsck V=1 \ + LIBS="-static-libgcc -lc -Bstatic ../lib/libsupport.a ../lib/libext2fs.a ../lib/libcom_err.a \ + ${_staticlibs} /usr/lib/libexecinfo.a /usr/lib/libelf.a \ + ${LOCALBASE}/lib/libblkid.a ${LOCALBASE}/lib/libuuid.a ${libintl} ../lib/libe2p.a " \ + && ${STRIP_CMD} e2fsck +# Regression check: avoid a port (not upstream!) regression from 1.40.5, +# check that e2fsck isn't dynalinked against anything but libc.so: + @${ECHO_CMD} -n "===> checking that e2fsck depends on no shared objects outside /lib: " + @a="$$(ldd ${WRKSRC}/e2fsck/e2fsck 2>/dev/null \ + | ${GREP} -v 'not a dynamic executable' \ + | ${GREP} '=>' \ + | ${AWK} '{print $$3;}' \ + | ${EGREP} -v '^/lib/lib.*\.so\.' || :)"; \ + if test "x$$a" = "x" ; then echo 'PASS' ; else \ + echo 'FAIL' ; echo '===> e2fsck depends on:' ; echo "$$a" ; exit 1 ; fi +# Update translation binary files +.if ${PORT_OPTIONS:MNLS} + cd ${WRKSRC}/po && ${MAKE_CMD} update-gmo +.endif +# Build fsck(8) wrapper + ${CC} ${CPPFLAGS} ${CFLAGS} ${LDFLAGS} -s ${LIBS} \ + -o ${WRKSRC}/fsck_ext2fs ${FILESDIR}/fsck_ext2fs.c +# While the ${MAKE} check can take a minute on an end user's system, the +# correctness of tools such as e2fsck is critical to the health of the +# file systems. The upstream is not using any *BSD as his development +# system, and therefore let's exercise due diligence in running the self- +# test on each and every system and not just package building hosts. +# There have been subtle failures induced by Linux-isms in the past. +# -- Matthias Andree, package maintainer, 2007-09-18 +.if empty(PORT_OPTIONS:MNOTESTS) + @${ECHO_CMD} '===> Running e2fsprogs self-test suite' +# do not add -j options unconditionally to ${MAKE_CMD} below, this might break +# due to excessive disk space use. + cd ${WRKSRC}/tests && \ + ulimit -t ${_check_timeout} && \ + ${MKDIR} ${WRKDIR}/tmp && \ + ${SETENV} e2fsprogs_inhibit_SIGINFO=1 BLKID_FILE=${WRKDIR}/tmp/blkid.tab SHELL=${_CHECK_SHELL} \ + ${MAKE_CMD} ${_check_target} ${_CHECK_JOBS} ${_checkaddargs} \ + || { head -n30000 ${WRKSRC}/tests/*.failed 2>/dev/null ; exit 1 ; } +.else + @${ECHO_CMD} '===> SKIPPING e2fsprogs self-test suite (DISCOURAGED!)' +.endif + +post-install: + ${INSTALL_PROGRAM} ${WRKSRC}/fsck_ext2fs ${STAGEDIR}${PREFIX}/sbin/ + ${LN} -fs e2fsck ${STAGEDIR}${PREFIX}/sbin/fsck.ext2 + ${LN} -fs e2fsck ${STAGEDIR}${PREFIX}/sbin/fsck.ext3 + ${LN} -fs e2fsck ${STAGEDIR}${PREFIX}/sbin/fsck.ext4 + # now the remainder of the usual post-install jobs: + ${INSTALL_MAN} ${FILESDIR}/fsck_ext2fs.8 ${STAGEDIR}${PREFIX}/share/man/man8/ +.if ${PORT_OPTIONS:MDOCS} + ${MKDIR} ${STAGEDIR}${DOCSDIR} +.for i in ${PORTDOCS} + ${INSTALL_DATA} ${WRKSRC}/${i} ${STAGEDIR}${DOCSDIR} +.endfor +.endif + # remove or relocate files installed by other ports already, or shadowing system files: + cd ${STAGEDIR}${PREFIX} && \ + ${XARGS} <${FILESDIR}/unwanted ${RM} && \ + ${RMDIR} include/e2fsprogs/blkid + ${MV} ${STAGEDIR}${PREFIX}/bin/compile_et ${STAGEDIR}${PREFIX}/bin/e2fsprogs-compile_et + ${MV} ${STAGEDIR}${PREFIX}/share/man/man1/compile_et.1 ${STAGEDIR}${PREFIX}/share/man/man1/e2fsprogs-compile_et.1 + ${MKDIR} ${STAGEDIR}${DATADIR}/et/ + ${MV} ${STAGEDIR}${PREFIX}/share/et/* ${STAGEDIR}${DATADIR}/et/ + ${REINPLACE_CMD} -e 's}^DIR=.*$$}DIR=${DATADIR}/et}' -i '' ${STAGEDIR}${PREFIX}/bin/e2fsprogs-compile_et + ${RMDIR} ${STAGEDIR}${PREFIX}/share/et + ${MV} -f ${STAGEDIR}${PREFIX}/share/man/man3/com_err.3 \ + ${STAGEDIR}${PREFIX}/share/man/man3/e2fsprogs-com_err.3 + ${RM} ${STAGEDIR}${PREFIX}/share/man/man3/libblkid.3 + +# +# the next line closes .if ${MASTERDIR} == ${.CURDIR} +.endif + +.include <bsd.port.post.mk> diff --git a/filesystems/e2fsprogs-core/distinfo b/filesystems/e2fsprogs-core/distinfo new file mode 100644 index 000000000000..fba31cb081b8 --- /dev/null +++ b/filesystems/e2fsprogs-core/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1717066777 +SHA256 (e2fsprogs-1.47.1.tar.xz) = 5a33dc047fd47284bca4bb10c13cfe7896377ae3d01cb81a05d406025d99e0d1 +SIZE (e2fsprogs-1.47.1.tar.xz) = 7271444 diff --git a/filesystems/e2fsprogs-core/files/extrapatch-e2fsck_sigcatcher.c b/filesystems/e2fsprogs-core/files/extrapatch-e2fsck_sigcatcher.c new file mode 100644 index 000000000000..10288de1dc58 --- /dev/null +++ b/filesystems/e2fsprogs-core/files/extrapatch-e2fsck_sigcatcher.c @@ -0,0 +1,19 @@ +--- e2fsck/sigcatcher.c.orig 2020-01-06 23:10:17 UTC ++++ e2fsck/sigcatcher.c +@@ -17,6 +17,7 @@ + #ifdef HAVE_EXECINFO_H + #include <execinfo.h> + #endif ++#include <libunwind.h> + + #include "e2fsck.h" + +@@ -376,7 +377,7 @@ static void die_signal_handler(int signum, siginfo_t * + void *stack_syms[32]; + int frames; + +- frames = backtrace(stack_syms, 32); ++ frames = unw_backtrace(stack_syms, 32); + backtrace_symbols_fd(stack_syms, frames, 2); + } + #endif diff --git a/filesystems/e2fsprogs-core/files/extrapatch-no-sbrk b/filesystems/e2fsprogs-core/files/extrapatch-no-sbrk new file mode 100644 index 000000000000..6aa12d2b05a5 --- /dev/null +++ b/filesystems/e2fsprogs-core/files/extrapatch-no-sbrk @@ -0,0 +1,34 @@ +diff -up ./e2fsck/e2fsck.h.orig ./e2fsck/e2fsck.h +--- ./e2fsck/e2fsck.h.orig 2018-05-16 01:42:44.000000000 +0200 ++++ ./e2fsck/e2fsck.h 2018-07-07 12:50:43.420944000 +0200 +@@ -134,7 +134,7 @@ struct dx_dirblock_info { + #define DX_FLAG_FIRST 4 + #define DX_FLAG_LAST 8 + +-#define RESOURCE_TRACK ++#undef RESOURCE_TRACK + + #ifdef RESOURCE_TRACK + /* +diff -up ./resize/resource_track.c.orig ./resize/resource_track.c +--- ./resize/resource_track.c.orig 2018-05-16 01:42:44.000000000 +0200 ++++ ./resize/resource_track.c 2018-07-07 14:24:54.728576000 +0200 +@@ -27,7 +27,6 @@ void init_resource_track(struct resource + io_stats io_start = 0; + + track->desc = desc; +- track->brk_start = sbrk(0); + gettimeofday(&track->time_start, 0); + #ifdef HAVE_GETRUSAGE + #ifdef sun +@@ -84,9 +83,7 @@ void print_resource_track(ext2_resize_t + kbytes(malloc_info.arena), kbytes(malloc_info.hblkhd), + kbytes(malloc_info.uordblks), kbytes(malloc_info.fordblks)); + #else +- printf("Memory used: %lu, ", +- (unsigned long) (((char *) sbrk(0)) - +- ((char *) track->brk_start))); ++ printf("Memory used: unknown, "); + #endif + #ifdef HAVE_GETRUSAGE + getrusage(RUSAGE_SELF, &r); diff --git a/filesystems/e2fsprogs-core/files/fix-ss_err.h.sed b/filesystems/e2fsprogs-core/files/fix-ss_err.h.sed new file mode 100644 index 000000000000..1b72045c519b --- /dev/null +++ b/filesystems/e2fsprogs-core/files/fix-ss_err.h.sed @@ -0,0 +1,3 @@ +/#define __ss_err_h__/a\ +#include <stdio.h> +#include <com_err.h> diff --git a/filesystems/e2fsprogs-core/files/fsck_ext2fs.8 b/filesystems/e2fsprogs-core/files/fsck_ext2fs.8 new file mode 100644 index 000000000000..3ab4c664f740 --- /dev/null +++ b/filesystems/e2fsprogs-core/files/fsck_ext2fs.8 @@ -0,0 +1,95 @@ +.TH fsck_ext2fs 8 2006-07-02 "Matthias Andree" "FreeBSD Ports" +.\" +.\" fsck_ext2fs.8 - manual page for fsck_ext2fs wrapper +.\" +.\" (C) Copyright 2006 by Matthias Andree <matthias.andree@gmx.de> +.\" +.\" License: This file may be redistributed in accordance with the terms +.\" of the GNU General Public License v2. +.\" +.\" Upstream $Id: fsck_ext2fs.8,v 1.3 2006/07/02 11:45:21 emma Exp $ +.\" +.SH NAME +.B fsck_ext2fs +\- compatibility wrapper for e2fsck +.SH SYNOPSIS +.P +.B fsck_ext2fs +[\fB\-Fpfnyv\fR] [\fB\-b\fR \fIblock\fR] +.SH DESCRIPTION +.P +\fBfsck_ext2fs\fR maps the traditional FreeBSD \fBfsck_ffs\fR options to +options with the same functionality for \fBe2fsck,\fR runs \fBe2fsck\fR +and then maps its exit status to values that FreeBSD understands. +\fBe2fsck\fR is a utility to check and repair ext2 and ext3 file +systems. + +.SH OPTIONS +.IP \fB\-F\fR +(check foreground mode required) Immediately exits with status 1 to tell +\fBfsck\fR that ext2fs cannot be checked in the background. \fBfsck\fR +usually runs \fBfsck_*\fR programs twice, first with \fB\-F\fR to find +out if they can do background checking, then either immediately without +\fB\-F\fR for foreground checking or deferred in the background with +\fB\-B\fR. +.IP \fB\-p\fR +(preen mode) This option suppresses adding the \fB\-f\fR option (unless +\fB\-f\fR is also given) and adds the \fB\-p\fR option to the +\fBe2fsck\fR command line. This causes \fBe2fsck\fR to automatically fix +any filesystem problems that can safely be fixed without operator +intervention. Without this option given, \fBe2fsck\fR will be run with +the \fB\-f\fR option to force a check, since interactive scan and repair +mode is the default on FreeBSD, but not on Linux where \fBe2fsck\fR +comes from. +.IP \fB\-f\fR +(force check) This option forces the check of a clean file system while +preening and is passed to \fBe2fsck\fR verbatim. +.IP \fB\-n\fR +("no" mode) This option causes the file system to be opened in read-only +mode and assume "no" as answer to all questions. This is the only way to +safely run \fBfsck\fR on a mounted ext2 or ext3 file system. This option +is passed to \fBe2fsck\fR verbatim. +.IP \fB\-y\fR +("yes" mode) This option is passed verbatim to \fBe2fsck\fR and causes +it to assume "yes" as answer to all questions. This allows the +non-interactive use of e2fsck but is rather aggressive. Use with care. +.IP \fB\-v\fR +(verbose output) This option is passed verbatim to \fBe2fsck\fR and +causes it to verbosely report its progress. +.IP "\fB\-b\fR \fIblock\fR" +(use alternate super block) This option is passed verbatim to +\fBe2fsck\fR and selects an alternate super block, for use when the +primary super block has been damaged. Please see the \fBe2fsck\fR(8) +manual page for details. + +.SH EXIT STATUS +If errors remain after \fBe2fsck\fR, an invalid option or too many +options have been specified, \fBe2fsck\fR was killed with a signal or +the \fIfork\fB system call failed, \fBfsck_ext2fs\fR exits with status +EXIT_FAILURE (usually 1). If \fBe2fsck\fR cannot be started, exits with +status 127. If the file system is clean after \fBe2fsck\fR operation, +exits with status EXIT_SUCCESS (0). + +.SH NOTES +.P +This utility is merely meant as an adaptor so that \fBe2fsck\fR can be +run during the boot process, it does not support all options that +\fBe2fsck\fR offers. If you need one of its advanced options, please run +\fBe2fsck\fR directly. + +.SH FILES +.TP +.I /sbin/e2fsck +is the location of the \fBe2fsck\fR program to run. + +.SH AUTHOR +.P +Matthias Andree <matthias.andree@gmx.de> wrote the program and this +manual page. +.SH CONFORMING TO +The FreeBSD 6.1 command line interface for \fBfsck_ufs\fR(8). +.SH SEE ALSO +.BR fsck (8), +.BR e2fsck (8) +and +.BR fsck_ufs (8). diff --git a/filesystems/e2fsprogs-core/files/fsck_ext2fs.c b/filesystems/e2fsprogs-core/files/fsck_ext2fs.c new file mode 100644 index 000000000000..9634c414242e --- /dev/null +++ b/filesystems/e2fsprogs-core/files/fsck_ext2fs.c @@ -0,0 +1,145 @@ +/* + * fsck_ext2fs - wrapper for e2fsck on FreeBSD + * Copyright (C) 2004,2006 Matthias Andree <matthias.andree@gmx.de> + * redistributable in accordance with the + * GNU General Public License v2 + * + * Upstream: $Id: fsck_ext2fs.c,v 1.6 2006/07/02 11:37:49 emma Exp $ + * + * format: gindent -kr + */ + +#include <sys/types.h> +#include <unistd.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <sys/wait.h> +#include <sys/time.h> +#include <sys/resource.h> +#include <errno.h> + +__attribute__ ((noreturn)) +static int die(const char *tag) +{ + perror(tag); + exit(EXIT_FAILURE); +} + +int main(int argc, char **argv) +{ + int ch, i = 1, force = 0, status, verbose = 0, t; + long block = 0; + enum { normal, preen, yes, no } mode = normal; + char *cmd[256]; + pid_t pid; + + cmd[0] = "/sbin/e2fsck"; + while ((ch = getopt(argc, argv, "BFpfnyb:v")) != -1) { + switch (ch) { + case 'p': + mode = preen; + break; + case 'f': + force = 1; + break; + case 'n': + mode = no; + break; + case 'y': + mode = yes; + break; + case 'b': + block = atol(optarg); + break; + case 'v': + verbose++; + break; + case 'F': + /* e2fsck does not support background checking, + * hence exit with nonzero status to force + * the foreground check. */ + exit(1); + case 'B': + default: + fprintf(stderr, "%s: unknown option -%c\n", + argv[0], optopt); + exit(EXIT_FAILURE); + } + } + + if (force) + cmd[i++] = "-f"; + + switch (mode) { + case normal: + /* FreeBSD needs -f to force a check only in context + * with -p -- so map normal to force to match + * expectations */ + if (!force) + cmd[i++] = "-f"; + break; + case yes: + cmd[i++] = "-y"; + break; + case no: + cmd[i++] = "-n"; + break; + case preen: + cmd[i++] = "-p"; + break; + } + + if (block) { + static char b[30]; + + sprintf(b, "-b %ld", block); + cmd[i++] = b; + } + + /* silently limit verbose to 15 so we don't overflow the cmd array */ + if (verbose > 15) + verbose = 15; + + for (t = verbose; t > 1; t--) + cmd[i++] = "-v"; + + while (optind < argc) { + cmd[i++] = argv[optind++]; + /* sanity check so we don't overflow the cmd buffer */ + if (i+1 == sizeof(cmd)/sizeof(cmd[0])) { + errno = E2BIG; + die(argv[0]); + } + } + + cmd[i++] = 0; + + if (verbose) { + for (i=0; cmd[i]; i++) + fputs(cmd[i], stderr), + fputc(' ', stderr); + fputc('\n', stderr); + } + + pid = fork(); + switch (pid) { + case -1: + /* error */ + die("fork"); + break; + case 0: + /* child */ + (void) execv(cmd[0], cmd); + perror("execve"); + _exit(127); + default: + /* parent */ + if (pid != waitpid(pid, &status, 0)) + die("waitpid"); + if (WIFSIGNALED(status) + || (WIFEXITED(status) && WEXITSTATUS(status) >= 4)) + exit(EXIT_FAILURE); + } + exit(EXIT_SUCCESS); +} diff --git a/filesystems/e2fsprogs-core/files/patch-e2fsck__unix.c b/filesystems/e2fsprogs-core/files/patch-e2fsck__unix.c new file mode 100644 index 000000000000..fe98d8988b57 --- /dev/null +++ b/filesystems/e2fsprogs-core/files/patch-e2fsck__unix.c @@ -0,0 +1,78 @@ +// SIGINFO is a Berkeley extension, so we need to +// remove the #define _XOPEN_SOURCE 600 +// It would hide all non-POSIX declarations, including SIGINFO. + +--- e2fsck/unix.c.orig 2024-05-21 02:52:47 UTC ++++ e2fsck/unix.c +@@ -9,8 +9,6 @@ + * %End-Header% + */ + +-#define _XOPEN_SOURCE 600 /* for inclusion of sa_handler in Solaris */ +- + #include "config.h" + #include <stdio.h> + #ifdef HAVE_STDLIB_H +@@ -37,7 +35,7 @@ extern int optind; + #include <sys/ioctl.h> + #endif + #ifdef HAVE_MALLOC_H +-#include <malloc.h> ++#include <stdlib.h> + #endif + #ifdef HAVE_SYS_TYPES_H + #include <sys/types.h> +@@ -608,6 +606,24 @@ static int e2fsck_update_progress(e2fsck_t ctx, int pa + return 0; + } + ++static int e2fsck_progress_once(e2fsck_t ctx, int pass, unsigned long cur, unsigned long max) ++{ ++ char buf[80]; ++ float percent; ++ ++ if (pass == 0) ++ return 0; ++ ++ percent = calc_percent(&e2fsck_tbl, pass, cur, max); ++ e2fsck_simple_progress(ctx, ctx->device_name, ++ percent, 0); ++ ++ printf("\n"); ++ ctx->progress = 0; ++ return 0; ++} ++ ++ + #define PATH_SET "PATH=/sbin" + + /* +@@ -641,6 +657,17 @@ static void signal_progress_on(int sig EXT2FS_ATTR((un + ctx->progress = e2fsck_update_progress; + } + ++static void signal_progress_now(int sig EXT2FS_ATTR((unused))) ++{ ++ e2fsck_t ctx = e2fsck_global_ctx; ++ ++ if (!ctx) ++ return; ++ ++ ctx->progress = e2fsck_progress_once; ++ ctx->progress_fd = 0; ++} ++ + static void signal_progress_off(int sig EXT2FS_ATTR((unused))) + { + e2fsck_t ctx = e2fsck_global_ctx; +@@ -1127,6 +1154,10 @@ static errcode_t PRS(int argc, char *argv[], e2fsck_t + sigaction(SIGUSR1, &sa, 0); + sa.sa_handler = signal_progress_off; + sigaction(SIGUSR2, &sa, 0); ++ sa.sa_handler = signal_progress_now; ++ if (!getenv("e2fsprogs_inhibit_SIGINFO")) { ++ sigaction(SIGINFO, &sa, 0); ++ } + #endif + + /* Update our PATH to include /sbin if we need to run badblocks */ diff --git a/filesystems/e2fsprogs-core/files/patch-lib__uuid__gen_uuid.c b/filesystems/e2fsprogs-core/files/patch-lib__uuid__gen_uuid.c new file mode 100644 index 000000000000..13e7b8c2f6b5 --- /dev/null +++ b/filesystems/e2fsprogs-core/files/patch-lib__uuid__gen_uuid.c @@ -0,0 +1,57 @@ +--- lib/uuid/gen_uuid.c.orig 2024-05-21 02:52:47 UTC ++++ lib/uuid/gen_uuid.c +@@ -92,6 +92,7 @@ + #ifdef HAVE_SYS_RESOURCE_H + #include <sys/resource.h> + #endif ++#include <ifaddrs.h> + + #include "uuidP.h" + #include "uuidd.h" +@@ -288,6 +289,28 @@ static int get_node_id(unsigned char *node_id) + } + } + close(sd); ++#else ++ struct ifaddrs *ifaddrsp, *ifaddrp; ++ unsigned char *a; ++ ++ if (getifaddrs(&ifaddrsp) < 0) ++ return -1; ++ for (ifaddrp = ifaddrsp; ifaddrp != NULL; ifaddrp = ifaddrp->ifa_next) ++ { ++ if (ifaddrp->ifa_addr == NULL) ++ continue; ++ if (ifaddrp->ifa_addr->sa_family != AF_LINK) ++ continue; ++ a = LLADDR((struct sockaddr_dl *)ifaddrp->ifa_addr); ++ if (!a[0] && !a[1] && !a[2] && !a[3] && !a[4] && !a[5]) ++ continue; ++ if (node_id) { ++ memcpy(node_id, a, 6); ++ freeifaddrs(ifaddrsp); ++ return 1; ++ } ++ } ++ freeifaddrs(ifaddrsp); + #endif + return 0; + } +@@ -472,7 +495,7 @@ static void close_all_fds(void) + } + #endif /* defined(USE_UUIDD) && defined(HAVE_SYS_UN_H) */ + +-#if __GNUC_PREREQ (4, 6) ++#if __GNUC_PREREQ__ (4, 6) + #pragma GCC diagnostic push + #if !defined(USE_UUIDD) || !defined(HAVE_SYS_UN_H) + #pragma GCC diagnostic ignored "-Wunused-parameter" +@@ -560,7 +583,7 @@ fail: + #endif + return -1; + } +-#if __GNUC_PREREQ (4, 6) ++#if __GNUC_PREREQ__ (4, 6) + #pragma GCC diagnostic pop + #endif + diff --git a/filesystems/e2fsprogs-core/files/patch-lib_blkid_devname.c b/filesystems/e2fsprogs-core/files/patch-lib_blkid_devname.c new file mode 100644 index 000000000000..9a59112ed239 --- /dev/null +++ b/filesystems/e2fsprogs-core/files/patch-lib_blkid_devname.c @@ -0,0 +1,110 @@ +--- lib/blkid/devname.c.orig 2020-03-21 04:24:04 UTC ++++ lib/blkid/devname.c +@@ -40,6 +40,9 @@ + #include <sys/sysmacros.h> + #endif + #include <time.h> ++#ifdef __FreeBSD__ ++#include <sys/sysctl.h> ++#endif + + #include "blkidP.h" + +@@ -397,11 +400,15 @@ evms_probe_all(blkid_cache cache, int only_if_new) + static int probe_all(blkid_cache cache, int only_if_new) + { + FILE *proc; ++#ifndef __FreeBSD__ + char line[1024]; ++ int ma, mi; ++#else ++ char *line; ++#endif /* __FreeBSD__ */ + char ptname0[129], ptname1[129], *ptname = 0; + char *ptnames[2]; + dev_t devs[2]; +- int ma, mi; + unsigned long long sz; + int lens[2] = { 0, 0 }; + int which = 0, last = 0; +@@ -423,20 +430,68 @@ static int probe_all(blkid_cache cache, int only_if_ne + lvm_probe_all(cache, only_if_new); + #endif + ++#ifndef __FreeBSD__ + proc = fopen(PROC_PARTITIONS, "r"); + if (!proc) + return -BLKID_ERR_PROC; + + while (fgets(line, sizeof(line), proc)) { ++#else ++ size_t len, bufsiz = 4096; ++ char *buf = NULL; ++ ++ for(;;) { ++ buf = realloc(buf, bufsiz); ++ if (!buf) return -BLKID_ERR_MEM; ++ len = bufsiz - 1; ++ if (sysctlbyname("kern.geom.conftxt", buf, &len, NULL, 0)) { ++ if (ENOMEM != errno) { ++ free(buf); ++ return -BLKID_ERR_IO; ++ } ++ bufsiz <<= 1; ++ } else { ++ if (len < bufsiz) buf[len] = '\0'; ++ else buf[bufsiz - 1] = '\0'; ++ break; ++ } ++ } ++ char *str = buf; ++ while ((line = strsep(&str, "\n"))) { ++#endif /* __FreeBSD__ */ + last = which; + which ^= 1; + ptname = ptnames[which]; + ++#ifndef __FreeBSD__ + if (sscanf(line, " %d %d %llu %128[^\n ]", + &ma, &mi, &sz, ptname) != 4) + continue; + devs[which] = makedev(ma, mi); ++#else ++ char type[6]; ++ int dummy; + ++ if (sscanf(line, "%*d %5s %128[^ ] %lld %d", ++ type, ptname, &sz, &dummy) != 4) ++ continue; ++ sz /= 1024; ++ ++ if (strcmp("PART", type) && strcmp("DISK", type)) ++ continue; ++ { ++ struct stat st; ++ char dn[128]; ++ if (snprintf(dn, sizeof dn, "/dev/%s", ptname) >= sizeof dn) ++ continue; ++ ++ if (stat(dn, &st)) ++ continue; ++ ++ devs[which] = st.st_rdev; ++ } ++#endif /* __FreeBSD__ */ ++ + DBG(DEBUG_DEVNAME, printf("read partition name %s\n", ptname)); + + /* Skip whole disk devs unless they have no partitions. +@@ -507,7 +562,11 @@ static int probe_all(blkid_cache cache, int only_if_ne + if (lens[which]) + probe_one(cache, ptname, devs[which], 0, only_if_new); + ++#ifndef __FreeBSD__ + fclose(proc); ++#else ++ free(buf); ++#endif /* __FreeBSD__ */ + blkid_flush_cache(cache); + return 0; + } diff --git a/filesystems/e2fsprogs-core/files/patch-lib_et_com__err.3 b/filesystems/e2fsprogs-core/files/patch-lib_et_com__err.3 new file mode 100644 index 000000000000..bc3b522f46ea --- /dev/null +++ b/filesystems/e2fsprogs-core/files/patch-lib_et_com__err.3 @@ -0,0 +1,11 @@ +--- lib/et/com_err.3.orig 2021-08-19 02:53:01 UTC ++++ lib/et/com_err.3 +@@ -18,6 +18,8 @@ proc = reset_com_err_hook (); + void initialize_XXXX_error_table (); + .fi + .SH DESCRIPTION ++This is the manual page for com_err as bundled with the e2fsprogs package. ++.P + .I Com_err + displays an error message on the standard error stream + .I stderr diff --git a/filesystems/e2fsprogs-core/files/patch-lib_support_plausible.c b/filesystems/e2fsprogs-core/files/patch-lib_support_plausible.c new file mode 100644 index 000000000000..3d23b30e9c8f --- /dev/null +++ b/filesystems/e2fsprogs-core/files/patch-lib_support_plausible.c @@ -0,0 +1,11 @@ +--- lib/support/plausible.c.orig 2020-01-06 23:10:17 UTC ++++ lib/support/plausible.c +@@ -62,7 +62,7 @@ static void *magic_handle; + static int magic_library_available(void) + { + if (!magic_handle) { +- magic_handle = dlopen("libmagic.so.1", RTLD_NOW); ++ magic_handle = dlopen("libmagic.so", RTLD_NOW); + if (!magic_handle) + return 0; + diff --git a/filesystems/e2fsprogs-core/files/patch-lib_support_sort__r.h b/filesystems/e2fsprogs-core/files/patch-lib_support_sort__r.h new file mode 100644 index 000000000000..c01a084feb6b --- /dev/null +++ b/filesystems/e2fsprogs-core/files/patch-lib_support_sort__r.h @@ -0,0 +1,13 @@ +--- lib/support/sort_r.h.orig 2024-05-21 02:52:47 UTC ++++ lib/support/sort_r.h +@@ -238,10 +238,6 @@ static _SORT_R_INLINE void sort_r_simple(void *base, s + + #if defined _SORT_R_BSD + +- /* Ensure qsort_r is defined */ +- extern void qsort_r(void *base, size_t nel, size_t width, void *thunk, +- int (*compar)(void *_thunk, +- const void *_a, const void *_b)); + + #endif + diff --git a/filesystems/e2fsprogs-core/files/patch-misc__Makefile.in b/filesystems/e2fsprogs-core/files/patch-misc__Makefile.in new file mode 100644 index 000000000000..ec0ff218a622 --- /dev/null +++ b/filesystems/e2fsprogs-core/files/patch-misc__Makefile.in @@ -0,0 +1,81 @@ +--- misc/Makefile.in.orig 2021-01-29 22:02:31 UTC ++++ misc/Makefile.in +@@ -38,17 +38,17 @@ MKDIR_P = @MKDIR_P@ + + SPROGS= mke2fs badblocks tune2fs dumpe2fs $(BLKID_PROG) logsave \ + $(E2IMAGE_PROG) @FSCK_PROG@ e2undo +-USPROGS= mklost+found filefrag e2freefrag $(UUIDD_PROG) \ ++USPROGS= mklost+found e2freefrag $(UUIDD_PROG) \ + $(E4DEFRAG_PROG) $(E4CRYPT_PROG) + SMANPAGES= tune2fs.8 mklost+found.8 mke2fs.8 dumpe2fs.8 badblocks.8 \ + e2label.8 $(FINDFS_MAN) $(BLKID_MAN) $(E2IMAGE_MAN) \ +- logsave.8 filefrag.8 e2freefrag.8 e2undo.8 \ +- $(UUIDD_MAN) $(E4DEFRAG_MAN) $(E4CRYPT_MAN) @FSCK_MAN@ \ ++ logsave.8 e2freefrag.8 e2undo.8 \ ++ $(E4DEFRAG_MAN) $(E4CRYPT_MAN) @FSCK_MAN@ \ + e2mmpstatus.8 + FMANPAGES= mke2fs.conf.5 ext4.5 + +-UPROGS= chattr lsattr $(FUSE_PROG) @UUID_CMT@ uuidgen +-UMANPAGES= chattr.1 lsattr.1 @UUID_CMT@ uuidgen.1 ++UPROGS= chattr lsattr $(FUSE_PROG) ++UMANPAGES= chattr.1 lsattr.1 + UMANPAGES+= @FUSE_CMT@ fuse2fs.1 + + LPROGS= @E2INITRD_PROG@ +@@ -154,14 +154,14 @@ profiled: + + mke2fs.conf: $(srcdir)/mke2fs.conf.in + if test -f $(srcdir)/mke2fs.conf.custom.in ; then \ +- cp $(srcdir)/mke2fs.conf.custom.in mke2fs.conf; \ ++ cp $(srcdir)/mke2fs.conf.custom.in mke2fs.conf.dist; \ + else \ +- cp $(srcdir)/mke2fs.conf.in mke2fs.conf; \ ++ cp $(srcdir)/mke2fs.conf.in mke2fs.conf.dist; \ + fi + + default_profile.c: mke2fs.conf $(srcdir)/profile-to-c.awk + $(E) " PROFILE_TO_C mke2fs.conf" +- $(Q) $(AWK) -f $(srcdir)/profile-to-c.awk < mke2fs.conf \ ++ $(Q) $(AWK) -f $(srcdir)/profile-to-c.awk < mke2fs.conf.dist \ + > default_profile.c + findsuper: findsuper.o + $(E) " LD $@" +@@ -612,34 +612,9 @@ install: all $(SMANPAGES) $(UMANPAGES) installdirs + (cd $(DESTDIR)$(man5dir); \ + $(LN) $(LINK_INSTALL_FLAGS) ext4.5 $$i.5); \ + done +- $(Q) if test -f $(DESTDIR)$(root_sysconfdir)/mke2fs.conf; then \ +- if cmp -s $(DESTDIR)$(root_sysconfdir)/mke2fs.conf \ +- mke2fs.conf; then \ +- true; \ +- else \ +- if grep -q ext4dev $(DESTDIR)$(root_sysconfdir)/mke2fs.conf ; then \ +- $(ES) " INSTALL_DATA $(root_sysconfdir)/mke2fs.conf.e2fsprogs-new"; \ +- $(INSTALL_DATA) mke2fs.conf \ +- $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-new; \ +- echo "Warning: installing mke2fs.conf in $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-new"; \ +- echo "Check to see if you need to update your $(root_sysconfdir)/mke2fs.conf"; \ +- else \ +- $(ES) " INSTALL_DATA $(root_sysconfdir)/mke2fs.conf"; \ +- mv $(DESTDIR)$(root_sysconfdir)/mke2fs.conf \ +- $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-old; \ +- $(INSTALL_DATA) mke2fs.conf \ +- $(DESTDIR)$(root_sysconfdir)/mke2fs.conf; \ +- echo "Your mke2fs.conf is too old. Backing up old version in"; \ +- echo "$(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-old. Please check to see"; \ +- echo "if you have any local customizations that you wish to preserve."; \ +- fi; \ +- echo " "; \ +- fi; \ +- else \ +- $(ES) " INSTALL_DATA $(root_sysconfdir)/mke2fs.conf"; \ +- $(INSTALL_DATA) mke2fs.conf \ +- $(DESTDIR)$(root_sysconfdir)/mke2fs.conf; \ +- fi ++ $(Q) $(ES) " INSTALL_DATA $(root_sysconfdir)/mke2fs.conf"; \ ++ $(INSTALL_DATA) mke2fs.conf.dist \ ++ $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.dist + + install-strip: install + $(Q) for i in $(SPROGS); do \ diff --git a/filesystems/e2fsprogs-core/files/patch-misc_blkid.8.in b/filesystems/e2fsprogs-core/files/patch-misc_blkid.8.in new file mode 100644 index 000000000000..c6532a4a1a2e --- /dev/null +++ b/filesystems/e2fsprogs-core/files/patch-misc_blkid.8.in @@ -0,0 +1,17 @@ +--- misc/blkid.8.in.orig 2020-03-21 04:24:04 UTC ++++ misc/blkid.8.in +@@ -144,10 +144,10 @@ option. + Display tokens from only the specified device. It is possible to + give multiple + .I device +-options on the command line. If none is given, all devices which +-appear in +-.I /proc/partitions +-are shown, if they are recognized. ++options on the command line. If none is given, all DISK and PART devices which ++appear in the ++.I kern.geom.conftxt ++sysctl variable are shown, if they are recognized. + .SH "RETURN CODE" + If the specified token was found, or if any tags were shown from (specified) + devices, 0 is returned. If the specified token was not found, or no diff --git a/filesystems/e2fsprogs-core/files/patch-misc_e2fuzz.c b/filesystems/e2fsprogs-core/files/patch-misc_e2fuzz.c new file mode 100644 index 000000000000..a9f56490e5b6 --- /dev/null +++ b/filesystems/e2fsprogs-core/files/patch-misc_e2fuzz.c @@ -0,0 +1,13 @@ +--- misc/e2fuzz.c.orig 2020-03-23 08:29:36 UTC ++++ misc/e2fuzz.c +@@ -278,8 +278,8 @@ static int process_fs(const char *fsname) + c |= 0x80; + if (verbose) + printf("Corrupting byte %lld in block %lld to 0x%x\n", +- off % fs->blocksize, +- off / fs->blocksize, c); ++ (long long)off % fs->blocksize, ++ (long long)off / fs->blocksize, c); + if (dryrun) + continue; + #ifdef HAVE_PWRITE64 diff --git a/filesystems/e2fsprogs-core/files/patch-tests_Makefile.in b/filesystems/e2fsprogs-core/files/patch-tests_Makefile.in new file mode 100644 index 000000000000..a5f9b50df891 --- /dev/null +++ b/filesystems/e2fsprogs-core/files/patch-tests_Makefile.in @@ -0,0 +1,11 @@ +--- tests/Makefile.in.orig 2021-01-29 05:51:02 UTC ++++ tests/Makefile.in +@@ -17,7 +17,7 @@ all:: @DO_TEST_SUITE@ test_one test_script + test_one: $(srcdir)/test_one.in Makefile mke2fs.conf test_data.tmp + @echo "Creating test_one script..." + @[ -f test_one ] && chmod u+w test_one || true +- @echo "#!/bin/sh" > test_one ++ @echo "#!${SHELL}" > test_one + @echo "HTREE=y" >> test_one + @echo "QUOTA=y" >> test_one + @echo "SRCDIR=@srcdir@" >> test_one diff --git a/filesystems/e2fsprogs-core/files/patch-tests_f__detect__junk_script b/filesystems/e2fsprogs-core/files/patch-tests_f__detect__junk_script new file mode 100644 index 000000000000..45b544cf691d --- /dev/null +++ b/filesystems/e2fsprogs-core/files/patch-tests_f__detect__junk_script @@ -0,0 +1,11 @@ +--- tests/f_detect_junk/script.orig 2023-02-07 03:31:53 UTC ++++ tests/f_detect_junk/script +@@ -9,7 +9,7 @@ FSCK_OPT=-fn + IMAGE=$test_dir/image.bz2 + + bzip2 -d < $IMAGE > $TMPFILE +-$DD if=/dev/zero of=$TMPFILE conv=notrunc oflag=append bs=1024k count=16 > /dev/null 2>&1 ++$DD if=/dev/zero of=$TMPFILE conv=notrunc bs=1024k count=16 2>/dev/null >>$TMPFILE + + # Run fsck to fix things? + if [ -x $DEBUGFS_EXE ]; then diff --git a/filesystems/e2fsprogs-core/files/patch-tests_m__offset_script b/filesystems/e2fsprogs-core/files/patch-tests_m__offset_script new file mode 100644 index 000000000000..9cc4232eec3a --- /dev/null +++ b/filesystems/e2fsprogs-core/files/patch-tests_m__offset_script @@ -0,0 +1,11 @@ +--- tests/m_offset/script.orig 2023-02-02 15:57:32 UTC ++++ tests/m_offset/script +@@ -13,7 +13,7 @@ $MKE2FS -F -b 1024 -E offset=524288 "$TMPFILE" 1024 >> + # compute crc of the first and last 512 1k blocks + crc_first2=`$DD if="$TMPFILE" bs=1k count=512 2>/dev/null | $CRCSUM` + crc_last2=`$DD if="$TMPFILE" bs=1k count=512 skip=1536 2>/dev/null | $CRCSUM` +-crc_exp=`yes a | $DD bs=1k count=512 2>/dev/null | $CRCSUM` ++crc_exp=`yes a | $DD bs=1k count=512 iflag=fullblock 2>/dev/null | $CRCSUM` + # a warning should be only emitted by the first mke2fs call + warning=`grep -c "offset specified without an explicit file system size." \ + "$OUT"` diff --git a/filesystems/e2fsprogs-core/files/patch-tests_t__mmp__fail_script b/filesystems/e2fsprogs-core/files/patch-tests_t__mmp__fail_script new file mode 100644 index 000000000000..77fd70e4ccf2 --- /dev/null +++ b/filesystems/e2fsprogs-core/files/patch-tests_t__mmp__fail_script @@ -0,0 +1,19 @@ +--- tests/t_mmp_fail/script.orig 2023-02-07 03:31:53 UTC ++++ tests/t_mmp_fail/script +@@ -10,14 +10,14 @@ fi + + $TUNE2FS -O project $TMPFILE >> $test_name.log 2>&1 + status=$? +-if [ "$status" == 0 ] ; then ++if [ "$status" = 0 ] ; then + echo "'tune2fs -O project' succeeded on small inode" > $test_name.failed + echo "$test_name: $test_description: failed" + return 1 + fi + $TUNE2FS -o bad_option $TMPFILE >> $test_name.log 2>&1 + status=$? +-if [ "$status" == 0 ] ; then ++if [ "$status" = 0 ] ; then + echo "'tune2fs -o bad_option' succeeded" > $test_name.failed + echo "$test_name: $test_description: failed" + return 1 diff --git a/filesystems/e2fsprogs-core/files/unwanted b/filesystems/e2fsprogs-core/files/unwanted new file mode 100644 index 000000000000..693deb364915 --- /dev/null +++ b/filesystems/e2fsprogs-core/files/unwanted @@ -0,0 +1,8 @@ +include/e2fsprogs/blkid/blkid.h +include/e2fsprogs/blkid/blkid_types.h +lib/e2fsprogs/libblkid.a +lib/e2fsprogs/libblkid.so +lib/e2fsprogs/libblkid.so.1 +lib/e2fsprogs/libblkid.so.1.0 +libdata/pkgconfig/blkid.pc +man/man3/libblkid.3 diff --git a/filesystems/e2fsprogs-core/pkg-descr b/filesystems/e2fsprogs-core/pkg-descr new file mode 100644 index 000000000000..d03ad983f1fb --- /dev/null +++ b/filesystems/e2fsprogs-core/pkg-descr @@ -0,0 +1 @@ +Set of utilities and library to manipulate an ext2, ext3 or ext4 filesystem. diff --git a/filesystems/e2fsprogs-core/pkg-install b/filesystems/e2fsprogs-core/pkg-install new file mode 100644 index 000000000000..114087fa032a --- /dev/null +++ b/filesystems/e2fsprogs-core/pkg-install @@ -0,0 +1,76 @@ +#!/bin/sh +set -eu + +PKGNAME="$1" +MODE="$2" # PRE-INSTALL, POST-INSTALL, DEINSTALL, POST-DEINSTALL + +case "$MODE" in +POST-INSTALL) + # + # install configuration file and update config files from + # old "ext4dev" to current "ext4" name. + # + if test -s ${PKG_PREFIX}/etc/mke2fs.conf; then + if cmp -s ${PKG_PREFIX}/etc/mke2fs.conf.dist \ + ${PKG_PREFIX}/etc/mke2fs.conf; then + true + else + rc=0 + grep -q ext4dev ${PKG_PREFIX}/etc/mke2fs.conf || rc=$? + # !!! the echo messages below deliberately contain spacing errors + # so that the file names can be double-clicked in a typical console + # window for copying and pasting without keen targeting with the mouse. + case $rc in + 1) # ext4dev not found (old name) + cp -f -p ${PKG_PREFIX}/etc/mke2fs.conf.dist \ + ${PKG_PREFIX}/etc/mke2fs.conf.e2fsprogs-new + echo "===========================================================================" + echo "Warning: installing mke2fs.conf in ${PKG_PREFIX}/etc/mke2fs.conf.e2fsprogs-new" + echo "Check to see if you need to update your ${PKG_PREFIX}/etc/mke2fs.conf ." + echo "===========================================================================" + ;; + 0) # ext4dev found (old name) + mv ${PKG_PREFIX}/etc/mke2fs.conf \ + ${PKG_PREFIX}/etc/mke2fs.conf.e2fsprogs-old + cp -f -p ${PKG_PREFIX}/etc/mke2fs.conf.dist \ + ${PKG_PREFIX}/etc/mke2fs.conf + echo "===========================================================================" + echo "Your mke2fs.conf is too old. Backing up old version in" + echo "${PKG_PREFIX}/etc/mke2fs.conf.e2fsprogs-old . Please check to see" + echo "if you have any local customizations that you wish to preserve." + echo "===========================================================================" + ;; + *) # grep failed + exit $rc + ;; + esac + fi + else + # missing -> install + cp -p ${PKG_PREFIX}/etc/mke2fs.conf.dist \ + ${PKG_PREFIX}/etc/mke2fs.conf + fi + + ;; +DEINSTALL) + # !!! the echo messages below deliberately contain spacing errors + # so that the file names can be double-clicked in a typical console + # window for copying and pasting without keen targeting with the mouse. + if cmp -s ${PKG_PREFIX}/etc/mke2fs.conf \ + ${PKG_PREFIX}/etc/mke2fs.conf.dist + then + rm -f ${PKG_PREFIX}/etc/mke2fs.conf + elif [ "_${PKG_UPGRADE-upgrade}" = _upgrade ] ; then + echo "If and only if you are deleting e2fsprogs forever," + echo "remember to delete ${PKG_PREFIX}/etc/mke2fs.conf ." + fi + # e2fsck.conf is no longer part of the distribution, but still supported, + # => no pkg-list @sample line possible + # and no reference e2fsck.conf.sample or e2fsck.conf.dist is available + if test -f ${PKG_PREFIX}/etc/e2fsck.conf -a "_${PKG_UPGRADE-upgrade}" = _upgrade + then + echo "If and only if you are deleting e2fsprogs forever," + echo "remember to delete ${PKG_PREFIX}/etc/e2fsck.conf ." + fi + ;; +esac diff --git a/filesystems/e2fsprogs-core/pkg-message b/filesystems/e2fsprogs-core/pkg-message new file mode 100644 index 000000000000..68a7a422b142 --- /dev/null +++ b/filesystems/e2fsprogs-core/pkg-message @@ -0,0 +1,8 @@ +[ +{ message: <<EOM +Note: this is a modified version of the e2fsprogs package, not the official +package. Report all building and run-time trouble that originates in the +package to the port maintainer, mandree@FreeBSD.org. +EOM +} +] diff --git a/filesystems/e2fsprogs-core/pkg-plist b/filesystems/e2fsprogs-core/pkg-plist new file mode 100644 index 000000000000..369ce002d590 --- /dev/null +++ b/filesystems/e2fsprogs-core/pkg-plist @@ -0,0 +1,127 @@ +bin/chattr +bin/e2fsprogs-compile_et +%%FUSEFS%%bin/fuse2fs +bin/lsattr +bin/mk_cmds +etc/mke2fs.conf.dist +include/e2fsprogs/com_err.h +include/e2fsprogs/e2p/e2p.h +include/e2fsprogs/et/com_err.h +include/e2fsprogs/ext2fs/bitops.h +include/e2fsprogs/ext2fs/ext2_err.h +include/e2fsprogs/ext2fs/ext2_ext_attr.h +include/e2fsprogs/ext2fs/ext2_fs.h +include/e2fsprogs/ext2fs/ext2_io.h +include/e2fsprogs/ext2fs/ext2_types.h +include/e2fsprogs/ext2fs/ext2fs.h +include/e2fsprogs/ext2fs/ext3_extents.h +include/e2fsprogs/ext2fs/hashmap.h +include/e2fsprogs/ext2fs/qcow2.h +include/e2fsprogs/ext2fs/tdb.h +include/e2fsprogs/ss/ss.h +include/e2fsprogs/ss/ss_err.h +lib/e2fsprogs/libcom_err.a +lib/e2fsprogs/libcom_err.so +lib/e2fsprogs/libcom_err.so.2 +lib/e2fsprogs/libcom_err.so.2.1 +lib/e2fsprogs/libe2p.a +lib/e2fsprogs/libe2p.so +lib/e2fsprogs/libe2p.so.2 +lib/e2fsprogs/libe2p.so.2.3 +lib/e2fsprogs/libext2fs.a +lib/e2fsprogs/libext2fs.so +lib/e2fsprogs/libext2fs.so.2 +lib/e2fsprogs/libext2fs.so.2.4 +lib/e2fsprogs/libss.so.2.0 +lib/e2fsprogs/libss.so +lib/e2fsprogs/libss.a +lib/e2fsprogs/libss.so.2 +libdata/pkgconfig/com_err.pc +libdata/pkgconfig/e2p.pc +libdata/pkgconfig/ext2fs.pc +libdata/pkgconfig/ss.pc +share/man/man1/chattr.1.gz +share/man/man1/e2fsprogs-compile_et.1.gz +%%FUSEFS%%share/man/man1/fuse2fs.1.gz +share/man/man1/lsattr.1.gz +share/man/man1/mk_cmds.1.gz +share/man/man3/e2fsprogs-com_err.3.gz +share/man/man5/e2fsck.conf.5.gz +share/man/man5/mke2fs.conf.5.gz +share/man/man5/ext2.5.gz +share/man/man5/ext3.5.gz +share/man/man5/ext4.5.gz +share/man/man8/badblocks.8.gz +share/man/man8/debugfs.8.gz +share/man/man8/dumpe2fs.8.gz +share/man/man8/e2fsck.8.gz +share/man/man8/e2image.8.gz +share/man/man8/e2label.8.gz +share/man/man8/e2mmpstatus.8.gz +share/man/man8/e2undo.8.gz +share/man/man8/mke2fs.8.gz +share/man/man8/mklost+found.8.gz +share/man/man8/resize2fs.8.gz +share/man/man8/tune2fs.8.gz +share/man/man8/fsck.ext2.8.gz +share/man/man8/fsck.ext3.8.gz +share/man/man8/fsck.ext4.8.gz +share/man/man8/mkfs.ext2.8.gz +share/man/man8/mkfs.ext3.8.gz +share/man/man8/mkfs.ext4.8.gz +share/man/man8/findfs.8.gz +share/man/man8/blkid.8.gz +share/man/man8/logsave.8.gz +share/man/man8/fsck_ext2fs.8.gz +share/man/man8/e2freefrag.8.gz +sbin/badblocks +sbin/blkid +sbin/debugfs +sbin/dumpe2fs +sbin/e2freefrag +sbin/e2fsck +sbin/e2image +sbin/e2label +sbin/e2mmpstatus +sbin/e2undo +sbin/findfs +sbin/fsck.ext2 +sbin/fsck.ext3 +sbin/fsck.ext4 +sbin/fsck_ext2fs +sbin/logsave +sbin/mke2fs +sbin/mkfs.ext2 +sbin/mkfs.ext3 +sbin/mkfs.ext4 +sbin/mklost+found +sbin/resize2fs +sbin/tune2fs +%%DATADIR%%/et/et_c.awk +%%DATADIR%%/et/et_h.awk +%%PORTDOCS%%share/info/libext2fs.info.gz +%%NLS%%share/locale/ca/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/cs/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/da/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/de/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/eo/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/es/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/fi/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/fr/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/fur/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/hu/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/id/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/it/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/ms/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/nl/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/pl/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/pt/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/ro/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/sr/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/sv/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/tr/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/uk/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/vi/LC_MESSAGES/e2fsprogs.mo +%%NLS%%share/locale/zh_CN/LC_MESSAGES/e2fsprogs.mo +share/ss/ct_c.awk +share/ss/ct_c.sed diff --git a/filesystems/e2fsprogs-libblkid/Makefile b/filesystems/e2fsprogs-libblkid/Makefile new file mode 100644 index 000000000000..961808badcf4 --- /dev/null +++ b/filesystems/e2fsprogs-libblkid/Makefile @@ -0,0 +1,31 @@ +PORTREVISION= 0 +CATEGORIES= filesystems misc devel +PKGNAMESUFFIX= -libblkid + +COMMENT= Blkid library from e2fsprogs package + +LICENSE= LGPL20+ +_no_license_file= sorry + +LIB_DEPENDS= libuuid.so:misc/e2fsprogs-libuuid + +CONFIGURE_ARGS= --enable-elf-shlibs --disable-libuuid --enable-libblkid + +MASTERDIR= ${.CURDIR}/../../filesystems/e2fsprogs-core +MAKE_ARGS= LIB_SUBDIRS=lib/blkid LDFLAGS_SHLIB=-L${LOCALBASE}/lib +USE_LDCONFIG= yes +ALL_TARGET= libs +LDFLAGS+= -L${LOCALBASE}/lib +INSTALL_TARGET= install install-shlibs +INSTALL_WRKSRC= ${WRKSRC}/lib/blkid + +PKGDIR= ${.CURDIR} + +pre-build: + ${MKDIR} ${WRKSRC}/lib/blkid/elfshared + cd ${WRKSRC}/util && ${MAKE_CMD} subst + +post-build: + cd ${INSTALL_WRKSRC} && ${MAKE_CMD} check + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/e2fsprogs-libblkid/pkg-descr b/filesystems/e2fsprogs-libblkid/pkg-descr new file mode 100644 index 000000000000..27a1c50756ac --- /dev/null +++ b/filesystems/e2fsprogs-libblkid/pkg-descr @@ -0,0 +1 @@ +Block device identification library from the e2fsprogs package. diff --git a/filesystems/e2fsprogs-libblkid/pkg-plist b/filesystems/e2fsprogs-libblkid/pkg-plist new file mode 100644 index 000000000000..c3c0e82f85c5 --- /dev/null +++ b/filesystems/e2fsprogs-libblkid/pkg-plist @@ -0,0 +1,8 @@ +include/blkid/blkid.h +include/blkid/blkid_types.h +lib/libblkid.so.1.0 +lib/libblkid.so.1 +lib/libblkid.so +lib/libblkid.a +libdata/pkgconfig/blkid.pc +share/man/man3/libblkid.3.gz diff --git a/filesystems/e2fsprogs/Makefile b/filesystems/e2fsprogs/Makefile new file mode 100644 index 000000000000..dd338500a5c7 --- /dev/null +++ b/filesystems/e2fsprogs/Makefile @@ -0,0 +1,21 @@ +PORTNAME= e2fsprogs +CATEGORIES= filesystems sysutils +PORTVERSION= 1.47.1 +PORTREVISION= 0 +BUILD_DEPENDS= e2fsprogs-core=${PORTVERSION}${${PORTREVISION} > 0:?_${PORTREVISION}:}:filesystems/e2fsprogs-core +RUN_DEPENDS= ${BUILD_DEPENDS} +DISTFILES= # empty +NO_BUILD= yes +LICENSE= GPLv2+ +USES= cpe +CPE_VENDOR= e2fsprogs_project + +MAINTAINER= mandree@FreeBSD.org +COMMENT= Wrapper to install e2fsprogs into /sbin + +do-install: + ${MKDIR} ${STAGEDIR}/sbin + ${CP} -p ${LOCALBASE}/sbin/fsck_ext2fs ${STAGEDIR}/sbin + ${CP} -p ${LOCALBASE}/sbin/e2fsck ${STAGEDIR}/sbin + +.include <bsd.port.mk> diff --git a/filesystems/e2fsprogs/pkg-descr b/filesystems/e2fsprogs/pkg-descr new file mode 100644 index 000000000000..6df887766576 --- /dev/null +++ b/filesystems/e2fsprogs/pkg-descr @@ -0,0 +1,3 @@ +This is a helper package that will copy and register the essential binaries +from e2fsprogs-core to /sbin, so that it is possible to have /usr in an ext2, +ext3, or ext4 file system, and still have a proper fsck in /sbin. diff --git a/filesystems/e2fsprogs/pkg-plist b/filesystems/e2fsprogs/pkg-plist new file mode 100644 index 000000000000..796b2c90dfc4 --- /dev/null +++ b/filesystems/e2fsprogs/pkg-plist @@ -0,0 +1,2 @@ +/sbin/e2fsck +/sbin/fsck_ext2fs diff --git a/filesystems/e2tools/Makefile b/filesystems/e2tools/Makefile new file mode 100644 index 000000000000..3f32f39fee53 --- /dev/null +++ b/filesystems/e2tools/Makefile @@ -0,0 +1,19 @@ +PORTNAME= e2tools +DISTVERSION= 0.1.2 +CATEGORIES= filesystems sysutils +MASTER_SITES= https://github.com/${PORTNAME}/${PORTNAME}/releases/download/v${DISTVERSION}/ + +MAINTAINER= fuz@FreeBSD.org +COMMENT= Utilities to manipulate files in an ext2/ext3 filesystem +WWW= https://e2tools.github.io/ + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libext2fs.so:filesystems/e2fsprogs-core + +USES= pkgconfig +GNU_CONFIGURE_MANPREFIX= ${PREFIX}/share +GNU_CONFIGURE= yes + +.include <bsd.port.mk> diff --git a/filesystems/e2tools/distinfo b/filesystems/e2tools/distinfo new file mode 100644 index 000000000000..0e8055b72248 --- /dev/null +++ b/filesystems/e2tools/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1726571041 +SHA256 (e2tools-0.1.2.tar.gz) = b19593bbfc85e9c14c0d2bc8525887901c8fe02588c76df60ab843bf0573c4a2 +SIZE (e2tools-0.1.2.tar.gz) = 159729 diff --git a/filesystems/e2tools/pkg-descr b/filesystems/e2tools/pkg-descr new file mode 100644 index 000000000000..3e72d7e69163 --- /dev/null +++ b/filesystems/e2tools/pkg-descr @@ -0,0 +1,17 @@ +e2tools is a simple set of GPL'ed utilities to read, write, and +manipulate files in an ext2/ext3 filesystem. These utilities access a +filesystem directly using the ext2fs library. I wrote these tools in +order to copy files into a linux filesystem on a machine that does not +have ext2 support. Of course, they can also be used on a Linux machine +to read/write to disk images or floppies without having to mount them +or have root access. + +Supported functionality: + + - copy files: e2cp + - move files: e2mv + - remove files: e2rm + - create directory: e2mkdir + - create hard links: e2ln + - list files/directories: e2ls + - output the last part of a file: e2tail diff --git a/filesystems/e2tools/pkg-plist b/filesystems/e2tools/pkg-plist new file mode 100644 index 000000000000..2ab92a262c94 --- /dev/null +++ b/filesystems/e2tools/pkg-plist @@ -0,0 +1,16 @@ +bin/e2cp +bin/e2ln +bin/e2ls +bin/e2mkdir +bin/e2mv +bin/e2rm +bin/e2tail +bin/e2tools +share/man/man1/e2cp.1.gz +share/man/man1/e2ln.1.gz +share/man/man1/e2ls.1.gz +share/man/man1/e2mkdir.1.gz +share/man/man1/e2mv.1.gz +share/man/man1/e2rm.1.gz +share/man/man1/e2tail.1.gz +share/man/man7/e2tools.7.gz diff --git a/filesystems/encfs/Makefile b/filesystems/encfs/Makefile new file mode 100644 index 000000000000..a78fbf67063c --- /dev/null +++ b/filesystems/encfs/Makefile @@ -0,0 +1,35 @@ +PORTNAME= encfs +DISTVERSIONPREFIX= v +DISTVERSION= 1.9.5 +PORTREVISION= 9 +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- + +MAINTAINER= dmgk@FreeBSD.org +COMMENT= Encrypted pass-through FUSE filesystem +WWW= http://www.arg0.net/encfs + +LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/COPYING + +USES= cmake compiler:c++11-lib cpe fuse ssl +CPE_VENDOR= ${PORTNAME}_project +USE_GITHUB= yes +GH_ACCOUNT= vgough + +OPTIONS_DEFINE= BUNDLED_TINYXML MANPAGES NLS +OPTIONS_DEFAULT= BUNDLED_TINYXML MANPAGES +OPTIONS_SUB= yes + +BUNDLED_TINYXML_DESC= Use bundled TinyXML2 instead of textproc/tinyxml2 +BUNDLED_TINYXML_CMAKE_BOOL= USE_INTERNAL_TINYXML +BUNDLED_TINYXML_LIB_DEPENDS_OFF= libtinyxml2.so:textproc/tinyxml2 + +MANPAGES_DESC= Install manpages (requires Perl 5) +MANPAGES_USES= perl5 +MANPAGES_USE= perl5=build + +NLS_USES= gettext +NLS_CMAKE_BOOL= ENABLE_NLS + +.include <bsd.port.mk> diff --git a/filesystems/encfs/distinfo b/filesystems/encfs/distinfo new file mode 100644 index 000000000000..9998faa7d611 --- /dev/null +++ b/filesystems/encfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1524928468 +SHA256 (vgough-encfs-v1.9.5_GH0.tar.gz) = 4709f05395ccbad6c0a5b40a4619d60aafe3473b1a79bafb3aa700b1f756fd63 +SIZE (vgough-encfs-v1.9.5_GH0.tar.gz) = 2798888 diff --git a/filesystems/encfs/files/patch-CMakeLists.txt b/filesystems/encfs/files/patch-CMakeLists.txt new file mode 100644 index 000000000000..f4e66aaaa10b --- /dev/null +++ b/filesystems/encfs/files/patch-CMakeLists.txt @@ -0,0 +1,12 @@ +--- CMakeLists.txt.orig 2024-02-25 17:41:27 UTC ++++ CMakeLists.txt +@@ -346,9 +346,6 @@ if (POD2MAN) + + if (POD2MAN) + set (MAN_DESTINATION "share/man/man1") +- if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") +- set (MAN_DESTINATION "man/man1") +- endif() + + add_custom_target (encfs-man ALL + COMMAND ${POD2MAN} -u --section=1 --release=${ENCFS_VERSION} --center=${ENCFS_NAME} diff --git a/filesystems/encfs/files/patch-encfs_NullCipher.cpp b/filesystems/encfs/files/patch-encfs_NullCipher.cpp new file mode 100644 index 000000000000..08e4db20abe8 --- /dev/null +++ b/filesystems/encfs/files/patch-encfs_NullCipher.cpp @@ -0,0 +1,11 @@ +--- encfs/NullCipher.cpp.orig 2022-05-14 16:04:54 UTC ++++ encfs/NullCipher.cpp +@@ -76,7 +76,7 @@ class NullDestructor { + NullDestructor &operator=(const NullDestructor &) = delete; // copy assignment + NullDestructor& operator=(NullDestructor&& other) = delete; // move assignment + +- void operator()(NullKey *&) {} ++ void operator()(NullKey *) {} + }; + std::shared_ptr<AbstractCipherKey> gNullKey(new NullKey(), NullDestructor()); + diff --git a/filesystems/encfs/pkg-descr b/filesystems/encfs/pkg-descr new file mode 100644 index 000000000000..0fafe1d67b16 --- /dev/null +++ b/filesystems/encfs/pkg-descr @@ -0,0 +1,5 @@ +EncFS is an encrypted pass-through filesystem which runs in userspace, +using the FUSE kernel module. Similar in design to CFS and other +pass-through filesystems, all data is encrypted and stored in the +underlying filesystem. Unlike loopback filesystems, there is no +predetermined or pre-allocated filesystem size. diff --git a/filesystems/encfs/pkg-plist b/filesystems/encfs/pkg-plist new file mode 100644 index 000000000000..e75b46eceeaa --- /dev/null +++ b/filesystems/encfs/pkg-plist @@ -0,0 +1,56 @@ +bin/encfs +bin/encfsctl +bin/encfssh +%%MANPAGES%%share/man/man1/encfs.1.gz +%%MANPAGES%%share/man/man1/encfsctl.1.gz +%%MANPAGES%%share/man/man1/encfssh.1.gz +%%NLS%%share/locale/ar/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/be/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/bg/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/bs/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/ca/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/cs/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/da/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/de_AT/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/de_CH/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/de_DE/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/de/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/el/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/eo/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/es_ES/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/es_PE/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/es/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/et/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/fi/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/fr_FR/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/fr/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/gl/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/he/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/hr/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/hu/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/id/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/it/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/ja/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/ko/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/lv/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/nb/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/nds/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/nl/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/nn/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/oc/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/pl/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/pt_BR/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/pt_PT/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/pt/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/ro/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/ru/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/sk/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/sr/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/sv/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/ta/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/tr/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/uk/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/vi/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/zh_CN/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/zh_HK/LC_MESSAGES/encfs.mo +%%NLS%%share/locale/zh_TW/LC_MESSAGES/encfs.mo diff --git a/filesystems/exfat-utils/Makefile b/filesystems/exfat-utils/Makefile new file mode 100644 index 000000000000..ca8e499a18f3 --- /dev/null +++ b/filesystems/exfat-utils/Makefile @@ -0,0 +1,29 @@ +PORTNAME= exfat +DISTVERSIONPREFIX= v +DISTVERSION= 1.4.0 +PORTREVISION= 1 +CATEGORIES= filesystems sysutils +PKGNAMESUFFIX= -utils + +MAINTAINER= samm@FreeBSD.org +COMMENT= Utilities to create, check, label and dump exFAT filesystem +WWW= https://github.com/relan/exfat + +LICENSE= GPLv2+ +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libublio.so:devel/libublio + +USES= autoreconf cpe localbase pkgconfig +CPE_VENDOR= ${PORTNAME}_project +USE_GITHUB= yes +GH_ACCOUNT= relan +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX= ${PREFIX}/share + +PLIST_FILES= sbin/exfatlabel sbin/dumpexfat sbin/exfatfsck sbin/mkexfatfs \ + sbin/fsck.exfat sbin/mkfs.exfat sbin/exfatattrib \ + share/man/man8/exfatlabel.8.gz share/man/man8/mkexfatfs.8.gz share/man/man8/exfatfsck.8.gz \ + share/man/man8/dumpexfat.8.gz share/man/man8/exfatattrib.8.gz + +.include <bsd.port.mk> diff --git a/filesystems/exfat-utils/distinfo b/filesystems/exfat-utils/distinfo new file mode 100644 index 000000000000..4b38f1e77983 --- /dev/null +++ b/filesystems/exfat-utils/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1685989221 +SHA256 (relan-exfat-v1.4.0_GH0.tar.gz) = af560659f55dca0270f94809530f359d6bdad5d313133c68b458fb0a8eeab1c8 +SIZE (relan-exfat-v1.4.0_GH0.tar.gz) = 62390 diff --git a/filesystems/exfat-utils/files/patch-Makefile.am b/filesystems/exfat-utils/files/patch-Makefile.am new file mode 100644 index 000000000000..672480a6c8cc --- /dev/null +++ b/filesystems/exfat-utils/files/patch-Makefile.am @@ -0,0 +1,8 @@ +--- Makefile.am.orig 2023-06-05 18:39:49 UTC ++++ Makefile.am +@@ -20,4 +20,4 @@ + # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + # + +-SUBDIRS = libexfat attrib dump fsck fuse label mkfs ++SUBDIRS = libexfat attrib dump fsck label mkfs diff --git a/filesystems/exfat-utils/files/patch-configure.ac b/filesystems/exfat-utils/files/patch-configure.ac new file mode 100644 index 000000000000..23a8ce7511e0 --- /dev/null +++ b/filesystems/exfat-utils/files/patch-configure.ac @@ -0,0 +1,21 @@ +--- configure.ac.orig 2023-06-05 18:39:27 UTC ++++ configure.ac +@@ -37,10 +37,6 @@ PKG_CHECK_MODULES([UBLIO], [libublio], [ + AC_DEFINE([USE_UBLIO], [1], + [Define if block devices are not supported.]) + ], [:]) +-PKG_CHECK_MODULES([FUSE3], [fuse3], +- [AC_DEFINE([FUSE_USE_VERSION], [30], [Required FUSE API version.])], +- [PKG_CHECK_MODULES([FUSE2], [fuse >= 2.6], +- [AC_DEFINE([FUSE_USE_VERSION], [26], [Required FUSE API version.])])]) + case "$host_os" in + *-gnu) + AC_DEFINE([_XOPEN_SOURCE], [500], [Enable pread() and pwrite().]) +@@ -53,7 +49,6 @@ AC_CONFIG_FILES([ + attrib/Makefile + dump/Makefile + fsck/Makefile +- fuse/Makefile + label/Makefile + mkfs/Makefile + Makefile]) diff --git a/filesystems/exfat-utils/pkg-descr b/filesystems/exfat-utils/pkg-descr new file mode 100644 index 000000000000..e9c5bd8916e4 --- /dev/null +++ b/filesystems/exfat-utils/pkg-descr @@ -0,0 +1,5 @@ +Utilities to manage extended file allocation table filesystem. This package +provides tools to create, check and label the filesystem. +It contains dumpexfat to dump properties of the filesystem, exfatfsck to report +errors found on a exFAT filesystem, exfatlabel to label a exFAT filesystem and +mkexfatfs to create a exFAT filesystem. diff --git a/filesystems/exfat/Makefile b/filesystems/exfat/Makefile new file mode 100644 index 000000000000..4910df1a26f8 --- /dev/null +++ b/filesystems/exfat/Makefile @@ -0,0 +1,28 @@ +PORTNAME= exfat +DISTVERSIONPREFIX= v +DISTVERSION= 1.4.0 +PORTREVISION= 1 +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- + +MAINTAINER= samm@FreeBSD.org +COMMENT= Full-featured exFAT FS implementation as a FUSE module +WWW= https://github.com/relan/exfat + +LICENSE= GPLv2+ +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libublio.so:devel/libublio + +USES= autoreconf cpe fuse localbase pkgconfig +CPE_VENDOR= ${PORTNAME}_project +USE_GITHUB= yes +GH_ACCOUNT= relan +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX= ${PREFIX}/share + +MAKE_ARGS= SUBDIRS="libexfat fuse" + +PLIST_FILES= sbin/mount.exfat-fuse sbin/mount.exfat share/man/man8/mount.exfat-fuse.8.gz + +.include <bsd.port.mk> diff --git a/filesystems/exfat/distinfo b/filesystems/exfat/distinfo new file mode 100644 index 000000000000..3d2567e5d62d --- /dev/null +++ b/filesystems/exfat/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1685988699 +SHA256 (relan-exfat-v1.4.0_GH0.tar.gz) = af560659f55dca0270f94809530f359d6bdad5d313133c68b458fb0a8eeab1c8 +SIZE (relan-exfat-v1.4.0_GH0.tar.gz) = 62390 diff --git a/filesystems/exfat/pkg-descr b/filesystems/exfat/pkg-descr new file mode 100644 index 000000000000..3cf40b3ccad4 --- /dev/null +++ b/filesystems/exfat/pkg-descr @@ -0,0 +1,4 @@ +exfat-fuse is a free exFAT file system implementation with write support. +exFAT is a simple file system created by Microsoft. It is intended to +replace FAT32 removing some of its limitations. exFAT is a standard FS for +SDXC memory cards. diff --git a/filesystems/ext2/Makefile b/filesystems/ext2/Makefile new file mode 100644 index 000000000000..3c3ec5000a85 --- /dev/null +++ b/filesystems/ext2/Makefile @@ -0,0 +1,34 @@ +PORTNAME= fusefs-ext2 +DISTVERSIONPREFIX= v +DISTVERSION= 0.0.11 +PORTREVISION= 2 +CATEGORIES= filesystems + +MAINTAINER= ehaupt@FreeBSD.org +COMMENT= FUSE module to mount ext2, ext3 and ext4 with read write support +WWW= https://github.com/alperakcan/fuse-ext2 + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +BUILD_DEPENDS= mke2fs:filesystems/e2fsprogs-core +RUN_DEPENDS= mke2fs:filesystems/e2fsprogs-core + +USES= autoreconf fuse libtool localbase:ldflags pkgconfig +USE_GITHUB= yes +GH_ACCOUNT= alperakcan +GH_PROJECT= fuse-ext2 +GH_TAGNAME= e8f1063 + +GNU_CONFIGURE= yes + +CPPFLAGS+= -I${LOCALBASE}/include/e2fsprogs +LDFLAGS+= -L${LOCALBASE}/lib/e2fsprogs -Wl,--rpath \ + -Wl,${LOCALBASE}/lib/e2fsprogs + +PLIST_FILES= bin/fuse-ext2 \ + bin/fuse-ext2.probe \ + libdata/pkgconfig/fuse-ext2.pc \ + share/man/man1/fuse-ext2.1.gz + +.include <bsd.port.mk> diff --git a/filesystems/ext2/distinfo b/filesystems/ext2/distinfo new file mode 100644 index 000000000000..a1c8808c59aa --- /dev/null +++ b/filesystems/ext2/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1721752246 +SHA256 (alperakcan-fuse-ext2-v0.0.11-e8f1063_GH0.tar.gz) = 7dcc5be65236f83b121043ce6eae1c56a8658a459f6f4075436e7a9e4176fda9 +SIZE (alperakcan-fuse-ext2-v0.0.11-e8f1063_GH0.tar.gz) = 123443 diff --git a/filesystems/ext2/files/patch-fuse-ext2_fuse-ext2.c b/filesystems/ext2/files/patch-fuse-ext2_fuse-ext2.c new file mode 100644 index 000000000000..6b12035108f4 --- /dev/null +++ b/filesystems/ext2/files/patch-fuse-ext2_fuse-ext2.c @@ -0,0 +1,61 @@ +--- fuse-ext2/fuse-ext2.c.orig 2019-05-09 08:29:33 UTC ++++ fuse-ext2/fuse-ext2.c +@@ -18,15 +18,14 @@ + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + ++#include <stdbool.h> + #include "fuse-ext2.h" + + static const char *HOME = "http://github.com/alperakcan/fuse-ext2/"; + + #if __FreeBSD__ == 10 +-static char def_opts[] = "allow_other,default_permissions,local,"; + static char def_opts_rd[] = "noappledouble,"; + #else +-static char def_opts[] = "allow_other,default_permissions,"; + static char def_opts_rd[] = ""; + #endif + +@@ -171,8 +170,10 @@ static int parse_options (int argc, char *argv[], stru + static char * parse_mount_options (const char *orig_opts, struct extfs_data *opts) + { + char *options, *s, *opt, *val, *ret; ++ bool allow_other = true; ++ bool default_permissions = true; + +- ret = malloc(strlen(def_opts) + strlen(def_opts_rd) + strlen(orig_opts) + 256 + PATH_MAX); ++ ret = malloc(strlen(def_opts_rd) + strlen(orig_opts) + 256 + PATH_MAX); + if (!ret) { + return NULL; + } +@@ -231,6 +232,14 @@ static char * parse_mount_options (const char *orig_op + #if __FreeBSD__ == 10 + strcat(ret, "force,"); + #endif ++ } else if (!strcmp(opt, "noallow_other")) { ++ allow_other = false; ++ strcat(ret, opt); ++ strcat(ret, ","); ++ } else if (!strcmp(opt, "nodefault_permissions")) { ++ default_permissions = false; ++ strcat(ret, opt); ++ strcat(ret, ","); + } else { /* Probably FUSE option. */ + strcat(ret, opt); + if (val) { +@@ -246,7 +255,13 @@ static char * parse_mount_options (const char *orig_op + opts->readonly = 1; + } + +- strcat(ret, def_opts); ++ if (allow_other) ++ strcat(ret, "allow_other,"); ++ if (default_permissions) ++ strcat(ret, "default_permissions,"); ++#if __FreeBSD__ == 10 ++ strcat(ret, "local,"); ++#endif + if (opts->readonly == 1) { + strcat(ret, def_opts_rd); + strcat(ret, "ro,"); diff --git a/filesystems/ext2/pkg-descr b/filesystems/ext2/pkg-descr new file mode 100644 index 000000000000..e1d6775cdc20 --- /dev/null +++ b/filesystems/ext2/pkg-descr @@ -0,0 +1,2 @@ +Fuse-ext2 is a multi OS FUSE module to mount ext2, ext3 and ext4 file system +devices and/or images with read write support. diff --git a/filesystems/fstyp/Makefile b/filesystems/fstyp/Makefile new file mode 100644 index 000000000000..df5bd1aeee56 --- /dev/null +++ b/filesystems/fstyp/Makefile @@ -0,0 +1,18 @@ +PORTNAME= fstyp +PORTVERSION= 0.1 +PORTREVISION= 1 +CATEGORIES= filesystems sysutils +MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${PORTNAME}-${PORTVERSION} http://thegaul.org/src/ + +MAINTAINER= ports@FreeBSD.org +COMMENT= Detect which filesystem type a device/partition contains +WWW= http://nchc.dl.sourceforge.net/sourceforge/fstyp/ + +USES= gmake +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_ENV+= ac_cv_prog_CC="${CC}" + +PLIST_FILES= bin/fstyp share/man/man8/fstyp.8.gz + +.include <bsd.port.mk> diff --git a/filesystems/fstyp/distinfo b/filesystems/fstyp/distinfo new file mode 100644 index 000000000000..b4ac12620020 --- /dev/null +++ b/filesystems/fstyp/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905193 +SHA256 (fstyp-0.1.tar.gz) = a41fa79dc6abbc146101926856706aedf227d7f6b8e6c8375b741bc43b80aec6 +SIZE (fstyp-0.1.tar.gz) = 203414 diff --git a/filesystems/fstyp/pkg-descr b/filesystems/fstyp/pkg-descr new file mode 100644 index 000000000000..2ab082ec691d --- /dev/null +++ b/filesystems/fstyp/pkg-descr @@ -0,0 +1,2 @@ +fstyp can be used to heuristically detect which filesystem type a device or a +partition contains. Useful for backup scripts. diff --git a/filesystems/fswatch-mon/Makefile b/filesystems/fswatch-mon/Makefile new file mode 100644 index 000000000000..024b1176b393 --- /dev/null +++ b/filesystems/fswatch-mon/Makefile @@ -0,0 +1,30 @@ +PORTNAME= fswatch +DISTVERSION= 1.13.0 +PORTREVISION= 3 +CATEGORIES= filesystems sysutils +MASTER_SITES= https://github.com/emcrisostomo/${PORTNAME}/releases/download/${DISTVERSION}/ +PKGNAMESUFFIX= -mon + +MAINTAINER= enrico.m.crisostomo@gmail.com +COMMENT= Cross-platform file change monitor +WWW= https://github.com/emcrisostomo/fswatch + +LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/COPYING + +USES= compiler:c++11-lang libtool makeinfo +USE_LDCONFIG= yes + +CONFLICTS_INSTALL= fswatch +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +INFO= fswatch +INSTALL_TARGET= install-strip + +OPTIONS_DEFINE= DOCS NLS +OPTIONS_SUB= yes + +NLS_USES= gettext +NLS_CONFIGURE_ENABLE= nls + +.include <bsd.port.mk> diff --git a/filesystems/fswatch-mon/distinfo b/filesystems/fswatch-mon/distinfo new file mode 100644 index 000000000000..d761195bb2be --- /dev/null +++ b/filesystems/fswatch-mon/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1540284604 +SHA256 (fswatch-1.13.0.tar.gz) = 90bcf0e02fa586251aa3233cb805ca4087e81de2c5960150a0676cc42f8534bb +SIZE (fswatch-1.13.0.tar.gz) = 819644 diff --git a/filesystems/fswatch-mon/pkg-descr b/filesystems/fswatch-mon/pkg-descr new file mode 100644 index 000000000000..d388a01b25fc --- /dev/null +++ b/filesystems/fswatch-mon/pkg-descr @@ -0,0 +1,15 @@ +fswatch is a file change monitor that receives notifications when the contents +of the specified files or directories are modified. fswatch implements four +kinds of monitors: + + * A monitor based on the File System Events API of Apple OS X. + * A monitor based on kqueue, an event notification interface introduced in + FreeBSD 4.1 and supported on most *BSD systems (including OS X). + * A monitor based on inotify, a Linux kernel subsystem that reports file + system changes to applications. + * A monitor which periodically stats the file system, saves file modification + times in memory and manually calculates file system changes, which can work + on any operating system where stat (2) can be used. + +fswatch should build and work correctly on any system shipping either of the +aforementioned APIs. diff --git a/filesystems/fswatch-mon/pkg-plist b/filesystems/fswatch-mon/pkg-plist new file mode 100644 index 000000000000..88bdd75d8212 --- /dev/null +++ b/filesystems/fswatch-mon/pkg-plist @@ -0,0 +1,47 @@ +bin/fswatch +include/libfswatch/c++/event.hpp +include/libfswatch/c++/filter.hpp +include/libfswatch/c++/kqueue_monitor.hpp +include/libfswatch/c++/libfswatch_exception.hpp +include/libfswatch/c++/libfswatch_map.hpp +include/libfswatch/c++/libfswatch_set.hpp +include/libfswatch/c++/monitor.hpp +include/libfswatch/c++/monitor_factory.hpp +include/libfswatch/c++/path_utils.hpp +include/libfswatch/c++/poll_monitor.hpp +include/libfswatch/c++/string_utils.hpp +include/libfswatch/c/cevent.h +include/libfswatch/c/cfilter.h +include/libfswatch/c/cmonitor.h +include/libfswatch/c/error.h +include/libfswatch/c/libfswatch.h +include/libfswatch/c/libfswatch_log.h +include/libfswatch/c/libfswatch_types.h +lib/libfswatch.a +lib/libfswatch.so +lib/libfswatch.so.11 +lib/libfswatch.so.11.0.0 +share/man/man7/fswatch.7.gz +%%NLS%%%%PORTDOCS%%%%DOCSDIR%%/ABOUT-NLS +%%PORTDOCS%%%%DOCSDIR%%/AUTHORS +%%PORTDOCS%%%%DOCSDIR%%/AUTHORS.libfswatch +%%PORTDOCS%%%%DOCSDIR%%/CONTRIBUTING.md +%%PORTDOCS%%%%DOCSDIR%%/COPYING +%%PORTDOCS%%%%DOCSDIR%%/NEWS +%%PORTDOCS%%%%DOCSDIR%%/NEWS.libfswatch +%%PORTDOCS%%%%DOCSDIR%%/README.bsd +%%PORTDOCS%%%%DOCSDIR%%/README.codestyle +%%PORTDOCS%%%%DOCSDIR%%/README.freebsd +%%PORTDOCS%%%%DOCSDIR%%/README.libfswatch.md +%%PORTDOCS%%%%DOCSDIR%%/README.gnu-build-system +%%PORTDOCS%%%%DOCSDIR%%/README.illumos +%%PORTDOCS%%%%DOCSDIR%%/README.linux +%%PORTDOCS%%%%DOCSDIR%%/README.md +%%PORTDOCS%%%%DOCSDIR%%/README.osx +%%PORTDOCS%%%%DOCSDIR%%/README.smartos +%%PORTDOCS%%%%DOCSDIR%%/README.solaris +%%PORTDOCS%%%%DOCSDIR%%/README.windows +%%NLS%%share/locale/en@boldquot/LC_MESSAGES/fswatch.mo +%%NLS%%share/locale/en@quot/LC_MESSAGES/fswatch.mo +%%NLS%%share/locale/es/LC_MESSAGES/fswatch.mo +%%NLS%%share/locale/it/LC_MESSAGES/fswatch.mo diff --git a/filesystems/fusefs-libs/Makefile b/filesystems/fusefs-libs/Makefile new file mode 100644 index 000000000000..49557f4a7c76 --- /dev/null +++ b/filesystems/fusefs-libs/Makefile @@ -0,0 +1,43 @@ +PORTNAME= fusefs +DISTVERSION= 2.9.9 +PORTREVISION= 2 +CATEGORIES= filesystems sysutils +MASTER_SITES= https://github.com/libfuse/libfuse/releases/download/fuse-${DISTVERSION}/ +PKGNAMESUFFIX= -libs +DISTNAME= fuse-${DISTVERSION} + +MAINTAINER= se@FreeBSD.org +COMMENT= FUSE allows filesystem implementation in userspace +WWW= https://github.com/libfuse/libfuse + +LICENSE= LGPL21 +LICENSE_FILE= ${WRKSRC}/COPYING.LIB + +IGNORE_DragonFly= fusefs has not been implemented on DragonFly + +USES= autoreconf gettext-tools iconv libtool +USE_LDCONFIG= yes + +GNU_CONFIGURE= yes +CONFIGURE_ARGS= --with-pkgconfigdir=${PREFIX}/libdata/pkgconfig +CONFIGURE_ENV= MOUNT_FUSE_PATH=${PREFIX}/sbin +INSTALL_TARGET= install-strip + +PORTSCOUT= limit:^2\. + +PLIST_SUB= VERSION=${PORTVERSION} +PORTDOCS= * + +OPTIONS_DEFINE= DOCS + +pre-configure: + ${CP} ${LOCALBASE}/share/gettext/config.rpath ${WRKSRC} + +do-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR}/libs + ${INSTALL_DATA} ${WRKSRC}/doc/how-fuse-works ${WRKSRC}/doc/kernel.txt ${STAGEDIR}${DOCSDIR}/libs + +post-install: + ${INSTALL_DATA} ${WRKSRC}/include/fuse_kernel.h ${STAGEDIR}${PREFIX}/include/fuse + +.include <bsd.port.mk> diff --git a/filesystems/fusefs-libs/distinfo b/filesystems/fusefs-libs/distinfo new file mode 100644 index 000000000000..932ca6834e61 --- /dev/null +++ b/filesystems/fusefs-libs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1601617112 +SHA256 (fuse-2.9.9.tar.gz) = d0e69d5d608cc22ff4843791ad097f554dd32540ddc9bed7638cc6fea7c1b4b5 +SIZE (fuse-2.9.9.tar.gz) = 1813177 diff --git a/filesystems/fusefs-libs/files/patch-doc_Makefile.am b/filesystems/fusefs-libs/files/patch-doc_Makefile.am new file mode 100644 index 000000000000..d80aa802128e --- /dev/null +++ b/filesystems/fusefs-libs/files/patch-doc_Makefile.am @@ -0,0 +1,11 @@ +--- doc/Makefile.am.orig 2019-07-31 16:36:32 UTC ++++ doc/Makefile.am +@@ -1,5 +1,8 @@ + ## Process this file with automake to produce Makefile.in + ++if BSD ++else + dist_man_MANS = fusermount.1 mount.fuse.8 ulockmgr_server.1 ++endif + + EXTRA_DIST = how-fuse-works kernel.txt Doxyfile html diff --git a/filesystems/fusefs-libs/files/patch-lib_fuse__versionscript b/filesystems/fusefs-libs/files/patch-lib_fuse__versionscript new file mode 100644 index 000000000000..f287af348fce --- /dev/null +++ b/filesystems/fusefs-libs/files/patch-lib_fuse__versionscript @@ -0,0 +1,53 @@ +--- lib/fuse_versionscript.orig 2019-01-04 13:33:33 UTC ++++ lib/fuse_versionscript +@@ -9,15 +9,15 @@ FUSE_2.2 { + fuse_loop_mt; + fuse_loop_mt_proc; + fuse_main; +- fuse_main_compat1; +- fuse_main_compat2; +- fuse_mount_compat1; +- fuse_new_compat1; +- fuse_new_compat2; ++# fuse_main_compat1; ++# fuse_main_compat2; ++# fuse_mount_compat1; ++# fuse_new_compat1; ++# fuse_new_compat2; + fuse_process_cmd; + fuse_read_cmd; + fuse_set_getcontext_func; +- fuse_setup_compat2; ++# fuse_setup_compat2; + }; + + FUSE_2.4 { +@@ -56,10 +56,10 @@ FUSE_2.5 { + + FUSE_2.5 { + global: +- fuse_lowlevel_new_compat; +- fuse_main_real_compat22; +- fuse_mount_compat22; +- fuse_new_compat22; ++# fuse_lowlevel_new_compat; ++# fuse_main_real_compat22; ++# fuse_mount_compat22; ++# fuse_new_compat22; + fuse_opt_parse; + fuse_opt_add_opt; + fuse_opt_add_arg; +@@ -69,10 +69,10 @@ FUSE_2.5 { + fuse_remove_signal_handlers; + fuse_reply_create; + fuse_reply_open; +- fuse_reply_open_compat; ++# fuse_reply_open_compat; + fuse_reply_statfs; +- fuse_reply_statfs_compat; +- fuse_setup_compat22; ++# fuse_reply_statfs_compat; ++# fuse_setup_compat22; + fuse_set_signal_handlers; + } FUSE_2.4; + diff --git a/filesystems/fusefs-libs/files/patch-lib_helper.c b/filesystems/fusefs-libs/files/patch-lib_helper.c new file mode 100644 index 000000000000..a9cb4b6fd1aa --- /dev/null +++ b/filesystems/fusefs-libs/files/patch-lib_helper.c @@ -0,0 +1,72 @@ +--- lib/helper.c.orig 2015-05-22 09:24:02 UTC ++++ lib/helper.c +@@ -31,7 +31,7 @@ enum { + struct helper_opts { + int singlethread; + int foreground; +- int nodefault_subtype; ++ int fsname; + char *mountpoint; + }; + +@@ -42,8 +42,7 @@ static const struct fuse_opt fuse_helper + FUSE_HELPER_OPT("debug", foreground), + FUSE_HELPER_OPT("-f", foreground), + FUSE_HELPER_OPT("-s", singlethread), +- FUSE_HELPER_OPT("fsname=", nodefault_subtype), +- FUSE_HELPER_OPT("subtype=", nodefault_subtype), ++ FUSE_HELPER_OPT("fsname=", fsname), + + FUSE_OPT_KEY("-h", KEY_HELP), + FUSE_OPT_KEY("--help", KEY_HELP), +@@ -53,7 +52,6 @@ static const struct fuse_opt fuse_helper + FUSE_OPT_KEY("-d", FUSE_OPT_KEY_KEEP), + FUSE_OPT_KEY("debug", FUSE_OPT_KEY_KEEP), + FUSE_OPT_KEY("fsname=", FUSE_OPT_KEY_KEEP), +- FUSE_OPT_KEY("subtype=", FUSE_OPT_KEY_KEEP), + FUSE_OPT_END + }; + +@@ -123,24 +121,24 @@ static int fuse_helper_opt_proc(void *da + } + } + +-static int add_default_subtype(const char *progname, struct fuse_args *args) ++static int add_default_fsname(const char *progname, struct fuse_args *args) + { + int res; +- char *subtype_opt; ++ char *fsname_opt; + const char *basename = strrchr(progname, '/'); + if (basename == NULL) + basename = progname; + else if (basename[1] != '\0') + basename++; + +- subtype_opt = (char *) malloc(strlen(basename) + 64); +- if (subtype_opt == NULL) { ++ fsname_opt = (char *) malloc(strlen(basename) + 64); ++ if (fsname_opt == NULL) { + fprintf(stderr, "fuse: memory allocation failed\n"); + return -1; + } +- sprintf(subtype_opt, "-osubtype=%s", basename); +- res = fuse_opt_add_arg(args, subtype_opt); +- free(subtype_opt); ++ sprintf(fsname_opt, "-ofsname=%s", basename); ++ res = fuse_opt_add_arg(args, fsname_opt); ++ free(fsname_opt); + return res; + } + +@@ -156,8 +154,8 @@ int fuse_parse_cmdline(struct fuse_args + if (res == -1) + return -1; + +- if (!hopts.nodefault_subtype) { +- res = add_default_subtype(args->argv[0], args); ++ if (!hopts.fsname) { ++ res = add_default_fsname(args->argv[0], args); + if (res == -1) + goto err; + } diff --git a/filesystems/fusefs-libs/files/patch-lib_mount__bsd.c b/filesystems/fusefs-libs/files/patch-lib_mount__bsd.c new file mode 100644 index 000000000000..765ec8fb8159 --- /dev/null +++ b/filesystems/fusefs-libs/files/patch-lib_mount__bsd.c @@ -0,0 +1,77 @@ +--- lib/mount_bsd.c.orig 2015-05-22 09:24:02 UTC ++++ lib/mount_bsd.c +@@ -10,6 +10,8 @@ + #include "fuse_misc.h" + #include "fuse_opt.h" + ++#include <sys/param.h> ++#include <sys/mount.h> + #include <sys/stat.h> + #include <sys/wait.h> + #include <sys/sysctl.h> +@@ -78,6 +80,7 @@ static const struct fuse_opt fuse_mount_ + FUSE_DUAL_OPT_KEY("ro", KEY_KERN), + FUSE_DUAL_OPT_KEY("rw", KEY_KERN), + FUSE_DUAL_OPT_KEY("auto", KEY_KERN), ++ FUSE_DUAL_OPT_KEY("automounted", KEY_KERN), + /* options supported under both Linux and FBSD */ + FUSE_DUAL_OPT_KEY("allow_other", KEY_KERN), + FUSE_DUAL_OPT_KEY("default_permissions",KEY_KERN), +@@ -192,56 +195,12 @@ void fuse_unmount_compat22(const char *m + free(umount_cmd); + } + +-static void do_unmount(char *dev, int fd) +-{ +- char device_path[SPECNAMELEN + 12]; +- const char *argv[4]; +- const char umount_cmd[] = "/sbin/umount"; +- pid_t pid; +- +- snprintf(device_path, SPECNAMELEN + 12, _PATH_DEV "%s", dev); +- +- argv[0] = umount_cmd; +- argv[1] = "-f"; +- argv[2] = device_path; +- argv[3] = NULL; +- +- pid = fork(); +- +- if (pid == -1) +- return; +- +- if (pid == 0) { +- close(fd); +- execvp(umount_cmd, (char **)argv); +- exit(1); +- } +- +- waitpid(pid, NULL, 0); +-} +- + void fuse_kern_unmount(const char *mountpoint, int fd) + { + char *ep, dev[128]; + struct stat sbuf; + +- (void)mountpoint; +- +- if (fstat(fd, &sbuf) == -1) +- goto out; +- +- devname_r(sbuf.st_rdev, S_IFCHR, dev, 128); +- +- if (strncmp(dev, "fuse", 4)) +- goto out; +- +- strtol(dev + 4, &ep, 10); +- if (*ep != '\0') +- goto out; +- +- do_unmount(dev, fd); +- +-out: ++ unmount(mountpoint, MNT_FORCE); + close(fd); + } + diff --git a/filesystems/fusefs-libs/files/patch-lib_mount__util.c b/filesystems/fusefs-libs/files/patch-lib_mount__util.c new file mode 100644 index 000000000000..1d6a5db2a488 --- /dev/null +++ b/filesystems/fusefs-libs/files/patch-lib_mount__util.c @@ -0,0 +1,23 @@ +--- lib/mount_util.c.orig 2015-05-22 09:24:02 UTC ++++ lib/mount_util.c +@@ -344,20 +344,3 @@ int fuse_mnt_check_empty(const char *pro + } + return 0; + } +- +-int fuse_mnt_check_fuseblk(void) +-{ +- char buf[256]; +- FILE *f = fopen("/proc/filesystems", "r"); +- if (!f) +- return 1; +- +- while (fgets(buf, sizeof(buf), f)) +- if (strstr(buf, "fuseblk\n")) { +- fclose(f); +- return 1; +- } +- +- fclose(f); +- return 0; +-} diff --git a/filesystems/fusefs-libs/files/patch-lib_mount__util.h b/filesystems/fusefs-libs/files/patch-lib_mount__util.h new file mode 100644 index 000000000000..07865d839d77 --- /dev/null +++ b/filesystems/fusefs-libs/files/patch-lib_mount__util.h @@ -0,0 +1,7 @@ +--- lib/mount_util.h.orig 2015-05-22 09:24:02 UTC ++++ lib/mount_util.h +@@ -16,4 +16,3 @@ int fuse_mnt_umount(const char *progname + char *fuse_mnt_resolve_path(const char *progname, const char *orig); + int fuse_mnt_check_empty(const char *progname, const char *mnt, + mode_t rootmode, off_t rootsize); +-int fuse_mnt_check_fuseblk(void); diff --git a/filesystems/fusefs-libs/pkg-descr b/filesystems/fusefs-libs/pkg-descr new file mode 100644 index 000000000000..73b81c35ecd0 --- /dev/null +++ b/filesystems/fusefs-libs/pkg-descr @@ -0,0 +1,3 @@ +FUSE makes it possible to implement a filesystem in a userspace program. +Features include: simple yet comprehensive API, secure mounting by non-root +users, support for FreeBSD kernels, multi-threaded operation. diff --git a/filesystems/fusefs-libs/pkg-message b/filesystems/fusefs-libs/pkg-message new file mode 100644 index 000000000000..3e54fcf60f9c --- /dev/null +++ b/filesystems/fusefs-libs/pkg-message @@ -0,0 +1,7 @@ +[ +{ type: install + message: <<EOM +Install the FUSE kernel module (kldload fusefs) to use this port. +EOM +} +] diff --git a/filesystems/fusefs-libs/pkg-plist b/filesystems/fusefs-libs/pkg-plist new file mode 100644 index 000000000000..b4fd07c97bc6 --- /dev/null +++ b/filesystems/fusefs-libs/pkg-plist @@ -0,0 +1,20 @@ +include/fuse.h +include/fuse/cuse_lowlevel.h +include/fuse/fuse.h +include/fuse/fuse_common.h +include/fuse/fuse_common_compat.h +include/fuse/fuse_compat.h +include/fuse/fuse_kernel.h +include/fuse/fuse_lowlevel.h +include/fuse/fuse_lowlevel_compat.h +include/fuse/fuse_opt.h +include/ulockmgr.h +lib/libfuse.a +lib/libfuse.so +lib/libfuse.so.2 +lib/libfuse.so.%%VERSION%% +lib/libulockmgr.a +lib/libulockmgr.so +lib/libulockmgr.so.1 +lib/libulockmgr.so.1.0.1 +libdata/pkgconfig/fuse.pc diff --git a/filesystems/fusefs-libs3/Makefile b/filesystems/fusefs-libs3/Makefile new file mode 100644 index 000000000000..28bd5ec39c86 --- /dev/null +++ b/filesystems/fusefs-libs3/Makefile @@ -0,0 +1,31 @@ +PORTNAME= fusefs-libs3 +DISTVERSION= 3.16.2 +CATEGORIES= filesystems sysutils +MASTER_SITES= https://github.com/libfuse/libfuse/releases/download/fuse-${DISTVERSION}/ +DISTNAME= fuse-${DISTVERSION} + +MAINTAINER= se@FreeBSD.org +COMMENT= FUSE library version 3 for filesystems implemented in userspace +WWW= https://github.com/libfuse/libfuse/wiki/Filesystems + +LICENSE= GPLv2 LGPL21 +LICENSE_COMB= multi +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= compiler iconv meson ninja +USE_LDCONFIG= yes + +LDFLAGS+= -L${LOCALBASE}/lib ${ICONV_LIB} + +PLIST_SUB= VERSION=${PORTVERSION} + +.include <bsd.port.pre.mk> + +.if ${OPSYS} == "FreeBSD" && ${OSVERSION} < 1400014 +EXTRA_PATCHES= ${FILESDIR}/extra-patch-test_meson.build +.endif +.if ${OPSYS} == DragonFly +IGNORE= fusefs has not been implemented on DragonFly +.endif + +.include <bsd.port.post.mk> diff --git a/filesystems/fusefs-libs3/distinfo b/filesystems/fusefs-libs3/distinfo new file mode 100644 index 000000000000..363a678a4cce --- /dev/null +++ b/filesystems/fusefs-libs3/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1697025258 +SHA256 (fuse-3.16.2.tar.gz) = f797055d9296b275e981f5f62d4e32e089614fc253d1ef2985851025b8a0ce87 +SIZE (fuse-3.16.2.tar.gz) = 14165836 diff --git a/filesystems/fusefs-libs3/files/extra-patch-test_meson.build b/filesystems/fusefs-libs3/files/extra-patch-test_meson.build new file mode 100644 index 000000000000..f7a17a17e4e7 --- /dev/null +++ b/filesystems/fusefs-libs3/files/extra-patch-test_meson.build @@ -0,0 +1,15 @@ +--- test/meson.build.orig 2021-09-06 12:45:29 UTC ++++ test/meson.build +@@ -7,9 +7,9 @@ foreach prog: [ 'test_write_cache', 'test_setattr' ] + dependencies: thread_dep, + install: false) + endforeach +-td += executable('test_syscalls', 'test_syscalls.c', +- include_directories: include_dirs, +- install: false) ++#td += executable('test_syscalls', 'test_syscalls.c', ++# include_directories: include_dirs, ++# install: false) + td += executable('readdir_inode', 'readdir_inode.c', + include_directories: include_dirs, + install: false) diff --git a/filesystems/fusefs-libs3/files/patch-example_meson.build b/filesystems/fusefs-libs3/files/patch-example_meson.build new file mode 100644 index 000000000000..88340523ed75 --- /dev/null +++ b/filesystems/fusefs-libs3/files/patch-example_meson.build @@ -0,0 +1,9 @@ +--- example/meson.build.orig 2023-02-17 09:31:14 UTC ++++ example/meson.build +@@ -1,5 +1,5 @@ examples = [ 'passthrough', 'passthrough_fh', + examples = [ 'passthrough', 'passthrough_fh', +- 'hello', 'hello_ll', 'hello_ll_uds', ++ 'hello', 'hello_ll', + 'printcap', 'ioctl_client', 'poll_client', + 'ioctl', 'cuse', 'cuse_client' ] + diff --git a/filesystems/fusefs-libs3/files/patch-lib_mount__bsd.c b/filesystems/fusefs-libs3/files/patch-lib_mount__bsd.c new file mode 100644 index 000000000000..7a757d511cf9 --- /dev/null +++ b/filesystems/fusefs-libs3/files/patch-lib_mount__bsd.c @@ -0,0 +1,10 @@ +--- lib/mount_bsd.c.orig 2023-02-17 09:31:14 UTC ++++ lib/mount_bsd.c +@@ -8,7 +8,6 @@ + See the file COPYING.LIB. + */ + +-#include "config.h" + #include "fuse_i.h" + #include "fuse_misc.h" + #include "fuse_opt.h" diff --git a/filesystems/fusefs-libs3/pkg-descr b/filesystems/fusefs-libs3/pkg-descr new file mode 100644 index 000000000000..8897132a5e08 --- /dev/null +++ b/filesystems/fusefs-libs3/pkg-descr @@ -0,0 +1,7 @@ +FUSE makes it possible to implement a filesystem in a userspace program. + +This version 3 of the fuse library is not compatible with file-systems +developed for version 2. + +A list of filesystems supported by this version of the library is +maintained in the WiKi on GitHub. diff --git a/filesystems/fusefs-libs3/pkg-message b/filesystems/fusefs-libs3/pkg-message new file mode 100644 index 000000000000..3e54fcf60f9c --- /dev/null +++ b/filesystems/fusefs-libs3/pkg-message @@ -0,0 +1,7 @@ +[ +{ type: install + message: <<EOM +Install the FUSE kernel module (kldload fusefs) to use this port. +EOM +} +] diff --git a/filesystems/fusefs-libs3/pkg-plist b/filesystems/fusefs-libs3/pkg-plist new file mode 100644 index 000000000000..e82082ae92f8 --- /dev/null +++ b/filesystems/fusefs-libs3/pkg-plist @@ -0,0 +1,11 @@ +include/fuse3/cuse_lowlevel.h +include/fuse3/fuse.h +include/fuse3/fuse_common.h +include/fuse3/fuse_log.h +include/fuse3/fuse_lowlevel.h +include/fuse3/fuse_opt.h +include/fuse3/libfuse_config.h +lib/libfuse3.so +lib/libfuse3.so.3 +lib/libfuse3.so.%%VERSION%% +libdata/pkgconfig/fuse3.pc diff --git a/filesystems/genromfs/Makefile b/filesystems/genromfs/Makefile new file mode 100644 index 000000000000..4114b7c8345e --- /dev/null +++ b/filesystems/genromfs/Makefile @@ -0,0 +1,20 @@ +PORTNAME= genromfs +PORTVERSION= 0.5.7 +PORTREVISION= 1 +CATEGORIES= filesystems devel + +MAINTAINER= tomek@cedro.info +COMMENT= Mkfs equivalent for romfs filesystem +WWW= https://github.com/chexum/genromfs + +LICENSE= GPLv2 + +USE_GITHUB= yes +GH_ACCOUNT= chexum + +MAKE_ARGS= PREFIX=${STAGEDIR}${PREFIX} + +PLIST_FILES= bin/genromfs \ + share/man/man8/genromfs.8.gz + +.include <bsd.port.mk> diff --git a/filesystems/genromfs/distinfo b/filesystems/genromfs/distinfo new file mode 100644 index 000000000000..d56cda096967 --- /dev/null +++ b/filesystems/genromfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1634516173 +SHA256 (chexum-genromfs-0.5.7_GH0.tar.gz) = 2d16d217b11a28809454ddab0cd7c1c0865af8ea79ac0e86af03ab82320f02ab +SIZE (chexum-genromfs-0.5.7_GH0.tar.gz) = 27929 diff --git a/filesystems/genromfs/files/patch-Makefile b/filesystems/genromfs/files/patch-Makefile new file mode 100644 index 000000000000..1b9e509d6c3e --- /dev/null +++ b/filesystems/genromfs/files/patch-Makefile @@ -0,0 +1,36 @@ +--- Makefile.orig 2009-02-15 10:48:15 UTC ++++ Makefile +@@ -5,7 +5,7 @@ all: genromfs + + PACKAGE = genromfs + VERSION = 0.5.7 +-CC = gcc ++CC = cc + CFLAGS = -O2 -Wall -DVERSION=\"$(VERSION)\"#-g# + LDFLAGS = -s#-g + +@@ -17,9 +17,9 @@ FILES = COPYING NEWS ChangeLog Makefile \ + checkdist \ + .gitignore selftest + +-prefix = /usr +-bindir = $(prefix)/bin +-mandir = $(prefix)/man ++PREFIX ?= /usr ++bindir = /bin ++mandir = /share/man + + genromfs: genromfs.o + $(CC) $(LDFLAGS) genromfs.o -o genromfs +@@ -53,11 +53,6 @@ install-bin: + install -m 755 genromfs $(PREFIX)$(bindir)/ + + install-man: +- # genromfs 0.5 installed the man page in this file, +- # remove it before someone notices :) +- if [ -f $(PREFIX)$(bindir)/man8 ]; then \ +- rm -f $(PREFIX)$(bindir)/man8; \ +- fi + mkdir -p $(PREFIX)$(mandir)/man8 + install -m 644 genromfs.8 $(PREFIX)$(mandir)/man8/ + diff --git a/filesystems/genromfs/pkg-descr b/filesystems/genromfs/pkg-descr new file mode 100644 index 000000000000..af0611e1fed2 --- /dev/null +++ b/filesystems/genromfs/pkg-descr @@ -0,0 +1,6 @@ +The mkfs equivalent for romfs filesystem. Port created for NuttX RTOS. +ROM FileSystem (ROMFS), read only filesystem, mainly for initial RAM +disks of installation disks. Using this filesystem, you get a very +similar feature, and even the possibility of a small kernel, with a +file system which doesn't take up useful memory from the router +functions in the basement of your office. diff --git a/filesystems/gitfs/Makefile b/filesystems/gitfs/Makefile new file mode 100644 index 000000000000..d943f6188d14 --- /dev/null +++ b/filesystems/gitfs/Makefile @@ -0,0 +1,45 @@ +PORTNAME= gitfs +DISTVERSION= 0.5.2 +PORTREVISION= 2 +CATEGORIES= filesystems devel +PKGNAMEPREFIX= fusefs- + +MAINTAINER= ports@FreeBSD.org +COMMENT= Version controlled file system +WWW= https://www.presslabs.com/code/gitfs/ + +LICENSE= APACHE20 +LICENSE_FILE= ${WRKSRC}/LICENSE + +DEPRECATED= Abandonware, last release on 2019 +EXPIRATION_DATE=2024-12-31 + +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}atomiclong>=0.1.1:devel/py-atomiclong@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}cffi>=1.12.3:devel/py-cffi@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}fusepy>=3.0.1:filesystems/py-fusepy@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pycparser>=2.19:devel/py-pycparser@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pygit2>=0.28.2:devel/py-pygit2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}raven>=6.10.0:devel/py-raven@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}six>=1.12.0:devel/py-six@${PY_FLAVOR} +TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytest>=4.6.5:devel/py-pytest@${PY_FLAVOR} + +USE_GITHUB= yes +GH_ACCOUNT= PressLabs + +NO_ARCH= yes +USES= python +USE_PYTHON= autoplist distutils concurrent optsuffix + +post-patch: + @${REINPLACE_CMD} -e 's/==/>=/' ${WRKSRC}/*requirements.txt + +# XXX Integrations tests want MOUNT_PATH, REPO_* passed via TEST_ENV +do-test: + @(cd ${TEST_WRKSRC} && ${SETENV} ${TEST_ENV} ${PYTHON_CMD} -m pytest) + +post-patch: patch-py3k-mock +patch-py3k-mock: + @${GREP} -Flr 'mock import' ${WRKSRC} | ${XARGS} ${REINPLACE_CMD} \ + -i .bak.mock -e 's/mock import/unittest.&/' + +.include <bsd.port.mk> diff --git a/filesystems/gitfs/distinfo b/filesystems/gitfs/distinfo new file mode 100644 index 000000000000..a44e0ec16308 --- /dev/null +++ b/filesystems/gitfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1571569210 +SHA256 (PressLabs-gitfs-0.5.2_GH0.tar.gz) = 921e24311e3b8ea3a5448d698a11a747618ee8dd62d5d43a85801de0b111cbf3 +SIZE (PressLabs-gitfs-0.5.2_GH0.tar.gz) = 64141 diff --git a/filesystems/gitfs/files/patch-gitfs_utils_args.py b/filesystems/gitfs/files/patch-gitfs_utils_args.py new file mode 100644 index 000000000000..bc4d1d42d80d --- /dev/null +++ b/filesystems/gitfs/files/patch-gitfs_utils_args.py @@ -0,0 +1,36 @@ +https://github.com/PressLabs/gitfs/issues/258 +https://github.com/PressLabs/gitfs/issues/257 + +--- gitfs/utils/args.py.orig 2019-10-20 11:00:10 UTC ++++ gitfs/utils/args.py +@@ -44,7 +44,7 @@ class Args(object): + ("foreground", (False, "bool")), + ("branch", ("master", "string")), + ("allow_other", (False, "bool")), +- ("allow_root", (True, "bool")), ++ ("allow_root", (False, "bool")), + ("commiter_name", (self.get_commiter_user, "string")), + ("commiter_email", (self.get_commiter_email, "string")), + ("max_size", (10, "float")), +@@ -76,12 +76,6 @@ class Args(object): + return self.check_args(self.set_defaults(args)) + + def check_args(self, args): +- # check allow_other and allow_root +- if args.allow_other: +- args.allow_root = False +- else: +- args.allow_root = True +- + # check log_level + if args.debug: + args.log_level = "debug" +@@ -182,7 +176,7 @@ class Args(object): + return "{}@{}".format(args.user, socket.gethostname()) + + def get_repo_path(self, args): +- return tempfile.mkdtemp(dir="/var/lib/gitfs") ++ return tempfile.mkdtemp(prefix="gitfs") + + def get_ssh_key(self, args): + return os.environ["HOME"] + "/.ssh/id_rsa" diff --git a/filesystems/gitfs/pkg-descr b/filesystems/gitfs/pkg-descr new file mode 100644 index 000000000000..ce7e2bf5144f --- /dev/null +++ b/filesystems/gitfs/pkg-descr @@ -0,0 +1,3 @@ +gitfs is a FUSE file system that fully integrates with git. You can +mount a remote repository's branch locally, and any subsequent changes +made to the files will be automatically committed to the remote. diff --git a/filesystems/gphotofs/Makefile b/filesystems/gphotofs/Makefile new file mode 100644 index 000000000000..bbd1226738d5 --- /dev/null +++ b/filesystems/gphotofs/Makefile @@ -0,0 +1,22 @@ +PORTNAME= gphotofs +PORTVERSION= 0.5 +PORTREVISION= 5 +CATEGORIES= filesystems graphics sysutils +MASTER_SITES= SF/gphoto/${PORTNAME}/${PORTVERSION}.0 +PKGNAMEPREFIX= fusefs- + +MAINTAINER= danfe@FreeBSD.org +COMMENT= Mount PTP camera as a file system +WWW= http://gphoto.sourceforge.net/proj/gphotofs/ + +LICENSE= GPLv2 + +LIB_DEPENDS= libgphoto2.so:graphics/libgphoto2 + +USES= fuse gnome pkgconfig tar:bzip2 +USE_GNOME= glib20 +GNU_CONFIGURE= yes + +PLIST_FILES= bin/gphotofs + +.include <bsd.port.mk> diff --git a/filesystems/gphotofs/distinfo b/filesystems/gphotofs/distinfo new file mode 100644 index 000000000000..8c2f49dc3b94 --- /dev/null +++ b/filesystems/gphotofs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905199 +SHA256 (gphotofs-0.5.tar.bz2) = 676ec4de69a81c193ffc31bdc7b587ac2a2cc3780b14f0e7c9c4c0a517b343cc +SIZE (gphotofs-0.5.tar.bz2) = 261357 diff --git a/filesystems/gphotofs/pkg-descr b/filesystems/gphotofs/pkg-descr new file mode 100644 index 000000000000..4ed340e8b05e --- /dev/null +++ b/filesystems/gphotofs/pkg-descr @@ -0,0 +1,3 @@ +gphotofs is a FUSE filesystem module to mount your camera as a filesystem. +This allow using your camera with any tool able to read from a mounted +filesystem. diff --git a/filesystems/gvfs/Makefile b/filesystems/gvfs/Makefile new file mode 100644 index 000000000000..46c238fc6b35 --- /dev/null +++ b/filesystems/gvfs/Makefile @@ -0,0 +1,89 @@ +PORTNAME= gvfs +PORTVERSION= 1.50.2 +PORTREVISION= 3 +CATEGORIES= filesystems devel gnome +MASTER_SITES= GNOME +DIST_SUBDIR= gnome + +MAINTAINER= gnome@FreeBSD.org +COMMENT= GNOME virtual file system +WWW= https://www.gnome.org/ + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +BUILD_DEPENDS= docbook-xsl>=0:textproc/docbook-xsl +LIB_DEPENDS= libgcrypt.so:security/libgcrypt \ + libdbus-1.so:devel/dbus \ + libgcr-base-3.so:security/gcr3 \ + libsoup-3.0.so:devel/libsoup3 \ + libgudev-1.0.so:devel/libgudev \ + libudisks2.so:sysutils/libudisks \ + libsecret-1.so:security/libsecret +RUN_DEPENDS= bsdisks>0:sysutils/bsdisks \ + lsof:sysutils/lsof +PORTSCOUT= limitw:1,even + +USES= cpe gettext gnome libarchive localbase meson \ + pkgconfig python:build shebangfix tar:xz +USE_GNOME= glib20 libxml2 libxslt:build +SHEBANG_FILES= meson_post_install.py +MESON_ARGS= -Dsystemduserunitdir=no \ + -Dtmpfilesdir=no \ + -Dadmin=false \ + -Dlogind=false \ + -Dlibusb=false \ + -Dman=true +USE_LDCONFIG= yes +CPE_VENDOR= gnome + +GLIB_SCHEMAS= org.gnome.system.gvfs.enums.xml + +OPTIONS_SUB= yes +OPTIONS_DEFINE= AVAHI FUSE AFC GOA SMB CDDA GOOGLE GPHOTO MTP NFS BLURAY +OPTIONS_DEFAULT=AVAHI SMB CDDA GPHOTO MTP NFS BLURAY + +AFC_DESC= Apple device support +GOA_DESC= GNOME Online Accounts volume monitor support +GOOGLE_DESC= Google backend + +AVAHI_LIB_DEPENDS= libavahi-client.so:net/avahi-app +AVAHI_MESON_TRUE= dnssd +AVAHI_VARS= GLIB_SCHEMAS+=org.gnome.system.dns_sd.gschema.xml + +BLURAY_LIB_DEPENDS= libbluray.so:multimedia/libbluray +BLURAY_MESON_TRUE= bluray +BLURAY_DESC= Blu-ray metadata support + +FUSE_USES= fuse:3 +FUSE_MESON_TRUE= fuse + +AFC_LIB_DEPENDS= libimobiledevice-1.0.so:comms/libimobiledevice \ + libplist-2.0.so:devel/libplist +AFC_MESON_TRUE= afc + +GOA_LIB_DEPENDS= libgoa-1.0.so:net/gnome-online-accounts +GOA_MESON_TRUE= goa + +SMB_USES= samba:lib +SMB_MESON_TRUE= smb +SMB_VARS= GLIB_SCHEMAS+=org.gnome.system.smb.gschema.xml + +CDDA_LIB_DEPENDS= libcdio_paranoia.so:sysutils/libcdio-paranoia \ + libcdio.so:sysutils/libcdio +CDDA_MESON_TRUE= cdda + +GOOGLE_IMPLIES= GOA +GOOGLE_LIB_DEPENDS= libgdata.so:devel/libgdata +GOOGLE_MESON_TRUE= google + +GPHOTO_LIB_DEPENDS= libgphoto2.so:graphics/libgphoto2 +GPHOTO_MESON_TRUE= gphoto2 + +MTP_LIB_DEPENDS= libmtp.so:multimedia/libmtp +MTP_MESON_TRUE= mtp + +NFS_LIB_DEPENDS= libnfs.so:net/libnfs +NFS_MESON_TRUE= nfs + +.include <bsd.port.mk> diff --git a/filesystems/gvfs/distinfo b/filesystems/gvfs/distinfo new file mode 100644 index 000000000000..57983f695276 --- /dev/null +++ b/filesystems/gvfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1658680082 +SHA256 (gnome/gvfs-1.50.2.tar.xz) = 03d72b8c15ef438110f0cf457b5655266c8b515d0412b30f4d55cfa0da06ac5e +SIZE (gnome/gvfs-1.50.2.tar.xz) = 1214464 diff --git a/filesystems/gvfs/files/patch-client_gvfsfusedaemon.c b/filesystems/gvfs/files/patch-client_gvfsfusedaemon.c new file mode 100644 index 000000000000..0d9c69189b48 --- /dev/null +++ b/filesystems/gvfs/files/patch-client_gvfsfusedaemon.c @@ -0,0 +1,12 @@ +--- client/gvfsfusedaemon.c.orig 2012-05-15 20:01:49.000000000 +0200 ++++ client/gvfsfusedaemon.c 2012-05-31 14:00:26.000000000 +0200 +@@ -2361,7 +2361,9 @@ + subthread = g_thread_new ("gvfs-fuse-sub", (GThreadFunc) subthread_main, NULL); + + /* Indicate O_TRUNC support for open() */ ++#ifdef FUSE_CAP_ATOMIC_O_TRUNC + conn->want |= FUSE_CAP_ATOMIC_O_TRUNC; ++#endif + + return NULL; + } diff --git a/filesystems/gvfs/files/patch-daemon_gvfswritechannel.c b/filesystems/gvfs/files/patch-daemon_gvfswritechannel.c new file mode 100644 index 000000000000..54c4216873e4 --- /dev/null +++ b/filesystems/gvfs/files/patch-daemon_gvfswritechannel.c @@ -0,0 +1,10 @@ +--- daemon/gvfswritechannel.c.orig 2007-12-22 18:50:10.000000000 -0500 ++++ daemon/gvfswritechannel.c 2007-12-22 18:50:20.000000000 -0500 +@@ -30,6 +30,7 @@ + #include <sys/un.h> + #include <unistd.h> + #include <fcntl.h> ++#include <string.h> + + #include <glib.h> + #include <glib-object.h> diff --git a/filesystems/gvfs/pkg-descr b/filesystems/gvfs/pkg-descr new file mode 100644 index 000000000000..5ea65916b9a7 --- /dev/null +++ b/filesystems/gvfs/pkg-descr @@ -0,0 +1,4 @@ +GVFS allows applications and users to treat any number of file system +concepts as a part of the local filesystem. With GVFS, filesystems across +the internet, on connected devices, and in multiple formats are as simple +to access (and write code for) as any directory on the local machine. diff --git a/filesystems/gvfs/pkg-plist b/filesystems/gvfs/pkg-plist new file mode 100644 index 000000000000..b4919f0bf62e --- /dev/null +++ b/filesystems/gvfs/pkg-plist @@ -0,0 +1,156 @@ +include/gvfs-client/gvfs/gvfsurimapper.h +include/gvfs-client/gvfs/gvfsuriutils.h +lib/gio/modules/libgioremote-volume-monitor.so +lib/gio/modules/libgvfsdbus.so +lib/gvfs/libgvfscommon.so +lib/gvfs/libgvfsdaemon.so +%%AFC%%libexec/gvfs-afc-volume-monitor +%%GOA%%libexec/gvfs-goa-volume-monitor +%%GPHOTO%%libexec/gvfs-gphoto2-volume-monitor +%%MTP%%libexec/gvfs-mtp-volume-monitor +libexec/gvfs-udisks2-volume-monitor +libexec/gvfsd +%%AFC%%libexec/gvfsd-afc +libexec/gvfsd-afp +libexec/gvfsd-afp-browse +libexec/gvfsd-archive +libexec/gvfsd-burn +%%CDDA%%libexec/gvfsd-cdda +libexec/gvfsd-computer +libexec/gvfsd-dav +%%AVAHI%%libexec/gvfsd-dnssd +libexec/gvfsd-ftp +%%FUSE%%libexec/gvfsd-fuse +%%GOOGLE%%libexec/gvfsd-google +%%GPHOTO%%libexec/gvfsd-gphoto2 +libexec/gvfsd-http +libexec/gvfsd-localtest +libexec/gvfsd-metadata +%%MTP%%libexec/gvfsd-mtp +libexec/gvfsd-network +%%NFS%%libexec/gvfsd-nfs +libexec/gvfsd-recent +libexec/gvfsd-sftp +%%SMB%%libexec/gvfsd-smb +%%SMB%%libexec/gvfsd-smb-browse +libexec/gvfsd-trash +%%FUSE%%share/man/man1/gvfsd-fuse.1.gz +share/man/man1/gvfsd-metadata.1.gz +share/man/man1/gvfsd.1.gz +share/man/man7/gvfs.7.gz +%%AVAHI%%share/GConf/gsettings/gvfs-dns-sd.convert +%%SMB%%share/GConf/gsettings/gvfs-smb.convert +share/dbus-1/services/org.gtk.vfs.Daemon.service +%%AFC%%share/dbus-1/services/org.gtk.vfs.AfcVolumeMonitor.service +%%GPHOTO%%share/dbus-1/services/org.gtk.vfs.GPhoto2VolumeMonitor.service +%%GOA%%share/dbus-1/services/org.gtk.vfs.GoaVolumeMonitor.service +%%MTP%%share/dbus-1/services/org.gtk.vfs.MTPVolumeMonitor.service +share/dbus-1/services/org.gtk.vfs.Metadata.service +share/dbus-1/services/org.gtk.vfs.UDisks2VolumeMonitor.service +%%AFC%%%%DATADIR%%/mounts/afc.mount +%%DATADIR%%/mounts/afp-browse.mount +%%DATADIR%%/mounts/afp.mount +%%DATADIR%%/mounts/archive.mount +%%DATADIR%%/mounts/burn.mount +%%CDDA%%%%DATADIR%%/mounts/cdda.mount +%%DATADIR%%/mounts/computer.mount +%%AVAHI%%%%DATADIR%%/mounts/dav+sd.mount +%%DATADIR%%/mounts/dav.mount +%%AVAHI%%%%DATADIR%%/mounts/dns-sd.mount +%%DATADIR%%/mounts/ftp.mount +%%DATADIR%%/mounts/ftpis.mount +%%DATADIR%%/mounts/ftps.mount +%%GOOGLE%%%%DATADIR%%/mounts/google.mount +%%GPHOTO%%%%DATADIR%%/mounts/gphoto2.mount +%%DATADIR%%/mounts/http.mount +%%DATADIR%%/mounts/localtest.mount +%%MTP%%%%DATADIR%%/mounts/mtp.mount +%%DATADIR%%/mounts/network.mount +%%NFS%%%%DATADIR%%/mounts/nfs.mount +%%DATADIR%%/mounts/recent.mount +%%DATADIR%%/mounts/sftp.mount +%%SMB%%%%DATADIR%%/mounts/smb-browse.mount +%%SMB%%%%DATADIR%%/mounts/smb.mount +%%DATADIR%%/mounts/trash.mount +%%AFC%%%%DATADIR%%/remote-volume-monitors/afc.monitor +%%GOA%%%%DATADIR%%/remote-volume-monitors/goa.monitor +%%GPHOTO%%%%DATADIR%%/remote-volume-monitors/gphoto2.monitor +%%MTP%%%%DATADIR%%/remote-volume-monitors/mtp.monitor +%%DATADIR%%/remote-volume-monitors/udisks2.monitor +share/locale/af/LC_MESSAGES/gvfs.mo +share/locale/ar/LC_MESSAGES/gvfs.mo +share/locale/as/LC_MESSAGES/gvfs.mo +share/locale/ast/LC_MESSAGES/gvfs.mo +share/locale/be/LC_MESSAGES/gvfs.mo +share/locale/be@latin/LC_MESSAGES/gvfs.mo +share/locale/bg/LC_MESSAGES/gvfs.mo +share/locale/bn/LC_MESSAGES/gvfs.mo +share/locale/bn_IN/LC_MESSAGES/gvfs.mo +share/locale/bs/LC_MESSAGES/gvfs.mo +share/locale/ca/LC_MESSAGES/gvfs.mo +share/locale/ca@valencia/LC_MESSAGES/gvfs.mo +share/locale/cs/LC_MESSAGES/gvfs.mo +share/locale/da/LC_MESSAGES/gvfs.mo +share/locale/de/LC_MESSAGES/gvfs.mo +share/locale/el/LC_MESSAGES/gvfs.mo +share/locale/en@shaw/LC_MESSAGES/gvfs.mo +share/locale/en_GB/LC_MESSAGES/gvfs.mo +share/locale/eo/LC_MESSAGES/gvfs.mo +share/locale/es/LC_MESSAGES/gvfs.mo +share/locale/et/LC_MESSAGES/gvfs.mo +share/locale/eu/LC_MESSAGES/gvfs.mo +share/locale/fa/LC_MESSAGES/gvfs.mo +share/locale/fi/LC_MESSAGES/gvfs.mo +share/locale/fr/LC_MESSAGES/gvfs.mo +share/locale/fur/LC_MESSAGES/gvfs.mo +share/locale/ga/LC_MESSAGES/gvfs.mo +share/locale/gl/LC_MESSAGES/gvfs.mo +share/locale/gu/LC_MESSAGES/gvfs.mo +share/locale/he/LC_MESSAGES/gvfs.mo +share/locale/hi/LC_MESSAGES/gvfs.mo +share/locale/hr/LC_MESSAGES/gvfs.mo +share/locale/hu/LC_MESSAGES/gvfs.mo +share/locale/id/LC_MESSAGES/gvfs.mo +share/locale/it/LC_MESSAGES/gvfs.mo +share/locale/ja/LC_MESSAGES/gvfs.mo +share/locale/kk/LC_MESSAGES/gvfs.mo +share/locale/kn/LC_MESSAGES/gvfs.mo +share/locale/ko/LC_MESSAGES/gvfs.mo +share/locale/ku/LC_MESSAGES/gvfs.mo +share/locale/lt/LC_MESSAGES/gvfs.mo +share/locale/lv/LC_MESSAGES/gvfs.mo +share/locale/mai/LC_MESSAGES/gvfs.mo +share/locale/mk/LC_MESSAGES/gvfs.mo +share/locale/ml/LC_MESSAGES/gvfs.mo +share/locale/mr/LC_MESSAGES/gvfs.mo +share/locale/ms/LC_MESSAGES/gvfs.mo +share/locale/nb/LC_MESSAGES/gvfs.mo +share/locale/nds/LC_MESSAGES/gvfs.mo +share/locale/ne/LC_MESSAGES/gvfs.mo +share/locale/nl/LC_MESSAGES/gvfs.mo +share/locale/nn/LC_MESSAGES/gvfs.mo +share/locale/oc/LC_MESSAGES/gvfs.mo +share/locale/or/LC_MESSAGES/gvfs.mo +share/locale/pa/LC_MESSAGES/gvfs.mo +share/locale/pl/LC_MESSAGES/gvfs.mo +share/locale/pt/LC_MESSAGES/gvfs.mo +share/locale/pt_BR/LC_MESSAGES/gvfs.mo +share/locale/ro/LC_MESSAGES/gvfs.mo +share/locale/ru/LC_MESSAGES/gvfs.mo +share/locale/sk/LC_MESSAGES/gvfs.mo +share/locale/sl/LC_MESSAGES/gvfs.mo +share/locale/sq/LC_MESSAGES/gvfs.mo +share/locale/sr/LC_MESSAGES/gvfs.mo +share/locale/sr@latin/LC_MESSAGES/gvfs.mo +share/locale/sv/LC_MESSAGES/gvfs.mo +share/locale/ta/LC_MESSAGES/gvfs.mo +share/locale/te/LC_MESSAGES/gvfs.mo +share/locale/tg/LC_MESSAGES/gvfs.mo +share/locale/th/LC_MESSAGES/gvfs.mo +share/locale/tr/LC_MESSAGES/gvfs.mo +share/locale/ug/LC_MESSAGES/gvfs.mo +share/locale/uk/LC_MESSAGES/gvfs.mo +share/locale/vi/LC_MESSAGES/gvfs.mo +share/locale/zh_CN/LC_MESSAGES/gvfs.mo +share/locale/zh_HK/LC_MESSAGES/gvfs.mo +share/locale/zh_TW/LC_MESSAGES/gvfs.mo diff --git a/filesystems/hfsexplorer/Makefile b/filesystems/hfsexplorer/Makefile new file mode 100644 index 000000000000..1ca4b1fad3b7 --- /dev/null +++ b/filesystems/hfsexplorer/Makefile @@ -0,0 +1,51 @@ +PORTNAME= hfsexplorer +DISTVERSIONPREFIX= ${PORTNAME}- +DISTVERSION= 2021.10.9 +CATEGORIES= filesystems sysutils java + +MAINTAINER= ports@FreeBSD.org +COMMENT= HFSExplorer read Mac-formatted harddisks and disk images +WWW= https://www.catacombae.org/hfsexplorer/ + +LICENSE= GPLv3 + +BUILD_DEPENDS= ant:devel/apache-ant + +USE_GITHUB= yes +GH_ACCOUNT= unsound +USE_JAVA= yes + +DESKTOP_ENTRIES= "hfsexplorer" \ + "reader Mac-formatted harddisk" \ + "${DATADIR}/res/icon.png" \ + "${PORTNAME}" \ + "System;Utility;Java;" \ + false + +NO_ARCH= yes + +OPTIONS_DEFINE= DOCS + +do-configure: + @cd ${WRKSRC}/dist/bin && ${REINPLACE_CMD} -e 's|BASEDIR=".*"|BASEDIR="${DATADIR}/lib"|g' \ + hfsx resview unhfs + @${REINPLACE_CMD} -e 's|BASEDIR=".*"|BASEDIR="${DATADIR}/lib"|g' \ + ${WRKSRC}/dist/bin/hfsexplorer + +do-build: + @cd ${WRKSRC} && ${SH} buildall + +do-install: + @${MKDIR} ${STAGEDIR}${DATADIR}/lib + @${MKDIR} ${STAGEDIR}${DATADIR}/res +.for f in hfsx resview unhfs + cd ${WRKSRC} && ${INSTALL_SCRIPT} dist/bin/${f} ${STAGEDIR}${PREFIX}/bin +.endfor + cd ${WRKSRC} && ${INSTALL_SCRIPT} dist/bin/hfsexplorer ${STAGEDIR}${PREFIX}/bin/${PORTNAME} + cd ${WRKSRC} && ${INSTALL_DATA} dist/lib/*.jar ${STAGEDIR}${DATADIR}/lib + cd ${WRKSRC} && ${INSTALL_DATA} dist/res/icon.png ${STAGEDIR}${DATADIR}/res + +do-install-DOCS-on: + cd ${WRKSRC}/dist/doc && ${COPYTREE_SHARE} html ${STAGEDIR}${DOCSDIR}/ + +.include <bsd.port.mk> diff --git a/filesystems/hfsexplorer/distinfo b/filesystems/hfsexplorer/distinfo new file mode 100644 index 000000000000..6d63ef3e632c --- /dev/null +++ b/filesystems/hfsexplorer/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1692888874 +SHA256 (unsound-hfsexplorer-hfsexplorer-2021.10.9_GH0.tar.gz) = 99cc26d26fdd9013169cae0b0ae9b845a9edb2ac3f4c9ddf865d6ffbb3669b9c +SIZE (unsound-hfsexplorer-hfsexplorer-2021.10.9_GH0.tar.gz) = 1403267 diff --git a/filesystems/hfsexplorer/files/patch-build.xml b/filesystems/hfsexplorer/files/patch-build.xml new file mode 100644 index 000000000000..f76cc72470ee --- /dev/null +++ b/filesystems/hfsexplorer/files/patch-build.xml @@ -0,0 +1,20 @@ +--- build.xml.orig 2023-08-24 16:44:05 UTC ++++ build.xml +@@ -3,7 +3,7 @@ + <project basedir="." default="all" name="HFSExplorer"> + <property environment="env"/> + <property name="debuglevel" value="source,lines,vars"/> +- <condition property="java.target.level" value="1.5"> ++ <condition property="java.target.level" value="6"> + <or> + <equals arg1="${ant.java.version}" arg2="1.5"/> + <equals arg1="${ant.java.version}" arg2="1.6"/> +@@ -12,7 +12,7 @@ + </or> + </condition> + <property name="java.target.level" value="${ant.java.version}"/> +- <condition property="java.source.level" value="1.5"> ++ <condition property="java.source.level" value="6"> + <or> + <equals arg1="${ant.java.version}" arg2="1.5"/> + <equals arg1="${ant.java.version}" arg2="1.6"/> diff --git a/filesystems/hfsexplorer/pkg-descr b/filesystems/hfsexplorer/pkg-descr new file mode 100644 index 000000000000..e3aef13452e6 --- /dev/null +++ b/filesystems/hfsexplorer/pkg-descr @@ -0,0 +1,11 @@ +HFSExplorer is an application that can read Mac-formatted hard disks and disk +images. It can read the file systems HFS (Mac OS Standard), HFS+ (Mac OS +Extended) and HFSX (Mac OS Extended with case sensitive file names). + +HFSExplorer allows you to browse your Mac volumes with a graphical file system +browser, extract files (copy to hard disk), view detailed information about the +volume and create disk images from the volume. +HFSExplorer can also read most .dmg disk images created on a Mac, including zlib +/ bzip2 compressed images and AES-128 encrypted images. It supports the +partition schemes Master Boot Record, GUID Partition Table and Apple Partition +Map natively. diff --git a/filesystems/hfsexplorer/pkg-plist b/filesystems/hfsexplorer/pkg-plist new file mode 100644 index 000000000000..c61f0354a525 --- /dev/null +++ b/filesystems/hfsexplorer/pkg-plist @@ -0,0 +1,21 @@ +bin/hfsexplorer +bin/hfsx +bin/resview +bin/unhfs +%%DATADIR%%/lib/apache-ant-1.7.0-bzip2.jar +%%DATADIR%%/lib/csframework.jar +%%DATADIR%%/lib/hfsx.jar +%%DATADIR%%/lib/hfsx_dmglib.jar +%%DATADIR%%/lib/iharder-base64.jar +%%DATADIR%%/lib/swing-layout-1.0.4.jar +%%DATADIR%%/res/icon.png +%%PORTDOCS%%%%DOCSDIR%%/html/img/HFSExplorer_logo.png +%%PORTDOCS%%%%DOCSDIR%%/html/index.html +%%PORTDOCS%%%%DOCSDIR%%/html/troubleshooting.html +%%PORTDOCS%%%%DOCSDIR%%/html/usage.html +@dir %%DATADIR%%/res +@dir %%DATADIR%%/lib +@dir %%DATADIR%% +%%PORTDOCS%%@dir %%DOCSDIR%%/html/img +%%PORTDOCS%%@dir %%DOCSDIR%%/html +%%PORTDOCS%%@dir %%DOCSDIR%% diff --git a/filesystems/hfsfuse/Makefile b/filesystems/hfsfuse/Makefile new file mode 100644 index 000000000000..cfc69e5b055e --- /dev/null +++ b/filesystems/hfsfuse/Makefile @@ -0,0 +1,42 @@ +PORTNAME= hfsfuse +DISTVERSION= 0.132 +PORTREVISION= 1 +CATEGORIES= filesystems +MASTER_SITES= https://github.com/0x09/hfsfuse/releases/download/${DISTVERSION}/ +PKGNAMEPREFIX= fusefs- + +MAINTAINER= me@cameronkatri.com +COMMENT= FUSE driver for HFS+ filesystems +WWW= https://github.com/0x09/hfsfuse + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/src/COPYING + +LIB_DEPENDS= libublio.so:devel/libublio \ + libutf8proc.so:textproc/utf8proc + +USES= fuse gmake +USE_CSTD= c99 +USE_GITHUB= yes +GH_ACCOUNT= 0x09 + +MAKE_ARGS= CONFIG_CFLAGS="${CFLAGS}" \ + WITH_UBLIO=system \ + WITH_UTF8PROC=system +ALL_TARGET= config all + +PLIST_FILES= bin/hfsdump \ + bin/hfsfuse +PORTDOCS= README.md + +OPTIONS_DEFINE= DOCS + +do-install: + cd ${WRKSRC} && ${INSTALL_PROGRAM} hfsdump hfsfuse \ + ${STAGEDIR}${PREFIX}/bin + +do-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.mk> diff --git a/filesystems/hfsfuse/distinfo b/filesystems/hfsfuse/distinfo new file mode 100644 index 000000000000..57ed21da5d32 --- /dev/null +++ b/filesystems/hfsfuse/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1621259070 +SHA256 (0x09-hfsfuse-0.132_GH0.tar.gz) = 699052701ccd46c82a473e17ac61e7ad56873189781069eb927b8c88eb8f9467 +SIZE (0x09-hfsfuse-0.132_GH0.tar.gz) = 246864 diff --git a/filesystems/hfsfuse/pkg-descr b/filesystems/hfsfuse/pkg-descr new file mode 100644 index 000000000000..f919854c8e6e --- /dev/null +++ b/filesystems/hfsfuse/pkg-descr @@ -0,0 +1,8 @@ +FUSE driver for HFS+ based on NetBSD's kernel driver with +modifications. + +This driver is read-only and cannot write to or damage the target +filesystem in any way. + +hfsfuse also includes a standalone tool, hfsdump, to inspect the +contents of an HFS+ volume without FUSE. diff --git a/filesystems/hfsutils/Makefile b/filesystems/hfsutils/Makefile new file mode 100644 index 000000000000..80c19431f37e --- /dev/null +++ b/filesystems/hfsutils/Makefile @@ -0,0 +1,56 @@ +PORTNAME= hfsutils +PORTVERSION= 3.2.6 +PORTREVISION= 4 +CATEGORIES= filesystems sysutils +MASTER_SITES= ftp://ftp.mars.org/pub/hfs/ + +MAINTAINER= ports@FreeBSD.org +COMMENT= Utilities for accessing Apple's HFS volumes +WWW= https://www.mars.org/home/rob/proj/hfs/ + +LICENSE= GPLv2+ +LICENSE_FILE= ${WRKSRC}/COPYING + +CONFLICTS= hfs + +USES= gmake # passing -jX breaks BSD make(1) +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +ALL_TARGET= all hfsck/hfsck + +PORTDOCS= * + +OPTIONS_DEFINE= TCLTK DEVLIBS DOCS +OPTIONS_SUB= yes + +TCLTK_DESC= Enable Tcl interface (HFS "shell") and Tk-based GUI +DEVLIBS_DESC= Install developer libraries and header files + +TCLTK_CATEGORIES= tcl tk +TCLTK_USES= tk +TCLTK_CPPFLAGS= -I${LOCALBASE}/include +TCLTK_CONFIGURE_ON= --with-tcl=${TCL_LIBDIR} --with-tk=${TK_LIBDIR} +TCLTK_CONFIGURE_OFF= --without-tcl --without-tk + +DEVLIBS_CONFIGURE_ON= --enable-devlibs + +post-patch: +# Unbreak against Tcl 8.6 + @${ECHO_CMD} '#define USE_INTERP_RESULT 1' >> ${WRKSRC}/config.h.in +# Allow staging (support DESTDIR) + @${FIND} ${WRKSRC} -type f -name Makefile.in | ${XARGS} \ + ${REINPLACE_CMD} -e '/^...DEST =/s,@,$$(DESTDIR)&,' + +post-install: + ${INSTALL_PROGRAM} ${WRKSRC}/hfsck/hfsck ${STAGEDIR}${PREFIX}/bin + +post-install-TCLTK-on: + @${CHMOD} 755 ${STAGEDIR}${PREFIX}/bin/hfs + +post-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} +.for f in BLURB CHANGES README TODO doc/*.txt + ${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}${DOCSDIR} +.endfor + +.include <bsd.port.mk> diff --git a/filesystems/hfsutils/distinfo b/filesystems/hfsutils/distinfo new file mode 100644 index 000000000000..518b017fcb0c --- /dev/null +++ b/filesystems/hfsutils/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905175 +SHA256 (hfsutils-3.2.6.tar.gz) = bc9d22d6d252b920ec9cdf18e00b7655a6189b3f34f42e58d5bb152957289840 +SIZE (hfsutils-3.2.6.tar.gz) = 207697 diff --git a/filesystems/hfsutils/files/patch-Makefile.in b/filesystems/hfsutils/files/patch-Makefile.in new file mode 100644 index 000000000000..d736f4db0809 --- /dev/null +++ b/filesystems/hfsutils/files/patch-Makefile.in @@ -0,0 +1,36 @@ +--- Makefile.in.orig 1998-08-31 18:40:14 UTC ++++ Makefile.in +@@ -64,7 +64,8 @@ TARGETS = $(CLITARGETS) $(TCLTARGETS) $( + + CLITARGETS = hattrib hcd hcopy hdel hdir hformat hls hmkdir hmount hpwd \ + hrename hrmdir humount hvol +-TCLTARGETS = hfssh hfs ++TCLTARGETS = hfssh ++TCLSCRIPTS = hfs + TKTARGETS = xhfs + + LIBHFS = libhfs/libhfs.a +@@ -96,7 +97,7 @@ UTILOBJS = crc.o binhex.o copyin.o copyo + all :: @MAKE_TARGETS@ + + all_cli :: $(CLITARGETS) +-all_tcl :: $(TCLTARGETS) ++all_tcl :: $(TCLTARGETS) $(TCLSCRIPTS) + all_tk :: $(TKTARGETS) + all_lib :: $(LIBHFS) $(LIBRSRC) + +@@ -129,9 +130,13 @@ install_tcl :: all_tcl + $(BININSTALL) $$file "$(BINDEST)/."; \ + done + ++ for file in $(TCLSCRIPTS); do \ ++ $(LIBINSTALL) $$file "$(BINDEST)/."; \ ++ done ++ + if [ -f "$(BINDEST)/hfs" ]; then \ + sed -e '1d' "$(BINDEST)/hfs" > "$(BINDEST)/hfs.new"; \ +- $(BININSTALL) "$(BINDEST)/hfs.new" "$(BINDEST)/hfs"; \ ++ $(LIBINSTALL) "$(BINDEST)/hfs.new" "$(BINDEST)/hfs"; \ + rm -f "$(BINDEST)/hfs.new"; \ + fi + diff --git a/filesystems/hfsutils/pkg-descr b/filesystems/hfsutils/pkg-descr new file mode 100644 index 000000000000..5a79840b7135 --- /dev/null +++ b/filesystems/hfsutils/pkg-descr @@ -0,0 +1,14 @@ +HFS is the "Hierarchical File System" used on modern Macintosh computers. +With this package, you can read and write Macintosh-formatted media such as +floppy disks, CD-ROMs, and SCSI hard disks on most Unix platforms. You can +also format raw media or file into an HFS volume. + +This package contains a number of different tools: + + - Several command-line programs (hmount, hls, hcopy, et al.) + - Tk-based front-end for browsing and copying files through a + variety of transfer modes (MacBinary, BinHex, text, etc.) + - Tcl package and interface for scriptable access to volumes + - C library for low-level access to volumes + +Support for Apple's new Extended Format (HFS+) is currently not available. diff --git a/filesystems/hfsutils/pkg-plist b/filesystems/hfsutils/pkg-plist new file mode 100644 index 000000000000..287d168c53cd --- /dev/null +++ b/filesystems/hfsutils/pkg-plist @@ -0,0 +1,40 @@ +bin/hattrib +bin/hcd +bin/hcopy +bin/hdel +bin/hdir +bin/hformat +%%TCLTK%%bin/hfs +bin/hfsck +%%TCLTK%%bin/hfssh +bin/hls +bin/hmkdir +bin/hmount +bin/hpwd +bin/hrename +bin/hrmdir +bin/humount +bin/hvol +%%TCLTK%%bin/xhfs +%%DEVLIBS%%include/hfs.h +%%DEVLIBS%%include/rsrc.h +%%DEVLIBS%%lib/libhfs.a +%%DEVLIBS%%lib/librsrc.a +share/man/man1/hattrib.1.gz +share/man/man1/hcd.1.gz +share/man/man1/hcopy.1.gz +share/man/man1/hdel.1.gz +share/man/man1/hdir.1.gz +share/man/man1/hformat.1.gz +%%TCLTK%%share/man/man1/hfs.1.gz +%%TCLTK%%share/man/man1/hfssh.1.gz +share/man/man1/hfsutils.1.gz +share/man/man1/hls.1.gz +share/man/man1/hmkdir.1.gz +share/man/man1/hmount.1.gz +share/man/man1/hpwd.1.gz +share/man/man1/hrename.1.gz +share/man/man1/hrmdir.1.gz +share/man/man1/humount.1.gz +share/man/man1/hvol.1.gz +%%TCLTK%%share/man/man1/xhfs.1.gz diff --git a/filesystems/httpdirfs/Makefile b/filesystems/httpdirfs/Makefile new file mode 100644 index 000000000000..8cda154772d7 --- /dev/null +++ b/filesystems/httpdirfs/Makefile @@ -0,0 +1,38 @@ +PORTNAME= httpdirfs +DISTVERSION= 1.2.6 +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- + +PATCH_SITES= https://github.com/fangfufu/httpdirfs/commit/ +PATCHFILES= 43bdf7e71fde43084519e86051533a6b20c31474.patch:-p1 \ + 08700415d7b61d9f611a858481b26858fe92eb7a.patch:-p1 + +MAINTAINER= 0mp@FreeBSD.org +COMMENT= FUSE filesystem to mount HTTP directory listings, with a permanent cache +WWW= https://github.com/fangfufu/httpdirfs + +LICENSE= GPL3OPENSSL +LICENSE_NAME= GPLv3 or later with execption to link with OpenSSL +LICENSE_FILE= ${WRKSRC}/LICENSE +LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept + +LIB_DEPENDS= libcurl.so:ftp/curl \ + libexpat.so:textproc/expat2 \ + libgumbo.so:devel/gumbo \ + libuuid.so:misc/e2fsprogs-libuuid + +USES= fuse:3 meson pkgconfig ssl + +USE_GITHUB= yes +GH_ACCOUNT= fangfufu + +PLIST_FILES= bin/httpdirfs +PORTDOCS= README.md + +OPTIONS_DEFINE= DOCS + +post-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR}/ + +.include <bsd.port.mk> diff --git a/filesystems/httpdirfs/distinfo b/filesystems/httpdirfs/distinfo new file mode 100644 index 000000000000..49205edda4c0 --- /dev/null +++ b/filesystems/httpdirfs/distinfo @@ -0,0 +1,7 @@ +TIMESTAMP = 1730405732 +SHA256 (fangfufu-httpdirfs-1.2.6_GH0.tar.gz) = 0d5b7f846947c2cf61e7851658f29501a7934d23a6a2c914e76efb889d7e1993 +SIZE (fangfufu-httpdirfs-1.2.6_GH0.tar.gz) = 81582 +SHA256 (43bdf7e71fde43084519e86051533a6b20c31474.patch) = f6022cf2d14226606a6dbca676f31e7f0f859ca634725e87f0d299d063145004 +SIZE (43bdf7e71fde43084519e86051533a6b20c31474.patch) = 4476 +SHA256 (08700415d7b61d9f611a858481b26858fe92eb7a.patch) = fb01a8e7e6a8416ff549147a89bd6ddf865a08e74c5d7808cc9fb7710732aa6d +SIZE (08700415d7b61d9f611a858481b26858fe92eb7a.patch) = 1726 diff --git a/filesystems/httpdirfs/pkg-descr b/filesystems/httpdirfs/pkg-descr new file mode 100644 index 000000000000..14bcef6ad8c5 --- /dev/null +++ b/filesystems/httpdirfs/pkg-descr @@ -0,0 +1,11 @@ +HTTPDirFS stands for Hyper Text Transfer Protocol Directory Filesystem. It may +be used to to mount HTTP directory listings as if it was a partition. + +HTTP connections are reused due to the use of cURL-multi interface. The FUSE +component runs in multithreaded mode. + +There is a permanent cache system which can cache all the file segments that +have been downloaded. + +The support for Airsonic / Subsonic server is also included. This allows the +user to mount a remote music collection locally. diff --git a/filesystems/httpfs/Makefile b/filesystems/httpfs/Makefile new file mode 100644 index 000000000000..40eaf89aa25b --- /dev/null +++ b/filesystems/httpfs/Makefile @@ -0,0 +1,53 @@ +PORTNAME= httpfs +PORTVERSION= 2.${VERSION} +PORTREVISION= 2 +PORTEPOCH= 1 +CATEGORIES= filesystems www +MASTER_SITES= SF/${PORTNAME}/${PORTNAME}2/ +PKGNAMEPREFIX= fusefs- +DISTNAME= ${PORTNAME}2-${VERSION} + +MAINTAINER= ports@FreeBSD.org +COMMENT= Fuse-based http filesystem +WWW= https://httpfs.sourceforge.net/ + +LICENSE= GPLv2+ +LICENSE_FILE= ${WRKSRC}/debian/copyright + +DEPRECATED= Abandonware, last release in 2012 and there are multiple issues unresolved +EXPIRATION_DATE=2024-12-31 + +USES= fuse pkgconfig gmake + +WRKSRC= ${WRKDIR}/${PORTNAME}2-${VERSION} +VERSION= 0.1.5 +CFLAGS+= -D__BSD_VISIBLE +PLIST_FILES= bin/httpfs2 + +CERT_STORE= ${LOCALBASE}/share/certs/ca-root-nss.crt +MAKE_ENV+= CERT_STORE=${CERT_STORE} + +OPTIONS_DEFINE= GNUTLS +OPTIONS_DEFAULT= GNUTLS + +GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls +GNUTLS_RUN_DEPENDS= ${CERT_STORE}:security/ca_root_nss + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/httpfs2 ${STAGEDIR}${PREFIX}/bin + +.include <bsd.port.options.mk> + +.if ${PORT_OPTIONS:MGNUTLS} +ALL_TARGET= full +PLIST_FILES+= bin/httpfs2-mt bin/httpfs2-ssl bin/httpfs2-ssl-mt +.else +ALL_TARGET= httpfs2 +.endif + +do-install-GNUTLS-on: + cd ${WRKSRC} && \ + ${INSTALL_PROGRAM} httpfs2-mt httpfs2-ssl httpfs2-ssl-mt \ + ${STAGEDIR}${PREFIX}/bin + +.include <bsd.port.mk> diff --git a/filesystems/httpfs/distinfo b/filesystems/httpfs/distinfo new file mode 100644 index 000000000000..350e69639b94 --- /dev/null +++ b/filesystems/httpfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905182 +SHA256 (httpfs2-0.1.5.tar.gz) = 01cb4bb38deb344f540da6f1464dc7edbdeb51213ad810b8c9c282c1e17e0fc1 +SIZE (httpfs2-0.1.5.tar.gz) = 16870 diff --git a/filesystems/httpfs/files/patch-Makefile b/filesystems/httpfs/files/patch-Makefile new file mode 100644 index 000000000000..4e2252a2840b --- /dev/null +++ b/filesystems/httpfs/files/patch-Makefile @@ -0,0 +1,60 @@ +--- Makefile.orig 2012-09-03 14:58:02 UTC ++++ Makefile +@@ -1,5 +1,5 @@ + MAIN_CFLAGS := -g -Os -Wall $(shell pkg-config fuse --cflags) +-MAIN_CPPFLAGS := -Wall -Wno-unused-function -Wconversion -Wtype-limits -DUSE_AUTH -D_XOPEN_SOURCE=700 -D_ISOC99_SOURCE ++MAIN_CPPFLAGS := -Wall -Wno-unused-function -Wconversion -DUSE_AUTH -D_XOPEN_SOURCE=700 -D_ISOC99_SOURCE + THR_CPPFLAGS := -DUSE_THREAD + THR_LDFLAGS := -lpthread + MAIN_LDFLAGS := $(shell pkg-config fuse --libs | sed -e s/-lrt// -e s/-ldl// -e s/-pthread// -e "s/ / /g") +@@ -10,7 +10,7 @@ ifeq ($(shell pkg-config --atleast-version 2.10 gnutls + + variants += -ssl -ssl-mt + +- CERT_STORE := /etc/ssl/certs/ca-certificates.crt ++# CERT_STORE := /etc/ssl/certs/ca-certificates.crt + SSL_CPPFLAGS := -DUSE_SSL $(shell pkg-config gnutls --cflags) -DCERT_STORE=\"$(CERT_STORE)\" + SSL_LDFLAGS := $(shell pkg-config gnutls --libs) + endif +@@ -23,7 +23,8 @@ manpages = $(addsuffix .1,$(binaries)) + + intermediates += $(addsuffix .xml,$(manpages)) + +-targets = $(binaries) $(manpages) ++#targets = $(binaries) $(manpages) ++targets = $(binaries) + + full: + $(MAKE) all $(addprefix all,$(variants)) +@@ -44,8 +45,8 @@ clean-recursive: + %-full: + $(MAKE) $* $(addprefix $*,$(variants)) + +-%.1: %.1.txt +- a2x -f manpage $< ++#%.1: %.1.txt ++# a2x -f manpage $< + + %-ssl: $* + $(MAKE) CPPFLAGS='$(CPPFLAGS) $(SSL_CPPFLAGS)' LDFLAGS='$(LDFLAGS) $(SSL_LDFLAGS)' binsuffix=-ssl$(binsuffix) $* +@@ -60,20 +61,6 @@ clean-recursive: + $(MAKE) CPPFLAGS='$(CPPFLAGS) -DRETRY_ON_RESET' binsuffix=-rst$(binsuffix) $* + + # Rules to automatically make a Debian package +- +-package = $(shell dpkg-parsechangelog | grep ^Source: | sed -e s,'^Source: ',,) +-version = $(shell dpkg-parsechangelog | grep ^Version: | sed -e s,'^Version: ',, -e 's,-.*,,') +-revision = $(shell dpkg-parsechangelog | grep ^Version: | sed -e -e 's,.*-,,') +-architecture = $(shell dpkg --print-architecture) +-tar_dir = $(package)-$(version) +-tar_gz = $(tar_dir).tar.gz +-pkg_deb_dir = pkgdeb +-unpack_dir = $(pkg_deb_dir)/$(tar_dir) +-orig_tar_gz = $(pkg_deb_dir)/$(package)_$(version).orig.tar.gz +-pkg_deb_src = $(pkg_deb_dir)/$(package)_$(version)-$(revision)_source.changes +-pkg_deb_bin = $(pkg_deb_dir)/$(package)_$(version)-$(revision)_$(architecture).changes +- +-deb_pkg_key = CB8C5858 + + debclean: + rm -rf $(pkg_deb_dir) diff --git a/filesystems/httpfs/files/patch-httpfs2.c b/filesystems/httpfs/files/patch-httpfs2.c new file mode 100644 index 000000000000..c18b96efd4a4 --- /dev/null +++ b/filesystems/httpfs/files/patch-httpfs2.c @@ -0,0 +1,53 @@ +--- httpfs2.c.orig 2012-09-03 14:58:02 UTC ++++ httpfs2.c +@@ -35,7 +35,7 @@ + #include <assert.h> + #include <ctype.h> + #include <sys/stat.h> +-#include <sys/dir.h> ++#include <dirent.h> + #include <sys/types.h> + #include <sys/time.h> + #include <sys/socket.h> +@@ -188,7 +188,7 @@ static char * b64_encode(unsigned const char* ptr, lon + + static int httpfs_stat(fuse_ino_t ino, struct stat *stbuf) + { +- stbuf->st_ino = ino; ++ stbuf->st_ino = (uint32_t)ino; + switch (ino) { + case 1: + stbuf->st_mode = S_IFDIR | 0755; +@@ -257,7 +257,7 @@ static void dirbuf_add(fuse_req_t req, struct dirbuf * + b->size += fuse_add_direntry(req, NULL, 0, name, NULL, 0); + b->p = (char *) realloc(b->p, b->size); + memset(&stbuf, 0, sizeof(stbuf)); +- stbuf.st_ino = ino; ++ stbuf.st_ino = (uint32_t)ino; + fuse_add_direntry(req, b->p + oldsize, b->size - oldsize, name, &stbuf, + (off_t) b->size); + } +@@ -667,11 +667,12 @@ static char * url_encode(char * path) { + + static int init_url(struct_url* url) + { +- memset(url, 0, sizeof(url)); ++ memset(url, 0, sizeof(*url)); + url->sock_type = SOCK_CLOSED; + url->timeout = TIMEOUT; + #ifdef USE_SSL +- url->cafile = CERT_STORE; ++ if ((url->cafile = getenv("CERT_STORE")) == NULL) ++ url->cafile = CERT_STORE; + #endif + return 0; + } +@@ -911,7 +912,7 @@ int main(int argc, char *argv[]) + return 3; + } + #ifdef USE_SSL +- else { ++ else if(main_url.ss != NULL) { + print_ssl_info(main_url.ss); + } + #endif diff --git a/filesystems/httpfs/pkg-descr b/filesystems/httpfs/pkg-descr new file mode 100644 index 000000000000..f66315b8419d --- /dev/null +++ b/filesystems/httpfs/pkg-descr @@ -0,0 +1,4 @@ +httpfs depends on FUSE. It uses HTTP/1.1 extensions to read arbitrary +bytes from a file on a web-server. This is particular interesting for +an iso, since it can be investigated (loop device) without actually +downloading the whole iso. diff --git a/filesystems/ifuse/Makefile b/filesystems/ifuse/Makefile new file mode 100644 index 000000000000..03bafe10619b --- /dev/null +++ b/filesystems/ifuse/Makefile @@ -0,0 +1,27 @@ +PORTNAME= ifuse +PORTVERSION= 1.1.4 +PORTREVISION= 2 +CATEGORIES= filesystems +MASTER_SITES= https://github.com/libimobiledevice/${PORTNAME}/releases/download/${PORTVERSION}/ +PKGNAMEPREFIX= fusefs- + +MAINTAINER= ports@FreeBSD.org +COMMENT= FUSE-based filesystem for mounting iOS devices over USB +WWW= https://www.libimobiledevice.org + +LICENSE= LGPL21+ +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libplist-2.0.so:devel/libplist \ + libimobiledevice-1.0.so:comms/libimobiledevice +RUN_DEPENDS= usbmuxd:comms/usbmuxd + +USES= fuse localbase gnome pkgconfig tar:bzip2 +USE_GNOME= glib20 + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share + +PLIST_FILES= bin/${PORTNAME} share/man/man1/ifuse.1.gz + +.include <bsd.port.mk> diff --git a/filesystems/ifuse/distinfo b/filesystems/ifuse/distinfo new file mode 100644 index 000000000000..b21401ae8148 --- /dev/null +++ b/filesystems/ifuse/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1611120705 +SHA256 (ifuse-1.1.4.tar.bz2) = 3550702ef94b2f5f16c7db91c6b3282b2aed1340665834a03e47458e09d98d87 +SIZE (ifuse-1.1.4.tar.bz2) = 94137 diff --git a/filesystems/ifuse/pkg-descr b/filesystems/ifuse/pkg-descr new file mode 100644 index 000000000000..ec833ee456f5 --- /dev/null +++ b/filesystems/ifuse/pkg-descr @@ -0,0 +1,4 @@ +iFuse is a tool for reaching iOS devices filesystems over USB, without +the need of jailbreaking and installing an SSH server on your iGadget. +iFuse is useful if you want to mount the device manually or if you +don't have GNOME with GVFS nor KDE with kio-ufc installed. diff --git a/filesystems/ifuse/pkg-message b/filesystems/ifuse/pkg-message new file mode 100644 index 000000000000..d0087f79ebe9 --- /dev/null +++ b/filesystems/ifuse/pkg-message @@ -0,0 +1,16 @@ +[ +{ type: install + message: <<EOM +To mount your iGadget you first need to launch usbmuxd; see... + +$ usbmuxd --help + +...for help. Then, plug in your device and run iFuse: + +# ifuse -o allow_other /mnt/ipod + +After that, you'll be able to reach its files and use, e.g., gtkpod to +add/delete music/pictures. +EOM +} +] diff --git a/filesystems/jmtpfs/Makefile b/filesystems/jmtpfs/Makefile new file mode 100644 index 000000000000..a5ff5c2f3d75 --- /dev/null +++ b/filesystems/jmtpfs/Makefile @@ -0,0 +1,31 @@ +PORTNAME= jmtpfs +DISTVERSION= g20190420 +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- + +MAINTAINER= rozhuk.im@gmail.com +COMMENT= MTP device filesystem +WWW= https://github.com/kiorky/jmtpfs + +LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libmtp.so:multimedia/libmtp + +USE_GITHUB= yes +GH_ACCOUNT= kiorky +GH_TAGNAME= af0b79bc555ee60088306fdd2b78b2d51b781da3 + +USES= autoreconf compiler:c++11-lib fuse pkgconfig +GNU_CONFIGURE= yes +INSTALL_TARGET= install-strip +PLIST_FILES= bin/${PORTNAME} +PORTDOCS= AUTHORS NEWS README.rst + +OPTIONS_DEFINE= DOCS + +post-install-DOCS-on: + (cd ${WRKSRC} && ${COPYTREE_SHARE} \ + "${PORTDOCS}" ${STAGEDIR}${DOCSDIR}) + +.include <bsd.port.mk> diff --git a/filesystems/jmtpfs/distinfo b/filesystems/jmtpfs/distinfo new file mode 100644 index 000000000000..4371cfe4d47c --- /dev/null +++ b/filesystems/jmtpfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1572307386 +SHA256 (kiorky-jmtpfs-g20190420-af0b79bc555ee60088306fdd2b78b2d51b781da3_GH0.tar.gz) = 2e442aa0d087422c00e4382fbbd80ee7ee4b87e65cad25782b1a0317cce18c77 +SIZE (kiorky-jmtpfs-g20190420-af0b79bc555ee60088306fdd2b78b2d51b781da3_GH0.tar.gz) = 243976 diff --git a/filesystems/jmtpfs/pkg-descr b/filesystems/jmtpfs/pkg-descr new file mode 100644 index 000000000000..5be262a8d2f0 --- /dev/null +++ b/filesystems/jmtpfs/pkg-descr @@ -0,0 +1,14 @@ +jmtpfs is a FUSE and libmtp based filesystem for accessing MTP +(Media Transfer Protocol) devices. It was specifically designed for +exchaning files between Linux (and Mac OS X) systems and newer Android +devices that support MTP but not USB Mass Storage. + +The goal is to create a well behaved filesystem, allowing tools like +find and rsync to work as expected. MTP file types are set automatically +based on file type detection using libmagic. Setting the file appears +to be necessary for some Android apps, like Gallery, to be able to find +and use the files. + +Since it is meant as an Android file transfer utility, and I don't have +any non-Android MTP devices to test with, playlists and other non-file +based data are not supported. diff --git a/filesystems/kio-fuse/Makefile b/filesystems/kio-fuse/Makefile new file mode 100644 index 000000000000..21368d99edb4 --- /dev/null +++ b/filesystems/kio-fuse/Makefile @@ -0,0 +1,22 @@ +PORTNAME= kio-fuse +DISTVERSION= 5.1.0 +CATEGORIES= filesystems sysutils kde +MASTER_SITES= KDE/stable/${PORTNAME} + +MAINTAINER= kde@FreeBSD.org +COMMENT= FUSE Interface for KIO +WWW= https://invent.kde.org/system/kio-fuse + +LICENSE= GPLv3+ +LICENSE_FILE= ${WRKSRC}/LICENSES/GPL-3.0-or-later.txt + +USES= cmake compiler:c++11-lang fuse:3 kde:5 pkgconfig qt:5 tar:xz +USE_KDE= config coreaddons kio service \ + ecm:build +USE_QT= concurrent core dbus network \ + buildtools:build qmake:build + +PLIST_FILES= lib/libexec/kio-fuse \ + share/dbus-1/services/org.kde.KIOFuse.service + +.include <bsd.port.mk> diff --git a/filesystems/kio-fuse/distinfo b/filesystems/kio-fuse/distinfo new file mode 100644 index 000000000000..b839419dae7d --- /dev/null +++ b/filesystems/kio-fuse/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1705202711 +SHA256 (kio-fuse-5.1.0.tar.xz) = 7d104581227d5a19b424b33f4168d181556b1015d6df2218e01a88d64449e94b +SIZE (kio-fuse-5.1.0.tar.xz) = 48820 diff --git a/filesystems/kio-fuse/files/patch-CMakeLists.txt b/filesystems/kio-fuse/files/patch-CMakeLists.txt new file mode 100644 index 000000000000..f6a3612f75c0 --- /dev/null +++ b/filesystems/kio-fuse/files/patch-CMakeLists.txt @@ -0,0 +1,19 @@ +--- CMakeLists.txt.orig 2024-01-14 03:25:35 UTC ++++ CMakeLists.txt +@@ -72,10 +72,12 @@ ecm_generate_dbus_service_file( + DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR} + ) + +-if(DEFINED KDE_INSTALL_SYSTEMDUSERUNITDIR) +- ecm_install_configured_files(INPUT kio-fuse.service.in DESTINATION ${KDE_INSTALL_SYSTEMDUSERUNITDIR}) +-else() +- ecm_install_configured_files(INPUT kio-fuse.service.in DESTINATION ${SYSTEMD_USER_UNIT_INSTALL_DIR}) ++if(CMAKE_SYSTEM_NAME MATCHES "Linux") ++ if(DEFINED KDE_INSTALL_SYSTEMDUSERUNITDIR) ++ ecm_install_configured_files(INPUT kio-fuse.service.in DESTINATION ${KDE_INSTALL_SYSTEMDUSERUNITDIR}) ++ else() ++ ecm_install_configured_files(INPUT kio-fuse.service.in DESTINATION ${SYSTEMD_USER_UNIT_INSTALL_DIR}) ++ endif() + endif() + + feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/filesystems/kio-fuse/pkg-descr b/filesystems/kio-fuse/pkg-descr new file mode 100644 index 000000000000..5b433586114d --- /dev/null +++ b/filesystems/kio-fuse/pkg-descr @@ -0,0 +1,7 @@ +KIO-Fuse allows you to mount remote directories into the root hierarchy of your +local file system, thereby exposing KDE's advanced access capabilities (SSH, +SAMBA/Windows, FTP, TAR/GZip/BZip2, WebDav, etc) to POSIX-compliant +applications such as Firefox, OpenOffice, GNOME apps, shell utilities and more. + +KIO-Fuse works by acting as a bridge between KDE's KIO filesystem design and +FUSE. diff --git a/filesystems/kio-fuse/pkg-message b/filesystems/kio-fuse/pkg-message new file mode 100644 index 000000000000..46e15e48af4c --- /dev/null +++ b/filesystems/kio-fuse/pkg-message @@ -0,0 +1,10 @@ +[ +{ type: install + message: <<EOM +To fully use KIO-fuse, you will need FUSE and usermount enabled, e.g. + kldload fusefs + sysctl vfs.usermount=1 +to make these changes permanent, see loader.conf(5) and sysctl.conf(5). +EOM +} +] diff --git a/filesystems/libbde/Makefile b/filesystems/libbde/Makefile new file mode 100644 index 000000000000..9a0115c8c2fe --- /dev/null +++ b/filesystems/libbde/Makefile @@ -0,0 +1,31 @@ +PORTNAME= libbde +DISTVERSION= alpha-20231220 +CATEGORIES= filesystems devel +MASTER_SITES= https://github.com/libyal/libbde/releases/download/${PORTVERSION:E}/ \ + LOCAL/antoine + +MAINTAINER= antoine@FreeBSD.org +COMMENT= Library and tools to access the BitLocker Drive Encryption volumes +WWW= https://github.com/libyal/libbde + +LICENSE= LGPL3+ +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libcaes.so:security/libcaes + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_ARGS= --enable-python --with-libcaes=${LOCALBASE} --with-openssl=no +CONFIGURE_ENV= PYTHON_CONFIG=${PYTHON_CMD}-config +USES= fuse libtool pathfix pkgconfig python +USE_LDCONFIG= yes +INSTALL_TARGET= install-strip +WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:E} + +OPTIONS_DEFINE= NLS + +NLS_USES= gettext +NLS_CONFIGURE_ON= --with-libintl-prefix=${LOCALBASE} +NLS_CONFIGURE_OFF= --disable-nls + +.include <bsd.port.mk> diff --git a/filesystems/libbde/distinfo b/filesystems/libbde/distinfo new file mode 100644 index 000000000000..7d8c38ce375a --- /dev/null +++ b/filesystems/libbde/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1707835740 +SHA256 (libbde-alpha-20231220.tar.gz) = 21fa33dd40edcea07d50b16ef926db459a6f2db551232dd8c1597484f1367241 +SIZE (libbde-alpha-20231220.tar.gz) = 1739799 diff --git a/filesystems/libbde/pkg-descr b/filesystems/libbde/pkg-descr new file mode 100644 index 000000000000..9acfb6bca20f --- /dev/null +++ b/filesystems/libbde/pkg-descr @@ -0,0 +1,2 @@ +Library and tools to access the BitLocker Drive Encryption (BDE) encrypted +volumes. diff --git a/filesystems/libbde/pkg-plist b/filesystems/libbde/pkg-plist new file mode 100644 index 000000000000..d9f871ed4a9a --- /dev/null +++ b/filesystems/libbde/pkg-plist @@ -0,0 +1,19 @@ +bin/bdeinfo +bin/bdemount +include/libbde.h +include/libbde/codepage.h +include/libbde/definitions.h +include/libbde/error.h +include/libbde/extern.h +include/libbde/features.h +include/libbde/types.h +lib/libbde.a +lib/libbde.so +lib/libbde.so.1 +lib/libbde.so.1.0.0 +%%PYTHON_SITELIBDIR%%/pybde.a +%%PYTHON_SITELIBDIR%%/pybde.so +libdata/pkgconfig/libbde.pc +share/man/man1/bdeinfo.1.gz +share/man/man1/bdemount.1.gz +share/man/man3/libbde.3.gz diff --git a/filesystems/libfsapfs/Makefile b/filesystems/libfsapfs/Makefile new file mode 100644 index 000000000000..30db939185aa --- /dev/null +++ b/filesystems/libfsapfs/Makefile @@ -0,0 +1,32 @@ +PORTNAME= libfsapfs +# If/When moving from experimental to alpha, switch to DISTVERSIONPREFIX to prevent PORTEPOCH +DISTVERSION= experimental-20231122 +CATEGORIES= filesystems devel +MASTER_SITES= https://github.com/libyal/libfsapfs/releases/download/${PORTVERSION:E}/ \ + LOCAL/antoine + +MAINTAINER= antoine@FreeBSD.org +COMMENT= Library and tools to access the Apple File System (APFS) +WWW= https://github.com/libyal/libfsapfs + +LICENSE= LGPL3+ +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libcaes.so:security/libcaes + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_ARGS= --enable-python --with-libcaes=${LOCALBASE} --with-openssl=no +CONFIGURE_ENV= PYTHON_CONFIG=${PYTHON_CMD}-config +USES= fuse libtool pathfix pkgconfig python +USE_LDCONFIG= yes +INSTALL_TARGET= install-strip +WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:E} + +OPTIONS_DEFINE= NLS + +NLS_USES= gettext +NLS_CONFIGURE_ON= --with-libintl-prefix=${LOCALBASE} +NLS_CONFIGURE_OFF= --disable-nls + +.include <bsd.port.mk> diff --git a/filesystems/libfsapfs/distinfo b/filesystems/libfsapfs/distinfo new file mode 100644 index 000000000000..c5ac079f5d26 --- /dev/null +++ b/filesystems/libfsapfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1707836234 +SHA256 (libfsapfs-experimental-20231122.tar.gz) = 0a324de50aaf30c7a685cc9b296f4e9ed101a2558aae95334410fbf5c108cc30 +SIZE (libfsapfs-experimental-20231122.tar.gz) = 2164984 diff --git a/filesystems/libfsapfs/pkg-descr b/filesystems/libfsapfs/pkg-descr new file mode 100644 index 000000000000..61a4927c5eb0 --- /dev/null +++ b/filesystems/libfsapfs/pkg-descr @@ -0,0 +1 @@ +Library and tools to access the Apple File System (APFS) diff --git a/filesystems/libfsapfs/pkg-plist b/filesystems/libfsapfs/pkg-plist new file mode 100644 index 000000000000..939747d660de --- /dev/null +++ b/filesystems/libfsapfs/pkg-plist @@ -0,0 +1,19 @@ +bin/fsapfsinfo +bin/fsapfsmount +include/libfsapfs.h +include/libfsapfs/codepage.h +include/libfsapfs/definitions.h +include/libfsapfs/error.h +include/libfsapfs/extern.h +include/libfsapfs/features.h +include/libfsapfs/types.h +lib/libfsapfs.a +lib/libfsapfs.so +lib/libfsapfs.so.1 +lib/libfsapfs.so.1.0.0 +%%PYTHON_SITELIBDIR%%/pyfsapfs.a +%%PYTHON_SITELIBDIR%%/pyfsapfs.so +libdata/pkgconfig/libfsapfs.pc +share/man/man1/fsapfsinfo.1.gz +share/man/man1/fsapfsmount.1.gz +share/man/man3/libfsapfs.3.gz diff --git a/filesystems/libfsext/Makefile b/filesystems/libfsext/Makefile new file mode 100644 index 000000000000..7216b4326bad --- /dev/null +++ b/filesystems/libfsext/Makefile @@ -0,0 +1,30 @@ +PORTNAME= libfsext +# If/When moving from experimental to alpha, switch to DISTVERSIONPREFIX to prevent PORTEPOCH +DISTVERSION= experimental-20231129 +CATEGORIES= filesystems devel +MASTER_SITES= https://github.com/libyal/libfsext/releases/download/${PORTVERSION:E}/ \ + LOCAL/antoine + +MAINTAINER= antoine@FreeBSD.org +COMMENT= Library and tools to access the Extended File System +WWW= https://github.com/libyal/libfsext + +LICENSE= LGPL3+ +LICENSE_FILE= ${WRKSRC}/COPYING + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_ARGS= --enable-python --with-openssl=no +CONFIGURE_ENV= PYTHON_CONFIG=${PYTHON_CMD}-config +USES= fuse libtool pathfix pkgconfig python +USE_LDCONFIG= yes +INSTALL_TARGET= install-strip +WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:E} + +OPTIONS_DEFINE= NLS + +NLS_USES= gettext +NLS_CONFIGURE_ON= --with-libintl-prefix=${LOCALBASE} +NLS_CONFIGURE_OFF= --disable-nls + +.include <bsd.port.mk> diff --git a/filesystems/libfsext/distinfo b/filesystems/libfsext/distinfo new file mode 100644 index 000000000000..af5acaab6f00 --- /dev/null +++ b/filesystems/libfsext/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1707836309 +SHA256 (libfsext-experimental-20231129.tar.gz) = e5faf530e370c0bac1d584d236150577d0ca1b4692fbf0321d6568999323fcf1 +SIZE (libfsext-experimental-20231129.tar.gz) = 1719851 diff --git a/filesystems/libfsext/pkg-descr b/filesystems/libfsext/pkg-descr new file mode 100644 index 000000000000..285d40feb04f --- /dev/null +++ b/filesystems/libfsext/pkg-descr @@ -0,0 +1 @@ +Library and tools to access the Extended File System diff --git a/filesystems/libfsext/pkg-plist b/filesystems/libfsext/pkg-plist new file mode 100644 index 000000000000..81ea09be91c1 --- /dev/null +++ b/filesystems/libfsext/pkg-plist @@ -0,0 +1,19 @@ +bin/fsextinfo +bin/fsextmount +include/libfsext.h +include/libfsext/codepage.h +include/libfsext/definitions.h +include/libfsext/error.h +include/libfsext/extern.h +include/libfsext/features.h +include/libfsext/types.h +lib/libfsext.a +lib/libfsext.so +lib/libfsext.so.1 +lib/libfsext.so.1.0.0 +%%PYTHON_SITELIBDIR%%/pyfsext.a +%%PYTHON_SITELIBDIR%%/pyfsext.so +libdata/pkgconfig/libfsext.pc +share/man/man1/fsextinfo.1.gz +share/man/man1/fsextmount.1.gz +share/man/man3/libfsext.3.gz diff --git a/filesystems/libfsfat/Makefile b/filesystems/libfsfat/Makefile new file mode 100644 index 000000000000..d18cdf5fd726 --- /dev/null +++ b/filesystems/libfsfat/Makefile @@ -0,0 +1,30 @@ +PORTNAME= libfsfat +# If/When moving from experimental to alpha, switch to DISTVERSIONPREFIX to prevent PORTEPOCH +DISTVERSION= experimental-20231122 +CATEGORIES= filesystems devel +MASTER_SITES= https://github.com/libyal/libfsfat/releases/download/${PORTVERSION:E}/ \ + LOCAL/antoine + +MAINTAINER= antoine@FreeBSD.org +COMMENT= Library and tools to access the File Allocation Table File System +WWW= https://github.com/libyal/libfsfat + +LICENSE= LGPL3+ +LICENSE_FILE= ${WRKSRC}/COPYING + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_ARGS= --enable-python --with-openssl=no +CONFIGURE_ENV= PYTHON_CONFIG=${PYTHON_CMD}-config +USES= fuse libtool pathfix pkgconfig python +USE_LDCONFIG= yes +INSTALL_TARGET= install-strip +WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:E} + +OPTIONS_DEFINE= NLS + +NLS_USES= gettext +NLS_CONFIGURE_ON= --with-libintl-prefix=${LOCALBASE} +NLS_CONFIGURE_OFF= --disable-nls + +.include <bsd.port.mk> diff --git a/filesystems/libfsfat/distinfo b/filesystems/libfsfat/distinfo new file mode 100644 index 000000000000..0f2626e7770f --- /dev/null +++ b/filesystems/libfsfat/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1707836386 +SHA256 (libfsfat-experimental-20231122.tar.gz) = bc74cd55a1f3a1102dd9c2cde7958d017e6455d82ef387249b12ad58c62df7c5 +SIZE (libfsfat-experimental-20231122.tar.gz) = 1665538 diff --git a/filesystems/libfsfat/pkg-descr b/filesystems/libfsfat/pkg-descr new file mode 100644 index 000000000000..f303433616cc --- /dev/null +++ b/filesystems/libfsfat/pkg-descr @@ -0,0 +1 @@ +Library and tools to access the File Allocation Table (FAT) file system diff --git a/filesystems/libfsfat/pkg-plist b/filesystems/libfsfat/pkg-plist new file mode 100644 index 000000000000..c657a6fc2311 --- /dev/null +++ b/filesystems/libfsfat/pkg-plist @@ -0,0 +1,19 @@ +bin/fsfatinfo +bin/fsfatmount +include/libfsfat.h +include/libfsfat/codepage.h +include/libfsfat/definitions.h +include/libfsfat/error.h +include/libfsfat/extern.h +include/libfsfat/features.h +include/libfsfat/types.h +lib/libfsfat.a +lib/libfsfat.so +lib/libfsfat.so.1 +lib/libfsfat.so.1.0.0 +%%PYTHON_SITELIBDIR%%/pyfsfat.a +%%PYTHON_SITELIBDIR%%/pyfsfat.so +libdata/pkgconfig/libfsfat.pc +share/man/man1/fsfatinfo.1.gz +share/man/man1/fsfatmount.1.gz +share/man/man3/libfsfat.3.gz diff --git a/filesystems/libfshfs/Makefile b/filesystems/libfshfs/Makefile new file mode 100644 index 000000000000..242a99cdb3a7 --- /dev/null +++ b/filesystems/libfshfs/Makefile @@ -0,0 +1,30 @@ +PORTNAME= libfshfs +# If/When moving from experimental to alpha, switch to DISTVERSIONPREFIX to prevent PORTEPOCH +DISTVERSION= experimental-20231125 +CATEGORIES= filesystems devel +MASTER_SITES= https://github.com/libyal/libfshfs/releases/download/${PORTVERSION:E}/ \ + LOCAL/antoine + +MAINTAINER= antoine@FreeBSD.org +COMMENT= Library and tools to access the Mac OS Hierarchical File System (HFS) +WWW= https://github.com/libyal/libfshfs + +LICENSE= LGPL3+ +LICENSE_FILE= ${WRKSRC}/COPYING + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_ARGS= --enable-python --with-openssl=no +CONFIGURE_ENV= PYTHON_CONFIG=${PYTHON_CMD}-config +USES= fuse libtool pathfix pkgconfig python +USE_LDCONFIG= yes +INSTALL_TARGET= install-strip +WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:E} + +OPTIONS_DEFINE= NLS + +NLS_USES= gettext +NLS_CONFIGURE_ON= --with-libintl-prefix=${LOCALBASE} +NLS_CONFIGURE_OFF= --disable-nls + +.include <bsd.port.mk> diff --git a/filesystems/libfshfs/distinfo b/filesystems/libfshfs/distinfo new file mode 100644 index 000000000000..d97397cb447c --- /dev/null +++ b/filesystems/libfshfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1707836459 +SHA256 (libfshfs-experimental-20231125.tar.gz) = af9063a07814265cd79ed823ea3a44c08de3d4defa3c95750866f8572ad8bf8c +SIZE (libfshfs-experimental-20231125.tar.gz) = 2027202 diff --git a/filesystems/libfshfs/pkg-descr b/filesystems/libfshfs/pkg-descr new file mode 100644 index 000000000000..b7634c525b9c --- /dev/null +++ b/filesystems/libfshfs/pkg-descr @@ -0,0 +1 @@ +Library and tools to access the Mac OS Hierarchical File System (HFS) diff --git a/filesystems/libfshfs/pkg-plist b/filesystems/libfshfs/pkg-plist new file mode 100644 index 000000000000..d5c0ac017d37 --- /dev/null +++ b/filesystems/libfshfs/pkg-plist @@ -0,0 +1,19 @@ +bin/fshfsinfo +bin/fshfsmount +include/libfshfs.h +include/libfshfs/codepage.h +include/libfshfs/definitions.h +include/libfshfs/error.h +include/libfshfs/extern.h +include/libfshfs/features.h +include/libfshfs/types.h +lib/libfshfs.a +lib/libfshfs.so +lib/libfshfs.so.1 +lib/libfshfs.so.1.0.0 +%%PYTHON_SITELIBDIR%%/pyfshfs.a +%%PYTHON_SITELIBDIR%%/pyfshfs.so +libdata/pkgconfig/libfshfs.pc +share/man/man1/fshfsinfo.1.gz +share/man/man1/fshfsmount.1.gz +share/man/man3/libfshfs.3.gz diff --git a/filesystems/libfsntfs/Makefile b/filesystems/libfsntfs/Makefile new file mode 100644 index 000000000000..ea2b8a262cfc --- /dev/null +++ b/filesystems/libfsntfs/Makefile @@ -0,0 +1,34 @@ +PORTNAME= libfsntfs +# If/When moving from experimental to alpha, switch to DISTVERSIONPREFIX to prevent PORTEPOCH +DISTVERSION= experimental-20231125 +CATEGORIES= filesystems devel +MASTER_SITES= https://github.com/libyal/libfsntfs/releases/download/${PORTVERSION:E}/ \ + LOCAL/antoine + +MAINTAINER= antoine@FreeBSD.org +COMMENT= Library and tools to access the New Technology File System (NTFS) +WWW= https://github.com/libyal/libfsntfs + +LICENSE= LGPL3+ +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libfwnt.so:devel/libfwnt + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_ARGS= --enable-python --with-openssl=no \ + --with-libfwnt=${LOCALBASE} +CONFIGURE_ENV= PYTHON_CONFIG=${PYTHON_CMD}-config +USES= cpe libtool fuse pathfix pkgconfig python +CPE_VENDOR= ${PORTNAME}_project +USE_LDCONFIG= yes +INSTALL_TARGET= install-strip +WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:E} + +OPTIONS_DEFINE= NLS + +NLS_USES= gettext +NLS_CONFIGURE_ON= --with-libintl-prefix=${LOCALBASE} +NLS_CONFIGURE_OFF= --disable-nls + +.include <bsd.port.mk> diff --git a/filesystems/libfsntfs/distinfo b/filesystems/libfsntfs/distinfo new file mode 100644 index 000000000000..82438122469a --- /dev/null +++ b/filesystems/libfsntfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1707836581 +SHA256 (libfsntfs-experimental-20231125.tar.gz) = c180863cc7aaacf950251e4758a0c4c8a30c100b6b96b63884b9d6717f3975a6 +SIZE (libfsntfs-experimental-20231125.tar.gz) = 2104151 diff --git a/filesystems/libfsntfs/pkg-descr b/filesystems/libfsntfs/pkg-descr new file mode 100644 index 000000000000..8aa270b801b3 --- /dev/null +++ b/filesystems/libfsntfs/pkg-descr @@ -0,0 +1 @@ +Library and tools to access the New Technology File System (NTFS) diff --git a/filesystems/libfsntfs/pkg-plist b/filesystems/libfsntfs/pkg-plist new file mode 100644 index 000000000000..35bb09d1e8d8 --- /dev/null +++ b/filesystems/libfsntfs/pkg-plist @@ -0,0 +1,18 @@ +bin/fsntfsinfo +bin/fsntfsmount +include/libfsntfs.h +include/libfsntfs/codepage.h +include/libfsntfs/definitions.h +include/libfsntfs/error.h +include/libfsntfs/extern.h +include/libfsntfs/features.h +include/libfsntfs/types.h +lib/libfsntfs.a +lib/libfsntfs.so +lib/libfsntfs.so.1 +lib/libfsntfs.so.1.0.0 +%%PYTHON_SITELIBDIR%%/pyfsntfs.a +%%PYTHON_SITELIBDIR%%/pyfsntfs.so +libdata/pkgconfig/libfsntfs.pc +share/man/man1/fsntfsinfo.1.gz +share/man/man3/libfsntfs.3.gz diff --git a/filesystems/libfsxfs/Makefile b/filesystems/libfsxfs/Makefile new file mode 100644 index 000000000000..3bdd9186fa3d --- /dev/null +++ b/filesystems/libfsxfs/Makefile @@ -0,0 +1,30 @@ +PORTNAME= libfsxfs +# If/When moving from experimental to alpha, switch to DISTVERSIONPREFIX to prevent PORTEPOCH +DISTVERSION= experimental-20231124 +CATEGORIES= filesystems devel +MASTER_SITES= https://github.com/libyal/libfsxfs/releases/download/${PORTVERSION:E}/ \ + LOCAL/antoine + +MAINTAINER= antoine@FreeBSD.org +COMMENT= Library and tools to access the SGI X File System +WWW= https://github.com/libyal/libfsxfs + +LICENSE= LGPL3+ +LICENSE_FILE= ${WRKSRC}/COPYING + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_ARGS= --enable-python --with-openssl=no +CONFIGURE_ENV= PYTHON_CONFIG=${PYTHON_CMD}-config +USES= fuse libtool pathfix pkgconfig python +USE_LDCONFIG= yes +INSTALL_TARGET= install-strip +WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:E} + +OPTIONS_DEFINE= NLS + +NLS_USES= gettext +NLS_CONFIGURE_ON= --with-libintl-prefix=${LOCALBASE} +NLS_CONFIGURE_OFF= --disable-nls + +.include <bsd.port.mk> diff --git a/filesystems/libfsxfs/distinfo b/filesystems/libfsxfs/distinfo new file mode 100644 index 000000000000..a141316a4050 --- /dev/null +++ b/filesystems/libfsxfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1707836670 +SHA256 (libfsxfs-experimental-20231124.tar.gz) = f4817abfa9e10d11b506422e13b596a41dd278443a39278a13f220b9683d7c9b +SIZE (libfsxfs-experimental-20231124.tar.gz) = 1709527 diff --git a/filesystems/libfsxfs/pkg-descr b/filesystems/libfsxfs/pkg-descr new file mode 100644 index 000000000000..644af6e193f2 --- /dev/null +++ b/filesystems/libfsxfs/pkg-descr @@ -0,0 +1 @@ +Library and tools to access the SGI X File System diff --git a/filesystems/libfsxfs/pkg-plist b/filesystems/libfsxfs/pkg-plist new file mode 100644 index 000000000000..1c0c6102a1a8 --- /dev/null +++ b/filesystems/libfsxfs/pkg-plist @@ -0,0 +1,19 @@ +bin/fsxfsinfo +bin/fsxfsmount +include/libfsxfs.h +include/libfsxfs/codepage.h +include/libfsxfs/definitions.h +include/libfsxfs/error.h +include/libfsxfs/extern.h +include/libfsxfs/features.h +include/libfsxfs/types.h +lib/libfsxfs.a +lib/libfsxfs.so +lib/libfsxfs.so.1 +lib/libfsxfs.so.1.0.0 +%%PYTHON_SITELIBDIR%%/pyfsxfs.a +%%PYTHON_SITELIBDIR%%/pyfsxfs.so +libdata/pkgconfig/libfsxfs.pc +share/man/man1/fsxfsinfo.1.gz +share/man/man1/fsxfsmount.1.gz +share/man/man3/libfsxfs.3.gz diff --git a/filesystems/libmodi/Makefile b/filesystems/libmodi/Makefile new file mode 100644 index 000000000000..d79664531122 --- /dev/null +++ b/filesystems/libmodi/Makefile @@ -0,0 +1,32 @@ +PORTNAME= libmodi +# If/When moving from experimental to alpha, switch to DISTVERSIONPREFIX to prevent PORTEPOCH +DISTVERSION= experimental-20231123 +CATEGORIES= filesystems devel +MASTER_SITES= https://github.com/libyal/libmodi/releases/download/${PORTVERSION:E}/ \ + LOCAL/antoine + +MAINTAINER= antoine@FreeBSD.org +COMMENT= Library and tools to access the Mac OS disk image formats +WWW= https://github.com/libyal/libmodi + +LICENSE= LGPL3+ +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libcaes.so:security/libcaes + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_ARGS= --enable-python --with-libcaes=${LOCALBASE} --with-openssl=no +CONFIGURE_ENV= PYTHON_CONFIG=${PYTHON_CMD}-config +USES= fuse libtool pathfix pkgconfig python +USE_LDCONFIG= yes +INSTALL_TARGET= install-strip +WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:E} + +OPTIONS_DEFINE= NLS + +NLS_USES= gettext +NLS_CONFIGURE_ON= --with-libintl-prefix=${LOCALBASE} +NLS_CONFIGURE_OFF= --disable-nls + +.include <bsd.port.mk> diff --git a/filesystems/libmodi/distinfo b/filesystems/libmodi/distinfo new file mode 100644 index 000000000000..5895684e3a45 --- /dev/null +++ b/filesystems/libmodi/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1707837223 +SHA256 (libmodi-experimental-20231123.tar.gz) = 01aa4f2ac8a0e2673a37952cdb98a21d0572ac40771cc83fc2170f78533fb8bc +SIZE (libmodi-experimental-20231123.tar.gz) = 2075035 diff --git a/filesystems/libmodi/pkg-descr b/filesystems/libmodi/pkg-descr new file mode 100644 index 000000000000..b94a8a7477fa --- /dev/null +++ b/filesystems/libmodi/pkg-descr @@ -0,0 +1 @@ +Library and tools to access the Mac OS disk image formats diff --git a/filesystems/libmodi/pkg-plist b/filesystems/libmodi/pkg-plist new file mode 100644 index 000000000000..406b08b3b485 --- /dev/null +++ b/filesystems/libmodi/pkg-plist @@ -0,0 +1,18 @@ +bin/modiinfo +bin/modimount +include/libmodi.h +include/libmodi/codepage.h +include/libmodi/definitions.h +include/libmodi/error.h +include/libmodi/extern.h +include/libmodi/features.h +include/libmodi/types.h +lib/libmodi.a +lib/libmodi.so +lib/libmodi.so.1 +lib/libmodi.so.1.0.0 +%%PYTHON_SITELIBDIR%%/pymodi.a +%%PYTHON_SITELIBDIR%%/pymodi.so +libdata/pkgconfig/libmodi.pc +share/man/man1/modiinfo.1.gz +share/man/man3/libmodi.3.gz diff --git a/filesystems/linux-c7-dosfstools/Makefile b/filesystems/linux-c7-dosfstools/Makefile new file mode 100644 index 000000000000..a6f1c766cdcf --- /dev/null +++ b/filesystems/linux-c7-dosfstools/Makefile @@ -0,0 +1,19 @@ +PORTNAME= dosfstools +PORTVERSION= 3.0.20 +DISTVERSIONSUFFIX= -10.el7 +CATEGORIES= filesystems sysutils linux + +MAINTAINER= emulation@FreeBSD.org +COMMENT= Utilities for MS-DOS FAT filesystems (CentOS ${LINUX_DIST_VER}) +WWW= https://github.com/dosfstools/dosfstools + +LICENSE= GPLv3+ + +USES= cpe linux:c7 +USE_LINUX_RPM= nolib +CPE_VENDOR= dosfstools_project + +OPTIONS_DEFINE= DOCS +PLIST= ${PKGDIR}/pkg-plist + +.include <bsd.port.mk> diff --git a/filesystems/linux-c7-dosfstools/distinfo b/filesystems/linux-c7-dosfstools/distinfo new file mode 100644 index 000000000000..e9e50c078ffd --- /dev/null +++ b/filesystems/linux-c7-dosfstools/distinfo @@ -0,0 +1,9 @@ +TIMESTAMP = 1627157205 +SHA256 (centos/dosfstools-3.0.20-10.el7.aarch64.rpm) = 6fd4743d87914e69224466fcb2d53c44fce3891b64bb0561fd83ef3c5c8dbbff +SIZE (centos/dosfstools-3.0.20-10.el7.aarch64.rpm) = 102152 +SHA256 (centos/dosfstools-3.0.20-10.el7.i686.rpm) = 1ab8831faff8ef12b3cac4aafdd9d5d7819d2fc0ff248c424b72dc703498d6d8 +SIZE (centos/dosfstools-3.0.20-10.el7.i686.rpm) = 103912 +SHA256 (centos/dosfstools-3.0.20-10.el7.x86_64.rpm) = cbf47c845706e9d0a764b49d9d020128616dcbf16959479d6575c21da06369e9 +SIZE (centos/dosfstools-3.0.20-10.el7.x86_64.rpm) = 103572 +SHA256 (centos/dosfstools-3.0.20-10.el7.src.rpm) = 633b517e35baf03cb3aa15a71fc3bf0075488c4d61e7fb802e80368b437a6ace +SIZE (centos/dosfstools-3.0.20-10.el7.src.rpm) = 95519 diff --git a/filesystems/linux-c7-dosfstools/pkg-descr b/filesystems/linux-c7-dosfstools/pkg-descr new file mode 100644 index 000000000000..cc3d686d3e87 --- /dev/null +++ b/filesystems/linux-c7-dosfstools/pkg-descr @@ -0,0 +1,2 @@ +Linux binaries for fsck.vfat and mkfs.vfat utilities, which check +and create file systems of the FAT family. diff --git a/filesystems/linux-c7-dosfstools/pkg-plist b/filesystems/linux-c7-dosfstools/pkg-plist new file mode 100644 index 000000000000..6effb0571f67 --- /dev/null +++ b/filesystems/linux-c7-dosfstools/pkg-plist @@ -0,0 +1,28 @@ +usr/sbin/dosfsck +usr/sbin/dosfslabel +usr/sbin/fatlabel +usr/sbin/fsck.fat +usr/sbin/fsck.msdos +usr/sbin/fsck.vfat +usr/sbin/mkdosfs +usr/sbin/mkfs.fat +usr/sbin/mkfs.msdos +usr/sbin/mkfs.vfat +%%PORTDOCS%%%%DOCSDIR%%/COPYING +%%PORTDOCS%%%%DOCSDIR%%/ChangeLog +%%PORTDOCS%%%%DOCSDIR%%/ChangeLog.dosfstools-2.x +%%PORTDOCS%%%%DOCSDIR%%/README.dosfstools-2.x +%%PORTDOCS%%%%DOCSDIR%%/TODO.dosfstools-2.x +usr/share/man/de/man8/fatlabel.8.gz +usr/share/man/de/man8/fsck.fat.8.gz +usr/share/man/de/man8/mkfs.fat.8.gz +usr/share/man/man8/dosfsck.8.gz +usr/share/man/man8/fatlabel.8.gz +usr/share/man/man8/fsck.fat.8.gz +usr/share/man/man8/fsck.fat.8.manpage-fix.gz +usr/share/man/man8/fsck.msdos.8.gz +usr/share/man/man8/fsck.vfat.8.gz +usr/share/man/man8/mkdosfs.8.gz +usr/share/man/man8/mkfs.fat.8.gz +usr/share/man/man8/mkfs.msdos.8.gz +usr/share/man/man8/mkfs.vfat.8.gz diff --git a/filesystems/lizardfs/Makefile b/filesystems/lizardfs/Makefile new file mode 100644 index 000000000000..f99fb0532899 --- /dev/null +++ b/filesystems/lizardfs/Makefile @@ -0,0 +1,57 @@ +PORTNAME= lizardfs +PORTVERSION= 3.12.0 +DISTVERSIONPREFIX= v +PORTREVISION= 22 +CATEGORIES= filesystems sysutils + +MAINTAINER= jhixson@FreeBSD.org +COMMENT= Open Source Distributed Filesystem +WWW= https://lizardfs.org/ + +LICENSE= GPLv3+ +LICENSE_FILE= ${WRKSRC}/COPYING + +BUILD_DEPENDS= a2x:textproc/asciidoc \ + spdlog>=1.4.2:devel/spdlog +LIB_DEPENDS= libboost_system.so:devel/boost-libs \ + libfmt.so:devel/libfmt + +USES= cmake compiler:c11 fuse python shebangfix +USE_RC_SUBR= mfscgiserv \ + mfschunkserver \ + mfsmaster \ + mfsmetalogger \ + mfspingserv + +USERS= mfs +GROUPS= mfs + +SHEBANG_FILES= src/cgi/cgiserv.py.in \ + src/cgi/lizardfs-cgiserver.py.in \ + src/cgi/mfs.cgi.in \ + src/cgi/chart.cgi.in + +USE_GITHUB= yes +USE_LDCONFIG= yes + +CFLAGS+= -DSPDLOG_FMT_EXTERNAL=1 +LDFLAGS+= -L${LOCALBASE}/lib -lfmt +CMAKE_BUILD_TYPE= Release +CMAKE_ARGS= \ + -DENABLE_WERROR=OFF \ + -DENABLE_LIGHTMFS=ON \ + -DENABLE_DEBIAN_PATHS=OFF \ + -DENABLE_UTILS=ON \ + -DENABLE_TESTS=OFF \ + -DENABLE_DOCS=ON \ + -DENABLE_VERBOSE_ASCIIDOC=ON \ + -DENABLE_TCMALLOC=OFF \ + -DENABLE_POLONAISE=OFF \ + -DENABLE_CLIENT_LIB=ON \ + -DENABLE_URAFT=ON \ + -DENABLE_TRACES=OFF \ + -DENABLE_CRC=ON \ + -DENABLE_REQUEST_LOG=OFF \ + -DENABLE_NFS_GANESHA=OFF + +.include <bsd.port.mk> diff --git a/filesystems/lizardfs/distinfo b/filesystems/lizardfs/distinfo new file mode 100644 index 000000000000..ffb58e32e777 --- /dev/null +++ b/filesystems/lizardfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1548551617 +SHA256 (lizardfs-lizardfs-v3.12.0_GH0.tar.gz) = d21220dc7542539b48d5bff7abe047a8c6bdbab19cb03579f88f146dee3ec5f6 +SIZE (lizardfs-lizardfs-v3.12.0_GH0.tar.gz) = 2973894 diff --git a/filesystems/lizardfs/files/mfscgiserv.in b/filesystems/lizardfs/files/mfscgiserv.in new file mode 100644 index 000000000000..0876470c2221 --- /dev/null +++ b/filesystems/lizardfs/files/mfscgiserv.in @@ -0,0 +1,29 @@ +#!/bin/sh + +# PROVIDE: mfscgiserv +# REQUIRE: DAEMON +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf to enable mfscgiserv: +# +# mfscgiserv_enable="YES" +# + +. /etc/rc.subr + +name=mfscgiserv +rcvar=mfscgiserv_enable + +command=%%PREFIX%%/sbin/${name} +pid_file=/var/mfs/.${name}.lock +procname="python" + +stop_cmd="$command stop" +status_cmd="$command test" + +load_rc_config $name + +# set defaults +: ${mfscgiserv_enable="NO"} + +run_rc_command "$1" diff --git a/filesystems/lizardfs/files/mfschunkserver.in b/filesystems/lizardfs/files/mfschunkserver.in new file mode 100644 index 000000000000..b4dbe0baae4a --- /dev/null +++ b/filesystems/lizardfs/files/mfschunkserver.in @@ -0,0 +1,30 @@ +#!/bin/sh + +# PROVIDE: mfschunkserver +# REQUIRE: DAEMON +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to enable mfschunkserver: +# +# mfschunkserver_enable="YES" +# + +. /etc/rc.subr + +name=mfschunkserver +rcvar=mfschunkserver_enable + +config_file=%%PREFIX%%/etc/mfs/${name}.cfg + +required_files=${config_file} + +command=%%PREFIX%%/sbin/${name} +pid_file=/var/mfs/.${name}.lock +command_args="-c $config_file" + +load_rc_config $name + +# set defaults +: ${mfschunkserver_enable="NO"} + +run_rc_command "$1" diff --git a/filesystems/lizardfs/files/mfsmaster.in b/filesystems/lizardfs/files/mfsmaster.in new file mode 100644 index 000000000000..3a3bc49bdefd --- /dev/null +++ b/filesystems/lizardfs/files/mfsmaster.in @@ -0,0 +1,30 @@ +#!/bin/sh + +# PROVIDE: mfsmaster +# REQUIRE: DAEMON +# KEYWORD: nostart shutdown +# +# Add the following lines to /etc/rc.conf to enable mfsmaster: +# +# mfsmaster_enable="YES" +# + +. /etc/rc.subr + +name=mfsmaster +rcvar=mfsmaster_enable + +config_file=%%PREFIX%%/etc/mfs/${name}.cfg + +required_files=${config_file} + +command=%%PREFIX%%/sbin/${name} +pid_file=/var/mfs/.${name}.lock +command_args="-c $config_file" + +load_rc_config $name + +# set defaults +: ${mfsmaster_enable="NO"} + +run_rc_command "$1" diff --git a/filesystems/lizardfs/files/mfsmetalogger.in b/filesystems/lizardfs/files/mfsmetalogger.in new file mode 100644 index 000000000000..e1fae34ddb88 --- /dev/null +++ b/filesystems/lizardfs/files/mfsmetalogger.in @@ -0,0 +1,30 @@ +#!/bin/sh + +# PROVIDE: mfsmetalogger +# REQUIRE: DAEMON +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf to enable mfsmetalogger: +# +# mfsmetalogger_enable="YES" +# + +. /etc/rc.subr + +name=mfsmetalogger +rcvar=mfsmetalogger_enable + +config_file=%%PREFIX%%/etc/mfs/${name}.cfg + +required_files=${config_file} + +command=%%PREFIX%%/sbin/${name} +pid_file=/var/mfs/.${name}.lock +command_args="-c $config_file" + +load_rc_config $name + +# set defaults +: ${mfsmetalogger_enable="NO"} + +run_rc_command "$1" diff --git a/filesystems/lizardfs/files/mfspingserv.in b/filesystems/lizardfs/files/mfspingserv.in new file mode 100644 index 000000000000..625628e37fd6 --- /dev/null +++ b/filesystems/lizardfs/files/mfspingserv.in @@ -0,0 +1,29 @@ +#!/bin/sh + +# PROVIDE: mfspingserv +# REQUIRE: DAEMON +# KEYWORD: nostart shutdown +# +# Add the following lines to /etc/rc.conf to enable mfspingserv: +# +# mfspingserv_enable="YES" +# +# mfspingserv_port="" +# + +. /etc/rc.subr + +name=mfspingserv +rcvar=mfspingserv_enable + +command=%%PREFIX%%/sbin/${name} +pid_file=/var/mfs/.${name}.lock +command_args="${mfspingserv_port}" + +load_rc_config $name + +# set defaults +: ${mfspingserv_enable="NO"} +: ${mfspingserv_port="19042"} + +run_rc_command "$1" diff --git a/filesystems/lizardfs/files/patch-CMakeLists.txt b/filesystems/lizardfs/files/patch-CMakeLists.txt new file mode 100644 index 000000000000..fd2d4079393b --- /dev/null +++ b/filesystems/lizardfs/files/patch-CMakeLists.txt @@ -0,0 +1,37 @@ +--- CMakeLists.txt.orig 2017-12-20 09:59:37 UTC ++++ CMakeLists.txt +@@ -167,13 +167,7 @@ endif() + message(STATUS "THROW_INSTEAD_OF_ABORT: ${THROW_INSTEAD_OF_ABORT}") + endif() + +-get_property(LIB64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS) +-if (LIB64) +- set(LIBSUFFIX "64") +-else() +- set(LIBSUFFIX "") +-endif() +-message(STATUS "LIB64: ${LIB64}") ++set(LIBSUFFIX "") + + if(ENABLE_DEBIAN_PATHS) + if (NOT CMAKE_INSTALL_PREFIX STREQUAL "/") +@@ -193,8 +187,8 @@ else() + set(SBIN_SUBDIR "sbin") + set(LIB_SUBDIR "lib${LIBSUFFIX}") + set(ETC_SUBDIR "etc/mfs") +- set(RUN_SUBDIR "var/run/mfs") +- set(DATA_SUBDIR "var/lib/mfs") ++ set(RUN_SUBDIR "/var/run/mfs") ++ set(DATA_SUBDIR "/var/mfs") + set(MAN_SUBDIR "share/man") + set(CGI_SUBDIR "share/mfscgi") + set(INCL_SUBDIR "include/lizardfs") +@@ -205,8 +199,6 @@ set(ETC_PATH ${INSTALL_PREFIX_NO_SLASH}/${ETC_SUBDIR + set(SBIN_PATH ${INSTALL_PREFIX_NO_SLASH}/${SBIN_SUBDIR}) + set(LIB_PATH ${INSTALL_PREFIX_NO_SLASH}/${LIB_SUBDIR}) + set(ETC_PATH ${INSTALL_PREFIX_NO_SLASH}/${ETC_SUBDIR}) +-set(RUN_PATH ${INSTALL_PREFIX_NO_SLASH}/${RUN_SUBDIR}) +-set(DATA_PATH ${INSTALL_PREFIX_NO_SLASH}/${DATA_SUBDIR}) + set(MAN_PATH ${INSTALL_PREFIX_NO_SLASH}/${MAN_SUBDIR}) + set(CGI_PATH ${INSTALL_PREFIX_NO_SLASH}/${CGI_SUBDIR}) + set(INCL_PATH ${INSTALL_PREFIX_NO_SLASH}/${INCL_SUBDIR}) diff --git a/filesystems/lizardfs/files/patch-cmake_CheckIncludes.cmake b/filesystems/lizardfs/files/patch-cmake_CheckIncludes.cmake new file mode 100644 index 000000000000..0dfe41ad59fb --- /dev/null +++ b/filesystems/lizardfs/files/patch-cmake_CheckIncludes.cmake @@ -0,0 +1,13 @@ +--- cmake/CheckIncludes.cmake.orig 2022-12-24 21:43:32 UTC ++++ cmake/CheckIncludes.cmake +@@ -3,7 +3,9 @@ include(CheckIncludeFiles) + function(check_includes INCLUDES) + set(INCLUDE_MISSING FALSE) + foreach(INCLUDE_FILE ${INCLUDES}) +- check_include_files(${INCLUDE_FILE} ${INCLUDE_FILE}_FOUND) ++ string(MAKE_C_IDENTIFIER "${INCLUDE_FILE}" c_include) ++ check_include_files(${INCLUDE_FILE} ${c_include}_FOUND) ++ set(${INCLUDE_FILE}_FOUND ${${c_include}_FOUND}) + if(NOT ${INCLUDE_FILE}_FOUND) + set(INCLUDE_MISSING TRUE) + set(MISSING_INCLUDES ${MISSING_INCLUDES} ${INCLUDE_FILE}) diff --git a/filesystems/lizardfs/files/patch-cmake__Libraries.cmake b/filesystems/lizardfs/files/patch-cmake__Libraries.cmake new file mode 100644 index 000000000000..95dbb0c4a80a --- /dev/null +++ b/filesystems/lizardfs/files/patch-cmake__Libraries.cmake @@ -0,0 +1,14 @@ +--- cmake/Libraries.cmake.orig 2017-12-20 09:59:37 UTC ++++ cmake/Libraries.cmake +@@ -7,11 +7,6 @@ if(ENABLE_TESTS) + "ef5e700c8a0f3ee123e2e0209b8b4961") + endif() + +-download_external(SPDLOG "spdlog-0.14.0" +- "https://github.com/gabime/spdlog/archive/v0.14.0.zip" +- "f213d83c466aa7044a132e2488d71b11" +- "spdlog-1") +- + # Find standard libraries + find_package(Socket REQUIRED) + find_package(Threads REQUIRED) diff --git a/filesystems/lizardfs/files/patch-src_common_slogger.cc b/filesystems/lizardfs/files/patch-src_common_slogger.cc new file mode 100644 index 000000000000..02566193f6ea --- /dev/null +++ b/filesystems/lizardfs/files/patch-src_common_slogger.cc @@ -0,0 +1,11 @@ +--- src/common/slogger.cc.orig 2019-01-28 19:24:32 UTC ++++ src/common/slogger.cc +@@ -86,7 +86,7 @@ void lzfs::drop_all_logs() { + bool lzfs::add_log_syslog() { + #ifndef _WIN32 + try { +- spdlog::syslog_logger("syslog"); ++ spdlog::syslog_logger_mt("syslog"); + return true; + } catch (const spdlog::spdlog_ex &e) { + lzfs_pretty_syslog(LOG_ERR, "Adding syslog log failed: %s", e.what()); diff --git a/filesystems/lizardfs/files/patch-src_common_slogger.h b/filesystems/lizardfs/files/patch-src_common_slogger.h new file mode 100644 index 000000000000..2d5a7367b467 --- /dev/null +++ b/filesystems/lizardfs/files/patch-src_common_slogger.h @@ -0,0 +1,12 @@ +--- src/common/slogger.h.orig 2017-12-20 09:59:37 UTC ++++ src/common/slogger.h +@@ -27,6 +27,9 @@ + #endif + #include "common/small_vector.h" + #include "spdlog/spdlog.h" ++#include "spdlog/sinks/syslog_sink.h" ++#include "spdlog/sinks/stdout_color_sinks.h" ++#include "spdlog/sinks/rotating_file_sink.h" + + typedef std::shared_ptr<spdlog::logger> LoggerPtr; + diff --git a/filesystems/lizardfs/pkg-descr b/filesystems/lizardfs/pkg-descr new file mode 100644 index 000000000000..e80d3740401b --- /dev/null +++ b/filesystems/lizardfs/pkg-descr @@ -0,0 +1,3 @@ +LizardFS is a highly reliable, scalable and efficient distributed file +system. It spreads data over a number of physical servers, making it +visible to an end user as a single file system. diff --git a/filesystems/lizardfs/pkg-plist b/filesystems/lizardfs/pkg-plist new file mode 100644 index 000000000000..d9d585a1e3cd --- /dev/null +++ b/filesystems/lizardfs/pkg-plist @@ -0,0 +1,119 @@ +bin/chunk_converter +bin/cpp-interpreter.sh +bin/crc_converter +bin/file-generate +bin/file-overwrite +bin/file-validate +bin/flockcmd +bin/lizardfs +bin/lizardfs-admin +bin/lizardfs-probe +bin/lzfs_ping_pong +bin/mfsappendchunks +bin/mfscheckfile +bin/mfsdeleattr +bin/mfsdirinfo +bin/mfsfileinfo +bin/mfsfilerepair +bin/mfsgeteattr +bin/mfsgetgoal +bin/mfsgettrashtime +bin/mfsmakesnapshot +bin/mfsmount +bin/mfsping +bin/mfspingserv +bin/mfsrepquota +bin/mfsrgetgoal +bin/mfsrgettrashtime +bin/mfsrsetgoal +bin/mfsrsettrashtime +bin/mfsseteattr +bin/mfssetgoal +bin/mfssetquota +bin/mfssettrashtime +bin/mfstools.sh +bin/posixlockcmd +etc/bash_completion.d/lizardfs +etc/mfs/globaliolimits.cfg.dist +etc/mfs/iolimits.cfg.dist +etc/mfs/mfschunkserver.cfg.dist +etc/mfs/mfsexports.cfg.dist +etc/mfs/mfsgoals.cfg.dist +etc/mfs/mfshdd.cfg.dist +etc/mfs/mfsmaster.cfg.dist +etc/mfs/mfsmetalogger.cfg.dist +etc/mfs/mfsmount.cfg.dist +etc/mfs/mfstopology.cfg.dist +include/lizardfs/lizardfs_c_api.h +include/lizardfs/lizardfs_error_codes.h +lib/libchunk_operations_eio.so +lib/liblizardfs-client-cpp.a +lib/liblizardfs-client-cpp_pic.a +lib/liblizardfs-client.a +lib/liblizardfs-client.so +lib/liblizardfs-client_pic.a +lib/liblizardfsmount_shared.so +lib/libredirect_bind.so +lib/libslow_chunk_scan.so +sbin/lizardfs-cgiserver +sbin/mfscgiserv +sbin/mfschunkserver +sbin/mfsmaster +sbin/mfsmetadump +sbin/mfsmetalogger +sbin/mfsmetarestore +sbin/mfsrestoremaster +share/man/man1/lizardfs-appendchunks.1.gz +share/man/man1/lizardfs-checkfile.1.gz +share/man/man1/lizardfs-deleattr.1.gz +share/man/man1/lizardfs-dirinfo.1.gz +share/man/man1/lizardfs-fileinfo.1.gz +share/man/man1/lizardfs-filerepair.1.gz +share/man/man1/lizardfs-geteattr.1.gz +share/man/man1/lizardfs-getgoal.1.gz +share/man/man1/lizardfs-gettrashtime.1.gz +share/man/man1/lizardfs-makesnapshot.1.gz +share/man/man1/lizardfs-repquota.1.gz +share/man/man1/lizardfs-rgetgoal.1.gz +share/man/man1/lizardfs-rgettrashtime.1.gz +share/man/man1/lizardfs-rremove.1.gz +share/man/man1/lizardfs-rsetgoal.1.gz +share/man/man1/lizardfs-rsettrashtime.1.gz +share/man/man1/lizardfs-seteattr.1.gz +share/man/man1/lizardfs-setgoal.1.gz +share/man/man1/lizardfs-setquota.1.gz +share/man/man1/lizardfs-settrashtime.1.gz +share/man/man1/lizardfs.1.gz +share/man/man1/mfsmount.1.gz +share/man/man5/globaliolimits.cfg.5.gz +share/man/man5/iolimits.cfg.5.gz +share/man/man5/mfschunkserver.cfg.5.gz +share/man/man5/mfsexports.cfg.5.gz +share/man/man5/mfsgoals.cfg.5.gz +share/man/man5/mfshdd.cfg.5.gz +share/man/man5/mfsmaster.cfg.5.gz +share/man/man5/mfsmetalogger.cfg.5.gz +share/man/man5/mfsmount.cfg.5.gz +share/man/man5/mfstopology.cfg.5.gz +share/man/man7/lizardfs.7.gz +share/man/man7/mfs.7.gz +share/man/man7/moosefs.7.gz +share/man/man8/lizardfs-admin.8.gz +share/man/man8/lizardfs-cgiserver.8.gz +share/man/man8/lizardfs-probe.8.gz +share/man/man8/mfscgiserv.8.gz +share/man/man8/mfschunkserver.8.gz +share/man/man8/mfsmaster.8.gz +share/man/man8/mfsmetadump.8.gz +share/man/man8/mfsmetalogger.8.gz +share/man/man8/mfsmetarestore.8.gz +share/man/man8/mfsrestoremaster.8.gz +share/mfscgi/chart.cgi +share/mfscgi/err.gif +share/mfscgi/favicon.ico +share/mfscgi/index.html +share/mfscgi/logomini.png +share/mfscgi/mfs.cgi +share/mfscgi/mfs.css +/var/mfs/metadata.mfs.empty +@dir /var/mfs diff --git a/filesystems/lkl/Makefile b/filesystems/lkl/Makefile new file mode 100644 index 000000000000..c56be9005f7e --- /dev/null +++ b/filesystems/lkl/Makefile @@ -0,0 +1,42 @@ +PORTNAME= lkl +DISTVERSION= 4.16.g20180628 +PORTREVISION= 4 +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- + +MAINTAINER= cem@FreeBSD.org +COMMENT= Full-featured Linux BTRFS, Ext4, XFS as a FUSE module +WWW= https://github.com/lkl/linux/ + +LICENSE= GPLv2 + +BUILD_DEPENDS= gnubc>0:math/gnubc \ + gnustat:sysutils/coreutils \ + gsed:textproc/gsed + +USES= bison:build fuse gmake python:build shebangfix +SHEBANG_FILES= ../../arch/lkl/scripts/headers_install.py +BINARY_ALIAS= sed=gsed \ + stat=gnustat +USE_BINUTILS= yes:build +USE_GCC= yes:build +USE_GITHUB= yes +GH_PROJECT= linux +GH_TAGNAME= 86dd3afb590eccc1903611bdaa8bac87757eb80d + +ONLY_FOR_ARCHS= amd64 +ONLY_FOR_ARCHS_REASON=ld formats not available for other architectures + +WRKSRC_SUBDIR= tools/lkl +MAKE_JOBS_UNSAFE=yes +MAKE_ARGS+= V=1 +# Need ports versions of 'bc', 'ld' to build! +MAKE_ARGS+= PATH="${LOCALBASE}/bin:${PATH}" CC="${CC}" HOSTCC="${CC}" + +PLIST_FILES= bin/lklfuse lib/liblkl.a + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/lklfuse ${STAGEDIR}${PREFIX}/bin + ${INSTALL_DATA} ${WRKSRC}/liblkl.a ${STAGEDIR}${PREFIX}/lib + +.include <bsd.port.mk> diff --git a/filesystems/lkl/distinfo b/filesystems/lkl/distinfo new file mode 100644 index 000000000000..3a765d45de46 --- /dev/null +++ b/filesystems/lkl/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1530225787 +SHA256 (lkl-linux-4.16.g20180628-86dd3afb590eccc1903611bdaa8bac87757eb80d_GH0.tar.gz) = d63cccf64ab8938389b0054e3e68ee467100bfc98475b1864ab7dac542d51317 +SIZE (lkl-linux-4.16.g20180628-86dd3afb590eccc1903611bdaa8bac87757eb80d_GH0.tar.gz) = 164254140 diff --git a/filesystems/lkl/files/patch-Makefile b/filesystems/lkl/files/patch-Makefile new file mode 100644 index 000000000000..09b164e2c5f6 --- /dev/null +++ b/filesystems/lkl/files/patch-Makefile @@ -0,0 +1,15 @@ +--- Makefile.orig 2018-06-12 22:43:19 UTC ++++ Makefile +@@ -61,10 +61,10 @@ endif + + # rule to build lkl.o + $(OUTPUT)lib/lkl.o: bin/stat +- $(Q)$(MAKE) -C ../.. ARCH=lkl $(KOPT) $(KCONFIG) ++ $(Q)$(MAKE) -C ../.. ARCH=lkl LDFLAGS= $(KOPT) $(KCONFIG) + # this workaround is for arm32 linker (ld.gold) + $(Q)export PATH=$(srctree)/tools/lkl/bin/:${PATH} ;\ +- $(MAKE) -C ../.. ARCH=lkl $(KOPT) install INSTALL_PATH=$(OUTPUT) ++ $(MAKE) -C ../.. ARCH=lkl LDFLAGS= $(KOPT) install INSTALL_PATH=$(OUTPUT) + + # rules to link libs + $(OUTPUT)%$(SOSUF): LDFLAGS += -shared diff --git a/filesystems/lkl/files/patch-Targets b/filesystems/lkl/files/patch-Targets new file mode 100644 index 000000000000..e1fe24075c09 --- /dev/null +++ b/filesystems/lkl/files/patch-Targets @@ -0,0 +1,18 @@ +--- Targets.orig 2018-06-12 22:43:19 UTC ++++ Targets +@@ -10,15 +10,6 @@ LDLIBS_lib/hijack/liblkl-hijack-$(LKL_HOST_CONFIG_ANDR + progs-$(LKL_HOST_CONFIG_FUSE) += lklfuse + LDLIBS_lklfuse-y := -lfuse + +-progs-$(LKL_HOST_CONFIG_ARCHIVE) += fs2tar +-LDLIBS_fs2tar-y := -larchive +-LDLIBS_fs2tar-$(LKL_HOST_CONFIG_NEEDS_LARGP) += -largp +- +- +-progs-$(LKL_HOST_CONFIG_ARCHIVE) += cptofs +-LDLIBS_cptofs-y := -larchive +-LDLIBS_cptofs-$(LKL_HOST_CONFIG_NEEDS_LARGP) += -largp +- + progs-y += tests/boot + progs-y += tests/disk + progs-y += tests/net-test diff --git a/filesystems/lkl/pkg-descr b/filesystems/lkl/pkg-descr new file mode 100644 index 000000000000..bee83838ac5e --- /dev/null +++ b/filesystems/lkl/pkg-descr @@ -0,0 +1 @@ +Linux as a library; and BTRFS, Ext4, and XFS for FUSE. diff --git a/filesystems/ltfs/Makefile b/filesystems/ltfs/Makefile new file mode 100644 index 000000000000..15a3f5985c9d --- /dev/null +++ b/filesystems/ltfs/Makefile @@ -0,0 +1,52 @@ +PORTNAME= ltfs +DISTVERSIONPREFIX= v +DISTVERSION= 2.4.6.2 +DISTVERSIONSUFFIX= -10513 +CATEGORIES= filesystems sysutils + +MAINTAINER= kbowling@FreeBSD.org +COMMENT= Reference implementation of LTFS for stand-alone tape drive +WWW= https://github.com/LinearTapeFileSystem/ltfs + +LICENSE= BSD3CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE + +LIB_DEPENDS= libicudata.so:devel/icu \ + libpkg.so:${PKG_ORIGIN} \ + libuuid.so:misc/e2fsprogs-libuuid + +USES= autoreconf compiler:c11 fuse gnome libtool:build pkgconfig \ + python shebangfix ssl + +USE_GITHUB= yes +GH_ACCOUNT= LinearTapeFileSystem +USE_GNOME= libxml2 +USE_LDCONFIG= yes + +SHEBANG_FILES= src/utils/ltfs_ordered_copy + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX= ${PREFIX}/share + +CONFIGURE_ARGS+= --enable-icu-6x + +#INSTALL_TARGET= install-strip + +OPTIONS_DEFINE= DEBUG SNMP +OPTIONS_SUB= yes + +DEBUG_DESC= Build without optimization and extended debug flags +SNMP_DESC= SNMP trap support + +DEBUG_CONFIGURE_ON= --enable-debug +DEBUG_CONFIGURE_OFF= --enable-fast + +SNMP_LIB_DEPENDS= libnetsnmp.so:net-mgmt/net-snmp +SNMP_USES= perl5 +SNMP_CONFIGURE_ENABLE= snmp + +post-install: + @${RM} ${STAGEDIR}${DATADIR}/ltfs + @${RMDIR} ${STAGEDIR}${DATADIR} + +.include <bsd.port.mk> diff --git a/filesystems/ltfs/distinfo b/filesystems/ltfs/distinfo new file mode 100644 index 000000000000..bdad82fb2bfd --- /dev/null +++ b/filesystems/ltfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1721794312 +SHA256 (LinearTapeFileSystem-ltfs-v2.4.6.2-10513_GH0.tar.gz) = 3ea9b210507f6bb2c9cd8f9d92f0c2ee321e24241dc5a402e557409a71531c91 +SIZE (LinearTapeFileSystem-ltfs-v2.4.6.2-10513_GH0.tar.gz) = 629281 diff --git a/filesystems/ltfs/files/patch-src_tape__drivers_freebsd_cam_cam__tc.c b/filesystems/ltfs/files/patch-src_tape__drivers_freebsd_cam_cam__tc.c new file mode 100644 index 000000000000..d4be8240818e --- /dev/null +++ b/filesystems/ltfs/files/patch-src_tape__drivers_freebsd_cam_cam__tc.c @@ -0,0 +1,11 @@ +--- src/tape_drivers/freebsd/cam/cam_tc.c.orig 2023-09-17 04:20:07 UTC ++++ src/tape_drivers/freebsd/cam/cam_tc.c +@@ -1241,7 +1241,7 @@ static int camtape_get_next_block_to_xfer(void *device + camtape_process_errors(softc, rc, msg, "READPOS", true); + else { + pos->partition = ext_data.partition; +- pos->block = scsi_8btou64(ext_data.last_object) ++ pos->block = scsi_8btou64(ext_data.last_object); + ltfsmsg(LTFS_DEBUG, 30398D, "next-block-to-xfer", + (unsigned long long) pos->block, 0, 0, softc->drive_serial); + } diff --git a/filesystems/ltfs/pkg-descr b/filesystems/ltfs/pkg-descr new file mode 100644 index 000000000000..910dcd0a543f --- /dev/null +++ b/filesystems/ltfs/pkg-descr @@ -0,0 +1,3 @@ +Linear Tape File System (LTFS) is a filesystem to mount a LTFS formatted tape +in a tape drive. Once LTFS mounts a LTFS formatted tape as filesystem, users +can access to the tape via filesystem API. diff --git a/filesystems/ltfs/pkg-message b/filesystems/ltfs/pkg-message new file mode 100644 index 000000000000..a0fee2742d98 --- /dev/null +++ b/filesystems/ltfs/pkg-message @@ -0,0 +1,15 @@ +[ +{ type: install + message: <<EOM +This only works with IBM Enterprise Tape, or IBM-branded LTO-5 and newer tape +drives, although there is a file backend for simulation purposes. + +You will only be able to read and write tapes with a blocksize <= MAXPHYS, +which is 128KB by default. Put the following in your kernel config file and +recompile/reinstall to allow reading and writing tapes up to the maximum LTFS +blocksize of 1MB: + +options MAXPHYS=(1024*1056) +EOM +} +] diff --git a/filesystems/ltfs/pkg-plist b/filesystems/ltfs/pkg-plist new file mode 100644 index 000000000000..60e9532496db --- /dev/null +++ b/filesystems/ltfs/pkg-plist @@ -0,0 +1,54 @@ +bin/ltfs +bin/ltfs_ordered_copy +bin/ltfsck +bin/mkltfs +etc/ltfs.conf +etc/ltfs.conf.local +include/ltfs/config.h +include/ltfs/libltfs/arch/arch_info.h +include/ltfs/libltfs/arch/errormap.h +include/ltfs/libltfs/arch/signal_internal.h +include/ltfs/libltfs/arch/time_internal.h +include/ltfs/libltfs/config_file.h +include/ltfs/libltfs/dcache_ops.h +include/ltfs/libltfs/iosched_ops.h +include/ltfs/libltfs/kmi_ops.h +include/ltfs/libltfs/ltfs_error.h +include/ltfs/libltfs/ltfs_fsops.h +include/ltfs/libltfs/ltfs_locking_new.h +include/ltfs/libltfs/ltfs_locking_old.h +include/ltfs/libltfs/ltfs_locking.h +include/ltfs/libltfs/ltfs_thread.h +include/ltfs/libltfs/ltfs_types.h +include/ltfs/libltfs/ltfs.h +include/ltfs/libltfs/ltfslogging.h +include/ltfs/libltfs/ltfstrace.h +include/ltfs/libltfs/plugin.h +include/ltfs/libltfs/queue.h +include/ltfs/libltfs/tape_ops.h +include/ltfs/libltfs/tape.h +include/ltfs/libltfs/uthash_ext.h +include/ltfs/libltfs/uthash.h +include/ltfs/libltfs/xml.h +include/ltfs/tape_drivers/ibm_tape.h +include/ltfs/tape_drivers/spc_op_codes.h +include/ltfs/tape_drivers/ssc_op_codes.h +include/ltfs/tape_drivers/tape_drivers.h +lib/libltfs.a +lib/libltfs.so +lib/libltfs.so.0 +lib/libltfs.so.0.0.0 +lib/ltfs/libiosched-fcfs.so +lib/ltfs/libiosched-unified.so +lib/ltfs/libkmi-flatfile.so +lib/ltfs/libkmi-simple.so +lib/ltfs/libtape-cam.so +lib/ltfs/libtape-file.so +lib/ltfs/libtape-itdtimg.so +libdata/pkgconfig/ltfs.pc +share/man/man1/ltfs_ordered_copy.1.gz +share/man/man8/ltfs-sde.8.gz +share/man/man8/ltfsck.8.gz +share/man/man8/mkltfs.8.gz +%%SNMP%%share/snmp/LTFS-MIB.txt +%%SNMP%%share/snmp/LtfsSnmpTrapDef.txt diff --git a/filesystems/mergerfs/Makefile b/filesystems/mergerfs/Makefile new file mode 100644 index 000000000000..288a63552490 --- /dev/null +++ b/filesystems/mergerfs/Makefile @@ -0,0 +1,27 @@ +PORTNAME= mergerfs +DISTVERSION= 2.40.2 +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- + +MAINTAINER= ehaupt@FreeBSD.org +COMMENT= Featureful FUSE based union filesystem +WWW= https://github.com/trapexit/mergerfs + +LICENSE= ISCL +LICENSE_FILE= ${WRKSRC}/LICENSE + +NOT_FOR_ARCHS= i386 + +USES= fuse gmake localbase:ldflags +USE_GITHUB= yes +GH_ACCOUNT= trapexit + +PLIST_FILES= bin/mergerfs \ + lib/mergerfs/preload.so \ + share/man/man1/mergerfs.1.gz + +post-install: + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/mergerfs \ + ${STAGEDIR}${PREFIX}/lib/mergerfs/preload.so + +.include <bsd.port.mk> diff --git a/filesystems/mergerfs/distinfo b/filesystems/mergerfs/distinfo new file mode 100644 index 000000000000..37bfb871ee16 --- /dev/null +++ b/filesystems/mergerfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1727772197 +SHA256 (trapexit-mergerfs-2.40.2_GH0.tar.gz) = b4f45e635f29b0a8ba1727e6c1f503356d47943a14af8b4586d3e36350f82464 +SIZE (trapexit-mergerfs-2.40.2_GH0.tar.gz) = 743230 diff --git a/filesystems/mergerfs/files/patch-libfuse_lib_cpu.hpp b/filesystems/mergerfs/files/patch-libfuse_lib_cpu.hpp new file mode 100644 index 000000000000..953ff7e2e86b --- /dev/null +++ b/filesystems/mergerfs/files/patch-libfuse_lib_cpu.hpp @@ -0,0 +1,16 @@ +--- libfuse/lib/cpu.hpp.orig 2024-02-29 20:41:22 UTC ++++ libfuse/lib/cpu.hpp +@@ -5,8 +5,12 @@ + #endif + + #include <pthread.h> ++#ifdef __FreeBSD__ ++#define sched_getaffinity(pid, size, set) 0 ++#define pthread_setaffinity_np(thread, size, set) 0 ++#else + #include <sched.h> +- ++#endif + #include <set> + #include <unordered_map> + #include <vector> diff --git a/filesystems/mergerfs/files/patch-libfuse_lib_fuse.c b/filesystems/mergerfs/files/patch-libfuse_lib_fuse.c new file mode 100644 index 000000000000..cdbfe55e710c --- /dev/null +++ b/filesystems/mergerfs/files/patch-libfuse_lib_fuse.c @@ -0,0 +1,14 @@ +--- libfuse/lib/fuse.c.orig 2024-02-29 20:41:22 UTC ++++ libfuse/lib/fuse.c +@@ -48,8 +48,10 @@ + #include <time.h> + #include <unistd.h> + +-#ifdef HAVE_MALLOC_TRIM ++#ifdef __linux__ + #include <malloc.h> ++#else ++#define malloc_trim(x) ((void)(x)) + #endif + + #define FUSE_UNKNOWN_INO UINT64_MAX diff --git a/filesystems/mergerfs/files/patch-libfuse_util_fusermount.c b/filesystems/mergerfs/files/patch-libfuse_util_fusermount.c new file mode 100644 index 000000000000..7657ee4ce378 --- /dev/null +++ b/filesystems/mergerfs/files/patch-libfuse_util_fusermount.c @@ -0,0 +1,15 @@ +--- libfuse/util/fusermount.c.orig 2024-02-29 20:41:22 UTC ++++ libfuse/util/fusermount.c +@@ -28,7 +28,12 @@ + #include <sys/fsuid.h> + #include <sys/socket.h> + #include <sys/utsname.h> ++#ifdef __linux__ + #include <sched.h> ++#else ++#define sched_getaffinity(pid, size, set) 0 ++#define pthread_setaffinity_np(thread, size, set) 0 ++#endif + + #define FUSE_COMMFD_ENV "_FUSE_COMMFD" + diff --git a/filesystems/mergerfs/files/patch-src_fs__readahead.cpp b/filesystems/mergerfs/files/patch-src_fs__readahead.cpp new file mode 100644 index 000000000000..3bb873358455 --- /dev/null +++ b/filesystems/mergerfs/files/patch-src_fs__readahead.cpp @@ -0,0 +1,14 @@ +--- src/fs_readahead.cpp.orig 2024-02-29 20:41:22 UTC ++++ src/fs_readahead.cpp +@@ -25,7 +25,11 @@ + #include <fstream> + #include <string> + ++#ifdef __FreeBSD__ ++#include <sys/types.h> ++#else + #include <sys/sysmacros.h> ++#endif + + namespace l + { diff --git a/filesystems/mergerfs/files/patch-src_fs__umount2.hpp b/filesystems/mergerfs/files/patch-src_fs__umount2.hpp new file mode 100644 index 000000000000..ce291a314c01 --- /dev/null +++ b/filesystems/mergerfs/files/patch-src_fs__umount2.hpp @@ -0,0 +1,17 @@ +--- src/fs_umount2.hpp.orig 2024-02-29 20:41:22 UTC ++++ src/fs_umount2.hpp +@@ -19,7 +19,14 @@ + #pragma once + + #include <errno.h> ++#ifdef __linux__ + #include <sys/mount.h> ++#else ++#include <sys/param.h> ++#include <sys/mount.h> ++#define umount2(target, flags) unmount(target, flags) ++#define MNT_DETACH 0 ++#endif + + #include <string> + diff --git a/filesystems/mergerfs/files/patch-tools_preload.c b/filesystems/mergerfs/files/patch-tools_preload.c new file mode 100644 index 000000000000..a9a3ad06b3c3 --- /dev/null +++ b/filesystems/mergerfs/files/patch-tools_preload.c @@ -0,0 +1,29 @@ +--- tools/preload.c.orig 2024-02-29 20:41:22 UTC ++++ tools/preload.c +@@ -25,10 +25,25 @@ + #include <string.h> + #include <sys/ioctl.h> + #include <stdarg.h> +-#include <sys/stat.h> ++#include <sys/stat.h> ++#ifdef __linux__ ++#define S_IFMT S_IFMT ++#define S_IFREG S_IFREG ++#else ++#define S_IFMT 0 ++#define S_IFREG 0 ++#endif + #include <sys/types.h> + #include <unistd.h> + #include <fcntl.h> ++ ++#ifdef __linux__ ++#define O_TMPFILE O_TMPFILE ++#define O_PATH O_PATH ++#else ++#define O_TMPFILE 0 ++#define O_PATH 0 ++#endif + + typedef char IOCTL_BUF[4096]; + #define IOCTL_APP_TYPE 0xDF diff --git a/filesystems/mergerfs/pkg-descr b/filesystems/mergerfs/pkg-descr new file mode 100644 index 000000000000..cff399af2600 --- /dev/null +++ b/filesystems/mergerfs/pkg-descr @@ -0,0 +1,3 @@ +mergerfs is a union filesystem geared towards simplifying storage and +management of files across numerous commodity storage devices. It is +similar to mhddfs, unionfs, and aufs. diff --git a/filesystems/mhddfs/Makefile b/filesystems/mhddfs/Makefile new file mode 100644 index 000000000000..5ae9b30c5a9e --- /dev/null +++ b/filesystems/mhddfs/Makefile @@ -0,0 +1,33 @@ +PORTNAME= mhddfs +PORTVERSION= 0.1.37 +PORTREVISION= 1 +CATEGORIES= filesystems +MASTER_SITES= http://mhddfs.uvw.ru/downloads/ +PKGNAMEPREFIX= fusefs- +DISTNAME= ${PORTNAME}_${PORTVERSION} + +MAINTAINER= proler@gmail.com +COMMENT= Multi HDD [FUSE] File System +WWW= http://mhddfs.uvw.ru/ + +USES= fuse pkgconfig gmake +MAKE_ARGS= WITHOUT_XATTR=1 +WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION} + +PLIST_FILES= bin/${PORTNAME} share/man/man1/mhddfs.1.gz +PORTDOCS= README ChangeLog + +OPTIONS_DEFINE= DOCS + +post-patch: + @${REINPLACE_CMD} -e 's|<sys/vfs.h>|<sys/statvfs.h>|' \ + ${WRKSRC}/src/main.c + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin + ${INSTALL_MAN} ${WRKSRC}/${PORTNAME}.1 ${STAGEDIR}${PREFIX}/share/man/man1 + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/README ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/ChangeLog ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.mk> diff --git a/filesystems/mhddfs/distinfo b/filesystems/mhddfs/distinfo new file mode 100644 index 000000000000..9eb0b83fedb0 --- /dev/null +++ b/filesystems/mhddfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905183 +SHA256 (mhddfs_0.1.37.tar.gz) = cac6b528b65e7468aa1988bf8ca3cb5cf505f3b543e063649a62e8d1cf800b3b +SIZE (mhddfs_0.1.37.tar.gz) = 40042 diff --git a/filesystems/mhddfs/files/patch-Makefile b/filesystems/mhddfs/files/patch-Makefile new file mode 100644 index 000000000000..27dc30fcdb9d --- /dev/null +++ b/filesystems/mhddfs/files/patch-Makefile @@ -0,0 +1,50 @@ +--- ./Makefile.orig 2014-03-03 13:17:15.751580055 +0100 ++++ ./Makefile 2014-03-03 13:17:55.792585399 +0100 +@@ -83,14 +83,14 @@ + $(shell rpm --eval '%_rpmdir')/*/mhddfs-*$(VERSION)-$(RELEASE)* . + + $(TARGET): obj/obj-stamp $(OBJ) +- gcc $(CFLAGS) $(OBJ) -o $@ $(LDFLAGS) ++ $(CC) $(CFLAGS) $(OBJ) -o $@ $(LDFLAGS) + + obj/obj-stamp: + mkdir -p obj + touch $@ + + obj/%.o: src/%.c +- gcc $(CFLAGS) -c $< -o $@ ++ $(CC) $(CFLAGS) -c $< -o $@ + + clean: + rm -fr obj $(TARGET) pwrite_test statvfs rename +@@ -98,7 +98,7 @@ + rm -fr rename-test/mnt + + rename: tests/rename.c +- gcc -o $@ $< ++ $(CC) -o $@ $< + + release_svn_thread: + @echo current version $(VERSION) +@@ -113,10 +113,10 @@ + screen -t vim vim Makefile src/*.[ch] README* ChangeLog mhddfs.1 + + pwrite_test: src/test/pwrite.c +- gcc -o $@ $< ++ $(CC) -o $@ $< + + statvfs: src/test/statvfs.c +- gcc -o $@ $< ++ $(CC) -o $@ $< + + images-mount: test1.img test2.img + mount|grep -q `pwd`/test1 || sudo mount -o loop test1.img test1 +@@ -160,7 +160,7 @@ + while make test; do echo ok; echo; done + + ptest: +- gcc -o $@ tests/plocks.c -l pthread ++ $(CC) -o $@ tests/plocks.c -l pthread + -./$@ + rm -f $@ + diff --git a/filesystems/mhddfs/pkg-descr b/filesystems/mhddfs/pkg-descr new file mode 100644 index 000000000000..76148714af7e --- /dev/null +++ b/filesystems/mhddfs/pkg-descr @@ -0,0 +1,8 @@ +mhddfs - Multi HDD [FUSE] File System + +File system for unifying several mount points into one +This FUSE-based file system allows mount points (or directories) to be +combined, simulating a single big volume which can merge several hard +drives or remote file systems. It is like unionfs, but can choose the +drive with the most free space to create new files on, and can move +data transparently between drives. diff --git a/filesystems/moosefs2-cgi/Makefile b/filesystems/moosefs2-cgi/Makefile new file mode 100644 index 000000000000..d33138f4f30c --- /dev/null +++ b/filesystems/moosefs2-cgi/Makefile @@ -0,0 +1,9 @@ +PKGNAMESUFFIX= -cgi + +COMMENT= MooseFS CGI interface + +MFS_COMPONENT= cgi + +MASTERDIR= ${.CURDIR}/../moosefs2-master + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/moosefs2-cgi/pkg-descr b/filesystems/moosefs2-cgi/pkg-descr new file mode 100644 index 000000000000..36025c132006 --- /dev/null +++ b/filesystems/moosefs2-cgi/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: MooseFS CGI monitor. diff --git a/filesystems/moosefs2-cgi/pkg-plist b/filesystems/moosefs2-cgi/pkg-plist new file mode 100644 index 000000000000..d601df00caac --- /dev/null +++ b/filesystems/moosefs2-cgi/pkg-plist @@ -0,0 +1,8 @@ +share/mfscgi/mfs.cgi +share/mfscgi/mfs.css +share/mfscgi/logomini.png +share/mfscgi/index.html +share/mfscgi/err.gif +share/mfscgi/chart.cgi +share/mfscgi/favicon.ico +share/mfscgi/acidtab.js diff --git a/filesystems/moosefs2-cgiserv/Makefile b/filesystems/moosefs2-cgiserv/Makefile new file mode 100644 index 000000000000..afe97c58fc27 --- /dev/null +++ b/filesystems/moosefs2-cgiserv/Makefile @@ -0,0 +1,10 @@ +PORTREVISION= 1 +PKGNAMESUFFIX= -cgiserv + +COMMENT= MooseFS CGI web server + +MFS_COMPONENT= cgiserv + +MASTERDIR= ${.CURDIR}/../moosefs2-master + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/moosefs2-cgiserv/pkg-descr b/filesystems/moosefs2-cgiserv/pkg-descr new file mode 100644 index 000000000000..521dda4d677c --- /dev/null +++ b/filesystems/moosefs2-cgiserv/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: Simple CGI-capable HTTP server to run MooseFS CGI monitor. diff --git a/filesystems/moosefs2-cgiserv/pkg-plist b/filesystems/moosefs2-cgiserv/pkg-plist new file mode 100644 index 000000000000..3f3ea8249528 --- /dev/null +++ b/filesystems/moosefs2-cgiserv/pkg-plist @@ -0,0 +1,5 @@ +sbin/mfscgiserv +share/man/man8/mfscgiserv.8.gz +@owner mfs +@group mfs +@dir %%MFS_WORKDIR%%/mfs diff --git a/filesystems/moosefs2-chunkserver/Makefile b/filesystems/moosefs2-chunkserver/Makefile new file mode 100644 index 000000000000..a194e2c20296 --- /dev/null +++ b/filesystems/moosefs2-chunkserver/Makefile @@ -0,0 +1,10 @@ +PORTREVISION= 1 +PKGNAMESUFFIX= -chunkserver + +COMMENT= MooseFS data storage and synchronization component + +MFS_COMPONENT= chunkserver + +MASTERDIR= ${.CURDIR}/../moosefs2-master + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/moosefs2-chunkserver/pkg-descr b/filesystems/moosefs2-chunkserver/pkg-descr new file mode 100644 index 000000000000..49022d32fbbc --- /dev/null +++ b/filesystems/moosefs2-chunkserver/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: MooseFS data server. diff --git a/filesystems/moosefs2-chunkserver/pkg-plist b/filesystems/moosefs2-chunkserver/pkg-plist new file mode 100644 index 000000000000..da630f1080bb --- /dev/null +++ b/filesystems/moosefs2-chunkserver/pkg-plist @@ -0,0 +1,11 @@ +@sample etc/mfs/mfschunkserver.cfg.sample +@sample etc/mfs/mfshdd.cfg.sample +sbin/mfschunkserver +sbin/mfschunktool +share/man/man5/mfschunkserver.cfg.5.gz +share/man/man5/mfshdd.cfg.5.gz +share/man/man8/mfschunkserver.8.gz +share/man/man8/mfschunktool.8.gz +@owner mfs +@group mfs +@dir %%MFS_WORKDIR%%/mfs diff --git a/filesystems/moosefs2-cli/Makefile b/filesystems/moosefs2-cli/Makefile new file mode 100644 index 000000000000..1a6757a94e1c --- /dev/null +++ b/filesystems/moosefs2-cli/Makefile @@ -0,0 +1,10 @@ +PORTREVISION= 1 +PKGNAMESUFFIX= -cli + +COMMENT= MooseFS command line interface + +MFS_COMPONENT= cli + +MASTERDIR= ${.CURDIR}/../moosefs2-master + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/moosefs2-cli/pkg-descr b/filesystems/moosefs2-cli/pkg-descr new file mode 100644 index 000000000000..9b4fd59436bf --- /dev/null +++ b/filesystems/moosefs2-cli/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: MooseFS CLI utilities. diff --git a/filesystems/moosefs2-cli/pkg-plist b/filesystems/moosefs2-cli/pkg-plist new file mode 100644 index 000000000000..b89b6b5ecf83 --- /dev/null +++ b/filesystems/moosefs2-cli/pkg-plist @@ -0,0 +1,2 @@ +bin/mfscli +share/man/man1/mfscli.1.gz diff --git a/filesystems/moosefs2-client/Makefile b/filesystems/moosefs2-client/Makefile new file mode 100644 index 000000000000..9cf2d724e61e --- /dev/null +++ b/filesystems/moosefs2-client/Makefile @@ -0,0 +1,10 @@ +PORTREVISION= 1 +PKGNAMESUFFIX= -client + +COMMENT= MooseFS client tools + +MFS_COMPONENT= client + +MASTERDIR= ${.CURDIR}/../moosefs2-master + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/moosefs2-client/pkg-descr b/filesystems/moosefs2-client/pkg-descr new file mode 100644 index 000000000000..de72d7e2d737 --- /dev/null +++ b/filesystems/moosefs2-client/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: MooseFS clients: mfsmount and mfstools. diff --git a/filesystems/moosefs2-client/pkg-plist b/filesystems/moosefs2-client/pkg-plist new file mode 100644 index 000000000000..8697bf3f7775 --- /dev/null +++ b/filesystems/moosefs2-client/pkg-plist @@ -0,0 +1,47 @@ +bin/mfsappendchunks +bin/mfscheckfile +bin/mfsdirinfo +bin/mfsfileinfo +bin/mfsfilerepair +bin/mfsmakesnapshot +bin/mfsgetgoal +bin/mfssetgoal +bin/mfsrgetgoal +bin/mfsrsetgoal +bin/mfsgettrashtime +bin/mfssettrashtime +bin/mfsrgettrashtime +bin/mfsrsettrashtime +bin/mfsgeteattr +bin/mfsseteattr +bin/mfsdeleattr +bin/mfsgetquota +bin/mfssetquota +bin/mfsdelquota +bin/mfsfilepaths +bin/mfsmount +bin/mfstools +@sample etc/mfs/mfsmount.cfg.sample +share/man/man1/mfsappendchunks.1.gz +share/man/man1/mfscheckfile.1.gz +share/man/man1/mfsdeleattr.1.gz +share/man/man1/mfsdelquota.1.gz +share/man/man1/mfsdirinfo.1.gz +share/man/man1/mfsfileinfo.1.gz +share/man/man1/mfsfilepaths.1.gz +share/man/man1/mfsfilerepair.1.gz +share/man/man1/mfsgeteattr.1.gz +share/man/man1/mfsgetgoal.1.gz +share/man/man1/mfsgetquota.1.gz +share/man/man1/mfsgettrashtime.1.gz +share/man/man1/mfsmakesnapshot.1.gz +share/man/man1/mfsrgetgoal.1.gz +share/man/man1/mfsrgettrashtime.1.gz +share/man/man1/mfsrsetgoal.1.gz +share/man/man1/mfsrsettrashtime.1.gz +share/man/man1/mfsseteattr.1.gz +share/man/man1/mfssetgoal.1.gz +share/man/man1/mfssetquota.1.gz +share/man/man1/mfssettrashtime.1.gz +share/man/man1/mfstools.1.gz +share/man/man8/mfsmount.8.gz diff --git a/filesystems/moosefs2-master/Makefile b/filesystems/moosefs2-master/Makefile new file mode 100644 index 000000000000..f71b0645904f --- /dev/null +++ b/filesystems/moosefs2-master/Makefile @@ -0,0 +1,107 @@ +PORTNAME= moosefs2 +PORTVERSION= 2.0.91 +PORTREVISION= 1 +CATEGORIES= filesystems sysutils +MASTER_SITES= http://ppa.moosefs.com/src/ +PKGNAMESUFFIX?= -master +DISTNAME= moosefs-${PORTVERSION}-1 + +MAINTAINER= freebsd@moosefs.com +COMMENT?= Fault-tolerant distributed filesystem +WWW= https://moosefs.com/ + +LICENSE= GPLv2 + +USES= python:build +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +WRKSRC= ${WRKDIR}/moosefs-${PORTVERSION} +PLIST= ${.CURDIR}/pkg-plist +DESCR= ${.CURDIR}/pkg-descr + +MFS_COMPONENT?= master +MFS_USER= mfs +MFS_GROUP= mfs +MFS_WORKDIR= /var + +USERS= ${MFS_USER} +GROUPS= ${MFS_GROUP} + +CONFIGURE_ARGS+= --localstatedir=${MFS_WORKDIR} \ + --with-default-user=${MFS_USER} \ + --with-default-group=${MFS_GROUP} \ + +.if ${MFS_COMPONENT} == cgi +MFS_CGIDIR= ${PREFIX}/share/mfscgi +USES= python +CONFIGURE_ARGS+= --enable-mfscgi \ + --with-mfscgi-dir=${MFS_CGIDIR} +.else +CONFIGURE_ARGS+= --disable-mfscgi +.endif + +.if ${MFS_COMPONENT} == cgiserv +MFS_CGISERVDIR= ${PREFIX}/sbin +USES= python +USE_RC_SUBR= mfscgiserv +SUB_FILES+= pkg-message-cgiserv +PKGMESSAGE= ${WRKDIR}/pkg-message-cgiserv +PLIST_SUB+= MFS_WORKDIR="${MFS_WORKDIR}" +CONFIGURE_ARGS+= --enable-mfscgiserv \ + --with-mfscgiserv-dir=${MFS_CGISERVDIR} +RUN_DEPENDS= moosefs2-cgi>0:filesystems/moosefs2-cgi +.else +CONFIGURE_ARGS+= --disable-mfscgiserv +.endif + +.if ${MFS_COMPONENT} == chunkserver +USE_RC_SUBR= mfschunkserver +SUB_FILES+= pkg-message-chunkserver +PKGMESSAGE= ${WRKDIR}/pkg-message-chunkserver +PLIST_SUB+= MFS_WORKDIR="${MFS_WORKDIR}" +CONFIGURE_ARGS+= --enable-mfschunkserver +.else +CONFIGURE_ARGS+= --disable-mfschunkserver +.endif + +.if ${MFS_COMPONENT} == cli +USES= python +CONFIGURE_ARGS+= --enable-mfscli +.else +CONFIGURE_ARGS+= --disable-mfscli +.endif + +.if ${MFS_COMPONENT} == client +USES= compiler:c11 fuse pkgconfig +CONFIGURE_ARGS+= --enable-mfsmount +.else +CONFIGURE_ARGS+= --disable-mfsmount +.endif + +.if ${MFS_COMPONENT} == master +USE_RC_SUBR= mfsmaster +PLIST_SUB+= MFS_WORKDIR="${MFS_WORKDIR}" +SUB_FILES+= pkg-message-master +PKGMESSAGE= ${WRKDIR}/pkg-message-master +CONFIGURE_ARGS+= --enable-mfsmaster +.else +CONFIGURE_ARGS+= --disable-mfsmaster +.endif + +.if ${MFS_COMPONENT} == metalogger +USE_RC_SUBR= mfsmetalogger +SUB_FILES+= pkg-message-metalogger +PKGMESSAGE= ${WRKDIR}/pkg-message-metalogger +PLIST_SUB+= MFS_WORKDIR="${MFS_WORKDIR}" +CONFIGURE_ARGS+= --enable-mfsmetalogger +.else +CONFIGURE_ARGS+= --disable-mfsmetalogger +.endif + +.if ${MFS_COMPONENT} == netdump +CONFIGURE_ARGS+= --enable-mfsnetdump +.else +CONFIGURE_ARGS+= --disable-mfsnetdump +.endif + +.include <bsd.port.mk> diff --git a/filesystems/moosefs2-master/distinfo b/filesystems/moosefs2-master/distinfo new file mode 100644 index 000000000000..967bb6ec0f40 --- /dev/null +++ b/filesystems/moosefs2-master/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1475264147 +SHA256 (moosefs-2.0.91-1.tar.gz) = c63c578b06395e913a163c2076effe39d3fd66b09caff6b23f6303d4a22fe249 +SIZE (moosefs-2.0.91-1.tar.gz) = 970133 diff --git a/filesystems/moosefs2-master/files/mfscgiserv.in b/filesystems/moosefs2-master/files/mfscgiserv.in new file mode 100644 index 000000000000..39f9f59ddb6d --- /dev/null +++ b/filesystems/moosefs2-master/files/mfscgiserv.in @@ -0,0 +1,29 @@ +#!/bin/sh + +# PROVIDE: mfscgiserv +# REQUIRE: DAEMON +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf to enable mfscgiserv: +# +# mfscgiserv_enable="YES" +# + +. /etc/rc.subr + +name=mfscgiserv +rcvar=mfscgiserv_enable + +command=%%PREFIX%%/sbin/${name} +pid_file=%%MFS_WORKDIR%%/mfs/.${name}.lock +procname="python" + +stop_cmd="$command stop" +status_cmd="$command test" + +load_rc_config $name + +# set defaults +: ${mfscgiserv_enable="NO"} + +run_rc_command "$1" diff --git a/filesystems/moosefs2-master/files/mfschunkserver.in b/filesystems/moosefs2-master/files/mfschunkserver.in new file mode 100644 index 000000000000..3083fe91b543 --- /dev/null +++ b/filesystems/moosefs2-master/files/mfschunkserver.in @@ -0,0 +1,30 @@ +#!/bin/sh + +# PROVIDE: mfschunkserver +# REQUIRE: DAEMON +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to enable mfschunkserver: +# +# mfschunkserver_enable="YES" +# + +. /etc/rc.subr + +name=mfschunkserver +rcvar=mfschunkserver_enable + +config_file=%%PREFIX%%/etc/mfs/${name}.cfg + +required_files=${config_file} + +command=%%PREFIX%%/sbin/${name} +pid_file=%%MFS_WORKDIR%%/mfs/.${name}.lock +command_args="-c $config_file" + +load_rc_config $name + +# set defaults +: ${mfschunkserver_enable="NO"} + +run_rc_command "$1" diff --git a/filesystems/moosefs2-master/files/mfsmaster.in b/filesystems/moosefs2-master/files/mfsmaster.in new file mode 100644 index 000000000000..a551d441c5b1 --- /dev/null +++ b/filesystems/moosefs2-master/files/mfsmaster.in @@ -0,0 +1,30 @@ +#!/bin/sh + +# PROVIDE: mfsmaster +# REQUIRE: DAEMON +# KEYWORD: nostart shutdown +# +# Add the following lines to /etc/rc.conf to enable mfsmaster: +# +# mfsmaster_enable="YES" +# + +. /etc/rc.subr + +name=mfsmaster +rcvar=mfsmaster_enable + +config_file=%%PREFIX%%/etc/mfs/${name}.cfg + +required_files=${config_file} + +command=%%PREFIX%%/sbin/${name} +pid_file=%%MFS_WORKDIR%%/mfs/.${name}.lock +command_args="-c $config_file" + +load_rc_config $name + +# set defaults +: ${mfsmaster_enable="NO"} + +run_rc_command "$1" diff --git a/filesystems/moosefs2-master/files/mfsmetalogger.in b/filesystems/moosefs2-master/files/mfsmetalogger.in new file mode 100644 index 000000000000..994a1a69f4ec --- /dev/null +++ b/filesystems/moosefs2-master/files/mfsmetalogger.in @@ -0,0 +1,30 @@ +#!/bin/sh + +# PROVIDE: mfsmetalogger +# REQUIRE: DAEMON +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf to enable mfsmetalogger: +# +# mfsmetalogger_enable="YES" +# + +. /etc/rc.subr + +name=mfsmetalogger +rcvar=mfsmetalogger_enable + +config_file=%%PREFIX%%/etc/mfs/${name}.cfg + +required_files=${config_file} + +command=%%PREFIX%%/sbin/${name} +pid_file=%%MFS_WORKDIR%%/mfs/.${name}.lock +command_args="-c $config_file" + +load_rc_config $name + +# set defaults +: ${mfsmetalogger_enable="NO"} + +run_rc_command "$1" diff --git a/filesystems/moosefs2-master/files/patch-mfsdata_Makefile.in b/filesystems/moosefs2-master/files/patch-mfsdata_Makefile.in new file mode 100644 index 000000000000..ac1bd4685b43 --- /dev/null +++ b/filesystems/moosefs2-master/files/patch-mfsdata_Makefile.in @@ -0,0 +1,30 @@ +--- mfsdata/Makefile.in.orig 2015-08-12 14:50:32 UTC ++++ mfsdata/Makefile.in +@@ -504,11 +504,11 @@ install-data-hook: + @CREATE_DATA_DIR_TRUE@ fi ; \ + @CREATE_DATA_DIR_TRUE@ fi ; \ + @CREATE_DATA_DIR_TRUE@ fi +-@BUILD_CHUNKSERVER_TRUE@ $(INSTALL_DATA) $(builddir)/mfschunkserver.cfg $(DESTDIR)$(sysconfdir)/mfs/mfschunkserver.cfg.dist +-@BUILD_CHUNKSERVER_TRUE@ $(INSTALL_DATA) $(srcdir)/mfshdd.cfg $(DESTDIR)$(sysconfdir)/mfs/mfshdd.cfg.dist +-@BUILD_MASTER_TRUE@ $(INSTALL_DATA) $(builddir)/mfsmaster.cfg $(DESTDIR)$(sysconfdir)/mfs/mfsmaster.cfg.dist +-@BUILD_MASTER_TRUE@ $(INSTALL_DATA) $(builddir)/mfsexports.cfg $(DESTDIR)$(sysconfdir)/mfs/mfsexports.cfg.dist +-@BUILD_MASTER_TRUE@ $(INSTALL_DATA) $(builddir)/mfstopology.cfg $(DESTDIR)$(sysconfdir)/mfs/mfstopology.cfg.dist ++@BUILD_CHUNKSERVER_TRUE@ $(INSTALL_DATA) $(builddir)/mfschunkserver.cfg $(DESTDIR)$(sysconfdir)/mfs/mfschunkserver.cfg.sample ++@BUILD_CHUNKSERVER_TRUE@ $(INSTALL_DATA) $(srcdir)/mfshdd.cfg $(DESTDIR)$(sysconfdir)/mfs/mfshdd.cfg.sample ++@BUILD_MASTER_TRUE@ $(INSTALL_DATA) $(builddir)/mfsmaster.cfg $(DESTDIR)$(sysconfdir)/mfs/mfsmaster.cfg.sample ++@BUILD_MASTER_TRUE@ $(INSTALL_DATA) $(builddir)/mfsexports.cfg $(DESTDIR)$(sysconfdir)/mfs/mfsexports.cfg.sample ++@BUILD_MASTER_TRUE@ $(INSTALL_DATA) $(builddir)/mfstopology.cfg $(DESTDIR)$(sysconfdir)/mfs/mfstopology.cfg.sample + @BUILD_MASTER_TRUE@ $(INSTALL_DATA) $(srcdir)/metadata.mfs $(DESTDIR)$(DATA_PATH)/metadata.mfs.empty + @BUILD_MASTER_TRUE@ if [ "`id -u`" = "0" ]; then \ + @BUILD_MASTER_TRUE@ if id -u $(DEFAULT_USER) 2> /dev/null > /dev/null ; then \ +@@ -517,8 +517,8 @@ install-data-hook: + @BUILD_MASTER_TRUE@ fi ; \ + @BUILD_MASTER_TRUE@ fi ; \ + @BUILD_MASTER_TRUE@ fi +-@BUILD_MOUNT_TRUE@ $(INSTALL_DATA) $(builddir)/mfsmount.cfg $(DESTDIR)$(sysconfdir)/mfs/mfsmount.cfg.dist +-@BUILD_METALOGGER_TRUE@ $(INSTALL_DATA) $(builddir)/mfsmetalogger.cfg $(DESTDIR)$(sysconfdir)/mfs/mfsmetalogger.cfg.dist ++@BUILD_MOUNT_TRUE@ $(INSTALL_DATA) $(builddir)/mfsmount.cfg $(DESTDIR)$(sysconfdir)/mfs/mfsmount.cfg.sample ++@BUILD_METALOGGER_TRUE@ $(INSTALL_DATA) $(builddir)/mfsmetalogger.cfg $(DESTDIR)$(sysconfdir)/mfs/mfsmetalogger.cfg.sample + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/filesystems/moosefs2-master/files/pkg-message-cgiserv.in b/filesystems/moosefs2-master/files/pkg-message-cgiserv.in new file mode 100644 index 000000000000..b93e90eb8847 --- /dev/null +++ b/filesystems/moosefs2-master/files/pkg-message-cgiserv.in @@ -0,0 +1,14 @@ +[ +{ type: install + message: <<EOM +A startup script has been installed as: + +%%PREFIX%%/etc/rc.d/mfscgiserv + +Use it to start/stop the mfscgiserv service after you have added +the following line to your rc.conf file: + +mfscgiserv_enable="YES" +EOM +} +] diff --git a/filesystems/moosefs2-master/files/pkg-message-chunkserver.in b/filesystems/moosefs2-master/files/pkg-message-chunkserver.in new file mode 100644 index 000000000000..5ad0ee1a4388 --- /dev/null +++ b/filesystems/moosefs2-master/files/pkg-message-chunkserver.in @@ -0,0 +1,14 @@ +[ +{ type: install + message: <<EOM +A startup script has been installed as: + +%%PREFIX%%/etc/rc.d/mfschunkserver + +Use it to start/stop the mfschunkserver service after you have added +the following line to your rc.conf file: + +mfschunkserver_enable="YES" +EOM +} +] diff --git a/filesystems/moosefs2-master/files/pkg-message-master.in b/filesystems/moosefs2-master/files/pkg-message-master.in new file mode 100644 index 000000000000..748bcc9eee7a --- /dev/null +++ b/filesystems/moosefs2-master/files/pkg-message-master.in @@ -0,0 +1,14 @@ +[ +{ type: install + message: <<EOM +A startup script has been installed as: + +%%PREFIX%%/etc/rc.d/mfsmaster + +Use it to start/stop the mfsmaster service after you have added +the following line to your rc.conf file: + +mfsmaster_enable="YES" +EOM +} +] diff --git a/filesystems/moosefs2-master/files/pkg-message-metalogger.in b/filesystems/moosefs2-master/files/pkg-message-metalogger.in new file mode 100644 index 000000000000..0a294c00bc0c --- /dev/null +++ b/filesystems/moosefs2-master/files/pkg-message-metalogger.in @@ -0,0 +1,14 @@ +[ +{ type: install + message: <<EOM +A startup script has been installed as: + +%%PREFIX%%/etc/rc.d/mfsmetalogger + +Use it to start/stop the mfsmetalogger service after you have added +the following line to your rc.conf file: + +mfsmetalogger_enable="YES" +EOM +} +] diff --git a/filesystems/moosefs2-master/pkg-descr b/filesystems/moosefs2-master/pkg-descr new file mode 100644 index 000000000000..5a93d68ac286 --- /dev/null +++ b/filesystems/moosefs2-master/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: MooseFS master (metadata) server. diff --git a/filesystems/moosefs2-master/pkg-plist b/filesystems/moosefs2-master/pkg-plist new file mode 100644 index 000000000000..d750cf15d914 --- /dev/null +++ b/filesystems/moosefs2-master/pkg-plist @@ -0,0 +1,16 @@ +@sample etc/mfs/mfsmaster.cfg.sample +@sample etc/mfs/mfsexports.cfg.sample +@sample etc/mfs/mfstopology.cfg.sample +sbin/mfsmaster +sbin/mfsmetadump +sbin/mfsmetarestore +share/man/man5/mfsexports.cfg.5.gz +share/man/man5/mfsmaster.cfg.5.gz +share/man/man5/mfstopology.cfg.5.gz +share/man/man8/mfsmaster.8.gz +share/man/man8/mfsmetadump.8.gz +share/man/man8/mfsmetarestore.8.gz +@owner mfs +@group mfs +@dir %%MFS_WORKDIR%%/mfs +%%MFS_WORKDIR%%/mfs/metadata.mfs.empty diff --git a/filesystems/moosefs2-metalogger/Makefile b/filesystems/moosefs2-metalogger/Makefile new file mode 100644 index 000000000000..6922aac6de8f --- /dev/null +++ b/filesystems/moosefs2-metalogger/Makefile @@ -0,0 +1,10 @@ +PORTREVISION= 1 +PKGNAMESUFFIX= -metalogger + +COMMENT= MooseFS metadata backup server + +MFS_COMPONENT= metalogger + +MASTERDIR= ${.CURDIR}/../moosefs2-master + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/moosefs2-metalogger/pkg-descr b/filesystems/moosefs2-metalogger/pkg-descr new file mode 100644 index 000000000000..02e050e7169b --- /dev/null +++ b/filesystems/moosefs2-metalogger/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: MooseFS metalogger (metadata replication) server. diff --git a/filesystems/moosefs2-metalogger/pkg-plist b/filesystems/moosefs2-metalogger/pkg-plist new file mode 100644 index 000000000000..c27833ff6e37 --- /dev/null +++ b/filesystems/moosefs2-metalogger/pkg-plist @@ -0,0 +1,7 @@ +@sample etc/mfs/mfsmetalogger.cfg.sample +sbin/mfsmetalogger +share/man/man5/mfsmetalogger.cfg.5.gz +share/man/man8/mfsmetalogger.8.gz +@owner mfs +@group mfs +@dir %%MFS_WORKDIR%%/mfs diff --git a/filesystems/moosefs2-netdump/Makefile b/filesystems/moosefs2-netdump/Makefile new file mode 100644 index 000000000000..819857812fb0 --- /dev/null +++ b/filesystems/moosefs2-netdump/Makefile @@ -0,0 +1,10 @@ +PORTREVISION= 1 +PKGNAMESUFFIX= -netdump + +COMMENT= MooseFS network packet dump utility + +MFS_COMPONENT= netdump + +MASTERDIR= ${.CURDIR}/../moosefs2-master + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/moosefs2-netdump/pkg-descr b/filesystems/moosefs2-netdump/pkg-descr new file mode 100644 index 000000000000..6691c4931b69 --- /dev/null +++ b/filesystems/moosefs2-netdump/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: MooseFS network packet dump utility diff --git a/filesystems/moosefs2-netdump/pkg-plist b/filesystems/moosefs2-netdump/pkg-plist new file mode 100644 index 000000000000..d9fe247254f3 --- /dev/null +++ b/filesystems/moosefs2-netdump/pkg-plist @@ -0,0 +1,2 @@ +sbin/mfsnetdump +share/man/man8/mfsnetdump.8.gz diff --git a/filesystems/moosefs3-cgi/Makefile b/filesystems/moosefs3-cgi/Makefile new file mode 100644 index 000000000000..7d037c1e09ae --- /dev/null +++ b/filesystems/moosefs3-cgi/Makefile @@ -0,0 +1,9 @@ +PKGNAMESUFFIX= -cgi + +COMMENT= MooseFS CGI interface + +MFS_COMPONENT= cgi + +MASTERDIR= ${.CURDIR}/../moosefs3-master + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/moosefs3-cgi/pkg-descr b/filesystems/moosefs3-cgi/pkg-descr new file mode 100644 index 000000000000..36025c132006 --- /dev/null +++ b/filesystems/moosefs3-cgi/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: MooseFS CGI monitor. diff --git a/filesystems/moosefs3-cgi/pkg-plist b/filesystems/moosefs3-cgi/pkg-plist new file mode 100644 index 000000000000..d601df00caac --- /dev/null +++ b/filesystems/moosefs3-cgi/pkg-plist @@ -0,0 +1,8 @@ +share/mfscgi/mfs.cgi +share/mfscgi/mfs.css +share/mfscgi/logomini.png +share/mfscgi/index.html +share/mfscgi/err.gif +share/mfscgi/chart.cgi +share/mfscgi/favicon.ico +share/mfscgi/acidtab.js diff --git a/filesystems/moosefs3-cgiserv/Makefile b/filesystems/moosefs3-cgiserv/Makefile new file mode 100644 index 000000000000..3b34f14aa4a4 --- /dev/null +++ b/filesystems/moosefs3-cgiserv/Makefile @@ -0,0 +1,10 @@ +PORTREVISION= 1 +PKGNAMESUFFIX= -cgiserv + +COMMENT= MooseFS CGI web server + +MFS_COMPONENT= cgiserv + +MASTERDIR= ${.CURDIR}/../moosefs3-master + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/moosefs3-cgiserv/pkg-descr b/filesystems/moosefs3-cgiserv/pkg-descr new file mode 100644 index 000000000000..521dda4d677c --- /dev/null +++ b/filesystems/moosefs3-cgiserv/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: Simple CGI-capable HTTP server to run MooseFS CGI monitor. diff --git a/filesystems/moosefs3-cgiserv/pkg-plist b/filesystems/moosefs3-cgiserv/pkg-plist new file mode 100644 index 000000000000..3f3ea8249528 --- /dev/null +++ b/filesystems/moosefs3-cgiserv/pkg-plist @@ -0,0 +1,5 @@ +sbin/mfscgiserv +share/man/man8/mfscgiserv.8.gz +@owner mfs +@group mfs +@dir %%MFS_WORKDIR%%/mfs diff --git a/filesystems/moosefs3-chunkserver/Makefile b/filesystems/moosefs3-chunkserver/Makefile new file mode 100644 index 000000000000..34b4fb34d732 --- /dev/null +++ b/filesystems/moosefs3-chunkserver/Makefile @@ -0,0 +1,10 @@ +PORTREVISION= 1 +PKGNAMESUFFIX= -chunkserver + +COMMENT= MooseFS data storage and synchronization component + +MFS_COMPONENT= chunkserver + +MASTERDIR= ${.CURDIR}/../moosefs3-master + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/moosefs3-chunkserver/pkg-descr b/filesystems/moosefs3-chunkserver/pkg-descr new file mode 100644 index 000000000000..49022d32fbbc --- /dev/null +++ b/filesystems/moosefs3-chunkserver/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: MooseFS data server. diff --git a/filesystems/moosefs3-chunkserver/pkg-plist b/filesystems/moosefs3-chunkserver/pkg-plist new file mode 100644 index 000000000000..c255b94a42bd --- /dev/null +++ b/filesystems/moosefs3-chunkserver/pkg-plist @@ -0,0 +1,13 @@ +@sample etc/mfs/mfschunkserver.cfg.sample +@sample etc/mfs/mfshdd.cfg.sample +sbin/mfschunkserver +sbin/mfschunktool +sbin/mfscsstatsdump +share/man/man5/mfschunkserver.cfg.5.gz +share/man/man5/mfshdd.cfg.5.gz +share/man/man8/mfschunkserver.8.gz +share/man/man8/mfschunktool.8.gz +share/man/man8/mfscsstatsdump.8.gz +@owner mfs +@group mfs +@dir %%MFS_WORKDIR%%/mfs diff --git a/filesystems/moosefs3-cli/Makefile b/filesystems/moosefs3-cli/Makefile new file mode 100644 index 000000000000..ae2879d67725 --- /dev/null +++ b/filesystems/moosefs3-cli/Makefile @@ -0,0 +1,10 @@ +PORTREVISION= 1 +PKGNAMESUFFIX= -cli + +COMMENT= MooseFS command line interface + +MFS_COMPONENT= cli + +MASTERDIR= ${.CURDIR}/../moosefs3-master + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/moosefs3-cli/pkg-descr b/filesystems/moosefs3-cli/pkg-descr new file mode 100644 index 000000000000..9b4fd59436bf --- /dev/null +++ b/filesystems/moosefs3-cli/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: MooseFS CLI utilities. diff --git a/filesystems/moosefs3-cli/pkg-plist b/filesystems/moosefs3-cli/pkg-plist new file mode 100644 index 000000000000..b89b6b5ecf83 --- /dev/null +++ b/filesystems/moosefs3-cli/pkg-plist @@ -0,0 +1,2 @@ +bin/mfscli +share/man/man1/mfscli.1.gz diff --git a/filesystems/moosefs3-client/Makefile b/filesystems/moosefs3-client/Makefile new file mode 100644 index 000000000000..90d9fc570de2 --- /dev/null +++ b/filesystems/moosefs3-client/Makefile @@ -0,0 +1,10 @@ +PORTREVISION= 1 +PKGNAMESUFFIX= -client + +COMMENT= MooseFS client tools + +MFS_COMPONENT= client + +MASTERDIR= ${.CURDIR}/../moosefs3-master + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/moosefs3-client/pkg-descr b/filesystems/moosefs3-client/pkg-descr new file mode 100644 index 000000000000..de72d7e2d737 --- /dev/null +++ b/filesystems/moosefs3-client/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: MooseFS clients: mfsmount and mfstools. diff --git a/filesystems/moosefs3-client/pkg-plist b/filesystems/moosefs3-client/pkg-plist new file mode 100644 index 000000000000..2dc2199c4f06 --- /dev/null +++ b/filesystems/moosefs3-client/pkg-plist @@ -0,0 +1,88 @@ +@sample etc/mfs/mfsmount.cfg.sample +bin/mfsmount +bin/mfsappendchunks +bin/mfscheckfile +bin/mfsdirinfo +bin/mfsfileinfo +bin/mfsfilerepair +bin/mfsmakesnapshot +bin/mfsrmsnapshot +bin/mfsgetgoal +bin/mfssetgoal +bin/mfscopygoal +bin/mfsrgetgoal +bin/mfsrsetgoal +bin/mfsgetsclass +bin/mfssetsclass +bin/mfscopysclass +bin/mfsxchgsclass +bin/mfslistsclass +bin/mfsgettrashtime +bin/mfssettrashtime +bin/mfscopytrashtime +bin/mfsrgettrashtime +bin/mfsrsettrashtime +bin/mfsgeteattr +bin/mfsseteattr +bin/mfsdeleattr +bin/mfscopyeattr +bin/mfsgetquota +bin/mfssetquota +bin/mfsdelquota +bin/mfscopyquota +bin/mfschkarchive +bin/mfsclrarchive +bin/mfssetarchive +bin/mfsfilepaths +bin/mfsscadmin +bin/mfstools +include/mfsio.h +lib/libmfsio.a +lib/libmfsio.so +lib/libmfsio.so.1 +lib/libmfsio.so.1.0.0 +share/man/man1/mfsappendchunks.1.gz +share/man/man1/mfscheckfile.1.gz +share/man/man1/mfsdirinfo.1.gz +share/man/man1/mfsfileinfo.1.gz +share/man/man1/mfsfilerepair.1.gz +share/man/man1/mfsmakesnapshot.1.gz +share/man/man1/mfsrmsnapshot.1.gz +share/man/man1/mfsgetgoal.1.gz +share/man/man1/mfssetgoal.1.gz +share/man/man1/mfscopygoal.1.gz +share/man/man1/mfsrgetgoal.1.gz +share/man/man1/mfsrsetgoal.1.gz +share/man/man1/mfsgetsclass.1.gz +share/man/man1/mfssetsclass.1.gz +share/man/man1/mfscopysclass.1.gz +share/man/man1/mfsxchgsclass.1.gz +share/man/man1/mfslistsclass.1.gz +share/man/man1/mfsgettrashtime.1.gz +share/man/man1/mfssettrashtime.1.gz +share/man/man1/mfscopytrashtime.1.gz +share/man/man1/mfsrgettrashtime.1.gz +share/man/man1/mfsrsettrashtime.1.gz +share/man/man1/mfsgeteattr.1.gz +share/man/man1/mfsseteattr.1.gz +share/man/man1/mfsdeleattr.1.gz +share/man/man1/mfscopyeattr.1.gz +share/man/man1/mfsgetquota.1.gz +share/man/man1/mfssetquota.1.gz +share/man/man1/mfsdelquota.1.gz +share/man/man1/mfscopyquota.1.gz +share/man/man1/mfschkarchive.1.gz +share/man/man1/mfsclrarchive.1.gz +share/man/man1/mfssetarchive.1.gz +share/man/man1/mfsfilepaths.1.gz +share/man/man1/mfsgoal.1.gz +share/man/man1/mfstrashtime.1.gz +share/man/man1/mfseattr.1.gz +share/man/man1/mfsquota.1.gz +share/man/man1/mfsarchive.1.gz +share/man/man1/mfssnapshots.1.gz +share/man/man1/mfsdiagtools.1.gz +share/man/man1/mfssclass.1.gz +share/man/man1/mfsscadmin.1.gz +share/man/man1/mfstools.1.gz +share/man/man8/mfsmount.8.gz diff --git a/filesystems/moosefs3-master/Makefile b/filesystems/moosefs3-master/Makefile new file mode 100644 index 000000000000..603cdeffcbe9 --- /dev/null +++ b/filesystems/moosefs3-master/Makefile @@ -0,0 +1,111 @@ +PORTNAME= moosefs3 +DISTVERSION= 3.0.117 +DISTVERSIONSUFFIX= 1 +PORTREVISION= 1 +CATEGORIES= filesystems sysutils +MASTER_SITES= http://ppa.moosefs.com/src/ +PKGNAMESUFFIX?= -master +DISTNAME= moosefs-${DISTVERSION}-${DISTVERSIONSUFFIX} + +MAINTAINER= freebsd@moosefs.com +COMMENT?= Fault-tolerant distributed filesystem +WWW= https://moosefs.com/ + +LICENSE= GPLv2 + +USES= python:build +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +WRKSRC= ${WRKDIR}/moosefs-${PORTVERSION} +PLIST= ${.CURDIR}/pkg-plist +DESCR= ${.CURDIR}/pkg-descr + +MFS_COMPONENT?= master +MFS_USER= mfs +MFS_GROUP= mfs +MFS_WORKDIR= /var + +USERS= ${MFS_USER} +GROUPS= ${MFS_GROUP} + +CONFIGURE_ARGS+= --localstatedir=${MFS_WORKDIR} \ + --with-default-user=${MFS_USER} \ + --with-default-group=${MFS_GROUP} + +CONFLICTS= moosefs2-${MFS_COMPONENT} + +.if ${MFS_COMPONENT} == cgi +MFS_CGIDIR= ${PREFIX}/share/mfscgi +USES= python +CONFIGURE_ARGS+= --enable-mfscgi \ + --with-mfscgi-dir=${MFS_CGIDIR} +.else +CONFIGURE_ARGS+= --disable-mfscgi +.endif + +.if ${MFS_COMPONENT} == cgiserv +MFS_CGISERVDIR= ${PREFIX}/sbin +USES= python +USE_RC_SUBR= mfscgiserv +SUB_FILES+= pkg-message-cgiserv +PKGMESSAGE= ${WRKDIR}/pkg-message-cgiserv +PLIST_SUB+= MFS_WORKDIR="${MFS_WORKDIR}" +CONFIGURE_ARGS+= --enable-mfscgiserv \ + --with-mfscgiserv-dir=${MFS_CGISERVDIR} +RUN_DEPENDS= moosefs3-cgi>0:filesystems/moosefs3-cgi +.else +CONFIGURE_ARGS+= --disable-mfscgiserv +.endif + +.if ${MFS_COMPONENT} == chunkserver +USE_RC_SUBR= mfschunkserver +SUB_FILES+= pkg-message-chunkserver +PKGMESSAGE= ${WRKDIR}/pkg-message-chunkserver +PLIST_SUB+= MFS_WORKDIR="${MFS_WORKDIR}" +CONFIGURE_ARGS+= --enable-mfschunkserver +.else +CONFIGURE_ARGS+= --disable-mfschunkserver +.endif + +.if ${MFS_COMPONENT} == cli +USES= python +CONFIGURE_ARGS+= --enable-mfscli +.else +CONFIGURE_ARGS+= --disable-mfscli +.endif + +.if ${MFS_COMPONENT} == client +USES= compiler:c11 fuse:3 libtool pkgconfig +USE_LDCONFIG= yes +CONFIGURE_ARGS+= --enable-mfsmount +.else +CONFIGURE_ARGS+= --disable-mfsmount +.endif + +.if ${MFS_COMPONENT} == master +USE_RC_SUBR= mfsmaster +PLIST_SUB+= MFS_WORKDIR="${MFS_WORKDIR}" +SUB_FILES+= pkg-message-master +PKGMESSAGE= ${WRKDIR}/pkg-message-master +CONFIGURE_ARGS+= --enable-mfsmaster +.else +CONFIGURE_ARGS+= --disable-mfsmaster +.endif + +.if ${MFS_COMPONENT} == metalogger +USE_RC_SUBR= mfsmetalogger +SUB_FILES+= pkg-message-metalogger +PKGMESSAGE= ${WRKDIR}/pkg-message-metalogger +PLIST_SUB+= MFS_WORKDIR="${MFS_WORKDIR}" +CONFIGURE_ARGS+= --enable-mfsmetalogger +.else +CONFIGURE_ARGS+= --disable-mfsmetalogger +.endif + +.if ${MFS_COMPONENT} == netdump +CONFIGURE_ARGS+= --enable-mfsnetdump +.else +CONFIGURE_ARGS+= --disable-mfsnetdump +.endif + +.include <bsd.port.mk> diff --git a/filesystems/moosefs3-master/distinfo b/filesystems/moosefs3-master/distinfo new file mode 100644 index 000000000000..a07f18a467bb --- /dev/null +++ b/filesystems/moosefs3-master/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1675457214 +SHA256 (moosefs-3.0.117-1.tar.gz) = d77947d0d8b699e2373926a1274ae81a9a8b24445c5ab986a1ec5e9203e3c3ba +SIZE (moosefs-3.0.117-1.tar.gz) = 1249353 diff --git a/filesystems/moosefs3-master/files/mfscgiserv.in b/filesystems/moosefs3-master/files/mfscgiserv.in new file mode 100644 index 000000000000..39f9f59ddb6d --- /dev/null +++ b/filesystems/moosefs3-master/files/mfscgiserv.in @@ -0,0 +1,29 @@ +#!/bin/sh + +# PROVIDE: mfscgiserv +# REQUIRE: DAEMON +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf to enable mfscgiserv: +# +# mfscgiserv_enable="YES" +# + +. /etc/rc.subr + +name=mfscgiserv +rcvar=mfscgiserv_enable + +command=%%PREFIX%%/sbin/${name} +pid_file=%%MFS_WORKDIR%%/mfs/.${name}.lock +procname="python" + +stop_cmd="$command stop" +status_cmd="$command test" + +load_rc_config $name + +# set defaults +: ${mfscgiserv_enable="NO"} + +run_rc_command "$1" diff --git a/filesystems/moosefs3-master/files/mfschunkserver.in b/filesystems/moosefs3-master/files/mfschunkserver.in new file mode 100644 index 000000000000..3083fe91b543 --- /dev/null +++ b/filesystems/moosefs3-master/files/mfschunkserver.in @@ -0,0 +1,30 @@ +#!/bin/sh + +# PROVIDE: mfschunkserver +# REQUIRE: DAEMON +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to enable mfschunkserver: +# +# mfschunkserver_enable="YES" +# + +. /etc/rc.subr + +name=mfschunkserver +rcvar=mfschunkserver_enable + +config_file=%%PREFIX%%/etc/mfs/${name}.cfg + +required_files=${config_file} + +command=%%PREFIX%%/sbin/${name} +pid_file=%%MFS_WORKDIR%%/mfs/.${name}.lock +command_args="-c $config_file" + +load_rc_config $name + +# set defaults +: ${mfschunkserver_enable="NO"} + +run_rc_command "$1" diff --git a/filesystems/moosefs3-master/files/mfsmaster.in b/filesystems/moosefs3-master/files/mfsmaster.in new file mode 100644 index 000000000000..74056169626f --- /dev/null +++ b/filesystems/moosefs3-master/files/mfsmaster.in @@ -0,0 +1,31 @@ +#!/bin/sh + +# PROVIDE: mfsmaster +# REQUIRE: DAEMON +# KEYWORD: nostart shutdown +# BEFORE: mountlate +# +# Add the following lines to /etc/rc.conf to enable mfsmaster: +# +# mfsmaster_enable="YES" +# + +. /etc/rc.subr + +name=mfsmaster +rcvar=mfsmaster_enable + +config_file=%%PREFIX%%/etc/mfs/${name}.cfg + +required_files=${config_file} + +command=%%PREFIX%%/sbin/${name} +pid_file=%%MFS_WORKDIR%%/mfs/.${name}.lock +command_args="-c $config_file" + +load_rc_config $name + +# set defaults +: ${mfsmaster_enable="NO"} + +run_rc_command "$1" diff --git a/filesystems/moosefs3-master/files/mfsmetalogger.in b/filesystems/moosefs3-master/files/mfsmetalogger.in new file mode 100644 index 000000000000..994a1a69f4ec --- /dev/null +++ b/filesystems/moosefs3-master/files/mfsmetalogger.in @@ -0,0 +1,30 @@ +#!/bin/sh + +# PROVIDE: mfsmetalogger +# REQUIRE: DAEMON +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf to enable mfsmetalogger: +# +# mfsmetalogger_enable="YES" +# + +. /etc/rc.subr + +name=mfsmetalogger +rcvar=mfsmetalogger_enable + +config_file=%%PREFIX%%/etc/mfs/${name}.cfg + +required_files=${config_file} + +command=%%PREFIX%%/sbin/${name} +pid_file=%%MFS_WORKDIR%%/mfs/.${name}.lock +command_args="-c $config_file" + +load_rc_config $name + +# set defaults +: ${mfsmetalogger_enable="NO"} + +run_rc_command "$1" diff --git a/filesystems/moosefs3-master/files/pkg-message-cgiserv.in b/filesystems/moosefs3-master/files/pkg-message-cgiserv.in new file mode 100644 index 000000000000..b93e90eb8847 --- /dev/null +++ b/filesystems/moosefs3-master/files/pkg-message-cgiserv.in @@ -0,0 +1,14 @@ +[ +{ type: install + message: <<EOM +A startup script has been installed as: + +%%PREFIX%%/etc/rc.d/mfscgiserv + +Use it to start/stop the mfscgiserv service after you have added +the following line to your rc.conf file: + +mfscgiserv_enable="YES" +EOM +} +] diff --git a/filesystems/moosefs3-master/files/pkg-message-chunkserver.in b/filesystems/moosefs3-master/files/pkg-message-chunkserver.in new file mode 100644 index 000000000000..5ad0ee1a4388 --- /dev/null +++ b/filesystems/moosefs3-master/files/pkg-message-chunkserver.in @@ -0,0 +1,14 @@ +[ +{ type: install + message: <<EOM +A startup script has been installed as: + +%%PREFIX%%/etc/rc.d/mfschunkserver + +Use it to start/stop the mfschunkserver service after you have added +the following line to your rc.conf file: + +mfschunkserver_enable="YES" +EOM +} +] diff --git a/filesystems/moosefs3-master/files/pkg-message-master.in b/filesystems/moosefs3-master/files/pkg-message-master.in new file mode 100644 index 000000000000..748bcc9eee7a --- /dev/null +++ b/filesystems/moosefs3-master/files/pkg-message-master.in @@ -0,0 +1,14 @@ +[ +{ type: install + message: <<EOM +A startup script has been installed as: + +%%PREFIX%%/etc/rc.d/mfsmaster + +Use it to start/stop the mfsmaster service after you have added +the following line to your rc.conf file: + +mfsmaster_enable="YES" +EOM +} +] diff --git a/filesystems/moosefs3-master/files/pkg-message-metalogger.in b/filesystems/moosefs3-master/files/pkg-message-metalogger.in new file mode 100644 index 000000000000..0a294c00bc0c --- /dev/null +++ b/filesystems/moosefs3-master/files/pkg-message-metalogger.in @@ -0,0 +1,14 @@ +[ +{ type: install + message: <<EOM +A startup script has been installed as: + +%%PREFIX%%/etc/rc.d/mfsmetalogger + +Use it to start/stop the mfsmetalogger service after you have added +the following line to your rc.conf file: + +mfsmetalogger_enable="YES" +EOM +} +] diff --git a/filesystems/moosefs3-master/pkg-descr b/filesystems/moosefs3-master/pkg-descr new file mode 100644 index 000000000000..5a93d68ac286 --- /dev/null +++ b/filesystems/moosefs3-master/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: MooseFS master (metadata) server. diff --git a/filesystems/moosefs3-master/pkg-plist b/filesystems/moosefs3-master/pkg-plist new file mode 100644 index 000000000000..f144525c0af2 --- /dev/null +++ b/filesystems/moosefs3-master/pkg-plist @@ -0,0 +1,20 @@ +@sample etc/mfs/mfsmaster.cfg.sample +@sample etc/mfs/mfsexports.cfg.sample +@sample etc/mfs/mfstopology.cfg.sample +sbin/mfsmaster +sbin/mfsmetadump +sbin/mfsmetadirinfo +sbin/mfsmetarestore +sbin/mfsstatsdump +share/man/man5/mfsexports.cfg.5.gz +share/man/man5/mfsmaster.cfg.5.gz +share/man/man5/mfstopology.cfg.5.gz +share/man/man8/mfsmaster.8.gz +share/man/man8/mfsmetarestore.8.gz +share/man/man8/mfsmetadump.8.gz +share/man/man8/mfsmetadirinfo.8.gz +share/man/man8/mfsstatsdump.8.gz +@owner mfs +@group mfs +@dir %%MFS_WORKDIR%%/mfs +%%MFS_WORKDIR%%/mfs/metadata.mfs.empty diff --git a/filesystems/moosefs3-metalogger/Makefile b/filesystems/moosefs3-metalogger/Makefile new file mode 100644 index 000000000000..086c97898f87 --- /dev/null +++ b/filesystems/moosefs3-metalogger/Makefile @@ -0,0 +1,10 @@ +PORTREVISION= 1 +PKGNAMESUFFIX= -metalogger + +COMMENT= MooseFS metadata backup server + +MFS_COMPONENT= metalogger + +MASTERDIR= ${.CURDIR}/../moosefs3-master + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/moosefs3-metalogger/pkg-descr b/filesystems/moosefs3-metalogger/pkg-descr new file mode 100644 index 000000000000..02e050e7169b --- /dev/null +++ b/filesystems/moosefs3-metalogger/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: MooseFS metalogger (metadata replication) server. diff --git a/filesystems/moosefs3-metalogger/pkg-plist b/filesystems/moosefs3-metalogger/pkg-plist new file mode 100644 index 000000000000..c27833ff6e37 --- /dev/null +++ b/filesystems/moosefs3-metalogger/pkg-plist @@ -0,0 +1,7 @@ +@sample etc/mfs/mfsmetalogger.cfg.sample +sbin/mfsmetalogger +share/man/man5/mfsmetalogger.cfg.5.gz +share/man/man8/mfsmetalogger.8.gz +@owner mfs +@group mfs +@dir %%MFS_WORKDIR%%/mfs diff --git a/filesystems/moosefs3-netdump/Makefile b/filesystems/moosefs3-netdump/Makefile new file mode 100644 index 000000000000..7e51b535aa18 --- /dev/null +++ b/filesystems/moosefs3-netdump/Makefile @@ -0,0 +1,10 @@ +PORTREVISION= 1 +PKGNAMESUFFIX= -netdump + +COMMENT= MooseFS network packet dump utility + +MFS_COMPONENT= netdump + +MASTERDIR= ${.CURDIR}/../moosefs3-master + +.include "${MASTERDIR}/Makefile" diff --git a/filesystems/moosefs3-netdump/pkg-descr b/filesystems/moosefs3-netdump/pkg-descr new file mode 100644 index 000000000000..6691c4931b69 --- /dev/null +++ b/filesystems/moosefs3-netdump/pkg-descr @@ -0,0 +1,7 @@ +MooseFS is a Fault tolerant, High Available, Highly Performing, Scale-Out, +network distributed file system. It spreads data over several physical commodity +servers, which are visible to the user as one resource. + +For standard file operations MooseFS acts like any other Unix-like file system. + +This port provides: MooseFS network packet dump utility diff --git a/filesystems/moosefs3-netdump/pkg-plist b/filesystems/moosefs3-netdump/pkg-plist new file mode 100644 index 000000000000..d9fe247254f3 --- /dev/null +++ b/filesystems/moosefs3-netdump/pkg-plist @@ -0,0 +1,2 @@ +sbin/mfsnetdump +share/man/man8/mfsnetdump.8.gz diff --git a/filesystems/mp3fs/Makefile b/filesystems/mp3fs/Makefile new file mode 100644 index 000000000000..8f5249983c00 --- /dev/null +++ b/filesystems/mp3fs/Makefile @@ -0,0 +1,27 @@ +PORTNAME= mp3fs +PORTVERSION= 1.1.1 +PORTEPOCH= 1 +CATEGORIES= filesystems audio +MASTER_SITES= https://github.com/khenriks/${PORTNAME}/releases/download/v${PORTVERSION}/ +PKGNAMEPREFIX= fusefs- + +MAINTAINER= stefan.rumetshofer@drei.at +COMMENT= FUSE-based filesystem for transcoding FLAC to MP3 on the fly +WWW= https://github.com/khenriks/mp3fs + +LICENSE= GPLv3+ +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libFLAC.so:audio/flac \ + libid3tag.so:audio/libid3tag \ + libmp3lame.so:audio/lame \ + libvorbis.so:audio/libvorbis + +USES= fuse localbase pkgconfig +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +PLIST_FILES= bin/mp3fs \ + share/man/man1/mp3fs.1.gz + +CFLAGS+= -D__XSI_VISIBLE +.include <bsd.port.mk> diff --git a/filesystems/mp3fs/distinfo b/filesystems/mp3fs/distinfo new file mode 100644 index 000000000000..e5d4f1dc027f --- /dev/null +++ b/filesystems/mp3fs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1664396192 +SHA256 (mp3fs-1.1.1.tar.gz) = 942b588fb623ea58ce8cac8844e6ff2829ad4bc9b4c163bba58e3fa9ebc15608 +SIZE (mp3fs-1.1.1.tar.gz) = 804399 diff --git a/filesystems/mp3fs/pkg-descr b/filesystems/mp3fs/pkg-descr new file mode 100644 index 000000000000..391cbd7593b3 --- /dev/null +++ b/filesystems/mp3fs/pkg-descr @@ -0,0 +1,8 @@ +MP3FS is a read-only FUSE filesystem which transcodes audio formats (currently +FLAC) to MP3 on the fly when opened and read. This was written to enable me to +use my FLAC collection with software and/or hardware which only understands +the MP3 format e.g. gmediaserver to a Netgear MP101 MP3 player. + +It is also a novel alternative to traditional MP3 encoders. Just use your +favorite file browser to select the files you want encoded and copy them +somewhere! diff --git a/filesystems/mtools/Makefile b/filesystems/mtools/Makefile new file mode 100644 index 000000000000..33b2c796964c --- /dev/null +++ b/filesystems/mtools/Makefile @@ -0,0 +1,58 @@ +PORTNAME= mtools +PORTVERSION= 4.0.43 +PORTREVISION= 1 +CATEGORIES= filesystems emulators +MASTER_SITES= GNU + +MAINTAINER= skreuzer@FreeBSD.org +COMMENT= Tools for manipulating MS-DOS disks and images +WWW= https://www.gnu.org/software/mtools/intro.html + +LICENSE= GPLv3 + +CONFLICTS_INSTALL= multimarkdown + +USES= gmake makeinfo tar:lz +GNU_CONFIGURE= yes +CONFIGURE_ENV= ac_cv_header_malloc_h=no +CONFIGURE_ARGS= --enable-xdf +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share + +SUB_FILES= pkg-message + +INFO= mtools + +OPTIONS_DEFINE= ICONV X11 +OPTIONS_DEFAULT=ICONV X11 + +.include <bsd.port.options.mk> + +.if ${PORT_OPTIONS:MICONV} +USES+= iconv +CPPFLAGS+= -I${LOCALBASE}/include +LDFLAGS+= -L${LOCALBASE}/lib ${ICONV_LIB} +LIB_DEPENDS+= libiconv.so:converters/libiconv +.else +CONFIGURE_ENV+= ac_cv_header_iconv_h=no +.endif + +.if ${PORT_OPTIONS:MX11} +USES+= xorg +USE_XORG= x11 sm ice xau +PLIST_SUB+= X11="" +.else +CONFIGURE_ARGS+= --without-x +PLIST_SUB+= X11="@comment " +MAKE_ENV+= WITHOUT_X11=yes +.endif + +post-patch: + @${REINPLACE_CMD} -e '/LOCAL_CONF_FILE/s,/etc/default,${LOCALBASE}/etc,' \ + ${WRKSRC}/mtoolsPaths.h + @${REINPLACE_CMD} -e 's|^\(SAMPLE FILE\)$$|#\1|' \ + ${WRKSRC}/mtools.conf + +post-install: + ${INSTALL_DATA} ${WRKSRC}/mtools.conf ${STAGEDIR}${PREFIX}/etc/mtools.conf.sample + +.include <bsd.port.mk> diff --git a/filesystems/mtools/distinfo b/filesystems/mtools/distinfo new file mode 100644 index 000000000000..fdded9f52cc2 --- /dev/null +++ b/filesystems/mtools/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1679438048 +SHA256 (mtools-4.0.43.tar.lz) = 997ffe4125a19de1fd433ed63f128f7d54bc1a5915f3cdb36da6491ef917f217 +SIZE (mtools-4.0.43.tar.lz) = 383347 diff --git a/filesystems/mtools/files/patch-Makefile.in b/filesystems/mtools/files/patch-Makefile.in new file mode 100644 index 000000000000..1c9d84b0e764 --- /dev/null +++ b/filesystems/mtools/files/patch-Makefile.in @@ -0,0 +1,40 @@ +--- Makefile.in.orig 2022-10-09 09:55:19 UTC ++++ Makefile.in +@@ -72,11 +72,14 @@ INSTALL_INFO = @INSTALL_INFO@ + .SUFFIXES: .o .c + .SUFFIXES: .o .c + +-MAN1 = floppyd.1 floppyd_installtest.1 mattrib.1 mbadblocks.1 mcat.1 \ ++MAN1 = mattrib.1 mbadblocks.1 mcat.1 \ + mcd.1 mcopy.1 mdel.1 mdeltree.1 mdir.1 mdu.1 mformat.1 \ + minfo.1 mkmanifest.1 mlabel.1 mmd.1 mmount.1 mmove.1 mpartition.1 \ + mrd.1 mren.1 mshortname.1 mshowfat.1 mtoolstest.1 mtools.1 mtype.1 \ + mzip.1 ++ifndef WITHOUT_X11 ++MAN1 += floppyd.1 floppyd_installtest.1 ++endif + + MAN1EXT = 1 + MAN1DIR = $(DESTDIR)$(mandir)/man${MAN1EXT} +@@ -119,7 +122,7 @@ privileges.c remap.c scsi_io.c scsi.c signal.c stream. + swap.c unix2dos.s unixdir.c tty.c vfat.c mkmanifest.c \ + @FLOPPYD_IO_SRC@ @XDF_IO_SRC@ + +-SCRIPTS = mcheck mxtar uz tgz mcomp amuFormat.sh ++SCRIPTS = mcheck mxtar mcomp amuFormat.sh + + LINKS=mattrib mcat mcd mcopy mdel mdeltree mdir mdu \ + mformat minfo mlabel mmd mmount mmove mpartition mrd mren mtype \ +@@ -264,11 +267,9 @@ install-links: $(DESTDIR)$(bindir)/mtools + install-scripts: $(DESTDIR)$(bindir)/mtools + @$(top_srcdir)/mkinstalldirs $(DESTDIR)$(bindir) + @for j in $(SCRIPTS) ; do \ +- $(INSTALL_PROGRAM) $(srcdir)/scripts/$$j $(DESTDIR)$(bindir)/$$j ; \ ++ $(BSD_INSTALL_SCRIPT) $(srcdir)/scripts/$$j $(DESTDIR)$(bindir)/$$j ; \ + echo $(DESTDIR)$(bindir)/$$j ; \ + done +- rm -f $(DESTDIR)$(bindir)/lz +- cd $(DESTDIR)$(bindir) && $(LN_S) uz lz + + install-man: + @$(top_srcdir)/mkinstalldirs $(MAN1DIR) diff --git a/filesystems/mtools/files/patch-configure b/filesystems/mtools/files/patch-configure new file mode 100644 index 000000000000..f7dc9e442ebd --- /dev/null +++ b/filesystems/mtools/files/patch-configure @@ -0,0 +1,63 @@ +--- configure.orig 2020-11-28 11:54:35 UTC ++++ configure +@@ -5696,10 +5696,10 @@ host_os3=`echo $host_os2 | sed 's/^\([^0-9]*\)[0-9]*$/ + host_cpu1=`echo $host_cpu | sed 's/\./_/g'` + host_vendor1=`echo $host_vendor | sed 's/\./_/g'` + HOST_ID="-DCPU_$host_cpu1 -DVENDOR_$host_vendor1 -DOS_$host_os1" +-if [ $host_os1 != $host_os2 ] ; then ++if [ "$host_os1" != "$host_os2" ] ; then + HOST_ID="$HOST_ID -DOS_$host_os2" + fi +-if [ $host_os1 != $host_os3 ] && [ $host_os2 != $host_os3 ] ; then ++if [ "$host_os1" != "$host_os3" ] && [ "$host_os2" != "$host_os3" ] ; then + HOST_ID="$HOST_ID -DOS_$host_os3" + fi + +@@ -5725,39 +5725,39 @@ if [ "X$GCC" = "Xyes" ] ; then + esac + CFLAGS="$CFLAGS $Wall" + else +- if [ $host_os3 = hpux ] ; then ++ if [ "$host_os3" = hpux ] ; then + CPPFLAGS="$CPPFLAGS -Ae" + fi + +- if [ $host_os3 = xenix ] ; then ++ if [ "$host_os3" = xenix ] ; then + CFLAGS="$CFLAGS -M2e" + fi + fi + +-if [ $host_os3 = hpux ] ; then ++if [ "$host_os3" = hpux ] ; then + LDFLAGS="$LDFLAGS -z" + fi + +-if [ $host_os3 = xenix ] ; then ++if [ "$host_os3" = xenix ] ; then + LDFLAGS="$LDFLAGS -M2e -i -f 5000" + fi + +-if [ $host_os2 = sysv4 ] ; then ++if [ "$host_os2" = sysv4 ] ; then + SHLIB="-lc -L/usr/ucblib -lucb" + else + SHLIB="" + fi + +-if [ $host_os3 = isc ] ; then ++if [ "$host_os3" = isc ] ; then + CFLAGS="$CFLAGS -D_SYSV3" + SHLIB="-lc_s" + fi + +-if [ $host_os3 = solaris -a x$newVold = xxyes ] ; then ++if [ "$host_os3" = solaris -a x$newVold = xxyes ] ; then + SHLIB="$SHLIB -s -lvolmgt" + fi + +-if [ $host_os3 = nextstep ] ; then ++if [ "$host_os3" = nextstep ] ; then + CFLAGS="$CFLAGS -DBSD" + SHLIB="" + fi diff --git a/filesystems/mtools/files/patch-mtools.texi b/filesystems/mtools/files/patch-mtools.texi new file mode 100644 index 000000000000..02360f495ddc --- /dev/null +++ b/filesystems/mtools/files/patch-mtools.texi @@ -0,0 +1,11 @@ +--- mtools.texi.orig 2020-11-26 23:02:51 UTC ++++ mtools.texi +@@ -39,7 +39,7 @@ mtools - utilities to access DOS disks in Unix. + + @dircategory DOS + @direntry +-* Mtools: (mtools). Mtools: utilities to access DOS disks in Unix. ++* Mtools: (mtools). Mtools: utilities to access DOS disks in Unix. + @end direntry + + diff --git a/filesystems/mtools/files/patch-scsi.c b/filesystems/mtools/files/patch-scsi.c new file mode 100644 index 000000000000..c0338b7ed945 --- /dev/null +++ b/filesystems/mtools/files/patch-scsi.c @@ -0,0 +1,29 @@ +--- scsi.c.orig 2018-12-02 16:23:26 UTC ++++ scsi.c +@@ -62,7 +62,7 @@ + #include <sys/scsicmd.h> + #endif + +-#if (defined(OS_freebsd)) && (__FreeBSD__ >= 2) ++#if (defined(OS_freebsd)) && (__FreeBSD__ >= 3) + #include <camlib.h> + #endif + +@@ -82,7 +82,7 @@ int scsi_max_length(void) + int scsi_open(const char *name, int flag UNUSEDP, int mode UNUSEDP, + void **extra_data UNUSEDP) + { +-#if (defined(OS_freebsd)) && (__FreeBSD__ >= 2) ++#if (defined(OS_freebsd)) && (__FreeBSD__ >= 3) + struct cam_device *cam_dev; + cam_dev = cam_open_device(name, O_RDWR); + *extra_data = (void *) cam_dev; +@@ -245,7 +245,7 @@ int scsi_cmd(int fd, unsigned char *cdb, int cmdlen, s + } + + return 0; +-#elif (defined OS_freebsd) && (__FreeBSD__ >= 2) ++#elif (defined OS_freebsd) && (__FreeBSD__ >= 3) + #define MSG_SIMPLE_Q_TAG 0x20 /* O/O */ + union ccb *ccb; + int flags; diff --git a/filesystems/mtools/files/pkg-message.in b/filesystems/mtools/files/pkg-message.in new file mode 100644 index 000000000000..fb262add717d --- /dev/null +++ b/filesystems/mtools/files/pkg-message.in @@ -0,0 +1,7 @@ +[ +{ type: install + message: <<EOM +Please verify %%PREFIX%%/etc/mtools.conf for your machine. +EOM +} +] diff --git a/filesystems/mtools/pkg-descr b/filesystems/mtools/pkg-descr new file mode 100644 index 000000000000..5ab285231a70 --- /dev/null +++ b/filesystems/mtools/pkg-descr @@ -0,0 +1,4 @@ +Mtools is a collection of utilities for accessing MS-DOS disks and file +system images from Unix without mounting them. It supports Win95-style +long file names, OS/2 XDF-formatted disks, ZIP/JAZ disks, and 2MB disks +(store up to 1992kB on a high-density 3.5" diskette). diff --git a/filesystems/mtools/pkg-plist b/filesystems/mtools/pkg-plist new file mode 100644 index 000000000000..8fe66ac5cb9c --- /dev/null +++ b/filesystems/mtools/pkg-plist @@ -0,0 +1,60 @@ +bin/amuFormat.sh +%%X11%%bin/floppyd +%%X11%%bin/floppyd_installtest +bin/mattrib +bin/mbadblocks +bin/mcat +bin/mcd +bin/mcheck +bin/mcomp +bin/mcopy +bin/mdel +bin/mdeltree +bin/mdir +bin/mdu +bin/mformat +bin/minfo +bin/mkmanifest +bin/mlabel +bin/mmd +bin/mmount +bin/mmove +bin/mpartition +bin/mrd +bin/mren +bin/mshowfat +bin/mtools +bin/mtoolstest +bin/mtype +bin/mxtar +bin/mzip +bin/mshortname +%%X11%%share/man/man1/floppyd.1.gz +%%X11%%share/man/man1/floppyd_installtest.1.gz +share/man/man1/mattrib.1.gz +share/man/man1/mbadblocks.1.gz +share/man/man1/mcat.1.gz +share/man/man1/mcd.1.gz +share/man/man1/mcopy.1.gz +share/man/man1/mdel.1.gz +share/man/man1/mdeltree.1.gz +share/man/man1/mdir.1.gz +share/man/man1/mdu.1.gz +share/man/man1/mformat.1.gz +share/man/man1/minfo.1.gz +share/man/man1/mkmanifest.1.gz +share/man/man1/mlabel.1.gz +share/man/man1/mmd.1.gz +share/man/man1/mmount.1.gz +share/man/man1/mmove.1.gz +share/man/man1/mpartition.1.gz +share/man/man1/mrd.1.gz +share/man/man1/mren.1.gz +share/man/man1/mshowfat.1.gz +share/man/man1/mtools.1.gz +share/man/man1/mtoolstest.1.gz +share/man/man1/mtype.1.gz +share/man/man1/mzip.1.gz +share/man/man1/mshortname.1.gz +share/man/man5/mtools.5.gz +@sample etc/mtools.conf.sample diff --git a/filesystems/mtpfs/Makefile b/filesystems/mtpfs/Makefile new file mode 100644 index 000000000000..45280de5a66a --- /dev/null +++ b/filesystems/mtpfs/Makefile @@ -0,0 +1,34 @@ +PORTNAME= mtpfs +PORTVERSION= 1.1 +PORTREVISION= 5 +CATEGORIES= filesystems sysutils + +MAINTAINER= jhixson@FreeBSD.org +COMMENT= MTP device filesystem +WWW= https://www.adebenham.com/mtpfs/ + +LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libmtp.so:multimedia/libmtp \ + libid3.so:audio/id3lib \ + libid3tag.so:audio/libid3tag \ + libmad.so:audio/libmad + +USES= autoreconf fuse gnome pkgconfig +USE_GITHUB= yes +GH_ACCOUNT= cjd +GH_TAGNAME= fd3864dd6f0e8183fa2598d4cf890401d3a1e09a +USE_GNOME= glib20 + +GNU_CONFIGURE= yes + +PLIST_FILES= bin/mtpfs + +.include <bsd.port.options.mk> + +.if ${OPSYS} == FreeBSD +CFLAGS+= -Wno-error=incompatible-function-pointer-types +.endif + +.include <bsd.port.mk> diff --git a/filesystems/mtpfs/distinfo b/filesystems/mtpfs/distinfo new file mode 100644 index 000000000000..f5a1fe2cc047 --- /dev/null +++ b/filesystems/mtpfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1593705811 +SHA256 (cjd-mtpfs-1.1-fd3864dd6f0e8183fa2598d4cf890401d3a1e09a_GH0.tar.gz) = f004136a82452d13362581277eb2496033aa13a6c3f35d0501327248f3120456 +SIZE (cjd-mtpfs-1.1-fd3864dd6f0e8183fa2598d4cf890401d3a1e09a_GH0.tar.gz) = 82022 diff --git a/filesystems/mtpfs/files/patch-Makefile.am b/filesystems/mtpfs/files/patch-Makefile.am new file mode 100644 index 000000000000..88b3b171b057 --- /dev/null +++ b/filesystems/mtpfs/files/patch-Makefile.am @@ -0,0 +1,10 @@ +--- Makefile.am.orig 2020-07-02 17:25:56 UTC ++++ Makefile.am +@@ -1,6 +1,6 @@ + bin_PROGRAMS = mtpfs + mtpfs_SOURCES = mtpfs.c mtpfs.h +-mtpfs_CPPFLAGS = -DFUSE_USE_VERSION=22 $(FUSE_CFLAGS) $(GLIB_CFLAGS) $(MTP_CFLAGS) ++mtpfs_CPPFLAGS = -DFUSE_USE_VERSION=26 $(FUSE_CFLAGS) $(GLIB_CFLAGS) $(MTP_CFLAGS) + mtpfs_LDADD = $(FUSE_LIBS) $(GLIB_LIBS) $(MTP_LIBS) + + if USEMAD diff --git a/filesystems/mtpfs/files/patch-Makefile.in b/filesystems/mtpfs/files/patch-Makefile.in new file mode 100644 index 000000000000..81605bc20d6b --- /dev/null +++ b/filesystems/mtpfs/files/patch-Makefile.in @@ -0,0 +1,11 @@ +--- Makefile.in.orig 2016-12-15 23:55:52 UTC ++++ Makefile.in +@@ -287,7 +287,7 @@ top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + mtpfs_SOURCES = mtpfs.c mtpfs.h $(am__append_1) +-mtpfs_CPPFLAGS = -DFUSE_USE_VERSION=22 $(FUSE_CFLAGS) $(GLIB_CFLAGS) \ ++mtpfs_CPPFLAGS = -DFUSE_USE_VERSION=26 $(FUSE_CFLAGS) $(GLIB_CFLAGS) \ + $(MTP_CFLAGS) $(am__append_2) + mtpfs_LDADD = $(FUSE_LIBS) $(GLIB_LIBS) $(MTP_LIBS) $(am__append_3) + all: all-am diff --git a/filesystems/mtpfs/files/patch-mtpfs.c b/filesystems/mtpfs/files/patch-mtpfs.c new file mode 100644 index 000000000000..2c9be7d4cdb1 --- /dev/null +++ b/filesystems/mtpfs/files/patch-mtpfs.c @@ -0,0 +1,11 @@ +--- mtpfs.c.orig 2016-12-15 23:55:52 UTC ++++ mtpfs.c +@@ -1774,7 +1774,7 @@ main (int argc, char *argv[]) + + DBG ("Start fuse"); + +- fuse_stat = fuse_main (argc, argv, &mtpfs_oper); ++ fuse_stat = fuse_main (argc, argv, &mtpfs_oper, NULL); + DBG ("fuse_main returned %d\n", fuse_stat); + return fuse_stat; + } diff --git a/filesystems/mtpfs/files/patch-mtpfs.h b/filesystems/mtpfs/files/patch-mtpfs.h new file mode 100644 index 000000000000..92ca2ae91cda --- /dev/null +++ b/filesystems/mtpfs/files/patch-mtpfs.h @@ -0,0 +1,11 @@ +--- mtpfs.h.orig 2016-12-15 23:55:52 UTC ++++ mtpfs.h +@@ -17,7 +17,7 @@ + #include <fcntl.h> + #include <dirent.h> + #include <errno.h> +-#include <sys/statfs.h> ++#include <sys/mount.h> + + #include <libmtp.h> + #include <glib.h> diff --git a/filesystems/mtpfs/pkg-descr b/filesystems/mtpfs/pkg-descr new file mode 100644 index 000000000000..95934af17d80 --- /dev/null +++ b/filesystems/mtpfs/pkg-descr @@ -0,0 +1,2 @@ +MTPFS is a FUSE filesystem that supports reading and writing from any +MTP device (as supported by libmtp) diff --git a/filesystems/nbt/Makefile b/filesystems/nbt/Makefile new file mode 100644 index 000000000000..b7f9c57a61dc --- /dev/null +++ b/filesystems/nbt/Makefile @@ -0,0 +1,44 @@ +PORTNAME= nbt +PORTVERSION= ${REVISION_DATE} +PORTREVISION= 1 +CATEGORIES= filesystems +MASTER_SITES= SF/nbtfsutils +PKGNAMEPREFIX= fusefs- +DISTNAME= nbtfsutils-${REVISION_DATE}-${REVISION_HASH}-src + +MAINTAINER= msl0000023508@gmail.com +COMMENT= Editing Named Binary Tag (NBT) as using a file system +WWW= https://sourceforge.net/projects/nbtfsutils/ + +LICENSE= BEERWARE MIT MPL20 +LICENSE_COMB= multi +LICENSE_NAME_BEERWARE= "THE BEER-WARE LICENSE" (Revision 42) +LICENSE_TEXT_BEERWARE= Lukas Niederbremer <webmaster@flippeh.de> and Clark Gaebel <cg.wowus.cg@gmail.com> \ + wrote this file. As long as you retain this notice you can do whatever you \ + want with this stuff. If we meet some day, and you think this stuff is worth \ + it, you can buy us a beer in return. +LICENSE_FILE_MPL20= ${WRKSRC}/MPL-2.0 +LICENSE_PERMS_BEERWARE= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept + +USES= fuse tar:bz2 +USE_LDCONFIG= yes + +REVISION_DATE= 20231114 +REVISION_HASH= 7683255 + +MAKE_ENV= MANDIR=\${PREFIX}/share/man +INSTALL_TARGET= install-commands install-dev +CFLAGS+= ${CPPFLAGS} +CPPFLAGS+= -I ${LOCALBASE}/include +LDFLAGS+= -L ${LOCALBASE}/lib +NO_WRKSUBDIR= yes + +do-build: + @cd ${BUILD_WRKSRC} && ${DO_MAKE_BUILD} libnbt.so && ${DO_MAKE_BUILD} all + +post-install: +.for l in lib/libnbt.so.1 bin/nbtdump bin/regiondump sbin/mkfs.nbt sbin/mount.nbt + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/${l} +.endfor + +.include <bsd.port.mk> diff --git a/filesystems/nbt/distinfo b/filesystems/nbt/distinfo new file mode 100644 index 000000000000..ea368f58e177 --- /dev/null +++ b/filesystems/nbt/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1699967468 +SHA256 (nbtfsutils-20231114-7683255-src.tar.bz2) = 5d2db44859b39269c8b59188c99a04a9fc0932ef83634c06f37907aa09becd78 +SIZE (nbtfsutils-20231114-7683255-src.tar.bz2) = 44255 diff --git a/filesystems/nbt/pkg-descr b/filesystems/nbt/pkg-descr new file mode 100644 index 000000000000..1060a6bd8392 --- /dev/null +++ b/filesystems/nbt/pkg-descr @@ -0,0 +1,11 @@ +Named Binary Tag (NBT) is a binary format designed for and used by the game +Minecraft to store various data including worlds, player data and many other +things. This project provides a way to access those data by simply mounting +the corresponding data file as a file system, then reading and writing any +value as usual file system nodes. + +NBT parser and writer are originally written by Lukas Niederbremer as cNBT +project which this project is based on. + +This package provides the FUSE-based file system implementation, as well as +NBT maintenance command-line tools and library (cNBT). diff --git a/filesystems/nbt/pkg-plist b/filesystems/nbt/pkg-plist new file mode 100644 index 000000000000..c94aa0406782 --- /dev/null +++ b/filesystems/nbt/pkg-plist @@ -0,0 +1,15 @@ +bin/nbtdump +bin/regiondump +sbin/mkfs.nbt +sbin/mount.nbt +share/man/man1/nbtdump.1.gz +share/man/man1/regiondump.1.gz +share/man/man8/mkfs.nbt.8.gz +share/man/man8/mount.nbt.8.gz +include/nbt/buffer.h +include/nbt/list.h +include/nbt/nbt.h +include/nbt/version.h +lib/libnbt.a +lib/libnbt.so +lib/libnbt.so.1 diff --git a/filesystems/ntfs-compression/Makefile b/filesystems/ntfs-compression/Makefile new file mode 100644 index 000000000000..5932750c15e0 --- /dev/null +++ b/filesystems/ntfs-compression/Makefile @@ -0,0 +1,26 @@ +PORTNAME= ntfs-compression +DISTVERSIONPREFIX= v +DISTVERSION= 1.0 +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- + +MAINTAINER= danfe@FreeBSD.org +COMMENT= NTFS-3G plugin for reading XPRESS or LZX compressed files +WWW= https://github.com/ebiggers/ntfs-3g-system-compression + +LICENSE= GPLv2+ +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libntfs-3g.so:filesystems/ntfs + +USES= autoreconf libtool pkgconfig +GNU_CONFIGURE= yes +INSTALL_TARGET= install-strip + +USE_GITHUB= yes +GH_ACCOUNT= ebiggers +GH_PROJECT= ntfs-3g-system-compression + +PLIST_FILES= lib/ntfs-3g/ntfs-plugin-80000017.so + +.include <bsd.port.mk> diff --git a/filesystems/ntfs-compression/distinfo b/filesystems/ntfs-compression/distinfo new file mode 100644 index 000000000000..fbc99b05fba6 --- /dev/null +++ b/filesystems/ntfs-compression/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1517610042 +SHA256 (ebiggers-ntfs-3g-system-compression-v1.0_GH0.tar.gz) = bb003e1a9dbd4ed1217d157a548ea5b2ffdafd75c78ee8a2282c323a94686b2c +SIZE (ebiggers-ntfs-3g-system-compression-v1.0_GH0.tar.gz) = 37513 diff --git a/filesystems/ntfs-compression/pkg-descr b/filesystems/ntfs-compression/pkg-descr new file mode 100644 index 000000000000..603491ffe814 --- /dev/null +++ b/filesystems/ntfs-compression/pkg-descr @@ -0,0 +1,8 @@ +A plugin which enables the NTFS-3G FUSE driver to transparently read +from system-compressed files. + +System compression, also known as "Compact OS", is a Windows feature +that allows rarely modified files to be compressed using the XPRESS or +LZX compression formats. It is implemented using reparse points. This +feature appeared in Windows 10 and many Windows 10 systems have been +using it by default. diff --git a/filesystems/ntfs/Makefile b/filesystems/ntfs/Makefile new file mode 100644 index 000000000000..2ff33fa98b38 --- /dev/null +++ b/filesystems/ntfs/Makefile @@ -0,0 +1,61 @@ +PORTNAME= ntfs +PORTVERSION= 2022.10.3 +PORTREVISION= 1 +CATEGORIES= filesystems +MASTER_SITES= https://download.tuxera.com/opensource/ +PKGNAMEPREFIX= fusefs- +DISTNAME= ${PORTNAME}-3g_ntfsprogs-${PORTVERSION} + +MAINTAINER= freebsd@dussan.org +COMMENT= Mount NTFS partitions (read/write) and disk images +WWW= https://github.com/tuxera/ntfs-3g + +LICENSE= GPLv2+ +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libuuid.so:misc/e2fsprogs-libuuid + +USES= fuse pkgconfig iconv libtool localbase:ldflags tar:tgz +USE_LDCONFIG= yes +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_ARGS= --exec-prefix=${PREFIX} --disable-mount-helper \ + --disable-mtab --with-fuse=external --disable-ldconfig +INSTALL_TARGET= install-strip + +OPTIONS_DEFINE= CRYPTO DOCS EXTRAS LOCK UBLIO +OPTIONS_DEFAULT=EXTRAS LOCK UBLIO +OPTIONS_SUB= yes + +CRYPTO_DESC= Enable crypto-related code and utilities +CRYPTO_LIB_DEPENDS= libgcrypt.so:security/libgcrypt \ + libgnutls.so:security/gnutls \ + libgpg-error.so:security/libgpg-error +CRYPTO_CONFIGURE_ON= --enable-crypto + +EXTRAS_DESC= Build and install extra NTFS utilities +EXTRAS_CONFIGURE_ON= --enable-extras + +LOCK_DESC= Lock the device when mounting (avoids access) +LOCK_CFLAGS= -DUSE_LOCK + +UBLIO_DESC= Enable user space cache for improved speed +UBLIO_EXTRA_PATCHES= ${FILESDIR}/extra-patch-ublio +UBLIO_LIB_DEPENDS= libublio.so:devel/libublio +UBLIO_CFLAGS= -DUSE_UBLIO + +SUB_FILES= pkg-message +DOCSDIR= ${PREFIX}/share/doc/ntfs-3g + +post-patch: + @${REINPLACE_CMD} -e 's|ENODATA|ENOATTR|' \ + ${WRKSRC}/libntfs-3g/object_id.c \ + ${WRKSRC}/libntfs-3g/reparse.c \ + ${WRKSRC}/libntfs-3g/security.c + @${REINPLACE_CMD} -e '/$$(MAKE).*install-exec-hook/d' \ + ${WRKSRC}/libntfs-3g/Makefile.in + +post-install-DOCS-on: + ${INSTALL_DATA} ${FILESDIR}/README.FreeBSD ${STAGEDIR}${DOCSDIR}/ + +.include <bsd.port.mk> diff --git a/filesystems/ntfs/distinfo b/filesystems/ntfs/distinfo new file mode 100644 index 000000000000..51633f525273 --- /dev/null +++ b/filesystems/ntfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1666281899 +SHA256 (ntfs-3g_ntfsprogs-2022.10.3.tgz) = f20e36ee68074b845e3629e6bced4706ad053804cbaf062fbae60738f854170c +SIZE (ntfs-3g_ntfsprogs-2022.10.3.tgz) = 1324320 diff --git a/filesystems/ntfs/files/README.FreeBSD b/filesystems/ntfs/files/README.FreeBSD new file mode 100644 index 000000000000..ffaedb7707c3 --- /dev/null +++ b/filesystems/ntfs/files/README.FreeBSD @@ -0,0 +1,126 @@ +============================================================================== +NTFS-3G README for the FreeBSD port +============================================================================== + +1. Introduction +2. Port specific notes +3. Mounting at startup with /etc/fstab +4. Ublio configuration +5. Known issues + +============================================================================== +1. Introduction +============================================================================== + +The NTFS-3G project provides a read/write filesystem driver for NTFS. It uses +the FUSE library (an OS-independent library to create filesystem drivers) and +FreeBSD fusefs(5) kernel module (port of the kernel-dependent part of FUSE). +For more information see: + +NTFS-3G site: https://github.com/tuxera/ntfs-3g +FUSE site: https://github.com/libfuse/libfuse + +============================================================================== +2. Port specific notes +============================================================================== + +The port has a patch to align read/write operations to the media block size +(required on FreeBSD). + +The port has 2 options: LOCK (to prevent access to the device by external +programs than NTFS-3G once mounted, default on Linux), and UBLIO (use a user +space cache library, see devel/libublio, not required on Linux). + +The reason for using UBLIO is that FreeBSD removed support for block devices, +being them now character devices. The former ones had a cache, and NTFS-3G was +optimized for it (Linux still uses them). The same happens on Mac OS X (based +on FreeBSD 5). So using UBLIO both improves performance (~10 times faster), +and reduces disk load. + +============================================================================== +3. Mounting at startup with /etc/fstab +============================================================================== + +To mount at startup you need to have the following line in /boot/loader.conf: + + fusefs_load="YES" + +or have "fusefs" added to the "kld_list" in the /etc/rc.conf. + +Then create the following symlink: + +$ ln -s `which ntfs-3g` /usr/sbin/mount_ntfs-3g + +And add the appropriate line to /etc/fstab: the filesystem should be "ntfs-3g" +instead of "ntfs", and the additional "late" parameter is required. Example: + +/dev/ad4s1 /wxp ntfs-3g rw,late 0 0 + +============================================================================== +4. Ublio configuration +============================================================================== + +The UBLIO layer is configured through environment variables, which are read +when mounting the filesystem. The following are available: + +NTFS_USE_UBLIO - Enable the UBLIO cache. +UBLIO_BLOCKSIZE - Actual reads/writes will be multiples of this quantity. +UBLIO_ITEMS - Number of cache entries, each of UBLIO_BLOCKSIZE length. +UBLIO_GRACE - Number of times a cache entry will refuse being recycled. +UBLIO_SYNC_IO - If enabled, all writes will be immediately executed. + +To give an idea about tuning, here are the default values with some notes +(they are only based on some simple benchmarks, and may be wrong): + +NTFS_USE_UBLIO - 1. Disabling it drastically decreases performance. +UBLIO_BLOCKSIZE - 262144 (256KB). Larger improves reading/writing speed of + large files, and smaller makes filesystem operations + (creation, deletion, moving, find(1)) perform faster. + Try 2/4MB and 512/256KB for the different approaches. Note + that after that points performance decreases again. +UBLIO_ITEMS - 64. Higher increases speed of filesystem operations. Try 128. +UBLIO_GRACE - 32. Makes the cache items have more chances to be reused. +UBLIO_SYNC_IO - 0. If enabled, highly decreases writing speed, but the data + is immediately written to the disk. + +For example (improves performance over large files, but read below): + +# env UBLIO_BLOCKSIZE=2097152 ntfs-3g /dev/ad0s1 /mnt + +Alternatively these variables could be set in the shell startup file. For +example if you are using it in /etc/fstab add them to /etc/profile. If you use +it as a user, instead, editing the shell startup in HOME is enough. + +Note that higher values for UBLIO_BLOCKSIZE and UBLIO_ITEMS increase the +memory usage by their product in bytes. For example, if you set it to 1MB it +would consume 64MB. To decrease it to 16MB you could set UBLIO_BLOCKSIZE to +256KB (currently this is the default). Small values like 4096 can be used and +also perform fine. + +It is also possible to enforce block aligned I/O on regular files by setting +the FORCE_ALIGNED_IO variable (it will be set to 512 bytes), but this is only +useful for testing purposes and in practice has no use. + +============================================================================== +5. Known issues +============================================================================== + +- For mkntfs(8) -F must be used to allow non-block device to be processed. + +- Current implementation does not properly work with partitions of size which +is not a multiply of UBLIO_BLOCKSIZE (cannot read/write last cluster). For +instance, you may not be able to create ntfs filesystem because of this with + + Initializing device with zeroes: 99%Failed to complete writing to + /dev/ada0s1 after three retries. + +- When reading/writing the same file repeatedly while doing many simultaneous +operations on different files sometimes the former one fails: read(2) returns +-1 and sets errno to EAGAIN. This is because of a difference between the FUSE +kernel implementation in Linux and FreeBSD, and is being worked on. An example +scenario would be playing a song in XMMS, while building many ports, which +could cause XMMS skip the song. Another observed problem is the current +directory not being found, but entering again would work (Linux access is +path-based while FreeBSD is vnode-based, which may be reused). + +============================================================================== diff --git a/filesystems/ntfs/files/extra-patch-ublio b/filesystems/ntfs/files/extra-patch-ublio new file mode 100644 index 000000000000..36f1bb32acc9 --- /dev/null +++ b/filesystems/ntfs/files/extra-patch-ublio @@ -0,0 +1,27 @@ +--- ./libntfs-3g/Makefile.in.orig 2012-08-29 19:51:35.000000000 -0500 ++++ ./libntfs-3g/Makefile.in 2012-08-29 20:00:20.000000000 -0500 +@@ -251,6 +251,7 @@ + @INSTALL_LIBRARY_FALSE@noinst_LTLIBRARIES = libntfs-3g.la + libntfs_3g_la_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/include/ntfs-3g + libntfs_3g_la_LDFLAGS = -version-info $(LIBNTFS_3G_VERSION) -no-undefined ++libntfs_3g_la_LIBADD = -lublio + libntfs_3g_la_SOURCES = acls.c attrib.c attrlist.c bitmap.c bootsect.c \ + cache.c collate.c compat.c compress.c debug.c device.c dir.c \ + efs.c index.c inode.c lcnalloc.c logfile.c logging.c mft.c \ +--- src/ntfs-3g.c.orig 2011-04-10 20:04:41.000000000 +0200 ++++ src/ntfs-3g.c 2011-04-25 18:56:07.000000000 +0200 +@@ -3262,9 +3262,13 @@ + #else + .utime = ntfs_fuse_utime, + #endif ++#ifndef __FreeBSD__ ++ .bmap = ntfs_fuse_bmap, ++#else ++ .bmap = NULL, ++#endif + .fsync = ntfs_fuse_fsync, + .fsyncdir = ntfs_fuse_fsync, +- .bmap = ntfs_fuse_bmap, + .destroy = ntfs_fuse_destroy2, + #if !KERNELPERMS | (POSIXACLS & !KERNELACLS) + .access = ntfs_fuse_access, diff --git a/filesystems/ntfs/files/patch-configure b/filesystems/ntfs/files/patch-configure new file mode 100644 index 000000000000..cee7cc4a9090 --- /dev/null +++ b/filesystems/ntfs/files/patch-configure @@ -0,0 +1,30 @@ +--- configure.orig 2017-03-23 09:42:56 UTC ++++ configure +@@ -12871,7 +12871,7 @@ $as_echo_n "checking fuse compatibility... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking fuse compatibility" >&5 + $as_echo_n "checking fuse compatibility... " >&6; } + case "${target_os}" in +- linux*|solaris*) ++ freebsd*|linux*|solaris*) + + # Check whether --with-fuse was given. + if test "${with_fuse+set}" = set; then : +@@ -12885,9 +12885,6 @@ fi + darwin*|netbsd*|kfreebsd*-gnu) + with_fuse="external" + ;; +- freebsd*) +- as_fn_error $? "Please see FreeBSD support at http://www.freshports.org/sysutils/fusefs-ntfs" "$LINENO" 5 +- ;; + *) + as_fn_error $? "ntfs-3g can be built for Linux, FreeBSD, Mac OS X, NetBSD, and Solaris only." "$LINENO" 5 + ;; +@@ -15177,7 +15174,7 @@ fi + fi + + # Settings +-pkgconfigdir="\$(libdir)/pkgconfig" ++pkgconfigdir="\$(prefix)/libdata/pkgconfig" + ntfs3gincludedir="\$(includedir)/ntfs-3g" + # Executables should be installed to the root filesystem, otherwise + # automounting NTFS volumes can fail during boot if the driver binaries diff --git a/filesystems/ntfs/files/patch-libntfs-3g__unix_io.c b/filesystems/ntfs/files/patch-libntfs-3g__unix_io.c new file mode 100644 index 000000000000..b3e4c3dad80a --- /dev/null +++ b/filesystems/ntfs/files/patch-libntfs-3g__unix_io.c @@ -0,0 +1,623 @@ +--- libntfs-3g/unix_io.c.orig 2010-03-06 13:12:25.000000000 -0300 ++++ libntfs-3g/unix_io.c 2010-10-04 15:17:18.000000000 -0300 +@@ -54,6 +54,22 @@ + #include <linux/fd.h> + #endif + ++/* ++ * The following build definitions are available: ++ * USE_ALIGNED_IO - All I/O is done by blocks. ++ * USE_UBLIO - Use the ublio user space cache library. ++ * USE_LOCK - Lock the device/file when mounted. ++ */ ++ ++#ifdef __FreeBSD__ ++#include <sys/disk.h> ++#define USE_ALIGNED_IO 1 ++#endif ++ ++#if USE_UBLIO ++#include <sys/uio.h> ++#endif ++ + #include "types.h" + #include "mst.h" + #include "debug.h" +@@ -61,13 +77,90 @@ + #include "logging.h" + #include "misc.h" + +-#define DEV_FD(dev) (*(int *)dev->d_private) ++#if USE_UBLIO ++#define UBLIO_USE_API 1 ++#include "ublio.h" ++#define UBLIO_DEFAULT_ENABLE 1 ++#define UBLIO_DEFAULT_BLOCKSIZE 262144 ++#define UBLIO_DEFAULT_ITEMS 64 ++#define UBLIO_DEFAULT_GRACE 32 ++#define UBLIO_DEFAULT_SYNC_IO 0 ++#endif ++ ++#if USE_ALIGNED_IO ++#define RAW_IO_ALIGNED(dev, offset, count) \ ++ (DEV_HANDLE(dev)->block_size == 0 || \ ++ ((offset) % DEV_HANDLE(dev)->block_size == 0 && \ ++ (count) % DEV_HANDLE(dev)->block_size == 0)) ++#define RAW_IO_ALIGN(dev, offset) \ ++ ((offset) / DEV_HANDLE(dev)->block_size * DEV_HANDLE(dev)->block_size) ++#define RAW_IO_MAX_SIZE (128 * 1024 * 1024) ++#endif ++ ++struct unix_filehandle { ++ int fd; ++#if USE_ALIGNED_IO ++ s64 pos; ++ s32 block_size; ++ s64 media_size; ++#endif ++#if USE_UBLIO ++ ublio_filehandle_t ublio_fh; ++#endif ++}; ++ ++#define DEV_HANDLE(dev) ((struct unix_filehandle *)dev->d_private) ++#define DEV_FD(dev) (DEV_HANDLE(dev)->fd) + + /* Define to nothing if not present on this system. */ + #ifndef O_EXCL + # define O_EXCL 0 + #endif + ++#if USE_ALIGNED_IO ++/** ++ * Get block_size and media_size ++ */ ++static int ++raw_io_get_size(struct ntfs_device *dev) ++{ ++ int bs; ++ off_t ms; ++ struct stat sb; ++ ++ if (fstat(DEV_FD(dev), &sb) < 0) { ++ ntfs_log_perror("Failed to stat '%s'", dev->d_name); ++ return -1; ++ } ++ ++ if (S_ISREG(sb.st_mode)) { ++ DEV_HANDLE(dev)->media_size = sb.st_size; ++ ntfs_log_trace("%s: regular file (media_size %lld)\n", ++ dev->d_name, DEV_HANDLE(dev)->media_size); ++ if (getenv("FORCE_ALIGNED_IO")) ++ DEV_HANDLE(dev)->block_size = 512; ++ return 0; ++ } ++ ++ if (ioctl(DEV_FD(dev), DIOCGSECTORSIZE, &bs) < 0) { ++ ntfs_log_perror("Failed to ioctl(DIOCGSECTORSIZE) '%s'", ++ dev->d_name); ++ return -1; ++ } ++ DEV_HANDLE(dev)->block_size = bs; ++ ntfs_log_trace("%s: block size %d\n", dev->d_name, bs); ++ ++ if (ioctl(DEV_FD(dev), DIOCGMEDIASIZE, &ms) < 0) { ++ ntfs_log_perror("Failed to ioctl(DIOCGMEDIASIZE) '%s'", ++ dev->d_name); ++ return -1; ++ } ++ DEV_HANDLE(dev)->media_size = ms; ++ ntfs_log_trace("%s: media size %lld\n", dev->d_name, ms); ++ return 0; ++} ++#endif ++ + /** + * fsync replacement which makes every effort to try to get the data down to + * disk, using different means for different operating systems. Specifically, +@@ -113,9 +206,21 @@ + */ + static int ntfs_device_unix_io_open(struct ntfs_device *dev, int flags) + { ++#if USE_ALIGNED_IO ++ size_t sectsize; ++#endif ++#if USE_LOCK + struct flock flk; ++#endif + struct stat sbuf; +- int err; ++ struct unix_filehandle *ufh; ++ int err = 0; ++ int is_special = 0; ++#if USE_UBLIO ++ struct ublio_param up; ++ int use_ublio = 0; ++ char *xenv, *xgarbage; ++#endif + + if (NDevOpen(dev)) { + errno = EBUSY; +@@ -125,20 +230,28 @@ + ntfs_log_perror("Failed to access '%s'", dev->d_name); + return -1; + } +- if (S_ISBLK(sbuf.st_mode)) +- NDevSetBlock(dev); ++ if (S_ISBLK(sbuf.st_mode) || S_ISCHR(sbuf.st_mode)) ++ is_special = 1; + +- dev->d_private = ntfs_malloc(sizeof(int)); +- if (!dev->d_private) ++ ufh = ntfs_malloc(sizeof(*ufh)); ++ if (!ufh) + return -1; ++ dev->d_private = ufh; ++#if USE_ALIGNED_IO ++ ufh->fd = -1; ++ ufh->pos = 0; ++ ufh->block_size = 0; ++ ufh->media_size = 0; ++#endif ++ + /* + * Open file for exclusive access if mounting r/w. + * Fuseblk takes care about block devices. + */ +- if (!NDevBlock(dev) && (flags & O_RDWR) == O_RDWR) ++ if (!is_special && (flags & O_RDWR) == O_RDWR) + flags |= O_EXCL; +- *(int*)dev->d_private = open(dev->d_name, flags); +- if (*(int*)dev->d_private == -1) { ++ ufh->fd = open(dev->d_name, flags); ++ if (ufh->fd == -1) { + err = errno; + goto err_out; + } +@@ -146,6 +259,37 @@ + if ((flags & O_RDWR) != O_RDWR) + NDevSetReadOnly(dev); + ++#if USE_UBLIO ++ ufh->ublio_fh = NULL; ++ if ((xenv = getenv("NTFS_USE_UBLIO")) && ++ (xenv[0] == '0' || xenv[0] == '1') && xenv[1] == '\0') ++ use_ublio = (xenv[0] == '1'); ++ else ++ use_ublio = UBLIO_DEFAULT_ENABLE; ++ if ((xenv = getenv("UBLIO_BLOCKSIZE"))) ++ up.up_blocksize = strtoul(xenv, &xgarbage, 10); ++ if (!xenv || *xgarbage != '\0') ++ up.up_blocksize = UBLIO_DEFAULT_BLOCKSIZE; ++ if ((xenv = getenv("UBLIO_ITEMS"))) ++ up.up_items = strtoul(xenv, &xgarbage, 10); ++ if (!xenv || *xgarbage != '\0') ++ up.up_items = UBLIO_DEFAULT_ITEMS; ++ if ((xenv = getenv("UBLIO_GRACE"))) ++ up.up_grace = strtoul(xenv, &xgarbage, 10); ++ if (!xenv || *xgarbage != '\0') ++ up.up_grace = UBLIO_DEFAULT_GRACE; ++ if ((xenv = getenv("UBLIO_SYNC_IO")) && ++ (xenv[0] == '0' || xenv[0] == '1') && xenv[1] == '\0') ++ up.up_sync_io = (xenv[0] == '1'); ++ else ++ up.up_sync_io = UBLIO_DEFAULT_SYNC_IO; ++ up.up_priv = &ufh->fd; ++ up.up_pread = NULL; ++ up.up_preadv = NULL; ++ up.up_pwrite = NULL; ++ up.up_pwritev = NULL; ++#endif ++#if USE_LOCK + memset(&flk, 0, sizeof(flk)); + if (NDevReadOnly(dev)) + flk.l_type = F_RDLCK; +@@ -153,7 +297,21 @@ + flk.l_type = F_WRLCK; + flk.l_whence = SEEK_SET; + flk.l_start = flk.l_len = 0LL; +- if (fcntl(DEV_FD(dev), F_SETLK, &flk)) { ++#endif ++#if USE_ALIGNED_IO ++ if (raw_io_get_size(dev) < 0) { ++ err = errno; ++ close(DEV_FD(dev)); ++ goto err_out; ++ } ++ if (S_ISBLK(sbuf.st_mode) || S_ISCHR(sbuf.st_mode)) ++ NDevSetBlock(dev); ++#else ++ if (S_ISBLK(sbuf.st_mode)) ++ NDevSetBlock(dev); ++#endif /* USE_ALIGNED_IO */ ++#if USE_LOCK ++ if (!NDevBlock(dev) && fcntl(DEV_FD(dev), F_SETLK, &flk)) { + err = errno; + ntfs_log_perror("Failed to %s lock '%s'", NDevReadOnly(dev) ? + "read" : "write", dev->d_name); +@@ -161,7 +319,16 @@ + ntfs_log_perror("Failed to close '%s'", dev->d_name); + goto err_out; + } +- ++#endif ++#if USE_UBLIO ++ if (use_ublio) { ++ ufh->ublio_fh = ublio_open(&up); ++ if (!ufh->ublio_fh) { ++ close(DEV_FD(dev)); ++ goto err_out; ++ } ++ } ++#endif + NDevSetOpen(dev); + return 0; + err_out: +@@ -181,7 +348,10 @@ + */ + static int ntfs_device_unix_io_close(struct ntfs_device *dev) + { ++ /* XXX no error if fysnc, fcntl (ublio_close) fails? */ ++#if USE_LOCK + struct flock flk; ++#endif + + if (!NDevOpen(dev)) { + errno = EBADF; +@@ -194,12 +364,18 @@ + return -1; + } + ++#if USE_LOCK + memset(&flk, 0, sizeof(flk)); + flk.l_type = F_UNLCK; + flk.l_whence = SEEK_SET; + flk.l_start = flk.l_len = 0LL; +- if (fcntl(DEV_FD(dev), F_SETLK, &flk)) ++ if (!NDevBlock(dev) && fcntl(DEV_FD(dev), F_SETLK, &flk)) + ntfs_log_perror("Could not unlock %s", dev->d_name); ++#endif ++#if USE_UBLIO ++ if (DEV_HANDLE(dev)->ublio_fh) ++ ublio_close(DEV_HANDLE(dev)->ublio_fh); ++#endif + if (close(DEV_FD(dev))) { + ntfs_log_perror("Failed to close device %s", dev->d_name); + return -1; +@@ -223,9 +399,234 @@ + static s64 ntfs_device_unix_io_seek(struct ntfs_device *dev, s64 offset, + int whence) + { ++#if USE_ALIGNED_IO ++ s64 abs_pos; ++ ++ ntfs_log_trace("seek offset = 0x%llx, whence = %d.\n", offset, whence); ++ switch (whence) { ++ case SEEK_SET: ++ abs_pos = offset; ++ break; ++ ++ case SEEK_CUR: ++ abs_pos = DEV_HANDLE(dev)->pos + offset; ++ break; ++ ++ case SEEK_END: ++ abs_pos = DEV_HANDLE(dev)->media_size + offset; ++ break; ++ ++ default: ++ ntfs_log_trace("Wrong mode %d.\n", whence); ++ errno = EINVAL; ++ return -1; ++ } ++ ++ if (abs_pos < 0 || abs_pos > DEV_HANDLE(dev)->media_size) { ++ ntfs_log_trace("Seeking outsize seekable area.\n"); ++ errno = EINVAL; ++ return -1; ++ } ++ DEV_HANDLE(dev)->pos = abs_pos; ++ return abs_pos; ++#else + return lseek(DEV_FD(dev), offset, whence); ++#endif + } + ++#if USE_ALIGNED_IO ++ ++#if USE_UBLIO ++#define pread_wrap(fd, buf, count, off) \ ++ (DEV_HANDLE(fd)->ublio_fh ? \ ++ ublio_pread(DEV_HANDLE(fd)->ublio_fh, buf, count, off) : \ ++ pread(DEV_FD(fd), buf, count, off)) ++#define pwrite_wrap(fd, buf, count, off) \ ++ (DEV_HANDLE(fd)->ublio_fh ? \ ++ ublio_pwrite(DEV_HANDLE(fd)->ublio_fh, buf, count, off) : \ ++ pwrite(DEV_FD(fd), buf, count, off)) ++#else ++#define pread_wrap(fd, buf, count, off) \ ++ pread(DEV_FD(fd), buf, count, off) ++#define pwrite_wrap(fd, buf, count, off) \ ++ pwrite(DEV_FD(fd), buf, count, off) ++#endif ++ ++/** ++ * aligned_pread - Perform an aligned positioned read from the device ++ */ ++static s64 aligned_pread(struct ntfs_device *dev, void *buf, s64 count, s64 offset) ++{ ++ s64 start, start_aligned; ++ s64 end, end_aligned; ++ size_t count_aligned; ++ char *buf_aligned; ++ ssize_t nr; ++ ++ /* short-circuit for regular files */ ++ start = offset; ++ if (count > RAW_IO_MAX_SIZE) ++ count = RAW_IO_MAX_SIZE; ++ if (RAW_IO_ALIGNED(dev, start, count)) ++ return pread_wrap(dev, buf, count, start); ++ ++ /* ++ * +- start_aligned +- end_aligned ++ * | | ++ * | +- start +- end | ++ * v v v v ++ * |----------|----------|----------| ++ * ^ ^ ++ * +----- count ------+ ++ * ^ ^ ++ * +-------- count_aligned ---------+ ++ */ ++ start_aligned = RAW_IO_ALIGN(dev, start); ++ end = start + count; ++ end_aligned = RAW_IO_ALIGN(dev, end) + ++ (RAW_IO_ALIGNED(dev, end, 0) ? 0 : DEV_HANDLE(dev)->block_size); ++ count_aligned = end_aligned - start_aligned; ++ ntfs_log_trace( ++ "%s: count = 0x%llx/0x%x, start = 0x%llx/0x%llx, end = 0x%llx/0x%llx\n", ++ dev->d_name, count, count_aligned, ++ start, start_aligned, end, end_aligned); ++ ++ /* allocate buffer */ ++ buf_aligned = ntfs_malloc(count_aligned); ++ if (buf_aligned == NULL) { ++ ntfs_log_trace("ntfs_malloc(%d) failed\n", count_aligned); ++ return -1; ++ } ++ ++ /* read aligned data */ ++ nr = pread_wrap(dev, buf_aligned, count_aligned, start_aligned); ++ if (nr == 0) ++ return 0; ++ if (nr < 0 || nr < start - start_aligned) { ++ free(buf_aligned); ++ return -1; ++ } ++ ++ /* copy out */ ++ memcpy(buf, buf_aligned + (start - start_aligned), count); ++ free(buf_aligned); ++ ++ nr -= start - start_aligned; ++ if (nr > count) ++ nr = count; ++ return nr; ++} ++ ++/** ++ * aligned_pwrite - Perform an aligned positioned write from the device ++ */ ++static s64 aligned_pwrite(struct ntfs_device *dev, void *buf, s64 count, s64 offset) ++{ ++ s64 start, start_aligned; ++ s64 end, end_aligned; ++ size_t count_aligned; ++ char *buf_aligned; ++ ssize_t nw; ++ ++ if (NDevReadOnly(dev)) { ++ errno = EROFS; ++ return -1; ++ } ++ NDevSetDirty(dev); ++ ++ /* short-circuit for regular files */ ++ start = offset; ++ if (count > RAW_IO_MAX_SIZE) ++ count = RAW_IO_MAX_SIZE; ++ if (RAW_IO_ALIGNED(dev, start, count)) ++ return pwrite_wrap(dev, buf, count, start); ++ ++ /* ++ * +- start_aligned +- end_aligned ++ * | | ++ * | +- start +- end | ++ * v v v v ++ * |----------|----------|----------| ++ * ^ ^ ++ * +----- count ------+ ++ * ^ ^ ++ * +-------- count_aligned ---------+ ++ */ ++ start_aligned = RAW_IO_ALIGN(dev, start); ++ end = start + count; ++ end_aligned = RAW_IO_ALIGN(dev, end) + ++ (RAW_IO_ALIGNED(dev, end, 0) ? 0 : DEV_HANDLE(dev)->block_size); ++ count_aligned = end_aligned - start_aligned; ++ ntfs_log_trace( ++ "%s: count = 0x%llx/0x%x, start = 0x%llx/0x%llx, end = 0x%llx/0x%llx\n", ++ dev->d_name, count, count_aligned, ++ start, start_aligned, end, end_aligned); ++ ++ /* allocate buffer */ ++ buf_aligned = ntfs_malloc(count_aligned); ++ if (buf_aligned == NULL) { ++ ntfs_log_trace("ntfs_malloc(%d) failed\n", count_aligned); ++ return -1; ++ } ++ ++ /* read aligned lead-in */ ++ if (pread_wrap(dev, buf_aligned, DEV_HANDLE(dev)->block_size, start_aligned) != DEV_HANDLE(dev)->block_size) { ++ ntfs_log_trace("read lead-in failed\n"); ++ free(buf_aligned); ++ return -1; ++ } ++ ++ /* read aligned lead-out */ ++ if (end != end_aligned && count_aligned > DEV_HANDLE(dev)->block_size) { ++ if (pread_wrap(dev, buf_aligned + count_aligned - DEV_HANDLE(dev)->block_size, DEV_HANDLE(dev)->block_size, end_aligned - DEV_HANDLE(dev)->block_size) != DEV_HANDLE(dev)->block_size) { ++ ntfs_log_trace("read lead-out failed\n"); ++ free(buf_aligned); ++ return -1; ++ } ++ } ++ ++ /* copy data to write */ ++ memcpy(buf_aligned + (start - start_aligned), buf, count); ++ ++ /* write aligned data */ ++ nw = pwrite_wrap(dev, buf_aligned, count_aligned, start_aligned); ++ free(buf_aligned); ++ if (nw < 0 || nw < start - start_aligned) ++ return -1; ++ ++ nw -= start - start_aligned; ++ if (nw > count) ++ nw = count; ++ return nw; ++} ++ ++/** ++ * aligned_read - Perform an aligned read from the device ++ */ ++static s64 aligned_read(struct ntfs_device *dev, void *buf, s64 count) ++{ ++ s64 nr = aligned_pread(dev, buf, count, DEV_HANDLE(dev)->pos); ++ if (nr > 0) ++ DEV_HANDLE(dev)->pos += nr; ++ return nr; ++} ++ ++/** ++ * aligned_write - Perform an aligned read from the device ++ */ ++static s64 aligned_write(struct ntfs_device *dev, void *buf, s64 count) ++{ ++ s64 nw = aligned_pwrite(dev, buf, count, DEV_HANDLE(dev)->pos); ++ if (nw > 0) ++ DEV_HANDLE(dev)->pos += nw; ++ return nw; ++} ++ ++#undef ublio_pwrite ++#undef ublio_pread ++ ++#endif ++ + /** + * ntfs_device_unix_io_read - Read from the device, from the current location + * @dev: +@@ -239,6 +640,29 @@ + static s64 ntfs_device_unix_io_read(struct ntfs_device *dev, void *buf, + s64 count) + { ++#if USE_ALIGNED_IO ++ return aligned_read(dev, buf, count); ++#elif USE_UBLIO ++ if (DEV_HANDLE(dev)->ublio_fh) { ++ off_t offset; ++ ssize_t res; ++ ++ offset = lseek(DEV_FD(dev), 0, SEEK_CUR); ++ if (offset == -1) ++ return -1; ++ ++ res = ublio_pread(DEV_HANDLE(dev)->ublio_fh, buf, count, ++ offset); ++ if (res == -1) ++ return -1; ++ ++ if (lseek(DEV_FD(dev), res, SEEK_CUR) == -1) ++ return -1; ++ ++ return res; ++ } ++#endif ++ + return read(DEV_FD(dev), buf, count); + } + +@@ -260,6 +684,28 @@ + return -1; + } + NDevSetDirty(dev); ++#if USE_ALIGNED_IO ++ return aligned_write(dev, buf, count); ++#elif USE_UBLIO ++ if (DEV_HANDLE(dev)->ublio_fh) ++ off_t offset; ++ ssize_t res; ++ ++ offset = lseek(DEV_FD(dev), 0, SEEK_CUR); ++ if (offset == -1) ++ return -1; ++ ++ res = ublio_pwrite(DEV_HANDLE(dev)->ublio_fh, (void *)buf, ++ count, offset); ++ if (res == -1) ++ return -1; ++ ++ if (lseek(DEV_FD(dev), res, SEEK_CUR) == -1) ++ return -1; ++ ++ return res; ++ } ++#endif + return write(DEV_FD(dev), buf, count); + } + +@@ -277,6 +723,13 @@ + static s64 ntfs_device_unix_io_pread(struct ntfs_device *dev, void *buf, + s64 count, s64 offset) + { ++#if USE_ALIGNED_IO ++ return aligned_pread(dev, buf, count, offset); ++#elif USE_UBLIO ++ if (DEV_HANDLE(dev)->ublio_fh) ++ return ublio_pread(DEV_HANDLE(dev)->ublio_fh, buf, count, ++ offset); ++#endif + return pread(DEV_FD(dev), buf, count, offset); + } + +@@ -299,6 +752,13 @@ + return -1; + } + NDevSetDirty(dev); ++#if USE_ALIGNED_IO ++ return aligned_pwrite(dev, buf, count, offset); ++#elif USE_UBLIO ++ if (DEV_HANDLE(dev)->ublio_fh) ++ return ublio_pwrite(DEV_HANDLE(dev)->ublio_fh, (void *)buf, ++ count, offset); ++#endif + return pwrite(DEV_FD(dev), buf, count, offset); + } + +@@ -315,7 +775,14 @@ + int res = 0; + + if (!NDevReadOnly(dev)) { ++#if USE_UBLIO ++ if (DEV_HANDLE(dev)->ublio_fh) ++ res = ublio_fsync(DEV_HANDLE(dev)->ublio_fh); ++ if (!DEV_HANDLE(dev)->ublio_fh || !res) ++ res = ntfs_fsync(DEV_FD(dev)); ++#else + res = ntfs_fsync(DEV_FD(dev)); ++#endif + if (res) + ntfs_log_perror("Failed to sync device %s", dev->d_name); + else diff --git a/filesystems/ntfs/files/patch-ntfsprogs_mkntfs.c b/filesystems/ntfs/files/patch-ntfsprogs_mkntfs.c new file mode 100644 index 000000000000..4338563b5e04 --- /dev/null +++ b/filesystems/ntfs/files/patch-ntfsprogs_mkntfs.c @@ -0,0 +1,18 @@ +--- ntfsprogs/mkntfs.c.orig 2015-03-14 14:10:12 UTC ++++ ntfsprogs/mkntfs.c +@@ -3488,6 +3488,7 @@ static BOOL mkntfs_open_partition(ntfs_v + goto done; + } + ++#ifndef __FreeBSD__ + if (!S_ISBLK(sbuf.st_mode)) { + ntfs_log_error("%s is not a block device.\n", vol->dev->d_name); + if (!opts.force) { +@@ -3526,6 +3527,7 @@ static BOOL mkntfs_open_partition(ntfs_v + ntfs_log_warning("mkntfs forced anyway.\n"); + #endif + } ++#endif + /* Make sure the file system is not mounted. */ + if (ntfs_check_if_mounted(vol->dev->d_name, &mnt_flags)) { + ntfs_log_perror("Failed to determine whether %s is mounted", vol->dev->d_name); diff --git a/filesystems/ntfs/files/pkg-message.in b/filesystems/ntfs/files/pkg-message.in new file mode 100644 index 000000000000..dad797469e8e --- /dev/null +++ b/filesystems/ntfs/files/pkg-message.in @@ -0,0 +1,13 @@ +[ +{ type: install + message: <<EOM +NTFS-3G has been installed. It requires fusefs(5) support to operate, +so issue the ``kldload fusefs'' command or ``sysrc kld_list+=fusefs'' +to make it load automatically when the system starts. + +For further information, implementation details, and known issues see +the FreeBSD README (%%DOCSDIR%%/README.FreeBSD) in +addition to the official README (contains some Linux-specific parts). +EOM +} +] diff --git a/filesystems/ntfs/pkg-descr b/filesystems/ntfs/pkg-descr new file mode 100644 index 000000000000..539b307f498c --- /dev/null +++ b/filesystems/ntfs/pkg-descr @@ -0,0 +1,4 @@ +The ntfs-3g driver is an open-source, freely available read/write NTFS +driver which provides safe and fast handling of the Windows NTFS file +systems. Almost the full POSIX filesystem functionality is supported, +the major exceptions are changing file ownership and the access rights. diff --git a/filesystems/ntfs/pkg-plist b/filesystems/ntfs/pkg-plist new file mode 100644 index 000000000000..93dcc52a90fd --- /dev/null +++ b/filesystems/ntfs/pkg-plist @@ -0,0 +1,90 @@ +bin/lowntfs-3g +bin/ntfs-3g +bin/ntfs-3g.probe +bin/ntfscat +bin/ntfscluster +bin/ntfscmp +%%CRYPTO%%%%EXTRAS%%bin/ntfsdecrypt +bin/ntfsfix +bin/ntfsinfo +bin/ntfsls +%%EXTRAS%%bin/ntfsrecover +%%EXTRAS%%bin/ntfssecaudit +%%EXTRAS%%bin/ntfstruncate +%%EXTRAS%%bin/ntfsusermap +%%EXTRAS%%bin/ntfswipe +include/ntfs-3g/acls.h +include/ntfs-3g/attrib.h +include/ntfs-3g/attrlist.h +include/ntfs-3g/bitmap.h +include/ntfs-3g/bootsect.h +include/ntfs-3g/cache.h +include/ntfs-3g/collate.h +include/ntfs-3g/compat.h +include/ntfs-3g/compress.h +include/ntfs-3g/debug.h +include/ntfs-3g/device.h +include/ntfs-3g/device_io.h +include/ntfs-3g/dir.h +include/ntfs-3g/ea.h +include/ntfs-3g/efs.h +include/ntfs-3g/endians.h +include/ntfs-3g/index.h +include/ntfs-3g/inode.h +include/ntfs-3g/ioctl.h +include/ntfs-3g/layout.h +include/ntfs-3g/lcnalloc.h +include/ntfs-3g/logfile.h +include/ntfs-3g/logging.h +include/ntfs-3g/mft.h +include/ntfs-3g/misc.h +include/ntfs-3g/mst.h +include/ntfs-3g/ntfstime.h +include/ntfs-3g/object_id.h +include/ntfs-3g/param.h +include/ntfs-3g/plugin.h +include/ntfs-3g/realpath.h +include/ntfs-3g/reparse.h +include/ntfs-3g/runlist.h +include/ntfs-3g/security.h +include/ntfs-3g/support.h +include/ntfs-3g/types.h +include/ntfs-3g/unistr.h +include/ntfs-3g/volume.h +include/ntfs-3g/xattrs.h +lib/libntfs-3g.a +lib/libntfs-3g.so +lib/libntfs-3g.so.89 +lib/libntfs-3g.so.89.0.0 +libdata/pkgconfig/libntfs-3g.pc +share/man/man8/mkntfs.8.gz +share/man/man8/ntfs-3g.8.gz +share/man/man8/ntfs-3g.probe.8.gz +share/man/man8/ntfscat.8.gz +share/man/man8/ntfsclone.8.gz +share/man/man8/ntfscluster.8.gz +share/man/man8/ntfscmp.8.gz +share/man/man8/ntfscp.8.gz +share/man/man8/ntfsdecrypt.8.gz +share/man/man8/ntfsfallocate.8.gz +share/man/man8/ntfsfix.8.gz +share/man/man8/ntfsinfo.8.gz +share/man/man8/ntfslabel.8.gz +share/man/man8/ntfsls.8.gz +share/man/man8/ntfsprogs.8.gz +share/man/man8/ntfsrecover.8.gz +share/man/man8/ntfsresize.8.gz +share/man/man8/ntfssecaudit.8.gz +share/man/man8/ntfstruncate.8.gz +share/man/man8/ntfsundelete.8.gz +share/man/man8/ntfsusermap.8.gz +share/man/man8/ntfswipe.8.gz +sbin/mkntfs +sbin/ntfsclone +sbin/ntfscp +sbin/ntfslabel +sbin/ntfsresize +sbin/ntfsundelete +%%PORTDOCS%%%%DOCSDIR%%/README +%%PORTDOCS%%%%DOCSDIR%%/README.FreeBSD +@dir lib/ntfs-3g diff --git a/filesystems/ntfs2btrfs/Makefile b/filesystems/ntfs2btrfs/Makefile new file mode 100644 index 000000000000..7bc3fb88d004 --- /dev/null +++ b/filesystems/ntfs2btrfs/Makefile @@ -0,0 +1,25 @@ +PORTNAME= ntfs2btrfs +PORTVERSION= 20230501 +CATEGORIES= filesystems sysutils + +MAINTAINER= danfe@FreeBSD.org +COMMENT= NTFS to Btrfs in-place conversion utility +WWW= https://github.com/maharmstone/ntfs2btrfs + +LICENSE= GPLv2+ + +BUILD_DEPENDS= ${LOCALBASE}/include/fmt/format.h:devel/libfmt +LIB_DEPENDS= liblzo2.so:archivers/lzo2 libzstd.so:archivers/zstd + +USES= cmake pkgconfig +USE_GITHUB= yes +GH_ACCOUNT= maharmstone + +PLIST_FILES= sbin/${PORTNAME} share/man/man8/${PORTNAME}.8.gz + +post-patch: +# One should not try to mmap(2) disk devices on FreeBSD, it won't work + @${REINPLACE_CMD} -e '3449s,WIN32,_${OPSYS}__,' \ + ${WRKSRC}/src/ntfs2btrfs.cpp + +.include <bsd.port.mk> diff --git a/filesystems/ntfs2btrfs/distinfo b/filesystems/ntfs2btrfs/distinfo new file mode 100644 index 000000000000..e0ecb1e9b75e --- /dev/null +++ b/filesystems/ntfs2btrfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1682974776 +SHA256 (maharmstone-ntfs2btrfs-20230501_GH0.tar.gz) = 15924a22e9d80e4ca28bf5524708dd8f69d840df1e781a659ce953fee7d90730 +SIZE (maharmstone-ntfs2btrfs-20230501_GH0.tar.gz) = 98816 diff --git a/filesystems/ntfs2btrfs/files/patch-src_ntfs.cpp b/filesystems/ntfs2btrfs/files/patch-src_ntfs.cpp new file mode 100644 index 000000000000..74817c12412f --- /dev/null +++ b/filesystems/ntfs2btrfs/files/patch-src_ntfs.cpp @@ -0,0 +1,11 @@ +--- src/ntfs.cpp.orig 2023-05-01 20:59:36 UTC ++++ src/ntfs.cpp +@@ -465,7 +465,7 @@ string_view ntfs::find_sd(uint32_t id, ntfs_file& secu + } + + static void walk_btree(const index_root& ir, const list<mapping>& mappings, const index_node_header& inh, ntfs& dev, +- const invocable<const index_entry&, string_view> auto& func, unsigned int level) { ++ const function<void(const index_entry&, string_view)>& func, unsigned int level) { + auto ent = reinterpret_cast<const index_entry*>((uint8_t*)&inh + inh.first_entry); + + do { diff --git a/filesystems/ntfs2btrfs/pkg-descr b/filesystems/ntfs2btrfs/pkg-descr new file mode 100644 index 000000000000..6845f5661a10 --- /dev/null +++ b/filesystems/ntfs2btrfs/pkg-descr @@ -0,0 +1,5 @@ +Ntfs2btrfs is a tool which does in-place conversion of Microsoft's NTFS +file system to the open-source file system Btrfs, much as btrfs-convert +does for ext2. The original file system image is saved as a reflink copy +at `image/ntfs.img', and can be deleted to free up space if you want to +keep the conversion. diff --git a/filesystems/openzfs-kmod/Makefile b/filesystems/openzfs-kmod/Makefile new file mode 100644 index 000000000000..3dc28a9feadb --- /dev/null +++ b/filesystems/openzfs-kmod/Makefile @@ -0,0 +1,68 @@ +PORTNAME= openzfs +PORTVERSION= 2023113000 +DISTVERSIONPREFIX= v +CATEGORIES= filesystems sysutils +PKGNAMESUFFIX?= -kmod + +MAINTAINER= freqlabs@FreeBSD.org +COMMENT= OpenZFS kernel module for FreeBSD +WWW= https://github.com/openzfs/zfs + +LICENSE= CDDL + +BROKEN_i386= build fails + +USES= cpe kmod +USE_GITHUB= yes +GH_PROJECT= zfs +GH_TAGNAME= 494aaae +KMODTARGET?= openzfs.ko + +PLIST_FILES= ${KMODDIR}/${KMODTARGET} + +OPTIONS_DEFINE= DEBUG INVARIANTS GCOV +OPTIONS_DEFAULT= DEBUG INVARIANTS +OPTIONS_SUB= yes + +GCOV_DESC= Build kernel module with GCOV support (Requires gcc) + +INVARIANTS_DESC= Build kernel module with INVARIANTS +INVARIANTS_IMPLIES= DEBUG + +.include <bsd.port.options.mk> + +MAKE_OPTS+= SYSDIR=${SRC_BASE}/sys + +.if ${PORT_OPTIONS:MDEBUG} +MAKE_OPTS+= WITH_DEBUG=true +PLIST_FILES+= ${KMODDIR}/${KMODTARGET}.debug +.endif + +.if ${PORT_OPTIONS:MINVARIANTS} +MAKE_OPTS+= WITH_INVARIANTS=true +.endif + +.if ${PORT_OPTIONS:MGCOV} +USE_GCC= yes +MAKE_OPTS+= WITH_GCOV=true +.endif + +ZFS_META_GITREV= ${GH_PROJECT}-${GH_TAGNAME} +ZFS_META_RELEASE= ${GH_PROJECT}_${GH_TAGNAME} +ZFS_META_VERSION= ${DISTVERSIONPREFIX}${PORTVERSION} + +post-patch: + ${ECHO} '#define ZFS_META_GITREV "${ZFS_META_GITREV}"' > ${WRKSRC}/include/zfs_gitrev.h + ${ECHO} '#define ZFS_META_RELEASE "${ZFS_META_RELEASE}"' > ${WRKSRC}/zfs_config.h + ${ECHO} '#define ZFS_META_VERSION "${ZFS_META_VERSION}"' >> ${WRKSRC}/zfs_config.h + +do-build: + (cd ${WRKSRC}/module/ && make -f Makefile.bsd CC=${CC} ${MAKE_OPTS}) + +do-install: + ${INSTALL} ${WRKSRC}/module/openzfs.ko ${STAGEDIR}${KMODDIR}/${KMODTARGET} +.if ${PORT_OPTIONS:MDEBUG} + ${INSTALL} ${WRKSRC}/module/openzfs.ko.debug ${STAGEDIR}${KMODDIR}/${KMODTARGET}.debug +.endif + +.include <bsd.port.mk> diff --git a/filesystems/openzfs-kmod/distinfo b/filesystems/openzfs-kmod/distinfo new file mode 100644 index 000000000000..46df98bb02c8 --- /dev/null +++ b/filesystems/openzfs-kmod/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1701967598 +SHA256 (openzfs-zfs-v2023113000-494aaae_GH0.tar.gz) = 7f77e73bacb7bb081e3344fb20e5ebffd6a6c0b10cad1b6c572d44866a94eea6 +SIZE (openzfs-zfs-v2023113000-494aaae_GH0.tar.gz) = 33039586 diff --git a/filesystems/openzfs-kmod/pkg-descr b/filesystems/openzfs-kmod/pkg-descr new file mode 100644 index 000000000000..423d6ae3c738 --- /dev/null +++ b/filesystems/openzfs-kmod/pkg-descr @@ -0,0 +1 @@ +Kernel module for OpenZFS on FreeBSD diff --git a/filesystems/openzfs-kmod/pkg-message b/filesystems/openzfs-kmod/pkg-message new file mode 100644 index 000000000000..9554fc733667 --- /dev/null +++ b/filesystems/openzfs-kmod/pkg-message @@ -0,0 +1,12 @@ +[ +{ type: install + message: <<EOM +Amend /boot/loader.conf as follows to use this module: + +- change zfs_load="YES" to NO +- change opensolaris_load="YES" to NO +- add openzfs_load="YES" +- (for ARM64) add cryptodev_load="YES" +EOM +} +] diff --git a/filesystems/openzfs/Makefile b/filesystems/openzfs/Makefile new file mode 100644 index 000000000000..bec123954ce9 --- /dev/null +++ b/filesystems/openzfs/Makefile @@ -0,0 +1,71 @@ +PORTNAME= openzfs +PORTVERSION= 2023113000 +DISTVERSIONPREFIX= v +PORTREVISION= 1 +CATEGORIES= filesystems sysutils + +MAINTAINER= freqlabs@FreeBSD.org +COMMENT= OpenZFS userland for FreeBSD +WWW= https://github.com/openzfs/zfs + +LICENSE= CDDL + +BROKEN_aarch64= invokes x86 assembler +BROKEN_riscv64= fails to compile: btree_test.c:462:49: result of comparison of constant -1 with expression of type 'char' is always true + +BUILD_DEPENDS= ksh93:shells/ksh93 +RUN_DEPENDS= openzfs-kmod>=0:filesystems/openzfs-kmod + +USES+= autoreconf:build cpe libtool gmake gettext-runtime python:build shebangfix ssl +SHEBANG_GLOB= *.ksh *.ksh.in *.kshlib *.py.in +SHEBANG_FILES= tests/zfs-tests/tests/functional/trim/trim.cfg \ + cmd/arcstat.in \ + cmd/dbufstat.in \ + cmd/zilstat.in \ + cmd/arc_summary + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_ARGS= MAKE=gmake --prefix=${PREFIX} --with-config="user" + +OPTIONS_DEFINE= DEBUG PYTHON TESTS +PYTHON_DESC= Build the pyzfs library, arc_summary, arcstat, and dbufstat utilities +TESTS_DESC= Install the ZFS Test Suite +OPTIONS_SUB= yes + +USE_GITHUB= yes +GH_PROJECT= zfs +GH_TAGNAME= 494aaae + +USE_LDCONFIG= yes + +.include <bsd.port.options.mk> + +.if ${PORT_OPTIONS:MDEBUG} +CONFIGURE_ARGS+= --enable-debug --enable-debuginfo +.endif + +.if ${PORT_OPTIONS:MPYTHON} +CONFIGURE_ARGS+= --with-python=${PYTHON_VER} +BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}packaging>0:devel/py-packaging@${PY_FLAVOR} +BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}cffi>0:devel/py-cffi@${PY_FLAVOR} +RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}cffi>0:devel/py-cffi@${PY_FLAVOR} +RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}sysctl>0:devel/py-sysctl@${PY_FLAVOR} +.else +CONFIGURE_ARGS+= --without-python +PYTHON_NO_DEPENDS=yes +.endif + +post-extract: + # Change certain shebangs into something that shebang fix understands + cd ${WRKSRC} && ${SED} -i '' '1s:@PYTHON_SHEBANG@:python3:' \ + tests/test-runner/bin/zts-report.py.in \ + tests/test-runner/bin/test-runner.py.in \ + cmd/arcstat.in \ + cmd/dbufstat.in \ + cmd/zilstat.in + +pre-configure: + cd ${WRKSRC} && ./autogen.sh + +.include <bsd.port.mk> diff --git a/filesystems/openzfs/distinfo b/filesystems/openzfs/distinfo new file mode 100644 index 000000000000..6b9911e58395 --- /dev/null +++ b/filesystems/openzfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1701967689 +SHA256 (openzfs-zfs-v2023113000-494aaae_GH0.tar.gz) = 7f77e73bacb7bb081e3344fb20e5ebffd6a6c0b10cad1b6c572d44866a94eea6 +SIZE (openzfs-zfs-v2023113000-494aaae_GH0.tar.gz) = 33039586 diff --git a/filesystems/openzfs/pkg-descr b/filesystems/openzfs/pkg-descr new file mode 100644 index 000000000000..38b91fde925c --- /dev/null +++ b/filesystems/openzfs/pkg-descr @@ -0,0 +1 @@ +Port of the OpenZFS project to FreeBSD diff --git a/filesystems/openzfs/pkg-message b/filesystems/openzfs/pkg-message new file mode 100644 index 000000000000..1101f72fc507 --- /dev/null +++ b/filesystems/openzfs/pkg-message @@ -0,0 +1,11 @@ +[ +{ type: install + message: <<EOM +Ensure that any zfs-related commands, such as zpool, zfs, as used in scripts +and in your terminal sessions, use the correct path of ${PREFIX}/sbin/ and +not the /sbin/ commands provided by the FreeBSD base system. + +Consider setting this in your shell profile defaults! +EOM +} +] diff --git a/filesystems/openzfs/pkg-plist b/filesystems/openzfs/pkg-plist new file mode 100644 index 000000000000..ea46b291888d --- /dev/null +++ b/filesystems/openzfs/pkg-plist @@ -0,0 +1,2621 @@ +%%PYTHON%%bin/arc_summary +%%PYTHON%%bin/arcstat +%%PYTHON%%bin/dbufstat +%%PYTHON%%bin/zilstat +%%TESTS%%bin/raidz_test +etc/bash_completion.d/zfs +etc/sudoers.d/zfs +etc/zfs/vdev_id.conf.alias.example +etc/zfs/vdev_id.conf.multipath.example +etc/zfs/vdev_id.conf.sas_direct.example +etc/zfs/vdev_id.conf.sas_switch.example +etc/zfs/vdev_id.conf.scsi.example +etc/zfs/zfs-functions +etc/zfs/zpool.d/ata_err +etc/zfs/zpool.d/cmd_to +etc/zfs/zpool.d/defect +etc/zfs/zpool.d/dm-deps +etc/zfs/zpool.d/enc +etc/zfs/zpool.d/encdev +etc/zfs/zpool.d/fault_led +etc/zfs/zpool.d/health +etc/zfs/zpool.d/hours_on +etc/zfs/zpool.d/iostat +etc/zfs/zpool.d/iostat-10s +etc/zfs/zpool.d/iostat-1s +etc/zfs/zpool.d/label +etc/zfs/zpool.d/locate_led +etc/zfs/zpool.d/lsblk +etc/zfs/zpool.d/media +etc/zfs/zpool.d/model +etc/zfs/zpool.d/nonmed +etc/zfs/zpool.d/nvme_err +etc/zfs/zpool.d/off_ucor +etc/zfs/zpool.d/pend_sec +etc/zfs/zpool.d/pwr_cyc +etc/zfs/zpool.d/r_proc +etc/zfs/zpool.d/r_ucor +etc/zfs/zpool.d/realloc +etc/zfs/zpool.d/rep_ucor +etc/zfs/zpool.d/serial +etc/zfs/zpool.d/ses +etc/zfs/zpool.d/size +etc/zfs/zpool.d/slot +etc/zfs/zpool.d/smart +etc/zfs/zpool.d/smart_test +etc/zfs/zpool.d/smartx +etc/zfs/zpool.d/temp +etc/zfs/zpool.d/test_ended +etc/zfs/zpool.d/test_progress +etc/zfs/zpool.d/test_status +etc/zfs/zpool.d/test_type +etc/zfs/zpool.d/upath +etc/zfs/zpool.d/vendor +etc/zfs/zpool.d/w_proc +etc/zfs/zpool.d/w_ucor +include/libspl/assert.h +include/libspl/atomic.h +include/libspl/fcntl.h +include/libspl/libgen.h +include/libspl/libshare.h +include/libspl/rpc/xdr.h +include/libspl/statcommon.h +include/libspl/stdlib.h +include/libspl/string.h +include/libspl/sys/acl.h +include/libspl/sys/acl_impl.h +include/libspl/sys/asm_linkage.h +include/libspl/sys/byteorder.h +include/libspl/sys/callb.h +include/libspl/sys/cmn_err.h +include/libspl/sys/cred.h +include/libspl/sys/debug.h +include/libspl/sys/dkio.h +include/libspl/sys/dklabel.h +include/libspl/sys/dktp/fdisk.h +include/libspl/sys/fcntl.h +include/libspl/sys/feature_tests.h +include/libspl/sys/file.h +include/libspl/sys/ia32/asm_linkage.h +include/libspl/sys/inttypes.h +include/libspl/sys/isa_defs.h +include/libspl/sys/kmem.h +include/libspl/sys/kstat.h +include/libspl/sys/list.h +include/libspl/sys/list_impl.h +include/libspl/sys/mhd.h +include/libspl/sys/mkdev.h +include/libspl/sys/mnttab.h +include/libspl/sys/mount.h +include/libspl/sys/param.h +include/libspl/sys/policy.h +include/libspl/sys/poll.h +include/libspl/sys/priv.h +include/libspl/sys/processor.h +include/libspl/sys/simd.h +include/libspl/sys/stack.h +include/libspl/sys/stat.h +include/libspl/sys/stdtypes.h +include/libspl/sys/string.h +include/libspl/sys/sunddi.h +include/libspl/sys/sysmacros.h +include/libspl/sys/systeminfo.h +include/libspl/sys/time.h +include/libspl/sys/trace_spl.h +include/libspl/sys/trace_zfs.h +include/libspl/sys/types.h +include/libspl/sys/types32.h +include/libspl/sys/uio.h +include/libspl/sys/vfs.h +include/libspl/sys/vnode.h +include/libspl/sys/wmsum.h +include/libspl/sys/zfs_context_os.h +include/libspl/sys/zone.h +include/libspl/umem.h +include/libspl/unistd.h +include/libspl/zone.h +include/libzfs/cityhash.h +include/libzfs/libnvpair.h +include/libzfs/libuutil.h +include/libzfs/libuutil_common.h +include/libzfs/libuutil_impl.h +include/libzfs/libzfs.h +include/libzfs/libzfs_core.h +include/libzfs/libzfsbootenv.h +include/libzfs/libzutil.h +include/libzfs/sys/abd.h +include/libzfs/sys/abd_impl.h +include/libzfs/sys/aggsum.h +include/libzfs/sys/arc.h +include/libzfs/sys/arc_impl.h +include/libzfs/sys/asm_linkage.h +include/libzfs/sys/avl.h +include/libzfs/sys/avl_impl.h +include/libzfs/sys/bitmap.h +include/libzfs/sys/bitops.h +include/libzfs/sys/blake3.h +include/libzfs/sys/blkptr.h +include/libzfs/sys/bplist.h +include/libzfs/sys/bpobj.h +include/libzfs/sys/bptree.h +include/libzfs/sys/bqueue.h +include/libzfs/sys/brt.h +include/libzfs/sys/brt_impl.h +include/libzfs/sys/btree.h +include/libzfs/sys/crypto/api.h +include/libzfs/sys/crypto/common.h +include/libzfs/sys/crypto/icp.h +include/libzfs/sys/dataset_kstats.h +include/libzfs/sys/dbuf.h +include/libzfs/sys/ddt.h +include/libzfs/sys/dmu.h +include/libzfs/sys/dmu_impl.h +include/libzfs/sys/dmu_objset.h +include/libzfs/sys/dmu_recv.h +include/libzfs/sys/dmu_redact.h +include/libzfs/sys/dmu_send.h +include/libzfs/sys/dmu_traverse.h +include/libzfs/sys/dmu_tx.h +include/libzfs/sys/dmu_zfetch.h +include/libzfs/sys/dnode.h +include/libzfs/sys/dsl_bookmark.h +include/libzfs/sys/dsl_crypt.h +include/libzfs/sys/dsl_dataset.h +include/libzfs/sys/dsl_deadlist.h +include/libzfs/sys/dsl_deleg.h +include/libzfs/sys/dsl_destroy.h +include/libzfs/sys/dsl_dir.h +include/libzfs/sys/dsl_pool.h +include/libzfs/sys/dsl_prop.h +include/libzfs/sys/dsl_scan.h +include/libzfs/sys/dsl_synctask.h +include/libzfs/sys/dsl_userhold.h +include/libzfs/sys/edonr.h +include/libzfs/sys/efi_partition.h +include/libzfs/sys/fm/fs/zfs.h +include/libzfs/sys/fm/protocol.h +include/libzfs/sys/fm/util.h +include/libzfs/sys/frame.h +include/libzfs/sys/fs/zfs.h +include/libzfs/sys/hkdf.h +include/libzfs/sys/lua/lauxlib.h +include/libzfs/sys/lua/lua.h +include/libzfs/sys/lua/luaconf.h +include/libzfs/sys/lua/lualib.h +include/libzfs/sys/metaslab.h +include/libzfs/sys/metaslab_impl.h +include/libzfs/sys/mmp.h +include/libzfs/sys/mntent.h +include/libzfs/sys/mod.h +include/libzfs/sys/multilist.h +include/libzfs/sys/nvpair.h +include/libzfs/sys/nvpair_impl.h +include/libzfs/sys/objlist.h +include/libzfs/sys/pathname.h +include/libzfs/sys/qat.h +include/libzfs/sys/range_tree.h +include/libzfs/sys/rrwlock.h +include/libzfs/sys/sa.h +include/libzfs/sys/sa_impl.h +include/libzfs/sys/sha2.h +include/libzfs/sys/skein.h +include/libzfs/sys/spa.h +include/libzfs/sys/spa_checkpoint.h +include/libzfs/sys/spa_checksum.h +include/libzfs/sys/spa_impl.h +include/libzfs/sys/spa_log_spacemap.h +include/libzfs/sys/space_map.h +include/libzfs/sys/space_reftree.h +include/libzfs/sys/sysevent.h +include/libzfs/sys/sysevent/dev.h +include/libzfs/sys/sysevent/eventdefs.h +include/libzfs/sys/txg.h +include/libzfs/sys/txg_impl.h +include/libzfs/sys/u8_textprep.h +include/libzfs/sys/u8_textprep_data.h +include/libzfs/sys/uberblock.h +include/libzfs/sys/uberblock_impl.h +include/libzfs/sys/uio_impl.h +include/libzfs/sys/unique.h +include/libzfs/sys/uuid.h +include/libzfs/sys/vdev.h +include/libzfs/sys/vdev_disk.h +include/libzfs/sys/vdev_draid.h +include/libzfs/sys/vdev_file.h +include/libzfs/sys/vdev_impl.h +include/libzfs/sys/vdev_indirect_births.h +include/libzfs/sys/vdev_indirect_mapping.h +include/libzfs/sys/vdev_initialize.h +include/libzfs/sys/vdev_raidz.h +include/libzfs/sys/vdev_raidz_impl.h +include/libzfs/sys/vdev_rebuild.h +include/libzfs/sys/vdev_removal.h +include/libzfs/sys/vdev_trim.h +include/libzfs/sys/xvattr.h +include/libzfs/sys/zap.h +include/libzfs/sys/zap_impl.h +include/libzfs/sys/zap_leaf.h +include/libzfs/sys/zcp.h +include/libzfs/sys/zcp_global.h +include/libzfs/sys/zcp_iter.h +include/libzfs/sys/zcp_prop.h +include/libzfs/sys/zcp_set.h +include/libzfs/sys/zfeature.h +include/libzfs/sys/zfs_acl.h +include/libzfs/sys/zfs_bootenv.h +include/libzfs/sys/zfs_chksum.h +include/libzfs/sys/zfs_context.h +include/libzfs/sys/zfs_debug.h +include/libzfs/sys/zfs_delay.h +include/libzfs/sys/zfs_file.h +include/libzfs/sys/zfs_fuid.h +include/libzfs/sys/zfs_impl.h +include/libzfs/sys/zfs_project.h +include/libzfs/sys/zfs_quota.h +include/libzfs/sys/zfs_racct.h +include/libzfs/sys/zfs_ratelimit.h +include/libzfs/sys/zfs_refcount.h +include/libzfs/sys/zfs_rlock.h +include/libzfs/sys/zfs_sa.h +include/libzfs/sys/zfs_stat.h +include/libzfs/sys/zfs_sysfs.h +include/libzfs/sys/zfs_vfsops.h +include/libzfs/sys/zfs_vnops.h +include/libzfs/sys/zfs_znode.h +include/libzfs/sys/zil.h +include/libzfs/sys/zil_impl.h +include/libzfs/sys/zio.h +include/libzfs/sys/zio_checksum.h +include/libzfs/sys/zio_compress.h +include/libzfs/sys/zio_crypt.h +include/libzfs/sys/zio_impl.h +include/libzfs/sys/zio_priority.h +include/libzfs/sys/zrlock.h +include/libzfs/sys/zstd/zstd.h +include/libzfs/sys/zthr.h +include/libzfs/thread_pool.h +include/libzfs/zfeature_common.h +include/libzfs/zfs_comutil.h +include/libzfs/zfs_deleg.h +include/libzfs/zfs_fletcher.h +include/libzfs/zfs_namecheck.h +include/libzfs/zfs_prop.h +lib/libnvpair.a +lib/libnvpair.so +lib/libnvpair.so.3 +lib/libnvpair.so.3.0.0 +lib/libuutil.a +lib/libuutil.so +lib/libuutil.so.3 +lib/libuutil.so.3.0.0 +lib/libzfs.a +lib/libzfs.so +lib/libzfs.so.4 +lib/libzfs.so.4.1.0 +lib/libzfs_core.a +lib/libzfs_core.so +lib/libzfs_core.so.3 +lib/libzfs_core.so.3.0.0 +lib/libzfsbootenv.a +lib/libzfsbootenv.so +lib/libzfsbootenv.so.1 +lib/libzfsbootenv.so.1.0.0 +lib/libzpool.a +lib/libzpool.so +lib/libzpool.so.5 +lib/libzpool.so.5.0.0 +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/__init__.py +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/__pycache__/_constants%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/__pycache__/_error_translation%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/__pycache__/_libzfs_core%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/__pycache__/_nvlist%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/__pycache__/ctypes%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/__pycache__/exceptions%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/_constants.py +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/_error_translation.py +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/_libzfs_core.py +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/_nvlist.py +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/bindings/__init__.py +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/bindings/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/bindings/__pycache__/libnvpair%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/bindings/__pycache__/libzfs_core%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/bindings/libnvpair.py +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/bindings/libzfs_core.py +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/ctypes.py +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/exceptions.py +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/test/__init__.py +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/test/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/test/__pycache__/test_libzfs_core%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/test/__pycache__/test_nvlist%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/test/test_libzfs_core.py +%%PYTHON%%%%PYTHON_SITELIBDIR%%/libzfs_core/test/test_nvlist.py +%%PYTHON%%%%PYTHON_SITELIBDIR%%/pyzfs-2.2.2-py%%PYTHON_VER%%.egg-info/PKG-INFO +%%PYTHON%%%%PYTHON_SITELIBDIR%%/pyzfs-2.2.2-py%%PYTHON_VER%%.egg-info/SOURCES.txt +%%PYTHON%%%%PYTHON_SITELIBDIR%%/pyzfs-2.2.2-py%%PYTHON_VER%%.egg-info/dependency_links.txt +%%PYTHON%%%%PYTHON_SITELIBDIR%%/pyzfs-2.2.2-py%%PYTHON_VER%%.egg-info/not-zip-safe +%%PYTHON%%%%PYTHON_SITELIBDIR%%/pyzfs-2.2.2-py%%PYTHON_VER%%.egg-info/requires.txt +%%PYTHON%%%%PYTHON_SITELIBDIR%%/pyzfs-2.2.2-py%%PYTHON_VER%%.egg-info/top_level.txt +lib/security/pam_zfs_key.so +libdata/pkgconfig/libzfs.pc +libdata/pkgconfig/libzfs_core.pc +libdata/pkgconfig/libzfsbootenv.pc +libexec/zfs/zfs_prepare_disk +libexec/zfs/zpool.d/ata_err +libexec/zfs/zpool.d/cmd_to +libexec/zfs/zpool.d/defect +libexec/zfs/zpool.d/dm-deps +libexec/zfs/zpool.d/enc +libexec/zfs/zpool.d/encdev +libexec/zfs/zpool.d/fault_led +libexec/zfs/zpool.d/health +libexec/zfs/zpool.d/hours_on +libexec/zfs/zpool.d/iostat +libexec/zfs/zpool.d/iostat-10s +libexec/zfs/zpool.d/iostat-1s +libexec/zfs/zpool.d/label +libexec/zfs/zpool.d/locate_led +libexec/zfs/zpool.d/lsblk +libexec/zfs/zpool.d/media +libexec/zfs/zpool.d/model +libexec/zfs/zpool.d/nonmed +libexec/zfs/zpool.d/nvme_err +libexec/zfs/zpool.d/off_ucor +libexec/zfs/zpool.d/pend_sec +libexec/zfs/zpool.d/pwr_cyc +libexec/zfs/zpool.d/r_proc +libexec/zfs/zpool.d/r_ucor +libexec/zfs/zpool.d/realloc +libexec/zfs/zpool.d/rep_ucor +libexec/zfs/zpool.d/serial +libexec/zfs/zpool.d/ses +libexec/zfs/zpool.d/size +libexec/zfs/zpool.d/slot +libexec/zfs/zpool.d/smart +libexec/zfs/zpool.d/smart_test +libexec/zfs/zpool.d/smartx +libexec/zfs/zpool.d/temp +libexec/zfs/zpool.d/test_ended +libexec/zfs/zpool.d/test_progress +libexec/zfs/zpool.d/test_status +libexec/zfs/zpool.d/test_type +libexec/zfs/zpool.d/upath +libexec/zfs/zpool.d/vendor +libexec/zfs/zpool.d/w_proc +libexec/zfs/zpool.d/w_ucor +libexec/zfs/zpool_influxdb +sbin/fsck.zfs +sbin/zdb +sbin/zfs +sbin/zfs_ids_to_path +sbin/zhack +sbin/zinject +sbin/zpool +sbin/zstream +sbin/zstreamdump +sbin/ztest +share/man/man1/arcstat.1.gz +%%TESTS%%share/man/man1/raidz_test.1.gz +%%TESTS%%share/man/man1/test-runner.1.gz +share/man/man1/zhack.1.gz +share/man/man1/ztest.1.gz +share/man/man1/zvol_wait.1.gz +share/man/man4/spl.4.gz +share/man/man4/zfs.4.gz +share/man/man5/vdev_id.conf.5.gz +share/man/man7/dracut.zfs.7.gz +share/man/man7/vdevprops.7.gz +share/man/man7/zfsconcepts.7.gz +share/man/man7/zfsprops.7.gz +share/man/man7/zpool-features.7.gz +share/man/man7/zpoolconcepts.7.gz +share/man/man7/zpoolprops.7.gz +share/man/man8/fsck.zfs.8.gz +share/man/man8/mount.zfs.8.gz +share/man/man8/vdev_id.8.gz +share/man/man8/zdb.8.gz +share/man/man8/zed.8.gz +share/man/man8/zfs-allow.8.gz +share/man/man8/zfs-bookmark.8.gz +share/man/man8/zfs-change-key.8.gz +share/man/man8/zfs-clone.8.gz +share/man/man8/zfs-create.8.gz +share/man/man8/zfs-destroy.8.gz +share/man/man8/zfs-diff.8.gz +share/man/man8/zfs-get.8.gz +share/man/man8/zfs-groupspace.8.gz +share/man/man8/zfs-hold.8.gz +share/man/man8/zfs-inherit.8.gz +share/man/man8/zfs-jail.8.gz +share/man/man8/zfs-list.8.gz +share/man/man8/zfs-load-key.8.gz +share/man/man8/zfs-mount-generator.8.gz +share/man/man8/zfs-mount.8.gz +share/man/man8/zfs-program.8.gz +share/man/man8/zfs-project.8.gz +share/man/man8/zfs-projectspace.8.gz +share/man/man8/zfs-promote.8.gz +share/man/man8/zfs-receive.8.gz +share/man/man8/zfs-recv.8.gz +share/man/man8/zfs-redact.8.gz +share/man/man8/zfs-release.8.gz +share/man/man8/zfs-rename.8.gz +share/man/man8/zfs-rollback.8.gz +share/man/man8/zfs-send.8.gz +share/man/man8/zfs-set.8.gz +share/man/man8/zfs-share.8.gz +share/man/man8/zfs-snapshot.8.gz +share/man/man8/zfs-unallow.8.gz +share/man/man8/zfs-unjail.8.gz +share/man/man8/zfs-unload-key.8.gz +share/man/man8/zfs-unmount.8.gz +share/man/man8/zfs-upgrade.8.gz +share/man/man8/zfs-userspace.8.gz +share/man/man8/zfs-wait.8.gz +share/man/man8/zfs.8.gz +share/man/man8/zfs_ids_to_path.8.gz +share/man/man8/zfs_prepare_disk.8.gz +share/man/man8/zgenhostid.8.gz +share/man/man8/zinject.8.gz +share/man/man8/zpool-add.8.gz +share/man/man8/zpool-attach.8.gz +share/man/man8/zpool-checkpoint.8.gz +share/man/man8/zpool-clear.8.gz +share/man/man8/zpool-create.8.gz +share/man/man8/zpool-destroy.8.gz +share/man/man8/zpool-detach.8.gz +share/man/man8/zpool-events.8.gz +share/man/man8/zpool-export.8.gz +share/man/man8/zpool-get.8.gz +share/man/man8/zpool-history.8.gz +share/man/man8/zpool-import.8.gz +share/man/man8/zpool-initialize.8.gz +share/man/man8/zpool-iostat.8.gz +share/man/man8/zpool-labelclear.8.gz +share/man/man8/zpool-list.8.gz +share/man/man8/zpool-offline.8.gz +share/man/man8/zpool-online.8.gz +share/man/man8/zpool-reguid.8.gz +share/man/man8/zpool-remove.8.gz +share/man/man8/zpool-reopen.8.gz +share/man/man8/zpool-replace.8.gz +share/man/man8/zpool-resilver.8.gz +share/man/man8/zpool-scrub.8.gz +share/man/man8/zpool-set.8.gz +share/man/man8/zpool-split.8.gz +share/man/man8/zpool-status.8.gz +share/man/man8/zpool-sync.8.gz +share/man/man8/zpool-trim.8.gz +share/man/man8/zpool-upgrade.8.gz +share/man/man8/zpool-wait.8.gz +share/man/man8/zpool.8.gz +share/man/man8/zpool_influxdb.8.gz +share/man/man8/zstream.8.gz +share/man/man8/zstreamdump.8.gz +share/pam-configs/zfs_key +%%TESTS%%share/zfs/common.sh +%%TESTS%%share/zfs/compatibility.d/2018 +%%TESTS%%share/zfs/compatibility.d/2019 +%%TESTS%%share/zfs/compatibility.d/2020 +%%TESTS%%share/zfs/compatibility.d/2021 +%%TESTS%%share/zfs/compatibility.d/compat-2018 +%%TESTS%%share/zfs/compatibility.d/compat-2019 +%%TESTS%%share/zfs/compatibility.d/compat-2020 +%%TESTS%%share/zfs/compatibility.d/compat-2021 +%%TESTS%%share/zfs/compatibility.d/freebsd-11.0 +%%TESTS%%share/zfs/compatibility.d/freebsd-11.1 +%%TESTS%%share/zfs/compatibility.d/freebsd-11.2 +%%TESTS%%share/zfs/compatibility.d/freebsd-11.3 +%%TESTS%%share/zfs/compatibility.d/freebsd-11.4 +%%TESTS%%share/zfs/compatibility.d/freebsd-12.0 +%%TESTS%%share/zfs/compatibility.d/freebsd-12.1 +%%TESTS%%share/zfs/compatibility.d/freebsd-12.2 +%%TESTS%%share/zfs/compatibility.d/freebsd-12.3 +%%TESTS%%share/zfs/compatibility.d/freebsd-12.4 +%%TESTS%%share/zfs/compatibility.d/freebsd-13.0 +%%TESTS%%share/zfs/compatibility.d/freebsd-13.1 +%%TESTS%%share/zfs/compatibility.d/freebsd-13.2 +%%TESTS%%share/zfs/compatibility.d/freenas-11.0 +%%TESTS%%share/zfs/compatibility.d/freenas-11.1 +%%TESTS%%share/zfs/compatibility.d/freenas-11.2 +%%TESTS%%share/zfs/compatibility.d/freenas-11.3 +%%TESTS%%share/zfs/compatibility.d/freenas-9.10.2 +%%TESTS%%share/zfs/compatibility.d/grub2 +%%TESTS%%share/zfs/compatibility.d/openzfs-2.0-freebsd +%%TESTS%%share/zfs/compatibility.d/openzfs-2.0-linux +%%TESTS%%share/zfs/compatibility.d/openzfs-2.1-freebsd +%%TESTS%%share/zfs/compatibility.d/openzfs-2.1-linux +%%TESTS%%share/zfs/compatibility.d/openzfs-2.2 +%%TESTS%%share/zfs/compatibility.d/openzfs-2.2-freebsd +%%TESTS%%share/zfs/compatibility.d/openzfs-2.2-linux +%%TESTS%%share/zfs/compatibility.d/openzfsonosx-1.7.0 +%%TESTS%%share/zfs/compatibility.d/openzfsonosx-1.8.1 +%%TESTS%%share/zfs/compatibility.d/openzfsonosx-1.9.3 +%%TESTS%%share/zfs/compatibility.d/openzfsonosx-1.9.4 +%%TESTS%%share/zfs/compatibility.d/truenas-12.0 +%%TESTS%%share/zfs/compatibility.d/ubuntu-18.04 +%%TESTS%%share/zfs/compatibility.d/ubuntu-20.04 +%%TESTS%%share/zfs/compatibility.d/ubuntu-22.04 +%%TESTS%%share/zfs/compatibility.d/zol-0.6.1 +%%TESTS%%share/zfs/compatibility.d/zol-0.6.4 +%%TESTS%%share/zfs/compatibility.d/zol-0.6.5 +%%TESTS%%share/zfs/compatibility.d/zol-0.7 +%%TESTS%%share/zfs/compatibility.d/zol-0.8 +%%TESTS%%share/zfs/runfiles/common.run +%%TESTS%%share/zfs/runfiles/freebsd.run +%%TESTS%%share/zfs/runfiles/linux.run +%%TESTS%%share/zfs/runfiles/longevity.run +%%TESTS%%share/zfs/runfiles/perf-regression.run +%%TESTS%%share/zfs/runfiles/sanity.run +%%TESTS%%share/zfs/runfiles/sunos.run +%%TESTS%%share/zfs/test-runner/bin/test-runner.py +%%TESTS%%share/zfs/test-runner/bin/zts-report.py +%%TESTS%%share/zfs/test-runner/include/logapi.shlib +%%TESTS%%share/zfs/zfs-helpers.sh +%%TESTS%%share/zfs/zfs-tests.sh +%%TESTS%%share/zfs/zfs-tests/bin/badsend +%%TESTS%%share/zfs/zfs-tests/bin/blake3_test +%%TESTS%%share/zfs/zfs-tests/bin/btree_test +%%TESTS%%share/zfs/zfs-tests/bin/chg_usr_exec +%%TESTS%%share/zfs/zfs-tests/bin/cp_files +%%TESTS%%share/zfs/zfs-tests/bin/ctime +%%TESTS%%share/zfs/zfs-tests/bin/dir_rd_update +%%TESTS%%share/zfs/zfs-tests/bin/dosmode_readonly_write +%%TESTS%%share/zfs/zfs-tests/bin/draid +%%TESTS%%share/zfs/zfs-tests/bin/edonr_test +%%TESTS%%share/zfs/zfs-tests/bin/ereports +%%TESTS%%share/zfs/zfs-tests/bin/file_append +%%TESTS%%share/zfs/zfs-tests/bin/file_check +%%TESTS%%share/zfs/zfs-tests/bin/file_trunc +%%TESTS%%share/zfs/zfs-tests/bin/file_write +%%TESTS%%share/zfs/zfs-tests/bin/get_diff +%%TESTS%%share/zfs/zfs-tests/bin/largest_file +%%TESTS%%share/zfs/zfs-tests/bin/libzfs_input_check +%%TESTS%%share/zfs/zfs-tests/bin/mkbusy +%%TESTS%%share/zfs/zfs-tests/bin/mkfile +%%TESTS%%share/zfs/zfs-tests/bin/mkfiles +%%TESTS%%share/zfs/zfs-tests/bin/mktree +%%TESTS%%share/zfs/zfs-tests/bin/mmap_exec +%%TESTS%%share/zfs/zfs-tests/bin/mmap_seek +%%TESTS%%share/zfs/zfs-tests/bin/mmap_sync +%%TESTS%%share/zfs/zfs-tests/bin/mmapwrite +%%TESTS%%share/zfs/zfs-tests/bin/nvlist_to_lua +%%TESTS%%share/zfs/zfs-tests/bin/randwritecomp +%%TESTS%%share/zfs/zfs-tests/bin/readmmap +%%TESTS%%share/zfs/zfs-tests/bin/rename_dir +%%TESTS%%share/zfs/zfs-tests/bin/rm_lnkcnt_zero_file +%%TESTS%%share/zfs/zfs-tests/bin/send_doall +%%TESTS%%share/zfs/zfs-tests/bin/sha2_test +%%TESTS%%share/zfs/zfs-tests/bin/skein_test +%%TESTS%%share/zfs/zfs-tests/bin/stride_dd +%%TESTS%%share/zfs/zfs-tests/bin/suid_write_to_file +%%TESTS%%share/zfs/zfs-tests/bin/threadsappend +%%TESTS%%share/zfs/zfs-tests/bin/truncate_test +%%TESTS%%share/zfs/zfs-tests/bin/zfs_diff-socket +%%TESTS%%share/zfs/zfs-tests/callbacks/zfs_dbgmsg.ksh +%%TESTS%%share/zfs/zfs-tests/callbacks/zfs_dmesg.ksh +%%TESTS%%share/zfs/zfs-tests/callbacks/zfs_failsafe.ksh +%%TESTS%%share/zfs/zfs-tests/callbacks/zfs_mmp.ksh +%%TESTS%%share/zfs/zfs-tests/include/blkdev.shlib +%%TESTS%%share/zfs/zfs-tests/include/commands.cfg +%%TESTS%%share/zfs/zfs-tests/include/default.cfg +%%TESTS%%share/zfs/zfs-tests/include/libtest.shlib +%%TESTS%%share/zfs/zfs-tests/include/math.shlib +%%TESTS%%share/zfs/zfs-tests/include/properties.shlib +%%TESTS%%share/zfs/zfs-tests/include/tunables.cfg +%%TESTS%%share/zfs/zfs-tests/include/zpool_script.shlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/acl.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/acl_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/off/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/off/dosmode.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/off/posixmode.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/off/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/posix-sa/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/posix-sa/posix_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/posix-sa/posix_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/posix-sa/posix_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/posix-sa/posix_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/posix-sa/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/posix/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/posix/posix_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/posix/posix_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/posix/posix_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/posix/posix_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/acl/posix/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_010_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_011_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_012_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_013_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_014_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/alloc_class_015_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/alloc_class/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/append/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/append/file_append.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/append/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/append/threadsappend_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/arc/arcstats_runtime_tuning.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/arc/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/arc/dbufstats_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/arc/dbufstats_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/arc/dbufstats_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/arc/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/atime/atime.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/atime/atime_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/atime/atime_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/atime/atime_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/atime/atime_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/atime/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/atime/root_atime_off.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/atime/root_atime_on.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/atime/root_relatime_on.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/atime/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/block_cloning/block_cloning.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/block_cloning/block_cloning_copyfilerange.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/block_cloning/block_cloning_copyfilerange_cross_dataset.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/block_cloning/block_cloning_copyfilerange_fallback.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/block_cloning/block_cloning_copyfilerange_fallback_same_txg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/block_cloning/block_cloning_copyfilerange_partial.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/block_cloning/block_cloning_disabled_copyfilerange.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/block_cloning/block_cloning_disabled_ficlone.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/block_cloning/block_cloning_disabled_ficlonerange.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/block_cloning/block_cloning_ficlone.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/block_cloning/block_cloning_ficlonerange.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/block_cloning/block_cloning_ficlonerange_partial.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/block_cloning/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/block_cloning/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/bootfs/bootfs_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/bootfs/bootfs_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/bootfs/bootfs_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/bootfs/bootfs_004_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/bootfs/bootfs_005_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/bootfs/bootfs_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/bootfs/bootfs_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/bootfs/bootfs_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/bootfs/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/bootfs/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/btree/btree_negative.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/btree/btree_positive.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cache.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cache.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cache_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cache_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cache_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cache_004_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cache_005_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cache_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cache_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cache_008_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cache_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cache_010_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cache_011_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cache_012_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cache/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cachefile/cachefile.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cachefile/cachefile.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cachefile/cachefile_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cachefile/cachefile_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cachefile/cachefile_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cachefile/cachefile_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cachefile/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cachefile/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/case_all_values.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/casenorm.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/casenorm.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/insensitive_formd_delete.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/insensitive_formd_lookup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/insensitive_none_delete.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/insensitive_none_lookup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/mixed_create_failure.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/mixed_formd_delete.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/mixed_formd_lookup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/mixed_formd_lookup_ci.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/mixed_none_delete.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/mixed_none_lookup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/mixed_none_lookup_ci.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/norm_all_values.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/sensitive_formd_delete.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/sensitive_formd_lookup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/sensitive_none_delete.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/sensitive_none_lookup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/casenorm/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/channel_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.args_to_lua.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.args_to_lua.out +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.args_to_lua.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.divide_by_zero.err +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.divide_by_zero.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.divide_by_zero.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.exists.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.exists.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.integer_illegal.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.integer_overflow.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.language_functions_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.language_functions_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.large_prog.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.large_prog.out +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.large_prog.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.lib_base.lua +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.lib_coroutine.lua +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.lib_strings.lua +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.lib_table.lua +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.libraries.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.memory_limit.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.nested_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.nested_neg.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.nested_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.nested_pos.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.nvlist_to_lua.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.recursive.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.recursive_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.recursive_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.return_large.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.return_large.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.return_nvlist_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.return_nvlist_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.return_recursive_table.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.return_recursive_table.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.stack_gsub.err +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.stack_gsub.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.stack_gsub.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.timeout.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/lua_core/tst.timeout.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.copy.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.copy.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.create.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.create.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.destroy_fs.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.destroy_snap.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_count_and_limit.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_index_props.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_index_props.out +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_index_props.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_mountpoint.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_number_props.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_number_props.out +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_number_props.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_string_props.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_string_props.out +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_string_props.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_type.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_userquota.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_written.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.inherit.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.list_bookmarks.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.list_children.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.list_clones.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.list_holds.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.list_snapshots.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.list_system_props.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.list_user_props.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.parse_args_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.promote_conflict.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.promote_conflict.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.promote_multiple.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.promote_simple.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.rollback_mult.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.rollback_one.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.set_props.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.set_props.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.snapshot_destroy.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.snapshot_destroy.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.snapshot_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.snapshot_neg.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.snapshot_recursive.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.snapshot_recursive.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.snapshot_rename.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.snapshot_rename.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.snapshot_simple.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.snapshot_simple.zcp +%%TESTS%%share/zfs/zfs-tests/tests/functional/channel_program/synctask_core/tst.terminate_by_signal.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/chattr/chattr_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/chattr/chattr_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/chattr/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/chattr/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/checksum/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/checksum/default.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/checksum/filetest_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/checksum/filetest_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/checksum/run_blake3_test.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/checksum/run_edonr_test.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/checksum/run_sha2_test.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/checksum/run_skein_test.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/checksum/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/clean_mirror/clean_mirror_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/clean_mirror/clean_mirror_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/clean_mirror/clean_mirror_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/clean_mirror/clean_mirror_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/clean_mirror/clean_mirror_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/clean_mirror/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/clean_mirror/default.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/clean_mirror/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/cli_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_args_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_args_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_backup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_block_size_histogram.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_checksum.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_decompress.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_decompress_zstd.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_display_block.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_encrypted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_label_checksum.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_object_range_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_object_range_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_objset_id.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_recover.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zdb/zdb_recover_2.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs/zfs_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs/zfs_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs/zfs_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_bookmark/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_bookmark/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_bookmark/zfs_bookmark_cliargs.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_change-key/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_change-key/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key_child.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key_clones.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key_format.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key_inherit.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key_load.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key_location.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key_pbkdf2iters.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_008_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_009_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_010_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_deeply_nested.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_encrypted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_rm_nested.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_copies/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_copies/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies_004_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies_005_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/properties.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_008_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_009_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_010_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_011_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_012_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_013_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_014_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_crypt_combos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_dryrun.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_encrypted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_nomount.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_verbose.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_clone_livelist_condense_and_disable.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_clone_livelist_condense_races.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_clone_livelist_dedup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_005_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_006_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_010_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_011_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_012_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_013_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_014_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_015_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_016_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_clone_livelist.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_dev_removal.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_dev_removal_condense.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_diff/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_diff/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_changes.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_cliargs.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_encrypted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_mangle.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_timestamp.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_types.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_get/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_get/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_005_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_006_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_010_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_list_d.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_ids_to_path/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_ids_to_path/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_ids_to_path/zfs_ids_to_path_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_inherit/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_inherit/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_inherit/zfs_inherit_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_inherit/zfs_inherit_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_inherit/zfs_inherit_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_inherit/zfs_inherit_mountpoint.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_jail/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_jail/jail.conf +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_jail/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_jail/zfs_jail_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_load-key/HEXKEY +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_load-key/PASSPHRASE +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_load-key/RAWKEY +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_load-key/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_load-key/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key_all.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key_file.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key_https.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key_location.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key_noop.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key_recursive.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_009_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_010_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_011_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_012_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_013_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_014_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_all_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_all_fail.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_all_mountpoints.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_encrypted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_remount.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_test_race.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_multi_mount.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_program/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_program/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_program/zfs_program_json.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_promote/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_promote/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_006_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_encryptionroot.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_property/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_property/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_property/zfs_written_property_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/receive-o-x_props_aliases.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/receive-o-x_props_override.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_-e.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_-wR-encrypted-mix.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_004_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_005_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_009_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_010_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_011_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_012_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_013_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_014_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_015_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_016_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_compressed_corrective.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_corrective.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_from_encrypted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_from_zstd.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_large_block_corrective.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_new_props.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_raw.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_raw_-d.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_raw_incremental.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_to_encrypted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_receive/zstd_test_data.txt +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_004_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_005_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_009_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_010_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_011_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_012_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_013_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_014_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_encrypted_child.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_mountpoint.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_nounmount.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_to_encrypted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_reservation/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_reservation/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_reservation/zfs_reservation_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_reservation/zfs_reservation_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rollback/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rollback/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rollback/zfs_rollback.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rollback/zfs_rollback_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rollback/zfs_rollback_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rollback/zfs_rollback_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rollback/zfs_rollback_004_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_rollback/zfs_rollback_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send-b.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_004_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_encrypted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_encrypted_unloaded.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_raw.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_skip_missing.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_sparse.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/cache_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/cache_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/canmount_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/canmount_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/canmount_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/canmount_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/checksum_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/compression_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/mountpoint_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/mountpoint_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/mountpoint_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/onoffs_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/property_alias_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/readonly_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/reservation_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/ro_props_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/share_mount_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/snapdir_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/user_property_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/user_property_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/user_property_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/user_property_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/version_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/zfs_set_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/zfs_set_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/zfs_set_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/zfs_set_feature_activation.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/zfs_set_keylocation.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_set/zfs_set_nomount.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_008_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_009_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_010_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_011_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_012_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_013_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_concurrent_shares.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_snapshot/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_snapshot/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_004_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_005_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_008_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_sysfs/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_sysfs/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_sysfs/zfeature_set_unsupported.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_sysfs/zfs_get_unsupported.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_sysfs/zfs_set_unsupported.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_sysfs/zfs_sysfs_live.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_sysfs/zpool_get_unsupported.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_sysfs/zpool_set_unsupported.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unload-key/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unload-key/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unload-key/zfs_unload-key.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unload-key/zfs_unload-key_all.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unload-key/zfs_unload-key_recursive.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_008_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_all_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_nested.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_unload_keys.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unshare/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unshare/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_004_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_005_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_upgrade/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_upgrade/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade_006_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_wait/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_wait/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_wait/zfs_wait.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_wait/zfs_wait_deleteq.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zfs_wait/zfs_wait_getsubopt.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zhack/library.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zhack/zhack_label_repair_001.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zhack/zhack_label_repair_002.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zhack/zhack_label_repair_003.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zhack/zhack_label_repair_004.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool/zpool_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool/zpool_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool/zpool_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool/zpool_colors.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/add-o_ashift.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/add_nested_replacing_spare.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/add_prop_ashift.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_008_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_009_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_010_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_dryrun_output.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_attach/attach-o_ashift.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_attach/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_attach/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_attach/zpool_attach_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_clear/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_clear/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_clear/zpool_clear.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_clear/zpool_clear_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_clear/zpool_clear_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_clear/zpool_clear_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_clear/zpool_clear_readonly.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/create-o_ashift.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/draidcfg.gz +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create.shlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_009_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_010_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_011_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_012_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_014_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_015_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_016_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_017_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_018_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_019_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_020_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_021_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_022_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_023_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_024_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_crypt_combos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_draid_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_draid_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_draid_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_draid_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_dryrun_output.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_encrypted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_features_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_features_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_features_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_features_004_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_features_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_features_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_features_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_features_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_features_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_tempname.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_destroy/zpool_destroy.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_destroy/zpool_destroy_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_destroy/zpool_destroy_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_destroy/zpool_destroy_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_detach/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_detach/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_detach/zpool_detach_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_events/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_events/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_clear.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_clear_retained.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_cliargs.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_duplicates.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_errors.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_follow.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_poolname.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_expand/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_expand/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_export/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_export/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_export/zpool_export.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_export/zpool_export.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_export/zpool_export_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_export/zpool_export_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_export/zpool_export_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_export/zpool_export_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_get/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_get/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_get/vdev_get.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_get/vdev_get_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_004_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_parsable.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_history/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_history/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_history/zpool_history_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_history/zpool_history_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/cryptv0.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/missing_ivset.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/unclean_export.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_device_added.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_device_removed.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_device_replaced.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_mirror_attached.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_mirror_detached.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_paths_changed.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_shared_device.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/import_devices_missing.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/import_log_missing.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/import_paths_changed.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/import_rewind_config_changed.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/import_rewind_device_replaced.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_009_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_010_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_011_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_012_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_013_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_014_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_015_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_016_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_017_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_all_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_encrypted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_encrypted_load.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_errata3.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_errata4.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_features_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_features_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_features_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_hostid_changed.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_hostid_changed_cachefile.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_hostid_changed_cachefile_unclean_export.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_hostid_changed_unclean_export.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_missing_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_missing_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_missing_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_rename_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_attach_detach_add_remove.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_fault_export_import_online.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_import_export.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_offline_export_import_online.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_online_offline.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_split.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_start_and_cancel_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_start_and_cancel_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_suspend_resume.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_uninit.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_unsupported_vdevs.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_verify_checksums.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_verify_initialized.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_labelclear/labelclear.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_labelclear/zpool_labelclear_active.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_labelclear/zpool_labelclear_exported.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_labelclear/zpool_labelclear_removed.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_labelclear/zpool_labelclear_valid.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_offline/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_offline/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_offline/zpool_offline_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_offline/zpool_offline_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_offline/zpool_offline_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_online/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_online/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_online/zpool_online_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_online/zpool_online_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_remove/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_remove/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_remove/zpool_remove.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_remove/zpool_remove_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_remove/zpool_remove_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_remove/zpool_remove_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_reopen/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_reopen/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen.shlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen_006_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_replace/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_replace/replace-o_ashift.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_replace/replace_prop_ashift.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_replace/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_replace/zpool_replace_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_resilver/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_resilver/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_resilver/zpool_resilver.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_resilver/zpool_resilver_bad_args.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_resilver/zpool_resilver_concurrent.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_resilver/zpool_resilver_restart.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_error_scrub_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_error_scrub_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_error_scrub_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_error_scrub_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_encrypted_unloaded.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_multiple_copies.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_offline_device.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_print_repairing.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_set/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_set/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_set/user_property_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_set/user_property_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_set/vdev_set_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_set/zpool_set_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_set/zpool_set_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_set/zpool_set_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_set/zpool_set_ashift.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_set/zpool_set_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_set/zpool_set_features.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_split/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_split/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_cliargs.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_devices.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_dryrun_output.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_encryption.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_indirect.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_props.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_resilver.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_vdevs.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_wholedisk.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_status/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_status/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_status/zpool_status_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_status/zpool_status_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_status/zpool_status_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_status/zpool_status_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_status/zpool_status_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_status/zpool_status_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_status/zpool_status_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_status/zpool_status_features_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_sync/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_sync/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_sync/zpool_sync_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_sync/zpool_sync_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_attach_detach_add_remove.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_fault_export_import_online.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_import_export.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_multiple.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_offline_export_import_online.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_online_offline.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_partial.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_rate.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_rate_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_secure.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_split.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_start_and_cancel_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_start_and_cancel_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_suspend_resume.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_unsupported_vdevs.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_verify_checksums.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_verify_trimmed.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-broken-mirror1.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-broken-mirror2.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v10.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v11.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v12.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v13.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v14.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v15.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1mirror1.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1mirror2.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1mirror3.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1raidz1.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1raidz2.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1raidz3.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1stripe1.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1stripe2.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1stripe3.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2mirror1.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2mirror2.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2mirror3.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2raidz1.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2raidz2.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2raidz3.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2stripe1.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2stripe2.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2stripe3.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3hotspare1.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3hotspare2.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3hotspare3.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3mirror1.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3mirror2.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3mirror3.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz1.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz2.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz21.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz22.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz23.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz3.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3stripe1.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3stripe2.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3stripe3.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v4.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v5.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v6.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v7.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v8.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v9.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v999.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-vBROKEN.dat.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_005_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_006_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_009_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_features_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/scan/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/scan/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/scan/zpool_wait_rebuild.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/scan/zpool_wait_replace.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/scan/zpool_wait_replace_cancel.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/scan/zpool_wait_resilver.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/scan/zpool_wait_scrub_basic.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/scan/zpool_wait_scrub_cancel.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/scan/zpool_wait_scrub_flag.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait_discard.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait_freeing.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait_initialize_basic.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait_initialize_cancel.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait_initialize_flag.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait_multiple.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait_no_activity.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait_remove.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait_remove_cancel.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait_trim_basic.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait_trim_cancel.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait_trim_flag.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_root/zpool_wait/zpool_wait_usage.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/arc_summary_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/arc_summary_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/arcstat_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/misc.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zdb_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_allow_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_clone_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_create_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_destroy_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_get_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_inherit_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_mount_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_promote_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_receive_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_rename_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_rollback_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_send_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_set_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_share_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_snapshot_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_unallow_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_unmount_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_unshare_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zfs_upgrade_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zilstat_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_add_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_attach_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_clear_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_create_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_destroy_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_detach_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_export_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_get_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_history_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_import_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_import_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_offline_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_online_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_remove_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_replace_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_scrub_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_set_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_status_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_upgrade_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/misc/zpool_wait_privilege.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zfs_list/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zfs_list/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list_004_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list_005_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list_008_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_iostat/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_iostat/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_iostat/zpool_iostat_-c_disable.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_iostat/zpool_iostat_-c_homedir.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_iostat/zpool_iostat_-c_searchpath.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_iostat/zpool_iostat_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_iostat/zpool_iostat_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_iostat/zpool_iostat_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_iostat/zpool_iostat_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_iostat/zpool_iostat_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_list/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_list/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_list/zpool_list_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_list/zpool_list_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_status/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_status/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_status/zpool_status_-c_disable.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_status/zpool_status_-c_homedir.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_status/zpool_status_-c_searchpath.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cli_user/zpool_status/zpool_status_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/compression/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/compression/compress.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/compression/compress_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/compression/compress_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/compression/compress_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/compression/compress_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/compression/compress_zstd_bswap.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/compression/l2arc_compressed_arc.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/compression/l2arc_compressed_arc_disabled.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/compression/l2arc_encrypted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/compression/l2arc_encrypted_no_compressed_arc.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/compression/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/compression/testpool_zstd.tar.gz +%%TESTS%%share/zfs/zfs-tests/tests/functional/cp_files/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cp_files/cp_files_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/cp_files/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/crtime/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/crtime/crtime_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/crtime/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/ctime/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/ctime/ctime_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/ctime/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/deadman/deadman.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/deadman/deadman_ratelimit.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/deadman/deadman_sync.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/deadman/deadman_zio.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/delegate.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/delegate_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_allow_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_allow_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_allow_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_allow_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_allow_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_allow_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_allow_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_allow_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_allow_009_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_allow_010_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_allow_011_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_allow_012_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_unallow_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_unallow_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_unallow_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_unallow_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_unallow_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_unallow_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_unallow_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/delegate/zfs_unallow_008_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/devices/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/devices/devices.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/devices/devices_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/devices/devices_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/devices/devices_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/devices/devices_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/devices/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/dos_attributes/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/dos_attributes/read_dos_attrs_001.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/dos_attributes/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/dos_attributes/write_dos_attrs_001.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/events/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/events/events.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/events/events_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/events/events_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/events/events_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/events/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/events/zed_cksum_config.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/events/zed_cksum_reported.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/events/zed_fd_spill.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/events/zed_io_config.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/events/zed_rc_filter.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/exec/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/exec/exec_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/exec/exec_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/exec/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fadvise/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fadvise/fadvise_sequential.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fadvise/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fallocate/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fallocate/fallocate_prealloc.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fallocate/fallocate_punch-hole.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fallocate/fallocate_zero-range.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fallocate/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/auto_offline_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/auto_online_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/auto_online_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/auto_replace_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/auto_replace_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/auto_spare_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/auto_spare_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/auto_spare_ashift.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/auto_spare_multiple.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/auto_spare_shared.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/decompress_fault.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/decrypt_fault.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/fault.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/scrub_after_resilver.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/fault/zpool_status_-s.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/features/async_destroy/async_destroy_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/features/async_destroy/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/features/async_destroy/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/features/large_dnode/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/features/large_dnode/large_dnode_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/features/large_dnode/large_dnode_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/features/large_dnode/large_dnode_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/features/large_dnode/large_dnode_004_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/features/large_dnode/large_dnode_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/features/large_dnode/large_dnode_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/features/large_dnode/large_dnode_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/features/large_dnode/large_dnode_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/features/large_dnode/large_dnode_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/features/large_dnode/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/grow/grow.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/grow/grow_pool_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/grow/grow_replicas_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/history.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/history_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/history_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/history_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/history_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/history_005_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/history_006_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/history_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/history_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/history_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/history_010_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/history_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/i386.migratedpool.DAT.Z +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/i386.orig_history.txt +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/sparc.migratedpool.DAT.Z +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/sparc.orig_history.txt +%%TESTS%%share/zfs/zfs-tests/tests/functional/history/zfs-pool-v4.dat.Z +%%TESTS%%share/zfs/zfs-tests/tests/functional/hkdf/hkdf_test +%%TESTS%%share/zfs/zfs-tests/tests/functional/idmap_mount/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/idmap_mount/idmap_mount.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/idmap_mount/idmap_mount_001.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/idmap_mount/idmap_mount_002.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/idmap_mount/idmap_mount_003.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/idmap_mount/idmap_mount_004.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/idmap_mount/idmap_mount_005.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/idmap_mount/idmap_mount_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/idmap_mount/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/README.config +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/README.state +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config001.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config002.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config003.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config004.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config005.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config006.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config007.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config008.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config009.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config010.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config011.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config012.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config013.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config014.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config015.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config016.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config017.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config018.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config019.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config020.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config021.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config022.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config023.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/config024.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/inherit.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/inherit_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state001.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state002.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state003.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state004.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state005.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state006.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state007.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state008.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state009.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state010.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state011.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state012.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state013.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state014.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state015.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state016.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state017.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state018.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state019.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state020.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state021.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state022.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state023.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inheritance/state024.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inuse/inuse.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/inuse/inuse_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/inuse/inuse_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/inuse/inuse_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/inuse/inuse_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/inuse/inuse_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/inuse/inuse_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/inuse/inuse_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/inuse/inuse_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/inuse/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/io/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/io/io.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/io/io_uring.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/io/libaio.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/io/mmap.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/io/posixaio.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/io/psync.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/io/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/io/sync.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/l2arc/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/l2arc/l2arc.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/l2arc/l2arc_arcstats_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/l2arc/l2arc_l2miss_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/l2arc/l2arc_mfuonly_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/l2arc/persist_l2arc_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/l2arc/persist_l2arc_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/l2arc/persist_l2arc_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/l2arc/persist_l2arc_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/l2arc/persist_l2arc_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/l2arc/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/large_files/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/large_files/large_files_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/large_files/large_files_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/large_files/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/largest_pool/largest_pool.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/largest_pool/largest_pool_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/libzfs/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/libzfs/libzfs_input.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/libzfs/many_fds +%%TESTS%%share/zfs/zfs-tests/tests/functional/libzfs/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/limits/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/limits/filesystem_count.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/limits/filesystem_limit.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/limits/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/limits/snapshot_count.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/limits/snapshot_limit.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/link_count/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/link_count/link_count_001.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/link_count/link_count_root_inode.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/link_count/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/log_spacemap/log_spacemap_import_logs.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/migration.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/migration.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/migration_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/migration_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/migration_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/migration_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/migration_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/migration_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/migration_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/migration_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/migration_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/migration_010_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/migration_011_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/migration_012_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/migration/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmap/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmap/mmap.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmap/mmap_libaio_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmap/mmap_mixed.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmap/mmap_read_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmap/mmap_seek_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmap/mmap_sync_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmap/mmap_write_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmap/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/mmp.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/mmp.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/mmp_active_import.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/mmp_exported_import.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/mmp_hostid.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/mmp_inactive_import.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/mmp_interval.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/mmp_on_off.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/mmp_on_thread.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/mmp_on_uberblocks.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/mmp_on_zdb.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/mmp_reset_interval.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/mmp_write_distribution.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/mmp_write_uberblocks.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/multihost_history.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mmp/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mount/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mount/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mount/umount_001.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mount/umount_unlinked_drain.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mount/umountall_001.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mv_files/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mv_files/mv_files.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/mv_files/mv_files_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mv_files/mv_files_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mv_files/mv_files_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/mv_files/random_creation.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/mv_files/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/nestedfs/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/nestedfs/nestedfs_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/nestedfs/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/no_space/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/no_space/enospc.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/no_space/enospc_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/no_space/enospc_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/no_space/enospc_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/no_space/enospc_df.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/no_space/enospc_ganging.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/no_space/enospc_rm.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/no_space/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/nopwrite/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/nopwrite/nopwrite.shlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/nopwrite/nopwrite_copies.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/nopwrite/nopwrite_mtime.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/nopwrite/nopwrite_negative.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/nopwrite/nopwrite_promoted_clone.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/nopwrite/nopwrite_recsize.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/nopwrite/nopwrite_sync.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/nopwrite/nopwrite_varying_compression.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/nopwrite/nopwrite_volume.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/nopwrite/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/online_offline/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/online_offline/online_offline.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/online_offline/online_offline_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/online_offline/online_offline_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/online_offline/online_offline_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/online_offline/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pam/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pam/pam_basic.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pam/pam_change_unmounted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pam/pam_nounmount.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pam/pam_recursive.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pam/pam_short_password.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pam/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pam/utilities.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_after_rewind.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_big_rewind.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_capacity.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_conf_change.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_discard.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_discard_busy.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_discard_many.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_indirect.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_invalid.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_lun_expsz.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_open.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_removal.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_rewind.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_ro_rewind.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_sm_scale.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_twice.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_vdev_add.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_zdb.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/checkpoint_zhack_feat.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/pool_checkpoint.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_checkpoint/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_names/pool_names_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pool_names/pool_names_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/poolversion/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/poolversion/poolversion_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/poolversion/poolversion_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/poolversion/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/privilege/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/privilege/privilege_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/privilege/privilege_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/privilege/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/procfs/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/procfs/pool_state.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/procfs/procfs_list_basic.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/procfs/procfs_list_concurrent_readers.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/procfs/procfs_list_stale_read.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/procfs/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectid_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectid_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectid_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectquota.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectquota_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectquota_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectquota_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectquota_004_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectquota_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectquota_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectquota_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectquota_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectquota_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectquota_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectspace_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectspace_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectspace_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projectspace_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projecttree_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projecttree_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/projecttree_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/projectquota/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/pyzfs/pyzfs_unittest.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/quota/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/quota/quota.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/quota/quota.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/quota/quota_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/quota/quota_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/quota/quota_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/quota/quota_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/quota/quota_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/quota/quota_006_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/quota/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/raidz/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/raidz/raidz_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/raidz/raidz_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/raidz/raidz_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/raidz/raidz_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/raidz/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_compressed.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_contents.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_deleted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_disabled_feature.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_embedded.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_holes.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_incrementals.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_largeblocks.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_many_clones.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_mixed_recsize.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_mounts.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_negative.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_origin.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_panic.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_props.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_resume.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_size.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/redacted_volume.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redacted_send/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_draid.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_draid1.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_draid2.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_draid3.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_draid_damaged1.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_draid_damaged2.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_draid_spare1.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_draid_spare2.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_draid_spare3.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_mirror.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_raidz.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_raidz1.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_raidz2.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_raidz3.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/redundancy_stripe.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/redundancy/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refquota/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refquota/refquota_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refquota/refquota_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refquota/refquota_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refquota/refquota_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refquota/refquota_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refquota/refquota_006_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refquota/refquota_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refquota/refquota_008_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refquota/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refreserv/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refreserv/refreserv.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/refreserv/refreserv_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refreserv/refreserv_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refreserv/refreserv_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refreserv/refreserv_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refreserv/refreserv_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refreserv/refreserv_multi_raidz.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refreserv/refreserv_raidz.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/refreserv/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_all_vdev.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_cancel.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_check_space.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_condense_export.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_multiple_indirection.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_nopwrite.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_remap_deadlists.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_reservation.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_resume_export.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_sanity.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_add.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_create_fs.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_dedup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_errors.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_export.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_faulted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_ganging.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_indirect.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_remove.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_scrub.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_send.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_send_recv.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_snapshot.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_write.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/removal_with_zdb.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/remove_attach_mirror.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/remove_expanded.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/remove_indirect.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/remove_mirror.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/remove_mirror_sanity.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/removal/remove_raidz.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rename_dirs/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rename_dirs/rename_dirs_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rename_dirs/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/renameat2/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/renameat2/renameat2_exchange.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/renameat2/renameat2_noreplace.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/renameat2/renameat2_whiteout.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/renameat2/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/attach_import.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/attach_multiple.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/attach_rebuild.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/attach_resilver.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/detach.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/rebuild_disabled_feature.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/rebuild_multiple.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/rebuild_raidz.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/replace_import.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/replace_rebuild.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/replace_resilver.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/replacement.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/resilver_restart_001.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/resilver_restart_002.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/scrub_cancel.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/replacement/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation.shlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_010_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_011_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_012_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_013_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_014_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_015_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_016_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_017_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_018_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_019_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_020_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_021_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/reservation_022_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/reservation/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rootpool/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rootpool/rootpool_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rootpool/rootpool_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rootpool/rootpool_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rootpool/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/dedup.zsend.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/dedup_encrypted_zvol.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/dedup_encrypted_zvol.zsend.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/fs.tar.gz +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/recv_dedup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/recv_dedup_encrypted_zvol.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_010_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_011_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_012_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_013_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_014_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_016_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_019_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_020_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_021_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_022_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_024_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_025_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_026_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_027_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_028_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_029_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_030_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/rsend_031_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-L_toggle.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-c_embedded_blocks.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-c_incremental.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-c_lz4_disabled.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-c_mixed_compression.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-c_props.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-c_recv_dedup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-c_recv_lz4_disabled.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-c_resume.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-c_stream_size_estimate.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-c_verify_contents.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-c_verify_ratio.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-c_volume.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-c_zstream_recompress.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-c_zstreamdump.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-cpL_varied_recsize.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send-wR_encrypted_zvol.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_doall.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_encrypted_files.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_encrypted_freeobjects.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_encrypted_hierarchy.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_encrypted_incremental.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_encrypted_props.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_encrypted_truncated_files.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_freeobjects.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_holds.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_hole_birth.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_invalid.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_mixed_raw.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_partial_dataset.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_raw_ashift.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_raw_large_blocks.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_raw_spill_block.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_realloc_dnode_size.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_realloc_encrypted_files.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_realloc_files.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/send_spill_block.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/rsend/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/scrub_mirror/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/scrub_mirror/default.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/scrub_mirror/scrub_mirror_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/scrub_mirror/scrub_mirror_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/scrub_mirror/scrub_mirror_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/scrub_mirror/scrub_mirror_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/scrub_mirror/scrub_mirror_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/scrub_mirror/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_008_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_009_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_010_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_011_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_012_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_013_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_014_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_015_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_016_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_replay_fs_001.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_replay_fs_002.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/slog/slog_replay_volume.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/clone_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/rollback_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/rollback_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/rollback_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_010_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_011_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_012_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_013_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_014_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_015_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_016_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_017_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapshot/snapshot_018_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapused/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapused/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapused/snapused.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapused/snapused_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapused/snapused_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapused/snapused_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapused/snapused_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/snapused/snapused_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/sparse/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/sparse/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/sparse/sparse.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/sparse/sparse_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/stat/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/stat/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/stat/stat_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/suid/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/suid/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/suid/suid_write_to_none.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/suid/suid_write_to_sgid.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/suid/suid_write_to_suid.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/suid/suid_write_to_suid_sgid.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/suid/suid_write_zil_replay.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/trim/autotrim_config.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/trim/autotrim_integrity.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/trim/autotrim_trim_integrity.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/trim/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/trim/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/trim/trim.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/trim/trim.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/trim/trim_config.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/trim/trim_integrity.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/trim/trim_l2arc.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/truncate/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/truncate/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/truncate/truncate.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/truncate/truncate_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/truncate/truncate_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/truncate/truncate_timestamps.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/upgrade/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/upgrade/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/upgrade/upgrade_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/upgrade/upgrade_projectquota_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/upgrade/upgrade_readonly_pool.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/upgrade/upgrade_userobj_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/user_namespace/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/user_namespace/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/user_namespace/user_namespace.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/user_namespace/user_namespace_001.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/user_namespace/user_namespace_002.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/user_namespace/user_namespace_003.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/user_namespace/user_namespace_004.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/user_namespace/user_namespace_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/13709_reproducer.bz2 +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/groupspace_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/groupspace_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/groupspace_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota_005_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota_009_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota_010_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota_011_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota_012_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota_013_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userquota_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userspace_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userspace_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userspace_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userspace_encrypted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userspace_encrypted_13709.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/userquota/userspace_send_encrypted.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/vdev_zaps/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/vdev_zaps/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/vdev_zaps/vdev_zaps.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/vdev_zaps/vdev_zaps_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/vdev_zaps/vdev_zaps_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/vdev_zaps/vdev_zaps_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/vdev_zaps/vdev_zaps_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/vdev_zaps/vdev_zaps_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/vdev_zaps/vdev_zaps_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/vdev_zaps/vdev_zaps_007_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/write_dirs/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/write_dirs/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/write_dirs/write_dirs_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/write_dirs/write_dirs_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_002_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_007_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_008_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_009_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_010_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_011_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_012_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_013_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/xattr/xattr_compat.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zpool_influxdb/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zpool_influxdb/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zpool_influxdb/zpool_influxdb.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_ENOSPC/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_ENOSPC/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_ENOSPC/zvol_ENOSPC.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_ENOSPC/zvol_ENOSPC_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_cli/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_cli/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_cli/zvol_cli.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_cli/zvol_cli_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_cli/zvol_cli_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_cli/zvol_cli_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_common.shlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_001_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_003_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_005_neg.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_common.kshlib +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_fua.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_hierarchy.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_rename_inuse.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_snapdev.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_trim.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_volmode.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_zil.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_stress/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_stress/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_stress/zvol_stress.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_swap/cleanup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_swap/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_swap/zvol_swap.cfg +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_swap/zvol_swap_001_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_swap/zvol_swap_002_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_swap/zvol_swap_003_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_swap/zvol_swap_004_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_swap/zvol_swap_005_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/functional/zvol/zvol_swap/zvol_swap_006_pos.ksh +%%TESTS%%share/zfs/zfs-tests/tests/perf/fio/mkfiles.fio +%%TESTS%%share/zfs/zfs-tests/tests/perf/fio/random_reads.fio +%%TESTS%%share/zfs/zfs-tests/tests/perf/fio/random_readwrite.fio +%%TESTS%%share/zfs/zfs-tests/tests/perf/fio/random_readwrite_fixed.fio +%%TESTS%%share/zfs/zfs-tests/tests/perf/fio/random_writes.fio +%%TESTS%%share/zfs/zfs-tests/tests/perf/fio/sequential_reads.fio +%%TESTS%%share/zfs/zfs-tests/tests/perf/fio/sequential_readwrite.fio +%%TESTS%%share/zfs/zfs-tests/tests/perf/fio/sequential_writes.fio +%%TESTS%%share/zfs/zfs-tests/tests/perf/nfs-sample.cfg +%%TESTS%%share/zfs/zfs-tests/tests/perf/perf.shlib +%%TESTS%%share/zfs/zfs-tests/tests/perf/regression/random_reads.ksh +%%TESTS%%share/zfs/zfs-tests/tests/perf/regression/random_readwrite.ksh +%%TESTS%%share/zfs/zfs-tests/tests/perf/regression/random_readwrite_fixed.ksh +%%TESTS%%share/zfs/zfs-tests/tests/perf/regression/random_writes.ksh +%%TESTS%%share/zfs/zfs-tests/tests/perf/regression/random_writes_zil.ksh +%%TESTS%%share/zfs/zfs-tests/tests/perf/regression/sequential_reads.ksh +%%TESTS%%share/zfs/zfs-tests/tests/perf/regression/sequential_reads_arc_cached.ksh +%%TESTS%%share/zfs/zfs-tests/tests/perf/regression/sequential_reads_arc_cached_clone.ksh +%%TESTS%%share/zfs/zfs-tests/tests/perf/regression/sequential_reads_dbuf_cached.ksh +%%TESTS%%share/zfs/zfs-tests/tests/perf/regression/sequential_writes.ksh +%%TESTS%%share/zfs/zfs-tests/tests/perf/regression/setup.ksh +%%TESTS%%share/zfs/zfs-tests/tests/perf/scripts/prefetch_io.sh +%%TESTS%%share/zfs/zfs.sh +%%TESTS%%share/zfs/zimport.sh +%%TESTS%%share/zfs/zloop.sh diff --git a/filesystems/p5-Filesys-Statvfs/Makefile b/filesystems/p5-Filesys-Statvfs/Makefile new file mode 100644 index 000000000000..cb5c0edb80b7 --- /dev/null +++ b/filesystems/p5-Filesys-Statvfs/Makefile @@ -0,0 +1,15 @@ +PORTNAME= Filesys-Statvfs +PORTVERSION= 0.82 +PORTREVISION= 1 +CATEGORIES= filesystems sysutils perl5 +MASTER_SITES= CPAN +PKGNAMEPREFIX= p5- + +MAINTAINER= pirzyk@FreeBSD.org +COMMENT= Perl extension for statvfs() and fstatvfs() +WWW= https://metacpan.org/release/Filesys-Statvfs + +USES= perl5 +USE_PERL5= configure + +.include <bsd.port.mk> diff --git a/filesystems/p5-Filesys-Statvfs/distinfo b/filesystems/p5-Filesys-Statvfs/distinfo new file mode 100644 index 000000000000..d86ff35b399a --- /dev/null +++ b/filesystems/p5-Filesys-Statvfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905189 +SHA256 (Filesys-Statvfs-0.82.tar.gz) = dc9494ca17af2b5226d50313efc5f02f3ff268d71c653cdb39bdd65fb3cf916a +SIZE (Filesys-Statvfs-0.82.tar.gz) = 3964 diff --git a/filesystems/p5-Filesys-Statvfs/pkg-descr b/filesystems/p5-Filesys-Statvfs/pkg-descr new file mode 100644 index 000000000000..af468cd421ee --- /dev/null +++ b/filesystems/p5-Filesys-Statvfs/pkg-descr @@ -0,0 +1,13 @@ +Interface for statvfs() and fstatvfs() + +Unless you need access to the bsize, flag, and namemax values, you should +probably look at using Filesys::DfPortable or Filesys::Df instead. + +The statvfs() and fstatvfs() functions will return a list of values, or +will return undef and set $! if there was an error. + +The values returned are described in the statvfs header or the statvfs() +man page. + +The module assumes that if you have statvfs(), fstatvfs() will also be +available. diff --git a/filesystems/p5-Filesys-Statvfs/pkg-plist b/filesystems/p5-Filesys-Statvfs/pkg-plist new file mode 100644 index 000000000000..4cd96e0eafc2 --- /dev/null +++ b/filesystems/p5-Filesys-Statvfs/pkg-plist @@ -0,0 +1,3 @@ +%%SITE_ARCH%%/Filesys/Statvfs.pm +%%SITE_ARCH%%/auto/Filesys/Statvfs/Statvfs.so +%%PERL5_MAN3%%/Filesys::Statvfs.3.gz diff --git a/filesystems/p5-Fuse/Makefile b/filesystems/p5-Fuse/Makefile new file mode 100644 index 000000000000..d26754813ba8 --- /dev/null +++ b/filesystems/p5-Fuse/Makefile @@ -0,0 +1,23 @@ +PORTNAME= Fuse +PORTVERSION= 0.16.1 +PORTREVISION= 2 +CATEGORIES= filesystems sysutils perl5 +MASTER_SITES= CPAN +MASTER_SITE_SUBDIR= CPAN:DPATES +PKGNAMEPREFIX= p5- + +MAINTAINER= perl@FreeBSD.org +COMMENT= Write filesystems in Perl using FUSE +WWW= https://metacpan.org/release/Fuse + +LICENSE= LGPL21 + +USES= perl5 fuse pkgconfig +USE_PERL5= configure + +PORTSCOUT= limit:^[0-9\.]*$$ + +post-install: + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/${SITE_ARCH_REL}/auto/Fuse/Fuse.so + +.include <bsd.port.mk> diff --git a/filesystems/p5-Fuse/distinfo b/filesystems/p5-Fuse/distinfo new file mode 100644 index 000000000000..a779be4f8ec4 --- /dev/null +++ b/filesystems/p5-Fuse/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905168 +SHA256 (Fuse-0.16.1.tar.gz) = 13a2e923f247781acb79259f4e57ee62aa392e36a6df110fa56e1970010d1127 +SIZE (Fuse-0.16.1.tar.gz) = 43004 diff --git a/filesystems/p5-Fuse/pkg-descr b/filesystems/p5-Fuse/pkg-descr new file mode 100644 index 000000000000..06ddb4bde5c6 --- /dev/null +++ b/filesystems/p5-Fuse/pkg-descr @@ -0,0 +1,14 @@ +This lets you implement filesystems in perl, through the FUSE +(Filesystem in USErspace) kernel/lib interface. + +FUSE expects you to implement callbacks for the various functions. + +In the following definitions, "errno" can be 0 (for a success), +-EINVAL, -ENOENT, -EONFIRE, any integer less than 1 really. + +You can import standard error constants by saying something like "use +POSIX qw(EDOTDOT ENOANO);". + +Every constant you need (file types, open() flags, error values, etc) +can be imported either from POSIX or from Fcntl, often both. See their +respective documentations, for more information. diff --git a/filesystems/p5-Fuse/pkg-plist b/filesystems/p5-Fuse/pkg-plist new file mode 100644 index 000000000000..8125fb7a462a --- /dev/null +++ b/filesystems/p5-Fuse/pkg-plist @@ -0,0 +1,4 @@ +%%SITE_ARCH%%/Fuse.pm +%%SITE_ARCH%%/auto/Fuse/Fuse.so +%%SITE_ARCH%%/auto/Fuse/autosplit.ix +%%PERL5_MAN3%%/Fuse.3.gz diff --git a/filesystems/pear-Horde_Vfs/Makefile b/filesystems/pear-Horde_Vfs/Makefile new file mode 100644 index 000000000000..a119b27240b5 --- /dev/null +++ b/filesystems/pear-Horde_Vfs/Makefile @@ -0,0 +1,24 @@ +PORTNAME= Horde_Vfs +PORTVERSION= 2.4.2 +CATEGORIES= filesystems sysutils www pear +PKGNAMEPREFIX= ${PEAR_PKGNAMEPREFIX} + +MAINTAINER= horde@FreeBSD.org +COMMENT= Horde Virtual File System API +WWW= https://pear.horde.org + +USE_HORDE_RUN= Horde_Exception \ + Horde_Translation \ + Horde_Util + +OPTIONS_DEFINE= FTP +FTP_DESC= Depend on FTP PHP extension + +USES= horde + +FTP_USES= php +FTP_USE= PHP=ftp + +CONFLICTS_INSTALL= php*-pear-Horde_Vfs # bin/horde-vfs + +.include <bsd.port.mk> diff --git a/filesystems/pear-Horde_Vfs/distinfo b/filesystems/pear-Horde_Vfs/distinfo new file mode 100644 index 000000000000..f93c76e1c8b9 --- /dev/null +++ b/filesystems/pear-Horde_Vfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1641590948 +SHA256 (Horde/Horde_Vfs-2.4.2.tgz) = dcfdf4653b4d4f03ee24e4c686b8e9149aba7c7ccec56b60d51a79916a37a836 +SIZE (Horde/Horde_Vfs-2.4.2.tgz) = 75828 diff --git a/filesystems/pear-Horde_Vfs/pkg-descr b/filesystems/pear-Horde_Vfs/pkg-descr new file mode 100644 index 000000000000..dd4d38627a97 --- /dev/null +++ b/filesystems/pear-Horde_Vfs/pkg-descr @@ -0,0 +1,11 @@ +This package provides a Virtual File System API, with backends for: +* SQL +* FTP +* Local filesystems +* Hybrid SQL and filesystem +* Samba +* SSH2/SFTP +* IMAP (Kolab) + +Reading, writing and listing of files are all supported, and there are both +object-based and array-based interfaces to directory listings. diff --git a/filesystems/pod/Makefile b/filesystems/pod/Makefile new file mode 100644 index 000000000000..c529f422b50e --- /dev/null +++ b/filesystems/pod/Makefile @@ -0,0 +1,21 @@ +PORTNAME= pod +PORTVERSION= 0.5.2 +PORTREVISION= 16 +CATEGORIES= filesystems audio +MASTER_SITES= SF/fuse${PORTNAME}/fuse${PORTNAME}/FUSEPod%20v${PORTVERSION} +PKGNAMEPREFIX= fusefs- +DISTNAME= fusepod-${PORTVERSION} + +MAINTAINER= ports@FreeBSD.org +COMMENT= FUSE-based filesystem for iPod +WWW= https://fusepod.sourceforge.net/ + +LIB_DEPENDS= libgpod.so:audio/libgpod\ + libtag.so:audio/taglib + +USES= compiler:c++11-lang fuse pkgconfig tar:bzip2 +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +PLIST_FILES= bin/fusepod share/man/man1/fusepod.1.gz + +.include <bsd.port.mk> diff --git a/filesystems/pod/distinfo b/filesystems/pod/distinfo new file mode 100644 index 000000000000..e4ce1b828068 --- /dev/null +++ b/filesystems/pod/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905181 +SHA256 (fusepod-0.5.2.tar.bz2) = 210d77cb2ec7701d4af681e63c4f52bc4d0c8cbfa493f55d3d9580e7106b857f +SIZE (fusepod-0.5.2.tar.bz2) = 80923 diff --git a/filesystems/pod/files/patch-configure b/filesystems/pod/files/patch-configure new file mode 100644 index 000000000000..2cf3daa10dd1 --- /dev/null +++ b/filesystems/pod/files/patch-configure @@ -0,0 +1,11 @@ +--- configure.orig Wed Aug 22 22:03:08 2007 ++++ configure Wed Aug 22 22:03:20 2007 +@@ -3455,7 +3455,7 @@ + taglib_LIBS=`$TAGLIB_CONFIG --libs` + fi + +-CPPFLAGS="$CPPFLAGS -Wall -O2 -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=25 $FUSE_CPPFLAGS $libgpod_CFLAGS $taglib_CFLAGS" ++CPPFLAGS="$CPPFLAGS -Wall -O2 -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=25 $FUSE_CFLAGS $libgpod_CFLAGS $taglib_CFLAGS" + LIBS="$FUSE_LIBS $libgpod_LIBS $taglib_LIBS" + + ac_config_files="$ac_config_files Makefile src/Makefile man/Makefile" diff --git a/filesystems/pod/files/patch-src_fusepod__ipod.h b/filesystems/pod/files/patch-src_fusepod__ipod.h new file mode 100644 index 000000000000..c0f147ea9465 --- /dev/null +++ b/filesystems/pod/files/patch-src_fusepod__ipod.h @@ -0,0 +1,12 @@ +--- src/fusepod_ipod.h.orig 2021-08-02 02:27:26 UTC ++++ src/fusepod_ipod.h +@@ -15,9 +15,7 @@ + #ifndef _FUSEPOD_IPOD_H_ + #define _FUSEPOD_IPOD_H_ + +-extern "C" { + #include <gpod/itdb.h> +-} + + #include <string> + #include <cstring> diff --git a/filesystems/pod/files/patch-src_fusepod__util.h b/filesystems/pod/files/patch-src_fusepod__util.h new file mode 100644 index 000000000000..e4bb07a47865 --- /dev/null +++ b/filesystems/pod/files/patch-src_fusepod__util.h @@ -0,0 +1,10 @@ +--- src/fusepod_util.h.orig 2019-04-09 11:38:35 UTC ++++ src/fusepod_util.h +@@ -15,6 +15,7 @@ + #ifndef _FUSEPOD_UTIL_H_ + #define _FUSEPOD_UTIL_H_ + ++#include <strings.h> + #include <vector> + #include <string> + diff --git a/filesystems/pod/pkg-descr b/filesystems/pod/pkg-descr new file mode 100644 index 000000000000..9628c63574f1 --- /dev/null +++ b/filesystems/pod/pkg-descr @@ -0,0 +1,4 @@ +FUSEPod is a userspace filesystem which mounts your iPod into a directory +for easy browsing of your songs on your iPod. It features a configurable +directory layout, read/write support, read support for playlists and finds +where your iPod is. diff --git a/filesystems/progsreiserfs/Makefile b/filesystems/progsreiserfs/Makefile new file mode 100644 index 000000000000..77c84c817a49 --- /dev/null +++ b/filesystems/progsreiserfs/Makefile @@ -0,0 +1,44 @@ +PORTNAME= progsreiserfs +DISTVERSION= 0.3.1-rc8 +PORTREVISION= 8 +CATEGORIES= filesystems sysutils +MASTER_SITES= http://www.cgsecurity.org/ + +MAINTAINER= ports@FreeBSD.org +COMMENT= Utilities and library to manipulate ReiserFS partitions +WWW= https://reiserfs.osdn.org.ua + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +USES= libtool +USE_LDCONFIG= yes +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_ARGS= --disable-debug --disable-Werror +CFLAGS+= -Dgetopt_long_only=getopt_long + +EXTRA_PATCHES= ${FILESDIR}/extrapatch-progsreiserfs_libmisc_Makefile.in + +OPTIONS_DEFINE= NLS + +.include <bsd.port.options.mk> + +.if ${PORT_OPTIONS:MNLS} +USES+= gettext +CPPFLAGS+= -I${LOCALBASE}/include +LDFLAGS+= -L${LOCALBASE}/lib +.else +CONFIGURE_ARGS+=--disable-nls +.endif + +post-patch: + @${REINPLACE_CMD} '/_LDADD =/s/=/= $$(INTLLIBS)/' \ + ${WRKSRC}/demos/Makefile.in + @${REINPLACE_CMD} -e 's|sys/int_types.h|inttypes.h|' \ + ${WRKSRC}/libreiserfs/tools.c ${WRKSRC}/include/reiserfs/* + +post-install: + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/*.so + +.include <bsd.port.mk> diff --git a/filesystems/progsreiserfs/distinfo b/filesystems/progsreiserfs/distinfo new file mode 100644 index 000000000000..851742dec79c --- /dev/null +++ b/filesystems/progsreiserfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905181 +SHA256 (progsreiserfs-0.3.1-rc8.tar.gz) = 1473899a21df0679a32ebde5a35c158468a7e51a0cb6fd89d77c42bfde9b6399 +SIZE (progsreiserfs-0.3.1-rc8.tar.gz) = 399279 diff --git a/filesystems/progsreiserfs/files/extrapatch-progsreiserfs_libmisc_Makefile.in b/filesystems/progsreiserfs/files/extrapatch-progsreiserfs_libmisc_Makefile.in new file mode 100644 index 000000000000..b482ec8293dd --- /dev/null +++ b/filesystems/progsreiserfs/files/extrapatch-progsreiserfs_libmisc_Makefile.in @@ -0,0 +1,37 @@ +--- progsreiserfs/libmisc/Makefile.in.orig 2002-12-12 12:38:22 UTC ++++ progsreiserfs/libmisc/Makefile.in +@@ -110,7 +110,7 @@ am__quote = @am__quote@ + install_sh = @install_sh@ + + noinst_LTLIBRARIES = libmisc.la +-libmisc_la_SOURCES = tools.c getopt.c getopt1.c ++libmisc_la_SOURCES = tools.c getopt.c + + INCLUDES = -I$(top_srcdir)/include @INTLINCS@ + subdir = progsreiserfs/libmisc +@@ -121,7 +121,7 @@ LTLIBRARIES = $(noinst_LTLIBRARIES) + + libmisc_la_LDFLAGS = + libmisc_la_LIBADD = +-am_libmisc_la_OBJECTS = tools.lo getopt.lo getopt1.lo ++am_libmisc_la_OBJECTS = tools.lo getopt.lo + libmisc_la_OBJECTS = $(am_libmisc_la_OBJECTS) + + DEFS = @DEFS@ +@@ -130,7 +130,7 @@ CPPFLAGS = @CPPFLAGS@ + LDFLAGS = @LDFLAGS@ + LIBS = @LIBS@ + depcomp = $(SHELL) $(top_srcdir)/depcomp +-@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/getopt.Plo $(DEPDIR)/getopt1.Plo \ ++@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/getopt.Plo \ + @AMDEP_TRUE@ $(DEPDIR)/tools.Plo + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +@@ -177,7 +177,6 @@ distclean-compile: + -rm -f *.tab.c + + @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt.Plo@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt1.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/tools.Plo@am__quote@ + + distclean-depend: diff --git a/filesystems/progsreiserfs/files/patch-libdal_file.c b/filesystems/progsreiserfs/files/patch-libdal_file.c new file mode 100644 index 000000000000..76a7926d532f --- /dev/null +++ b/filesystems/progsreiserfs/files/patch-libdal_file.c @@ -0,0 +1,26 @@ +--- libdal/file.c.orig 2002-12-12 12:32:34 UTC ++++ libdal/file.c +@@ -14,6 +14,7 @@ + + #if defined(__freebsd__) + # define O_LARGEFILE 0 ++# include <sys/disk.h> + #endif + + #ifndef DJGPP +@@ -154,6 +155,15 @@ static count_t file_len(dal_t *dal) { + + #endif + ++#ifdef DIOCGMEDIASIZE ++ ++ if (ioctl(*((int *)dal->entity), DIOCGMEDIASIZE, &size) >= 0) ++ return (count_t)(size / dal->blocksize); ++ ++ file_save_error(dal); ++ ++#endif ++ + if ((max_off = lseek(*((int *)dal->entity), 0, SEEK_END)) == (off_t)-1) { + file_save_error(dal); + return 0; diff --git a/filesystems/progsreiserfs/files/patch-libreiserfs_journal.c b/filesystems/progsreiserfs/files/patch-libreiserfs_journal.c new file mode 100644 index 000000000000..da24c4593308 --- /dev/null +++ b/filesystems/progsreiserfs/files/patch-libreiserfs_journal.c @@ -0,0 +1,11 @@ +--- libreiserfs/journal.c.orig 2002-12-12 12:32:35 UTC ++++ libreiserfs/journal.c +@@ -482,7 +482,7 @@ static int callback_journal_replay(reise + blk_t reiserfs_journal_boundary_transactions(reiserfs_journal_t *journal, + reiserfs_journal_trans_t *oldest, reiserfs_journal_trans_t *newest) + { +- reiserfs_gauge_t *gauge; ++ reiserfs_gauge_t *gauge = NULL; + struct reiserfs_replay_desc desc; + + desc.oldest_id = 0xffffffff; desc.newest_id = 0x0; diff --git a/filesystems/progsreiserfs/pkg-descr b/filesystems/progsreiserfs/pkg-descr new file mode 100644 index 000000000000..db3516d4aedd --- /dev/null +++ b/filesystems/progsreiserfs/pkg-descr @@ -0,0 +1,6 @@ +This is a library for reiserfs filesystem access and manipulation. +The primary goal is to develop the nice, full functionality library +wich might be linked against any projects which needed reiserfs filesystem +access. There are GNU Parted, GNU GRUB, Yaboot, Partimage, EVMS, etc. + +progsreiserfs supports versions 3.5, 3.6 with standard and relocated journal. diff --git a/filesystems/progsreiserfs/pkg-plist b/filesystems/progsreiserfs/pkg-plist new file mode 100644 index 000000000000..76e0ff06b7ad --- /dev/null +++ b/filesystems/progsreiserfs/pkg-plist @@ -0,0 +1,40 @@ +include/dal/dal.h +include/dal/file.h +include/reiserfs/bitmap.h +include/reiserfs/block.h +include/reiserfs/core.h +include/reiserfs/dir.h +include/reiserfs/endian.h +include/reiserfs/exception.h +include/reiserfs/file.h +include/reiserfs/filesystem.h +include/reiserfs/gauge.h +include/reiserfs/hashes.h +include/reiserfs/journal.h +include/reiserfs/key.h +include/reiserfs/node.h +include/reiserfs/object.h +include/reiserfs/path.h +include/reiserfs/reiserfs.h +include/reiserfs/segment.h +include/reiserfs/tools.h +include/reiserfs/tree.h +lib/libdal-0.3.so.0 +lib/libdal-0.3.so.0.0.1 +lib/libdal.a +lib/libdal.so +lib/libreiserfs-0.3.so.0 +lib/libreiserfs-0.3.so.0.0.1 +lib/libreiserfs.a +lib/libreiserfs.so +share/man/man8/cpfs.reiserfs.8.gz +share/man/man8/mkfs.reiserfs.8.gz +share/man/man8/reiserfs.8.gz +share/man/man8/resizefs.reiserfs.8.gz +share/man/man8/tunefs.reiserfs.8.gz +sbin/cpfs.reiserfs +sbin/fsck.reiserfs +sbin/mkfs.reiserfs +sbin/resizefs.reiserfs +sbin/tunefs.reiserfs +share/aclocal/progsreiserfs.m4 diff --git a/filesystems/py-dfvfs/Makefile b/filesystems/py-dfvfs/Makefile new file mode 100644 index 000000000000..cf96f98a9a0c --- /dev/null +++ b/filesystems/py-dfvfs/Makefile @@ -0,0 +1,60 @@ +PORTNAME= dfvfs +PORTVERSION= 20231208 +PORTREVISION= 1 +CATEGORIES= filesystems security devel python +MASTER_SITES= https://github.com/log2timeline/dfvfs/releases/download/${PORTVERSION}/ \ + LOCAL/antoine +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= antoine@FreeBSD.org +COMMENT= Digital Forensics Virtual File System +WWW= https://github.com/log2timeline/dfvfs + +LICENSE= APACHE20 +LICENSE_FILE= ${WRKSRC}/LICENSE + +RUN_DEPENDS= libbde>=a:filesystems/libbde \ + libewf>=0:devel/libewf \ + libfsapfs>=e:filesystems/libfsapfs \ + libfsext>=e:filesystems/libfsext \ + libfsfat>=e:filesystems/libfsfat \ + libfshfs>=e:filesystems/libfshfs \ + libfsntfs>=e:filesystems/libfsntfs \ + libfsxfs>=e:filesystems/libfsxfs \ + libfvde>=0:sysutils/libfvde \ + libfwnt>=e:devel/libfwnt \ + libluksde>=e:devel/libluksde \ + libmodi>=e:filesystems/libmodi \ + libphdi>=e:devel/libphdi \ + libqcow>=a:devel/libqcow \ + libsigscan>=e:devel/libsigscan \ + libsmdev>=a:devel/libsmdev \ + libsmraw>=a:devel/libsmraw \ + libvhdi>=e:devel/libvhdi \ + libvmdk>=e:devel/libvmdk \ + libvsapm>=e:devel/libvsapm \ + libvsgpt>=e:devel/libvsgpt \ + libvshadow>=0:devel/libvshadow \ + libvslvm>=e:devel/libvslvm \ + ${PYTHON_PKGNAMEPREFIX}dfdatetime>=0:security/py-dfdatetime@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dtfabric>=0:devel/py-dtfabric@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pytsk>=0:sysutils/py-pytsk@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}sqlite3>=0:databases/py-sqlite3@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}xattr>=0:devel/py-xattr@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyyaml>=3.10:devel/py-pyyaml@${PY_FLAVOR} + +USES= python +USE_LOCALE= en_US.UTF-8 +USE_PYTHON= autoplist concurrent cryptography distutils +DO_MAKE_TEST= ${SETENV} ${TEST_ENV} ${PYTHON_CMD} +TEST_TARGET= run_tests.py + +NO_ARCH= yes + +# Upstream archive contains files with UTF-8 names +EXTRACT_CMD= ${SETENV} LC_ALL=en_US.UTF-8 /usr/bin/bsdtar + +post-patch: + ${REINPLACE_CMD} "/cffi/d" ${WRKSRC}/requirements.txt + +.include <bsd.port.mk> diff --git a/filesystems/py-dfvfs/distinfo b/filesystems/py-dfvfs/distinfo new file mode 100644 index 000000000000..7566b547002f --- /dev/null +++ b/filesystems/py-dfvfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1707754540 +SHA256 (dfvfs-20231208.tar.gz) = 522e5225738c14b9134001a7147cf5688538efe4ca42c6536837bb650a204664 +SIZE (dfvfs-20231208.tar.gz) = 98086866 diff --git a/filesystems/py-dfvfs/pkg-descr b/filesystems/py-dfvfs/pkg-descr new file mode 100644 index 000000000000..cfddc03f0d97 --- /dev/null +++ b/filesystems/py-dfvfs/pkg-descr @@ -0,0 +1,5 @@ +dfVFS, or Digital Forensics Virtual File System, provides read-only access to +file-system objects from various storage media types and file formats. The goal +of dfVFS is to provide a generic interface for accessing file-system objects, +for which it uses several back-ends that provide the actual implementation of +the various storage media types, volume systems and file systems. diff --git a/filesystems/py-fs/Makefile b/filesystems/py-fs/Makefile new file mode 100644 index 000000000000..f9b5d57677ca --- /dev/null +++ b/filesystems/py-fs/Makefile @@ -0,0 +1,20 @@ +PORTNAME= fs +PORTVERSION= 0.5.4 +PORTREVISION= 1 +CATEGORIES= filesystems devel python +MASTER_SITES= PYPI +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= douglas@douglasthrift.net +COMMENT= Python filesystem abstraction +WWW= https://pyfilesystem.org/ + +LICENSE= BSD3CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE.txt + +USES= dos2unix python +USE_PYTHON= autoplist concurrent distutils + +NO_ARCH= yes + +.include <bsd.port.mk> diff --git a/filesystems/py-fs/distinfo b/filesystems/py-fs/distinfo new file mode 100644 index 000000000000..1c22b48a1ee9 --- /dev/null +++ b/filesystems/py-fs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905183 +SHA256 (fs-0.5.4.tar.gz) = ba2cca8773435a7c86059d57cb4b8ea30fda40f8610941f7822d1ce3ffd36197 +SIZE (fs-0.5.4.tar.gz) = 231333 diff --git a/filesystems/py-fs/files/patch-2to3 b/filesystems/py-fs/files/patch-2to3 new file mode 100644 index 000000000000..5e5874a2a21b --- /dev/null +++ b/filesystems/py-fs/files/patch-2to3 @@ -0,0 +1,5882 @@ +--- fs/appdirfs.py.orig 2015-04-12 17:24:29 UTC ++++ fs/appdirfs.py +@@ -84,6 +84,6 @@ class UserLogFS(OSFS): + + if __name__ == "__main__": + udfs = UserDataFS('exampleapp', appauthor='pyfs') +- print udfs ++ print(udfs) + udfs2 = UserDataFS('exampleapp2', appauthor='pyfs', create=False) +- print udfs2 ++ print(udfs2) +--- fs/appdirs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/appdirs.py +@@ -21,7 +21,7 @@ import os + PY3 = sys.version_info[0] == 3 + + if PY3: +- unicode = str ++ str = str + + class AppDirsError(Exception): + pass +@@ -248,7 +248,7 @@ def _get_win_folder_from_registry(csidl_name): + registry for this guarantees us the correct answer for all CSIDL_* + names. + """ +- import _winreg ++ import winreg + + shell_folder_name = { + "CSIDL_APPDATA": "AppData", +@@ -256,9 +256,9 @@ def _get_win_folder_from_registry(csidl_name): + "CSIDL_LOCAL_APPDATA": "Local AppData", + }[csidl_name] + +- key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, ++ key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, + r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders") +- dir, type = _winreg.QueryValueEx(key, shell_folder_name) ++ dir, type = winreg.QueryValueEx(key, shell_folder_name) + return dir + + def _get_win_folder_with_pywin32(csidl_name): +@@ -268,7 +268,7 @@ def _get_win_folder_with_pywin32(csidl_name): + # not return unicode strings when there is unicode data in the + # path. + try: +- dir = unicode(dir) ++ dir = str(dir) + + # Downgrade to short path name if have highbit chars. See + # <http://bugs.activestate.com/show_bug.cgi?id=85099>. +@@ -337,9 +337,9 @@ if __name__ == "__main__": + print("-- app dirs (without optional 'version')") + dirs = AppDirs(appname, appauthor, version="1.0") + for prop in props: +- print("%s: %s" % (prop, getattr(dirs, prop))) ++ print(("%s: %s" % (prop, getattr(dirs, prop)))) + + print("\n-- app dirs (with optional 'version')") + dirs = AppDirs(appname, appauthor) + for prop in props: +- print("%s: %s" % (prop, getattr(dirs, prop))) ++ print(("%s: %s" % (prop, getattr(dirs, prop)))) +--- fs/base.py.orig 2022-03-04 17:14:43 UTC ++++ fs/base.py +@@ -12,8 +12,8 @@ For more information regarding implementing a working + + """ + +-from __future__ import with_statement + ++ + __all__ = ['DummyLock', + 'silence_fserrors', + 'NullFile', +@@ -109,7 +109,7 @@ class NullFile(object): + def flush(self): + pass + +- def next(self): ++ def __next__(self): + raise StopIteration + + def readline(self, *args, **kwargs): +@@ -900,7 +900,7 @@ class FS(object): + chunk_size=1024 * 64, + progress_callback=progress_callback, + finished_callback=finished_callback) +- except Exception, e: ++ except Exception as e: + if error_callback is not None: + error_callback(e) + finally: +@@ -1156,7 +1156,7 @@ class FS(object): + def _shutil_copyfile(cls, src_syspath, dst_syspath): + try: + shutil.copyfile(src_syspath, dst_syspath) +- except IOError, e: ++ except IOError as e: + # shutil reports ENOENT when a parent directory is missing + if getattr(e, "errno", None) == errno.ENOENT: + if not os.path.exists(dirname(dst_syspath)): +--- fs/browsewin.py.orig 2022-03-04 17:14:43 UTC ++++ fs/browsewin.py +@@ -24,7 +24,7 @@ class InfoFrame(wx.Frame): + + self.SetTitle("FS Object info - %s (%s)" % (path, desc)) + +- keys = info.keys() ++ keys = list(info.keys()) + keys.sort() + + self.list_ctrl = wx.ListCtrl(self, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER) +@@ -36,7 +36,7 @@ class InfoFrame(wx.Frame): + self.list_ctrl.SetColumnWidth(1, 300) + + for key in sorted(keys, key=lambda k:k.lower()): +- self.list_ctrl.Append((key, unicode(info.get(key)))) ++ self.list_ctrl.Append((key, str(info.get(key)))) + + self.Center() + +@@ -50,7 +50,7 @@ class BrowseFrame(wx.Frame): + + self.fs = fs + self.hide_dotfiles = hide_dotfiles +- self.SetTitle("FS Browser - " + unicode(fs)) ++ self.SetTitle("FS Browser - " + str(fs)) + + self.tree = wx.gizmos.TreeListCtrl(self, -1, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT) + +@@ -105,7 +105,7 @@ class BrowseFrame(wx.Frame): + try: + paths = ( [(True, p) for p in self.fs.listdir(path, absolute=True, dirs_only=True)] + + [(False, p) for p in self.fs.listdir(path, absolute=True, files_only=True)] ) +- except FSError, e: ++ except FSError as e: + msg = "Failed to get directory listing for %s\n\nThe following error was reported:\n\n%s" % (path, e) + wx.MessageDialog(self, msg, "Error listing directory", wx.OK).ShowModal() + paths = [] +@@ -194,6 +194,6 @@ def browse(fs, hide_dotfiles=False): + + + if __name__ == "__main__": +- from osfs import OSFS ++ from .osfs import OSFS + home_fs = OSFS("~/") + browse(home_fs, True) +--- fs/commands/fscp.py.orig 2022-03-04 17:14:43 UTC ++++ fs/commands/fscp.py +@@ -3,7 +3,7 @@ from fs.utils import copyfile, copyfile_non_atomic + from fs.path import pathjoin, iswildcard + from fs.commands.runner import Command + import sys +-import Queue as queue ++import queue as queue + import time + import threading + +@@ -31,7 +31,7 @@ class FileOpThread(threading.Thread): + self.dest_fs.makedir(path, recursive=True, allow_recreate=True) + else: + self.action(fs, path, self.dest_fs, dest_path, overwrite=True) +- except Exception, e: ++ except Exception as e: + self.on_error(e) + self.queue.task_done() + break +@@ -147,7 +147,7 @@ Copy SOURCE to DESTINATION""" + file_queue, + self.on_done, + self.on_error) +- for i in xrange(options.threads)] ++ for i in range(options.threads)] + + for thread in threads: + thread.start() +@@ -188,7 +188,7 @@ Copy SOURCE to DESTINATION""" + + if self.action_errors: + for error in self.action_errors: +- self.error(self.wrap_error(unicode(error)) + '\n') ++ self.error(self.wrap_error(str(error)) + '\n') + sys.stdout.flush() + else: + if complete and options.progress: +@@ -204,9 +204,9 @@ Copy SOURCE to DESTINATION""" + try: + if self.options.verbose: + if path_type == self.DIR: +- print "mkdir %s" % dst_fs.desc(dst_path) ++ print("mkdir %s" % dst_fs.desc(dst_path)) + else: +- print "%s -> %s" % (src_fs.desc(src_path), dst_fs.desc(dst_path)) ++ print("%s -> %s" % (src_fs.desc(src_path), dst_fs.desc(dst_path))) + elif self.options.progress: + self.done_files += 1 + sys.stdout.write(self.progress_bar(self.total_files, self.done_files, self.get_verb())) +--- fs/commands/fsinfo.py.orig 2022-03-04 17:14:43 UTC ++++ fs/commands/fsinfo.py +@@ -31,12 +31,12 @@ Display information regarding an FS resource""" + return val + + def make_printable(text): +- if not isinstance(text, basestring): ++ if not isinstance(text, str): + try: + text = str(text) + except: + try: +- text = unicode(text) ++ text = str(text) + except: + text = repr(text) + return text +@@ -48,16 +48,16 @@ Display information regarding an FS resource""" + dirs_only=options.dirsonly): + if not options.omit: + if options.simple: +- file_line = u'%s\n' % self.wrap_filename(path) ++ file_line = '%s\n' % self.wrap_filename(path) + else: +- file_line = u'[%s] %s\n' % (self.wrap_filename(path), self.wrap_faded(fs.desc(path))) ++ file_line = '[%s] %s\n' % (self.wrap_filename(path), self.wrap_faded(fs.desc(path))) + self.output(file_line) + info = fs.getinfo(path) + +- for k, v in info.items(): ++ for k, v in list(info.items()): + if k.startswith('_'): + del info[k] +- elif not isinstance(v, (basestring, int, long, float, bool, datetime)): ++ elif not isinstance(v, (str, int, float, bool, datetime)): + del info[k] + + if keys: +--- fs/commands/fsls.py.orig 2022-03-04 17:14:43 UTC ++++ fs/commands/fsls.py +@@ -37,7 +37,7 @@ List contents of [PATH]""" + output = self.output + + if not args: +- args = [u'.'] ++ args = ['.'] + + dir_paths = [] + file_paths = [] +@@ -75,13 +75,13 @@ List contents of [PATH]""" + + if options.syspath: + # Path without a syspath, just won't be displayed +- dir_paths = filter(None, [fs.getsyspath(path, allow_none=True) for path in dir_paths]) +- file_paths = filter(None, [fs.getsyspath(path, allow_none=True) for path in file_paths]) ++ dir_paths = [_f for _f in [fs.getsyspath(path, allow_none=True) for path in dir_paths] if _f] ++ file_paths = [_f for _f in [fs.getsyspath(path, allow_none=True) for path in file_paths] if _f] + + if options.url: + # Path without a syspath, just won't be displayed +- dir_paths = filter(None, [fs.getpathurl(path, allow_none=True) for path in dir_paths]) +- file_paths = filter(None, [fs.getpathurl(path, allow_none=True) for path in file_paths]) ++ dir_paths = [_f for _f in [fs.getpathurl(path, allow_none=True) for path in dir_paths] if _f] ++ file_paths = [_f for _f in [fs.getpathurl(path, allow_none=True) for path in file_paths] if _f] + + dirs = frozenset(dir_paths) + paths = sorted(dir_paths + file_paths, key=lambda p: p.lower()) +@@ -95,7 +95,7 @@ List contents of [PATH]""" + def columnize(paths, num_columns): + + col_height = (len(paths) + num_columns - 1) / num_columns +- columns = [[] for _ in xrange(num_columns)] ++ columns = [[] for _ in range(num_columns)] + col_no = 0 + col_pos = 0 + for path in paths: +@@ -128,11 +128,11 @@ List contents of [PATH]""" + + def condense_columns(columns): + max_column_height = max([len(col) for col in columns]) +- lines = [[] for _ in xrange(max_column_height)] ++ lines = [[] for _ in range(max_column_height)] + for column in columns: + for line, path in zip(lines, column): + line.append(path) +- return '\n'.join(u' '.join(line) for line in lines) ++ return '\n'.join(' '.join(line) for line in lines) + + if options.long: + for path in paths: +@@ -151,7 +151,7 @@ List contents of [PATH]""" + while num_cols: + col_height = (num_paths + num_cols - 1) // num_cols + line_width = 0 +- for col_no in xrange(num_cols): ++ for col_no in range(num_cols): + try: + col_width = max(path_widths[col_no * col_height: (col_no + 1) * col_height]) + except ValueError: +--- fs/commands/fsserve.py.orig 2015-04-12 17:24:29 UTC ++++ fs/commands/fsserve.py +@@ -82,7 +82,7 @@ Serves the contents of PATH with one of a number of me + try: + self.output("Starting sftp server on %s:%i\n" % (options.addr, port), verbose=True) + server.serve_forever() +- except Exception, e: ++ except Exception as e: + pass + finally: + server.server_close() +@@ -90,7 +90,7 @@ Serves the contents of PATH with one of a number of me + else: + self.error("Server type '%s' not recognised\n" % options.type) + +- except IOError, e: ++ except IOError as e: + if e.errno == errno.EACCES: + self.error('Permission denied\n') + return 1 +--- fs/commands/fstree.py.orig 2022-03-04 17:14:43 UTC ++++ fs/commands/fstree.py +@@ -34,7 +34,7 @@ Recursively display the contents of PATH in an ascii t + + for fs, path, is_dir in self.get_resources(args, single=True): + if not is_dir: +- self.error(u"'%s' is not a dir\n" % path) ++ self.error("'%s' is not a dir\n" % path) + return 1 + fs.cache_hint(True) + if options.gui: +--- fs/commands/runner.py.orig 2022-03-04 17:14:43 UTC ++++ fs/commands/runner.py +@@ -68,7 +68,7 @@ else: + + + def _unicode(text): +- if not isinstance(text, unicode): ++ if not isinstance(text, str): + return text.decode('ascii', 'replace') + return text + +@@ -128,17 +128,17 @@ class Command(object): + text = _unicode(text) + if not self.terminal_colors: + return text +- return u'\x1b[2m%s\x1b[0m' % text ++ return '\x1b[2m%s\x1b[0m' % text + + def wrap_link(self, text): + if not self.terminal_colors: + return text +- return u'\x1b[1;33m%s\x1b[0m' % text ++ return '\x1b[1;33m%s\x1b[0m' % text + + def wrap_strong(self, text): + if not self.terminal_colors: + return text +- return u'\x1b[1m%s\x1b[0m' % text ++ return '\x1b[1m%s\x1b[0m' % text + + def wrap_table_header(self, name): + if not self.terminal_colors: +@@ -215,10 +215,10 @@ class Command(object): + return resources + + def ask(self, msg): +- return raw_input('%s: %s ' % (self.name, msg)) ++ return input('%s: %s ' % (self.name, msg)) + + def text_encode(self, text): +- if not isinstance(text, unicode): ++ if not isinstance(text, str): + text = text.decode('ascii', 'replace') + text = text.encode(self.encoding, 'replace') + return text +@@ -226,7 +226,7 @@ class Command(object): + def output(self, msgs, verbose=False): + if verbose and not self.options.verbose: + return +- if isinstance(msgs, basestring): ++ if isinstance(msgs, str): + msgs = (msgs,) + for msg in msgs: + self.output_file.write(self.text_encode(msg)) +@@ -276,7 +276,7 @@ class Command(object): + + opener_table = [] + +- for fs_opener in opener.openers.itervalues(): ++ for fs_opener in opener.openers.values(): + names = fs_opener.names + desc = getattr(fs_opener, 'desc', '') + opener_table.append((names, desc)) +@@ -346,12 +346,12 @@ class Command(object): + opener.add(new_opener) + + if not six.PY3: +- args = [unicode(arg, sys.getfilesystemencoding()) for arg in args] ++ args = [str(arg, sys.getfilesystemencoding()) for arg in args] + self.verbose = options.verbose + try: + return self.do_run(options, args) or 0 +- except FSError, e: +- self.error(self.wrap_error(unicode(e)) + '\n') ++ except FSError as e: ++ self.error(self.wrap_error(str(e)) + '\n') + if options.debug: + raise + return 1 +@@ -361,8 +361,8 @@ class Command(object): + return 0 + except SystemExit: + return 0 +- except Exception, e: +- self.error(self.wrap_error('Error - %s\n' % unicode(e))) ++ except Exception as e: ++ self.error(self.wrap_error('Error - %s\n' % str(e))) + if options.debug: + raise + return 1 +--- fs/contrib/archivefs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/contrib/archivefs.py +@@ -62,7 +62,7 @@ class ArchiveFS(FS): + :param thread_synchronize: set to True (default) to enable thread-safety + """ + super(ArchiveFS, self).__init__(thread_synchronize=thread_synchronize) +- if isinstance(f, basestring): ++ if isinstance(f, str): + self.fileobj = None + self.root_path = f + else: +@@ -83,7 +83,7 @@ class ArchiveFS(FS): + return "<ArchiveFS: %s>" % self.root_path + + def __unicode__(self): +- return u"<ArchiveFS: %s>" % self.root_path ++ return "<ArchiveFS: %s>" % self.root_path + + def getmeta(self, meta_name, default=NoDefaultMeta): + if meta_name == 'read_only': +@@ -446,7 +446,7 @@ class ArchiveMountFS(mountfs.MountFS): + else: + listing = self.listdir(path, *args, **kwargs) + if dirs_only: +- listing = filter(isdir, listing) ++ listing = list(filter(isdir, listing)) + return listing + + if wildcard is None: +--- fs/contrib/bigfs/__init__.py.orig 2022-03-04 17:14:43 UTC ++++ fs/contrib/bigfs/__init__.py +@@ -149,7 +149,7 @@ class _ExceptionProxy(object): + def __setattr__(self, name, value): + raise ValueError("File has been closed") + +- def __nonzero__(self): ++ def __bool__(self): + return False + + +@@ -193,7 +193,7 @@ class BigFS(FS): + return "<BigFS: %s>" % self.big_path + + def __unicode__(self): +- return unicode(self.__str__()) ++ return str(self.__str__()) + + + def _parse_resource_list(self, g): +--- fs/contrib/bigfs/subrangefile.py.orig 2022-03-04 17:14:43 UTC ++++ fs/contrib/bigfs/subrangefile.py +@@ -33,7 +33,7 @@ class SubrangeFile: + return "<SubrangeFile: %s@%d size=%d>" % (self.name, self.startOffset, self.fileSize) + + def __unicode__(self): +- return unicode(self.__str__()) ++ return str(self.__str__()) + + def size(self): + return self.fileSize +--- fs/contrib/davfs/__init__.py.orig 2015-04-12 17:24:29 UTC ++++ fs/contrib/davfs/__init__.py +@@ -16,21 +16,21 @@ Requires the dexml module: + # Copyright (c) 2009-2010, Cloud Matrix Pty. Ltd. + # All rights reserved; available under the terms of the MIT License. + +-from __future__ import with_statement + ++ + import os + import sys +-import httplib ++import http.client + import socket +-from urlparse import urlparse ++from urllib.parse import urlparse + import stat as statinfo +-from urllib import quote as urlquote +-from urllib import unquote as urlunquote ++from urllib.parse import quote as urlquote ++from urllib.parse import unquote as urlunquote + import base64 + import re + import time + import datetime +-import cookielib ++import http.cookiejar + import fnmatch + import xml.dom.pulldom + import threading +@@ -78,8 +78,8 @@ class DAVFS(FS): + """ + + connection_classes = { +- "http": httplib.HTTPConnection, +- "https": httplib.HTTPSConnection, ++ "http": http.client.HTTPConnection, ++ "https": http.client.HTTPSConnection, + } + + _DEFAULT_PORT_NUMBERS = { +@@ -116,7 +116,7 @@ class DAVFS(FS): + self._connections = [] + self._free_connections = {} + self._connection_lock = threading.Lock() +- self._cookiejar = cookielib.CookieJar() ++ self._cookiejar = http.cookiejar.CookieJar() + super(DAVFS,self).__init__(thread_synchronize=thread_synchronize) + # Check that the server speaks WebDAV, and normalize the URL + # after any redirects have been followed. +@@ -221,14 +221,14 @@ class DAVFS(FS): + self._free_connections = {} + self._connection_lock = threading.Lock() + self._url_p = urlparse(self.url) +- self._cookiejar = cookielib.CookieJar() ++ self._cookiejar = http.cookiejar.CookieJar() + + def getpathurl(self, path, allow_none=False): + """Convert a client-side path into a server-side URL.""" + path = relpath(normpath(path)) + if path.endswith("/"): + path = path[:-1] +- if isinstance(path,unicode): ++ if isinstance(path,str): + path = path.encode("utf8") + return self.url + urlquote(path) + +@@ -291,7 +291,7 @@ class DAVFS(FS): + """Perform a single HTTP request, without any error handling.""" + if self.closed: + raise RemoteConnectionError("",msg="FS is closed") +- if isinstance(url,basestring): ++ if isinstance(url,str): + url = urlparse(url) + if self.credentials is not None: + username = self.credentials.get("username","") +@@ -310,7 +310,7 @@ class DAVFS(FS): + if hasattr(body,"md5"): + md5 = body.md5.decode("hex").encode("base64") + con.putheader("Content-MD5",md5) +- for hdr,val in headers.iteritems(): ++ for hdr,val in headers.items(): + con.putheader(hdr,val) + self._cookiejar.add_cookie_header(FakeReq(con,url.scheme,url.path)) + con.endheaders() +@@ -332,7 +332,7 @@ class DAVFS(FS): + self._give_connection(url,con) + resp.close = new_close + return resp +- except socket.error, e: ++ except socket.error as e: + if not fresh: + return self._raw_request(url,method,body,headers,num_tries) + if e.args[0] in _RETRYABLE_ERRORS: +@@ -479,7 +479,7 @@ class DAVFS(FS): + if not entry_ok: + continue + if wildcard is not None: +- if isinstance(wildcard,basestring): ++ if isinstance(wildcard,str): + if not fnmatch.fnmatch(nm,wildcard): + continue + else: +@@ -530,7 +530,7 @@ class DAVFS(FS): + if not entry_ok: + continue + if wildcard is not None: +- if isinstance(wildcard,basestring): ++ if isinstance(wildcard,str): + if not fnmatch.fnmatch(nm,wildcard): + continue + else: +@@ -610,7 +610,7 @@ class DAVFS(FS): + if self._isurl(path,res.href): + info.update(self._info_from_propfind(res)) + if "st_mode" not in info: +- info["st_mode"] = 0700 | statinfo.S_IFREG ++ info["st_mode"] = 0o700 | statinfo.S_IFREG + return info + finally: + response.close() +@@ -647,7 +647,7 @@ class DAVFS(FS): + # TODO: should check for status of the propfind first... + # check for directory indicator + if findElements("DAV:","collection"): +- info["st_mode"] = 0700 | statinfo.S_IFDIR ++ info["st_mode"] = 0o700 | statinfo.S_IFDIR + # check for content length + cl = findElements("DAV:","getcontentlength") + if cl: +@@ -674,7 +674,7 @@ class DAVFS(FS): + if etag: + info["etag"] = etag + if "st_mode" not in info: +- info["st_mode"] = 0700 | statinfo.S_IFREG ++ info["st_mode"] = 0o700 | statinfo.S_IFREG + return info + + +--- fs/contrib/davfs/util.py.orig 2022-03-04 17:14:43 UTC ++++ fs/contrib/davfs/util.py +@@ -8,7 +8,7 @@ + + import os + import re +-import cookielib ++import http.cookiejar + + + def get_fileno(file): +@@ -130,7 +130,7 @@ class FakeResp: + # is a tweaked version of the cookielib function of the same name. + # + _test_cookie = "sessionid=e9c9b002befa93bd865ce155270307ef; Domain=.cloud.me; expires=Wed, 10-Feb-2010 03:27:20 GMT; httponly; Max-Age=1209600; Path=/, sessionid_https=None; Domain=.cloud.me; expires=Wed, 10-Feb-2010 03:27:20 GMT; httponly; Max-Age=1209600; Path=/; secure" +-if len(cookielib.parse_ns_headers([_test_cookie])) != 2: ++if len(http.cookiejar.parse_ns_headers([_test_cookie])) != 2: + def parse_ns_headers(ns_headers): + """Improved parser for netscape-style cookies. + +@@ -170,13 +170,13 @@ if len(cookielib.parse_ns_headers([_test_cookie])) != + # convert expires date to seconds since epoch + if v.startswith('"'): v = v[1:] + if v.endswith('"'): v = v[:-1] +- v = cookielib.http2time(v) # None if invalid ++ v = http.cookiejar.http2time(v) # None if invalid + pairs.append((k, v)) + if pairs: + if not version_set: + pairs.append(("version", "0")) + result.append(pairs) + return result +- cookielib.parse_ns_headers = parse_ns_headers +- assert len(cookielib.parse_ns_headers([_test_cookie])) == 2 ++ http.cookiejar.parse_ns_headers = parse_ns_headers ++ assert len(http.cookiejar.parse_ns_headers([_test_cookie])) == 2 + +--- fs/contrib/davfs/xmlobj.py.orig 2022-03-04 17:14:43 UTC ++++ fs/contrib/davfs/xmlobj.py +@@ -9,9 +9,9 @@ of dexml.Model subclasses. + + """ + +-from urlparse import urlparse, urlunparse ++from urllib.parse import urlparse, urlunparse + +-from httplib import responses as STATUS_CODE_TEXT ++from http.client import responses as STATUS_CODE_TEXT + STATUS_CODE_TEXT[207] = "Multi-Status" + + import dexml +@@ -86,7 +86,7 @@ class StatusField(fields.Value): + return val + + def __set__(self,instance,value): +- if isinstance(value,basestring): ++ if isinstance(value,str): + # sanity check it + bits = value.split(" ") + if len(bits) < 3 or bits[0] != "HTTP/1.1": +--- fs/contrib/sqlitefs.py.orig 2015-04-12 17:24:29 UTC ++++ fs/contrib/sqlitefs.py +@@ -24,7 +24,7 @@ def fetchone(cursor): + ''' + row = None + try: +- row = cursor.next() ++ row = next(cursor) + except: + pass + return(row) +@@ -62,7 +62,7 @@ class SqliteFsFileBase(object): + __repr__ = __str__ + + def __unicode__(self): +- return u"<SqliteFS File in %s %s>" % (self.fs, self.path) ++ return "<SqliteFS File in %s %s>" % (self.fs, self.path) + + def __del__(self): + if not self.closed: +@@ -74,7 +74,7 @@ class SqliteFsFileBase(object): + def __iter__(self): + raise OperationFailedError('__iter__', self.path) + +- def next(self): ++ def __next__(self): + raise OperationFailedError('next', self.path) + + def readline(self, *args, **kwargs): +@@ -139,8 +139,8 @@ class SqliteReadableFile(SqliteFsFileBase): + def __iter__(self): + return iter(self.real_stream) + +- def next(self): +- return self.real_stream.next() ++ def __next__(self): ++ return next(self.real_stream) + + def readline(self, *args, **kwargs): + return self.real_stream.readline(*args, **kwargs) +@@ -438,7 +438,7 @@ class SqliteFS(FS): + get the directory information dictionary. + ''' + info = dict() +- info['st_mode'] = 0755 ++ info['st_mode'] = 0o755 + return info + + def _get_file_info(self, path): +@@ -460,7 +460,7 @@ class SqliteFS(FS): + info['created'] = row[2] + info['last_modified'] = row[3] + info['last_accessed'] = row[4] +- info['st_mode'] = 0666 ++ info['st_mode'] = 0o666 + return(info) + + def _isfile(self,path): +@@ -551,7 +551,7 @@ class SqliteFS(FS): + pass + + if( absolute == False): +- pathlist = map(lambda dpath:frombase(path,dpath), pathlist) ++ pathlist = [frombase(path,dpath) for dpath in pathlist] + + return(pathlist) + +--- fs/contrib/tahoelafs/__init__.py.orig 2022-03-04 17:14:43 UTC ++++ fs/contrib/tahoelafs/__init__.py +@@ -70,8 +70,8 @@ from fs import _thread_synchronize_default, SEEK_END + from fs.remote import CacheFSMixin, RemoteFileBuffer + from fs.base import fnmatch, NoDefaultMeta + +-from util import TahoeUtil +-from connection import Connection ++from .util import TahoeUtil ++from .connection import Connection + + from six import b + +@@ -240,7 +240,7 @@ class _TahoeLAFS(FS): + continue + + if wildcard is not None: +- if isinstance(wildcard,basestring): ++ if isinstance(wildcard,str): + if not fnmatch.fnmatch(item['name'], wildcard): + continue + else: +@@ -269,7 +269,7 @@ class _TahoeLAFS(FS): + + try: + self.tahoeutil.unlink(self.dircap, path) +- except Exception, e: ++ except Exception as e: + raise errors.ResourceInvalidError(path) + + @_fix_path +@@ -341,8 +341,8 @@ class _TahoeLAFS(FS): + + def _log(self, level, message): + if not logger.isEnabledFor(level): return +- logger.log(level, u'(%d) %s' % (id(self), +- unicode(message).encode('ASCII', 'replace'))) ++ logger.log(level, '(%d) %s' % (id(self), ++ str(message).encode('ASCII', 'replace'))) + + @_fix_path + def getpathurl(self, path, allow_none=False, webapi=None): +@@ -353,11 +353,11 @@ class _TahoeLAFS(FS): + webapi = self.connection.webapi + self._log(DEBUG, "Retrieving URL for %s over %s" % (path, webapi)) + path = self.tahoeutil.fixwinpath(path, False) +- return u"%s/uri/%s%s" % (webapi, self.dircap, path) ++ return "%s/uri/%s%s" % (webapi, self.dircap, path) + + @_fix_path + def getrange(self, path, offset, length=None): +- return self.connection.get(u'/uri/%s%s' % (self.dircap, path), ++ return self.connection.get('/uri/%s%s' % (self.dircap, path), + offset=offset, length=length) + + @_fix_path +@@ -379,10 +379,10 @@ class _TahoeLAFS(FS): + file.seek(0) + + if size > self.largefilesize: +- self.connection.put(u'/uri/%s%s' % (self.dircap, path), ++ self.connection.put('/uri/%s%s' % (self.dircap, path), + "PyFilesystem.TahoeLAFS: Upload started, final size %d" % size) + +- self.connection.put(u'/uri/%s%s' % (self.dircap, path), file, size=size) ++ self.connection.put('/uri/%s%s' % (self.dircap, path), file, size=size) + + @_fix_path + def getinfo(self, path): +--- fs/contrib/tahoelafs/connection.py.orig 2015-04-12 17:24:29 UTC ++++ fs/contrib/tahoelafs/connection.py +@@ -10,17 +10,19 @@ if python3: + from urllib.parse import urlencode, pathname2url, quote + from urllib.request import Request, urlopen + else: +- from urllib import urlencode, pathname2url +- from urllib2 import Request, urlopen, quote ++ from urllib.parse import urlencode ++ from urllib.request import pathname2url ++ from urllib.request import Request, urlopen ++ from urllib.parse import quote + + class PutRequest(Request): + def __init__(self, *args, **kwargs): +- self.get_method = lambda: u'PUT' ++ self.get_method = lambda: 'PUT' + Request.__init__(self, *args, **kwargs) + + class DeleteRequest(Request): + def __init__(self, *args, **kwargs): +- self.get_method = lambda: u'DELETE' ++ self.get_method = lambda: 'DELETE' + Request.__init__(self, *args, **kwargs) + + class Connection: +@@ -32,7 +34,7 @@ class Connection: + ''' + Retrieve length of string or file object and prepare HTTP headers. + ''' +- if isinstance(f, basestring): ++ if isinstance(f, str): + # Just set up content length + size = len(f) + elif getattr(f, 'read', None): +@@ -50,20 +52,20 @@ class Connection: + + def _urlencode(self, data): + _data = {} +- for k, v in data.items(): ++ for k, v in list(data.items()): + _data[k.encode('utf-8')] = v.encode('utf-8') + return urlencode(_data) + + def _quotepath(self, path, params={}): + q = quote(path.encode('utf-8'), safe='/') + if params: +- return u"%s?%s" % (q, self._urlencode(params)) ++ return "%s?%s" % (q, self._urlencode(params)) + return q + + def _urlopen(self, req): + try: + return urlopen(req) +- except Exception, e: ++ except Exception as e: + if not getattr(e, 'getcode', None): + raise errors.RemoteConnectionError(str(e)) + code = e.getcode() +@@ -85,7 +87,7 @@ class Connection: + data = self._urlencode(data) + path = self._quotepath(path) + if data: +- path = u'?'.join([path, data]) ++ path = '?'.join([path, data]) + + headers = {} + headers.update(self.headers) +--- fs/contrib/tahoelafs/test_tahoelafs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/contrib/tahoelafs/test_tahoelafs.py +@@ -35,7 +35,7 @@ class TestTahoeLAFS(unittest.TestCase,FSTestCases):#,T + + def test_dircap(self): + # Is dircap in correct format? +- self.assert_(self.dircap.startswith('URI:DIR2:') and len(self.dircap) > 50) ++ self.assertTrue(self.dircap.startswith('URI:DIR2:') and len(self.dircap) > 50) + + def test_concurrent_copydir(self): + # makedir() on TahoeLAFS is currently not atomic +--- fs/contrib/tahoelafs/util.py.orig 2022-03-04 17:14:43 UTC ++++ fs/contrib/tahoelafs/util.py +@@ -19,7 +19,7 @@ except ImportError: + try: + import json + except ImportError: +- print "simplejson (http://pypi.python.org/pypi/simplejson/) required" ++ print("simplejson (http://pypi.python.org/pypi/simplejson/) required") + raise + + from .connection import Connection +@@ -29,22 +29,22 @@ python3 = int(platform.python_version_tuple()[0]) > 2 + if python3: + from urllib.error import HTTPError + else: +- from urllib2 import HTTPError ++ from urllib.error import HTTPError + + class TahoeUtil: + def __init__(self, webapi): + self.connection = Connection(webapi) + + def createdircap(self): +- return self.connection.post(u'/uri', params={u't': u'mkdir'}).read() ++ return self.connection.post('/uri', params={'t': 'mkdir'}).read() + + def unlink(self, dircap, path=None): + path = self.fixwinpath(path, False) +- self.connection.delete(u'/uri/%s%s' % (dircap, path)) ++ self.connection.delete('/uri/%s%s' % (dircap, path)) + + def info(self, dircap, path): + path = self.fixwinpath(path, False) +- meta = json.load(self.connection.get(u'/uri/%s%s' % (dircap, path), {u't': u'json'})) ++ meta = json.load(self.connection.get('/uri/%s%s' % (dircap, path), {'t': 'json'})) + return self._info(path, meta) + + def fixwinpath(self, path, direction=True): +@@ -74,7 +74,7 @@ class TahoeUtil: + if type == 'unknown': + raise errors.ResourceNotFoundError(path) + +- info = {'name': unicode(self.fixwinpath(path, True)), ++ info = {'name': str(self.fixwinpath(path, True)), + 'type': type, + 'size': data.get('size', 0), + 'ctime': None, +@@ -83,22 +83,22 @@ class TahoeUtil: + info['ctime'] = data['metadata'].get('ctime') + + if info['type'] == 'dirnode': +- info['st_mode'] = 0777 | statinfo.S_IFDIR ++ info['st_mode'] = 0o777 | statinfo.S_IFDIR + else: +- info['st_mode'] = 0644 ++ info['st_mode'] = 0o644 + + return info + + def list(self, dircap, path=None): + path = self.fixwinpath(path, False) + +- data = json.load(self.connection.get(u'/uri/%s%s' % (dircap, path), {u't': u'json'})) ++ data = json.load(self.connection.get('/uri/%s%s' % (dircap, path), {'t': 'json'})) + + if len(data) < 2 or data[0] != 'dirnode': + raise errors.ResourceInvalidError('Metadata in unknown format!') + + data = data[1]['children'] +- for i in data.keys(): ++ for i in list(data.keys()): + x = self._info(i, data[i]) + yield x + +@@ -106,7 +106,7 @@ class TahoeUtil: + path = self.fixwinpath(path, False) + path = pathsplit(path) + +- self.connection.post(u"/uri/%s%s" % (dircap, path[0]), data={u't': u'mkdir', u'name': path[1]}) ++ self.connection.post("/uri/%s%s" % (dircap, path[0]), data={'t': 'mkdir', 'name': path[1]}) + + def move(self, dircap, src, dst): + if src == '/' or dst == '/': +@@ -120,8 +120,8 @@ class TahoeUtil: + + if src_tuple[0] == dst_tuple[0]: + # Move inside one directory +- self.connection.post(u"/uri/%s%s" % (dircap, src_tuple[0]), data={u't': u'rename', +- u'from_name': src_tuple[1], u'to_name': dst_tuple[1]}) ++ self.connection.post("/uri/%s%s" % (dircap, src_tuple[0]), data={'t': 'rename', ++ 'from_name': src_tuple[1], 'to_name': dst_tuple[1]}) + return + + # Move to different directory. Firstly create link on dst, then remove from src +@@ -133,7 +133,7 @@ class TahoeUtil: + self.unlink(dircap, dst) + + uri = self.info(dircap, src)['uri'] +- self.connection.put(u"/uri/%s%s" % (dircap, dst), data=uri, params={u't': u'uri'}) ++ self.connection.put("/uri/%s%s" % (dircap, dst), data=uri, params={'t': 'uri'}) + if uri != self.info(dircap, dst)['uri']: + raise errors.OperationFailedError('Move failed') + +--- fs/errors.py.orig 2015-04-12 17:24:29 UTC ++++ fs/errors.py +@@ -57,19 +57,19 @@ class FSError(Exception): + + def __str__(self): + keys = {} +- for k,v in self.__dict__.iteritems(): +- if isinstance(v,unicode): ++ for k,v in self.__dict__.items(): ++ if isinstance(v,str): + v = v.encode(sys.getfilesystemencoding()) + keys[k] = v + return str(self.msg % keys) + + def __unicode__(self): + keys = {} +- for k,v in self.__dict__.iteritems(): ++ for k,v in self.__dict__.items(): + if isinstance(v, six.binary_type): + v = v.decode(sys.getfilesystemencoding(), 'replace') + keys[k] = v +- return unicode(self.msg, encoding=sys.getfilesystemencoding(), errors='replace') % keys ++ return str(self.msg, encoding=sys.getfilesystemencoding(), errors='replace') % keys + + def __reduce__(self): + return (self.__class__,(),self.__dict__.copy(),) +@@ -217,33 +217,33 @@ def convert_fs_errors(func): + def wrapper(*args,**kwds): + try: + return func(*args,**kwds) +- except ResourceNotFoundError, e: ++ except ResourceNotFoundError as e: + raise OSError(errno.ENOENT,str(e)) +- except ParentDirectoryMissingError, e: ++ except ParentDirectoryMissingError as e: + if sys.platform == "win32": + raise OSError(errno.ESRCH,str(e)) + else: + raise OSError(errno.ENOENT,str(e)) +- except ResourceInvalidError, e: ++ except ResourceInvalidError as e: + raise OSError(errno.EINVAL,str(e)) +- except PermissionDeniedError, e: ++ except PermissionDeniedError as e: + raise OSError(errno.EACCES,str(e)) +- except ResourceLockedError, e: ++ except ResourceLockedError as e: + if sys.platform == "win32": + raise WindowsError(32,str(e)) + else: + raise OSError(errno.EACCES,str(e)) +- except DirectoryNotEmptyError, e: ++ except DirectoryNotEmptyError as e: + raise OSError(errno.ENOTEMPTY,str(e)) +- except DestinationExistsError, e: ++ except DestinationExistsError as e: + raise OSError(errno.EEXIST,str(e)) +- except StorageSpaceError, e: ++ except StorageSpaceError as e: + raise OSError(errno.ENOSPC,str(e)) +- except RemoteConnectionError, e: ++ except RemoteConnectionError as e: + raise OSError(errno.ENETDOWN,str(e)) +- except UnsupportedError, e: ++ except UnsupportedError as e: + raise OSError(errno.ENOSYS,str(e)) +- except FSError, e: ++ except FSError as e: + raise OSError(errno.EFAULT,str(e)) + return wrapper + +@@ -255,7 +255,7 @@ def convert_os_errors(func): + def wrapper(self,*args,**kwds): + try: + return func(self,*args,**kwds) +- except (OSError,IOError), e: ++ except (OSError,IOError) as e: + (exc_type,exc_inst,tb) = sys.exc_info() + path = getattr(e,"filename",None) + if path and path[0] == "/" and hasattr(self,"root_path"): +@@ -263,53 +263,53 @@ def convert_os_errors(func): + if isprefix(self.root_path,path): + path = path[len(self.root_path):] + if not hasattr(e,"errno") or not e.errno: +- raise OperationFailedError(opname,details=e),None,tb ++ raise OperationFailedError(opname,details=e).with_traceback(tb) + if e.errno == errno.ENOENT: +- raise ResourceNotFoundError(path,opname=opname,details=e),None,tb ++ raise ResourceNotFoundError(path,opname=opname,details=e).with_traceback(tb) + if e.errno == errno.EFAULT: + # This can happen when listdir a directory that is deleted by another thread + # Best to interpret it as a resource not found +- raise ResourceNotFoundError(path,opname=opname,details=e),None,tb ++ raise ResourceNotFoundError(path,opname=opname,details=e).with_traceback(tb) + if e.errno == errno.ESRCH: +- raise ResourceNotFoundError(path,opname=opname,details=e),None,tb ++ raise ResourceNotFoundError(path,opname=opname,details=e).with_traceback(tb) + if e.errno == errno.ENOTEMPTY: +- raise DirectoryNotEmptyError(path,opname=opname,details=e),None,tb ++ raise DirectoryNotEmptyError(path,opname=opname,details=e).with_traceback(tb) + if e.errno == errno.EEXIST: +- raise DestinationExistsError(path,opname=opname,details=e),None,tb ++ raise DestinationExistsError(path,opname=opname,details=e).with_traceback(tb) + if e.errno == 183: # some sort of win32 equivalent to EEXIST +- raise DestinationExistsError(path,opname=opname,details=e),None,tb ++ raise DestinationExistsError(path,opname=opname,details=e).with_traceback(tb) + if e.errno == errno.ENOTDIR: +- raise ResourceInvalidError(path,opname=opname,details=e),None,tb ++ raise ResourceInvalidError(path,opname=opname,details=e).with_traceback(tb) + if e.errno == errno.EISDIR: +- raise ResourceInvalidError(path,opname=opname,details=e),None,tb ++ raise ResourceInvalidError(path,opname=opname,details=e).with_traceback(tb) + if e.errno == errno.EINVAL: +- raise ResourceInvalidError(path,opname=opname,details=e),None,tb ++ raise ResourceInvalidError(path,opname=opname,details=e).with_traceback(tb) + if e.errno == errno.ENOSPC: +- raise StorageSpaceError(opname,path=path,details=e),None,tb ++ raise StorageSpaceError(opname,path=path,details=e).with_traceback(tb) + if e.errno == errno.EPERM: +- raise PermissionDeniedError(opname,path=path,details=e),None,tb ++ raise PermissionDeniedError(opname,path=path,details=e).with_traceback(tb) + if hasattr(errno,"ENONET") and e.errno == errno.ENONET: +- raise RemoteConnectionError(opname,path=path,details=e),None,tb ++ raise RemoteConnectionError(opname,path=path,details=e).with_traceback(tb) + if e.errno == errno.ENETDOWN: +- raise RemoteConnectionError(opname,path=path,details=e),None,tb ++ raise RemoteConnectionError(opname,path=path,details=e).with_traceback(tb) + if e.errno == errno.ECONNRESET: +- raise RemoteConnectionError(opname,path=path,details=e),None,tb ++ raise RemoteConnectionError(opname,path=path,details=e).with_traceback(tb) + if e.errno == errno.EACCES: + if sys.platform == "win32": + if e.args[0] and e.args[0] == 32: +- raise ResourceLockedError(path,opname=opname,details=e),None,tb +- raise PermissionDeniedError(opname,details=e),None,tb ++ raise ResourceLockedError(path,opname=opname,details=e).with_traceback(tb) ++ raise PermissionDeniedError(opname,details=e).with_traceback(tb) + # Sometimes windows gives some random errors... + if sys.platform == "win32": + if e.errno in (13,): +- raise ResourceInvalidError(path,opname=opname,details=e),None,tb ++ raise ResourceInvalidError(path,opname=opname,details=e).with_traceback(tb) + if e.errno == errno.ENAMETOOLONG: +- raise PathError(path,details=e),None,tb ++ raise PathError(path,details=e).with_traceback(tb) + if e.errno == errno.EOPNOTSUPP: +- raise UnsupportedError(opname,details=e),None,tb ++ raise UnsupportedError(opname,details=e).with_traceback(tb) + if e.errno == errno.ENOSYS: +- raise UnsupportedError(opname,details=e),None,tb +- raise OperationFailedError(opname,details=e),None,tb ++ raise UnsupportedError(opname,details=e).with_traceback(tb) ++ raise OperationFailedError(opname,details=e).with_traceback(tb) + return wrapper + + +--- fs/expose/dokan/__init__.py.orig 2015-04-12 17:24:29 UTC ++++ fs/expose/dokan/__init__.py +@@ -54,8 +54,8 @@ systems with Dokan installed. + # Copyright (c) 2009-2010, Cloud Matrix Pty. Ltd. + # All rights reserved; available under the terms of the MIT License. + +-from __future__ import with_statement + ++ + import sys + + import os +@@ -64,7 +64,7 @@ import errno + import time + import stat as statinfo + import subprocess +-import cPickle ++import pickle + import datetime + import ctypes + from collections import deque +@@ -76,7 +76,7 @@ from fs.local_functools import wraps + from fs.wrapfs import WrapFS + + try: +- import libdokan ++ from . import libdokan + except (NotImplementedError, EnvironmentError, ImportError, NameError,): + is_available = False + sys.modules.pop("fs.expose.dokan.libdokan", None) +@@ -171,12 +171,12 @@ def handle_fs_errors(func): + def wrapper(*args,**kwds): + try: + res = func(*args,**kwds) +- except OSError, e: ++ except OSError as e: + if e.errno: + res = -1 * _errno2syserrcode(e.errno) + else: + res = -1 +- except Exception, e: ++ except Exception as e: + raise + else: + if res is None: +@@ -424,7 +424,7 @@ class FSOperations(object): + info.contents.Context = 1 + try: + f = self.fs.open(path, mode) +- print path, mode, repr(f) ++ print(path, mode, repr(f)) + except ResourceInvalidError: + info.contents.IsDirectory = True + except FSError: +@@ -896,10 +896,10 @@ def mount(fs, drive, foreground=False, ready_callback= + def check_ready(mp=None): + if ready_callback is not False: + check_alive(mp) +- for _ in xrange(100): ++ for _ in range(100): + try: + os.stat(drive+":\\") +- except EnvironmentError, e: ++ except EnvironmentError as e: + check_alive(mp) + time.sleep(0.05) + else: +@@ -989,7 +989,7 @@ class MountProcess(subprocess.Popen): + cmd = cmd + "data = cPickle.loads(%s); " + cmd = cmd + "from fs.expose.dokan import MountProcess; " + cmd = cmd + "MountProcess._do_mount(data)" +- cmd = cmd % (repr(cPickle.dumps((fs,drive,dokan_opts,nowait),-1)),) ++ cmd = cmd % (repr(pickle.dumps((fs,drive,dokan_opts,nowait),-1)),) + cmd = [sys.executable,"-c",cmd] + super(MountProcess,self).__init__(cmd,**kwds) + +--- fs/expose/ftp.py.orig 2015-04-12 17:24:29 UTC ++++ fs/expose/ftp.py +@@ -28,7 +28,7 @@ from fs.osfs import OSFS + from fs.errors import convert_fs_errors + from fs import iotools + +-from six import text_type as unicode ++from six import text_type as str + + + # Get these once so we can reuse them: +@@ -107,9 +107,9 @@ class FTPFS(ftpserver.AbstractedFS): + def chdir(self, path): + # We dont' use the decorator here, we actually decode a version of the + # path for use with pyfs, but keep the original for use with pyftpdlib. +- if not isinstance(path, unicode): ++ if not isinstance(path, str): + # pyftpdlib 0.7.x +- unipath = unicode(path, self.encoding) ++ unipath = str(path, self.encoding) + else: + # pyftpdlib 1.x + unipath = path +@@ -134,7 +134,7 @@ class FTPFS(ftpserver.AbstractedFS): + @convert_fs_errors + @decode_args + def listdir(self, path): +- return map(lambda x: x.encode(self.encoding), self.fs.listdir(path)) ++ return [x.encode(self.encoding) for x in self.fs.listdir(path)] + + @convert_fs_errors + @decode_args +@@ -190,7 +190,7 @@ class FTPFS(ftpserver.AbstractedFS): + kwargs['st_mode'] = info['mode'] + else: + # Otherwise, build one. Not executable by default. +- mode = 0660 ++ mode = 0o660 + # Merge in the type (dir or file). File is tested first, some file systems + # such as ArchiveMountFS treat archive files as directories too. By checking + # file first, any such files will be only files (not directories). +@@ -198,7 +198,7 @@ class FTPFS(ftpserver.AbstractedFS): + mode |= stat.S_IFREG + elif self.fs.isdir(path): + mode |= stat.S_IFDIR +- mode |= 0110 # Merge in exec bit to signal dir is listable ++ mode |= 0o110 # Merge in exec bit to signal dir is listable + kwargs['st_mode'] = mode + return FakeStat(**kwargs) + +--- fs/expose/fuse/__init__.py.orig 2015-04-12 17:24:29 UTC ++++ fs/expose/fuse/__init__.py +@@ -56,7 +56,7 @@ import errno + import time + import stat as statinfo + import subprocess +-import cPickle ++import pickle + + import logging + logger = logging.getLogger("fs.expose.fuse") +@@ -404,9 +404,9 @@ class FSOperations(Operations): + # The interesting stuff + if 'st_mode' not in info: + if self.fs.isdir(path): +- info['st_mode'] = 0755 ++ info['st_mode'] = 0o755 + else: +- info['st_mode'] = 0666 ++ info['st_mode'] = 0o666 + mode = info['st_mode'] + if not statinfo.S_ISDIR(mode) and not statinfo.S_ISREG(mode): + if self.fs.isdir(path): +@@ -432,7 +432,7 @@ class FSOperations(Operations): + except KeyError: + pass + else: +- info["st_size"] = max(written_sizes.values() + [info["st_size"]]) ++ info["st_size"] = max(list(written_sizes.values()) + [info["st_size"]]) + return info + + +@@ -491,7 +491,7 @@ def unmount(path): + else: + args = ["fusermount", "-u", path] + +- for num_tries in xrange(3): ++ for num_tries in range(3): + p = subprocess.Popen(args, + stderr=subprocess.PIPE, + stdout=subprocess.PIPE) +@@ -554,7 +554,7 @@ class MountProcess(subprocess.Popen): + cmd = cmd + 'data = loads(%s); ' + cmd = cmd + 'from fs.expose.fuse import MountProcess; ' + cmd = cmd + 'MountProcess._do_mount_nowait(data)' +- cmd = cmd % (repr(cPickle.dumps((fs, path, fuse_opts), -1)),) ++ cmd = cmd % (repr(pickle.dumps((fs, path, fuse_opts), -1)),) + cmd = [sys.executable, "-c", cmd] + super(MountProcess, self).__init__(cmd, **kwds) + else: +@@ -567,7 +567,7 @@ class MountProcess(subprocess.Popen): + cmd = cmd + 'data = loads(%s); ' + cmd = cmd + 'from fs.expose.fuse import MountProcess; ' + cmd = cmd + 'MountProcess._do_mount_wait(data)' +- cmd = cmd % (repr(cPickle.dumps((fs, path, fuse_opts, r, w), -1)),) ++ cmd = cmd % (repr(pickle.dumps((fs, path, fuse_opts, r, w), -1)),) + cmd = [sys.executable, "-c", cmd] + super(MountProcess, self).__init__(cmd, **kwds) + os.close(w) +@@ -635,8 +635,8 @@ class MountProcess(subprocess.Popen): + opts["unmount_callback"] = unmount_callback + try: + mount(fs, path, **opts) +- except Exception, e: +- os.write(w, b("E") + unicode(e).encode('ascii', errors='replace')) ++ except Exception as e: ++ os.write(w, b("E") + str(e).encode('ascii', errors='replace')) + os.close(w) + + if not successful: +@@ -653,5 +653,5 @@ if __name__ == "__main__": + os.makedirs(mount_point) + + def ready_callback(): +- print "READY" ++ print("READY") + mount(TempFS(), mount_point, foreground=True, ready_callback=ready_callback) +--- fs/expose/fuse/fuse_ctypes.py.orig 2015-04-12 17:24:29 UTC ++++ fs/expose/fuse/fuse_ctypes.py +@@ -12,8 +12,8 @@ + # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +-from __future__ import division + ++ + from ctypes import * + from ctypes.util import find_library + from errno import * +@@ -273,7 +273,7 @@ def time_of_timespec(ts): + return ts.tv_sec + ts.tv_nsec / 10 ** 9 + + def set_st_attrs(st, attrs): +- for key, val in attrs.items(): ++ for key, val in list(attrs.items()): + if key in ('st_atime', 'st_mtime', 'st_ctime'): + timespec = getattr(st, key + 'spec') + timespec.tv_sec = int(val) +@@ -314,7 +314,7 @@ class FUSE(object): + kwargs.setdefault('fsname', operations.__class__.__name__) + args.append('-o') + args.append(','.join(key if val == True else '%s=%s' % (key, val) +- for key, val in kwargs.items())) ++ for key, val in list(kwargs.items()))) + args.append(mountpoint) + argv = (c_char_p * len(args))(*args) + +@@ -331,7 +331,7 @@ class FUSE(object): + """Decorator for the methods that follow""" + try: + return func(*args, **kwargs) or 0 +- except OSError, e: ++ except OSError as e: + return -(e.errno or EFAULT) + except: + print_exc() +@@ -400,7 +400,7 @@ class FUSE(object): + def statfs(self, path, buf): + stv = buf.contents + attrs = self.operations('statfs', path) +- for key, val in attrs.items(): ++ for key, val in list(attrs.items()): + if hasattr(stv, key): + setattr(stv, key, val) + return 0 +@@ -576,7 +576,7 @@ class Operations(object): + + if path != '/': + raise OSError(ENOENT, '') +- return dict(st_mode=(S_IFDIR | 0755), st_nlink=2) ++ return dict(st_mode=(S_IFDIR | 0o755), st_nlink=2) + + def getxattr(self, path, name, position=0): + raise OSError(ENOTSUP, '') +@@ -667,13 +667,13 @@ class Operations(object): + + class LoggingMixIn: + def __call__(self, op, path, *args): +- print '->', op, path, repr(args) ++ print('->', op, path, repr(args)) + ret = '[Unknown Error]' + try: + ret = getattr(self, op)(path, *args) + return ret +- except OSError, e: ++ except OSError as e: + ret = str(e) + raise + finally: +- print '<-', op, repr(ret) ++ print('<-', op, repr(ret)) +--- fs/expose/fuse/fuse.py.orig 2015-04-12 17:24:29 UTC ++++ fs/expose/fuse/fuse.py +@@ -12,8 +12,8 @@ + # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +-from __future__ import division + ++ + from ctypes import * + from ctypes.util import find_library + from errno import * +@@ -269,7 +269,7 @@ def time_of_timespec(ts): + return ts.tv_sec + ts.tv_nsec / 10 ** 9 + + def set_st_attrs(st, attrs): +- for key, val in attrs.items(): ++ for key, val in list(attrs.items()): + if key in ('st_atime', 'st_mtime', 'st_ctime'): + timespec = getattr(st, key + 'spec') + timespec.tv_sec = int(val) +@@ -312,7 +312,7 @@ class FUSE(object): + kwargs.setdefault('fsname', operations.__class__.__name__) + args.append('-o') + args.append(','.join(key if val == True else '%s=%s' % (key, val) +- for key, val in kwargs.items())) ++ for key, val in list(kwargs.items()))) + args.append(mountpoint) + argv = (c_char_p * len(args))(*args) + +@@ -331,7 +331,7 @@ class FUSE(object): + """Decorator for the methods that follow""" + try: + return func(*args, **kwargs) or 0 +- except OSError, e: ++ except OSError as e: + return -(e.errno or EFAULT) + except: + print_exc() +@@ -406,7 +406,7 @@ class FUSE(object): + def statfs(self, path, buf): + stv = buf.contents + attrs = self.operations('statfs', path) +- for key, val in attrs.items(): ++ for key, val in list(attrs.items()): + if hasattr(stv, key): + setattr(stv, key, val) + return 0 +@@ -579,7 +579,7 @@ class Operations(object): + + if path != '/': + raise FuseOSError(ENOENT) +- return dict(st_mode=(S_IFDIR | 0755), st_nlink=2) ++ return dict(st_mode=(S_IFDIR | 0o755), st_nlink=2) + + def getxattr(self, path, name, position=0): + raise FuseOSError(ENOTSUP) +@@ -670,13 +670,13 @@ class Operations(object): + + class LoggingMixIn: + def __call__(self, op, path, *args): +- print '->', op, path, repr(args) ++ print('->', op, path, repr(args)) + ret = '[Unhandled Exception]' + try: + ret = getattr(self, op)(path, *args) + return ret +- except OSError, e: ++ except OSError as e: + ret = str(e) + raise + finally: +- print '<-', op, repr(ret) ++ print('<-', op, repr(ret)) +--- fs/expose/fuse/fuse3.py.orig 2022-03-04 17:14:43 UTC ++++ fs/expose/fuse/fuse3.py +@@ -229,7 +229,7 @@ def time_of_timespec(ts): + return ts.tv_sec + ts.tv_nsec / 10 ** 9 + + def set_st_attrs(st, attrs): +- for key, val in attrs.items(): ++ for key, val in list(attrs.items()): + if key in ('st_atime', 'st_mtime', 'st_ctime'): + timespec = getattr(st, key + 'spec') + timespec.tv_sec = int(val) +@@ -274,7 +274,7 @@ class FUSE(object): + kwargs.setdefault('fsname', operations.__class__.__name__) + args.append('-o') + args.append(','.join(key if val == True else '%s=%s' % (key, val) +- for key, val in kwargs.items())) ++ for key, val in list(kwargs.items()))) + args.append(mountpoint) + argv = (c_char_p * len(args))(*args) + +@@ -361,7 +361,7 @@ class FUSE(object): + def statfs(self, path, buf): + stv = buf.contents + attrs = self.operations('statfs', path) +- for key, val in attrs.items(): ++ for key, val in list(attrs.items()): + if hasattr(stv, key): + setattr(stv, key, val) + return 0 +--- fs/expose/http.py.orig 2015-04-12 17:24:29 UTC ++++ fs/expose/http.py +@@ -1,13 +1,13 @@ + __all__ = ["serve_fs"] + +-import SimpleHTTPServer +-import SocketServer ++import http.server ++import socketserver + from fs.path import pathjoin, dirname + from fs.errors import FSError + from time import mktime +-from cStringIO import StringIO ++from io import StringIO + import cgi +-import urllib ++import urllib.request, urllib.parse, urllib.error + import posixpath + import time + import threading +@@ -16,13 +16,13 @@ import socket + def _datetime_to_epoch(d): + return mktime(d.timetuple()) + +-class FSHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): ++class FSHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): + + """A hacked together version of SimpleHTTPRequestHandler""" + + def __init__(self, fs, request, client_address, server): + self._fs = fs +- SimpleHTTPServer.SimpleHTTPRequestHandler.__init__(self, request, client_address, server) ++ http.server.SimpleHTTPRequestHandler.__init__(self, request, client_address, server) + + def do_GET(self): + """Serve a GET request.""" +@@ -69,7 +69,7 @@ class FSHTTPRequestHandler(SimpleHTTPServer.SimpleHTTP + try: + info = self._fs.getinfo(path) + f = self._fs.open(path, 'rb') +- except FSError, e: ++ except FSError as e: + self.send_error(404, str(e)) + return None + self.send_response(200) +@@ -98,7 +98,7 @@ class FSHTTPRequestHandler(SimpleHTTPServer.SimpleHTTP + paths = [p+'/' for p in sorted(dir_paths, key=lambda p:p.lower())] + sorted(file_paths, key=lambda p:p.lower()) + #list.sort(key=lambda a: a.lower()) + f = StringIO() +- displaypath = cgi.escape(urllib.unquote(self.path)) ++ displaypath = cgi.escape(urllib.parse.unquote(self.path)) + f.write('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">') + f.write("<html>\n<title>Directory listing for %s</title>\n" % displaypath) + f.write("<body>\n<h2>Directory listing for %s</h2>\n" % displaypath) +@@ -106,11 +106,11 @@ class FSHTTPRequestHandler(SimpleHTTPServer.SimpleHTTP + + parent = dirname(path) + if path != parent: +- f.write('<li><a href="%s">../</a></li>' % urllib.quote(parent.rstrip('/') + '/')) ++ f.write('<li><a href="%s">../</a></li>' % urllib.parse.quote(parent.rstrip('/') + '/')) + + for path in paths: + f.write('<li><a href="%s">%s</a>\n' +- % (urllib.quote(path), cgi.escape(path))) ++ % (urllib.parse.quote(path), cgi.escape(path))) + f.write("</ul>\n<hr>\n</body>\n</html>\n") + length = f.tell() + f.seek(0) +@@ -124,7 +124,7 @@ class FSHTTPRequestHandler(SimpleHTTPServer.SimpleHTTP + # abandon query parameters + path = path.split('?',1)[0] + path = path.split('#',1)[0] +- path = posixpath.normpath(urllib.unquote(path)) ++ path = posixpath.normpath(urllib.parse.unquote(path)) + return path + + +@@ -143,7 +143,7 @@ def serve_fs(fs, address='', port=8000): + + #class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): + # pass +- httpd = SocketServer.TCPServer((address, port), Handler, bind_and_activate=False) ++ httpd = socketserver.TCPServer((address, port), Handler, bind_and_activate=False) + #httpd = ThreadedTCPServer((address, port), Handler, bind_and_activate=False) + httpd.allow_reuse_address = True + httpd.server_bind() +--- fs/expose/importhook.py.orig 2015-04-12 17:24:29 UTC ++++ fs/expose/importhook.py +@@ -60,7 +60,7 @@ class FSImportHook(object): + def __init__(self,fs_or_url): + # If given a string, try to open it as an FS url. + # Don't open things on the local filesystem though. +- if isinstance(fs_or_url,basestring): ++ if isinstance(fs_or_url,str): + if ":/" not in fs_or_url: + raise ImportError + try: +@@ -182,7 +182,7 @@ class FSImportHook(object): + mod.__loader__ = self + sys.modules[fullname] = mod + try: +- exec code in mod.__dict__ ++ exec(code, mod.__dict__) + mod.__file__ = self.get_filename(fullname,info) + if self.is_package(fullname,info): + if self.path is None: +@@ -231,7 +231,7 @@ class FSImportHook(object): + """Read the specified data file.""" + try: + return self.fs.getcontents(path, 'rb') +- except FSError, e: ++ except FSError as e: + raise IOError(str(e)) + + def get_filename(self,fullname,info=None): +--- fs/expose/sftp.py.orig 2015-04-12 17:24:29 UTC ++++ fs/expose/sftp.py +@@ -24,12 +24,12 @@ is, you probably don't want to use it. + + """ + +-from __future__ import with_statement + ++ + import os + import stat as statinfo + import time +-import SocketServer ++import socketserver + import threading + + import paramiko +@@ -73,11 +73,11 @@ def report_sftp_errors(func): + def wrapper(*args,**kwds): + try: + return func(*args, **kwds) +- except ResourceNotFoundError, e: ++ except ResourceNotFoundError as e: + return paramiko.SFTP_NO_SUCH_FILE +- except UnsupportedError, e: ++ except UnsupportedError as e: + return paramiko.SFTP_OP_UNSUPPORTED +- except FSError, e: ++ except FSError as e: + return paramiko.SFTP_FAILURE + return wrapper + +@@ -114,7 +114,7 @@ class SFTPServerInterface(paramiko.SFTPServerInterface + + @report_sftp_errors + def list_folder(self, path): +- if not isinstance(path, unicode): ++ if not isinstance(path, str): + path = path.decode(self.encoding) + stats = [] + for entry in self.fs.listdir(path, absolute=True): +@@ -125,7 +125,7 @@ class SFTPServerInterface(paramiko.SFTPServerInterface + + @report_sftp_errors + def stat(self, path): +- if not isinstance(path, unicode): ++ if not isinstance(path, str): + path = path.decode(self.encoding) + + info = self.fs.getinfo(path) +@@ -146,9 +146,9 @@ class SFTPServerInterface(paramiko.SFTPServerInterface + stat.st_mtime = time.mktime(info.get("modified_time").timetuple()) + + if isdir(self.fs, path, info): +- stat.st_mode = 0777 | statinfo.S_IFDIR ++ stat.st_mode = 0o777 | statinfo.S_IFDIR + else: +- stat.st_mode = 0777 | statinfo.S_IFREG ++ stat.st_mode = 0o777 | statinfo.S_IFREG + return stat + + def lstat(self, path): +@@ -156,16 +156,16 @@ class SFTPServerInterface(paramiko.SFTPServerInterface + + @report_sftp_errors + def remove(self, path): +- if not isinstance(path, unicode): ++ if not isinstance(path, str): + path = path.decode(self.encoding) + self.fs.remove(path) + return paramiko.SFTP_OK + + @report_sftp_errors + def rename(self, oldpath, newpath): +- if not isinstance(oldpath, unicode): ++ if not isinstance(oldpath, str): + oldpath = oldpath.decode(self.encoding) +- if not isinstance(newpath, unicode): ++ if not isinstance(newpath, str): + newpath = newpath.decode(self.encoding) + if self.fs.isfile(oldpath): + self.fs.move(oldpath, newpath) +@@ -175,14 +175,14 @@ class SFTPServerInterface(paramiko.SFTPServerInterface + + @report_sftp_errors + def mkdir(self, path, attr): +- if not isinstance(path, unicode): ++ if not isinstance(path, str): + path = path.decode(self.encoding) + self.fs.makedir(path) + return paramiko.SFTP_OK + + @report_sftp_errors + def rmdir(self, path): +- if not isinstance(path, unicode): ++ if not isinstance(path, str): + path = path.decode(self.encoding) + self.fs.removedir(path) + return paramiko.SFTP_OK +@@ -224,7 +224,7 @@ class SFTPHandle(paramiko.SFTPHandle): + super(SFTPHandle, self).__init__(flags) + mode = flags_to_mode(flags) + self.owner = owner +- if not isinstance(path, unicode): ++ if not isinstance(path, str): + path = path.decode(self.owner.encoding) + self.path = path + self._file = owner.fs.open(path, mode) +@@ -263,7 +263,7 @@ class SFTPServer(paramiko.SFTPServer): + super(SFTPServer, self).finish_subsystem() + + +-class SFTPRequestHandler(SocketServer.BaseRequestHandler): ++class SFTPRequestHandler(socketserver.BaseRequestHandler): + """SocketServer RequestHandler subclass for BaseSFTPServer. + + This RequestHandler subclass creates a paramiko Transport, sets up the +@@ -305,7 +305,7 @@ class SFTPRequestHandler(SocketServer.BaseRequestHandl + + + +-class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): ++class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer): + pass + + +@@ -334,7 +334,7 @@ class BaseSFTPServer(ThreadedTCPServer): + self.host_key = host_key + if RequestHandlerClass is None: + RequestHandlerClass = SFTPRequestHandler +- SocketServer.TCPServer.__init__(self, address, RequestHandlerClass) ++ socketserver.TCPServer.__init__(self, address, RequestHandlerClass) + + def shutdown_request(self, request): + # Prevent TCPServer from closing the connection prematurely +--- fs/expose/wsgi/__init__.py.orig 2022-03-04 17:14:43 UTC ++++ fs/expose/wsgi/__init__.py +@@ -1 +1 @@ +-from wsgi import serve_fs ++from .wsgi import serve_fs +--- fs/expose/wsgi/serve_home.py.orig 2015-04-12 17:24:29 UTC ++++ fs/expose/wsgi/serve_home.py +@@ -1,10 +1,10 @@ + from wsgiref.simple_server import make_server + + from fs.osfs import OSFS +-from wsgi import serve_fs ++from .wsgi import serve_fs + osfs = OSFS('~/') + application = serve_fs(osfs) + + httpd = make_server('', 8000, application) +-print "Serving on http://127.0.0.1:8000" ++print("Serving on http://127.0.0.1:8000") + httpd.serve_forever() +--- fs/expose/wsgi/wsgi.py.orig 2015-04-12 17:24:29 UTC ++++ fs/expose/wsgi/wsgi.py +@@ -1,5 +1,5 @@ + +-import urlparse ++import urllib.parse + import mimetypes + + from fs.errors import FSError +@@ -10,7 +10,7 @@ from datetime import datetime + try: + from mako.template import Template + except ImportError: +- print "Requires mako templates http://www.makotemplates.org/" ++ print("Requires mako templates http://www.makotemplates.org/") + raise + + +@@ -28,7 +28,7 @@ class WSGIServer(object): + def __init__(self, serve_fs, indexes=True, dir_template=None, chunk_size=16*1024*1024): + + if dir_template is None: +- from dirtemplate import template as dir_template ++ from .dirtemplate import template as dir_template + + self.serve_fs = serve_fs + self.indexes = indexes +@@ -57,7 +57,7 @@ class WSGIServer(object): + serving_file = None + try: + serving_file = self.serve_fs.open(path, 'rb') +- except Exception, e: ++ except Exception as e: + if serving_file is not None: + serving_file.close() + return self.serve_500(request, str(e)) +--- fs/expose/xmlrpc.py.orig 2022-03-04 17:14:43 UTC ++++ fs/expose/xmlrpc.py +@@ -15,8 +15,8 @@ an FS object, which can then be exposed using whatever + + """ + +-import xmlrpclib +-from SimpleXMLRPCServer import SimpleXMLRPCServer ++import xmlrpc.client ++from xmlrpc.server import SimpleXMLRPCServer + from datetime import datetime + import base64 + +@@ -61,13 +61,13 @@ class RPCFSInterface(object): + + def getmeta(self, meta_name): + meta = self.fs.getmeta(meta_name) +- if isinstance(meta, basestring): ++ if isinstance(meta, str): + meta = self.decode_path(meta) + return meta + + def getmeta_default(self, meta_name, default): + meta = self.fs.getmeta(meta_name, default) +- if isinstance(meta, basestring): ++ if isinstance(meta, str): + meta = self.decode_path(meta) + return meta + +@@ -77,7 +77,7 @@ class RPCFSInterface(object): + def get_contents(self, path, mode="rb"): + path = self.decode_path(path) + data = self.fs.getcontents(path, mode) +- return xmlrpclib.Binary(data) ++ return xmlrpc.client.Binary(data) + + def set_contents(self, path, data): + path = self.decode_path(path) +@@ -119,16 +119,16 @@ class RPCFSInterface(object): + + def settimes(self, path, accessed_time, modified_time): + path = self.decode_path(path) +- if isinstance(accessed_time, xmlrpclib.DateTime): ++ if isinstance(accessed_time, xmlrpc.client.DateTime): + accessed_time = datetime.strptime(accessed_time.value, "%Y%m%dT%H:%M:%S") +- if isinstance(modified_time, xmlrpclib.DateTime): ++ if isinstance(modified_time, xmlrpc.client.DateTime): + modified_time = datetime.strptime(modified_time.value, "%Y%m%dT%H:%M:%S") + return self.fs.settimes(path, accessed_time, modified_time) + + def getinfo(self, path): + path = self.decode_path(path) + info = self.fs.getinfo(path) +- info = dict((k, v) for k, v in info.iteritems() ++ info = dict((k, v) for k, v in info.items() + if k in self._allowed_info) + return info + +--- fs/filelike.py.orig 2022-03-04 17:14:43 UTC ++++ fs/filelike.py +@@ -52,9 +52,9 @@ if PY3: + from six import BytesIO as _StringIO + else: + try: +- from cStringIO import StringIO as _StringIO ++ from io import StringIO as _StringIO + except ImportError: +- from StringIO import StringIO as _StringIO ++ from io import StringIO as _StringIO + + + class FileLikeBase(object): +@@ -305,7 +305,7 @@ class FileLikeBase(object): + self.close() + return False + +- def next(self): ++ def __next__(self): + """next() method complying with the iterator protocol. + + File-like objects are their own iterators, with each call to +--- fs/ftpfs.py.orig 2015-04-12 17:24:29 UTC ++++ fs/ftpfs.py +@@ -37,9 +37,9 @@ if PY3: + from six import BytesIO as StringIO + else: + try: +- from cStringIO import StringIO ++ from io import StringIO + except ImportError: +- from StringIO import StringIO ++ from io import StringIO + + import time + +@@ -221,10 +221,10 @@ class FTPListDataParser(object): + elif c == 'r': + result.try_retr = True + elif c == 's': +- result.size = long(buf[i+1:j]) ++ result.size = int(buf[i+1:j]) + elif c == 'm': + result.mtime_type = MTIME_TYPE.LOCAL +- result.mtime = long(buf[i+1:j]) ++ result.mtime = int(buf[i+1:j]) + elif c == 'i': + result.id_type = ID_TYPE.FULL + result.id = buf[i+1:j-i-1] +@@ -285,7 +285,7 @@ class FTPListDataParser(object): + + elif state == 4: # getting tentative size + try: +- size = long(buf[i:j]) ++ size = int(buf[i:j]) + except ValueError: + pass + state = 5 +@@ -295,25 +295,25 @@ class FTPListDataParser(object): + if month >= 0: + state = 6 + else: +- size = long(buf[i:j]) ++ size = int(buf[i:j]) + + elif state == 6: # have size and month +- mday = long(buf[i:j]) ++ mday = int(buf[i:j]) + state = 7 + + elif state == 7: # have size, month, mday + if (j - i == 4) and (buf[i+1] == ':'): +- hour = long(buf[i]) +- minute = long(buf[i+2:i+4]) ++ hour = int(buf[i]) ++ minute = int(buf[i+2:i+4]) + result.mtime_type = MTIME_TYPE.REMOTE_MINUTE + result.mtime = self._guess_time(month, mday, hour, minute) + elif (j - i == 5) and (buf[i+2] == ':'): +- hour = long(buf[i:i+2]) +- minute = long(buf[i+3:i+5]) ++ hour = int(buf[i:i+2]) ++ minute = int(buf[i+3:i+5]) + result.mtime_type = MTIME_TYPE.REMOTE_MINUTE + result.mtime = self._guess_time(month, mday, hour, minute) + elif j - i >= 4: +- year = long(buf[i:j]) ++ year = int(buf[i:j]) + result.mtime_type = MTIME_TYPE.REMOTE_DAY + result.mtime = self._get_mtime(year, month, mday) + else: +@@ -379,7 +379,7 @@ class FTPListDataParser(object): + j = i + + j = buf.index('-', j) +- mday = long(buf[i:j]) ++ mday = int(buf[i:j]) + + j = _skip(buf, j, '-') + i = j +@@ -391,13 +391,13 @@ class FTPListDataParser(object): + j = _skip(buf, j, '-') + i = j + j = buf.index(' ', j) +- year = long(buf[i:j]) ++ year = int(buf[i:j]) + + j = _skip(buf, j, ' ') + i = j + + j = buf.index(':', j) +- hour = long(buf[i:j]) ++ hour = int(buf[i:j]) + j = _skip(buf, j, ':') + i = j + +@@ -406,7 +406,7 @@ class FTPListDataParser(object): + if j == buflen: + raise IndexError # abort, abort! + +- minute = long(buf[i:j]) ++ minute = int(buf[i:j]) + + result.mtime_type = MTIME_TYPE.REMOTE_MINUTE + result.mtime = self._get_mtime(year, month, mday, hour, minute) +@@ -430,17 +430,17 @@ class FTPListDataParser(object): + result = FTPListData(buf) + + j = buf.index('-', j) +- month = long(buf[i:j]) ++ month = int(buf[i:j]) + + j = _skip(buf, j, '-') + i = j + j = buf.index('-', j) +- mday = long(buf[i:j]) ++ mday = int(buf[i:j]) + + j = _skip(buf, j, '-') + i = j + j = buf.index(' ', j) +- year = long(buf[i:j]) ++ year = int(buf[i:j]) + if year < 50: + year += 2000 + if year < 1000: +@@ -449,14 +449,14 @@ class FTPListDataParser(object): + j = _skip(buf, j, ' ') + i = j + j = buf.index(':', j) +- hour = long(buf[i:j]) ++ hour = int(buf[i:j]) + j = _skip(buf, j, ':') + i = j + while not (buf[j] in 'AP'): + j += 1 + if j == buflen: + raise IndexError +- minute = long(buf[i:j]) ++ minute = int(buf[i:j]) + + if buf[j] == 'A': + j += 1 +@@ -482,7 +482,7 @@ class FTPListDataParser(object): + i = j + j = buf.index(' ', j) + +- result.size = long(buf[i:j]) ++ result.size = int(buf[i:j]) + result.try_retr = True + + j = _skip(buf, j, ' ') +@@ -546,10 +546,10 @@ class FTPMlstDataParser(object): + int(factvalue[12:14]), + 0, 0, 0)) + elif factname == 'size': +- result.size = long(factvalue) ++ result.size = int(factvalue) + elif factname == 'sizd': + # some FTP servers report directory size with sizd +- result.size = long(factvalue) ++ result.size = int(factvalue) + elif factname == 'type': + if factvalue.lower() == 'file': + result.try_retr = True +@@ -605,7 +605,7 @@ def fileftperrors(f): + try: + try: + ret = f(self, *args, **kwargs) +- except Exception, e: ++ except Exception as e: + self.ftpfs._translate_exception(args[0] if args else '', e) + finally: + self._lock.release() +@@ -795,16 +795,16 @@ class _FTPFile(object): + self.conn.close() + self.conn = None + self.ftp.voidresp() +- except error_temp, error_perm: ++ except error_temp as error_perm: + pass + if self.ftp is not None: + try: + self.ftp.close() +- except error_temp, error_perm: ++ except error_temp as error_perm: + pass + self.closed = True + +- def next(self): ++ def __next__(self): + return self.readline() + + def readline(self, size=None): +@@ -823,7 +823,7 @@ def ftperrors(f): + try: + try: + ret = f(self, *args, **kwargs) +- except Exception, e: ++ except Exception as e: + self._translate_exception(args[0] if args else '', e) + finally: + self._leave_dircache() +@@ -834,7 +834,7 @@ def ftperrors(f): + + + def _encode(s): +- if isinstance(s, unicode): ++ if isinstance(s, str): + return s.encode('utf-8') + return s + +@@ -956,7 +956,7 @@ class FTPFS(FS): + return features + + def on_line(line): +- if not isinstance(line, unicode): ++ if not isinstance(line, str): + line = line.decode('utf-8') + info = parse_ftp_list_line(line, self.use_mlst) + if info: +@@ -986,7 +986,7 @@ class FTPFS(FS): + else: # Matrix FTP server has bug + on_line(list_line) + # if it's a dir, then we can send a MLSD +- if dirlist[dirlist.keys()[0]]['try_cwd']: ++ if dirlist[list(dirlist.keys())[0]]['try_cwd']: + dirlist = {} + self.ftp.retrlines("MLSD " + encoded_path, on_line) + else: +@@ -996,11 +996,11 @@ class FTPFS(FS): + self.dircache[path] = dirlist + + def is_symlink(info): +- return info['try_retr'] and info['try_cwd'] and info.has_key('target') ++ return info['try_retr'] and info['try_cwd'] and 'target' in info + + def resolve_symlink(linkpath): + linkinfo = self.getinfo(linkpath) +- if not linkinfo.has_key('resolved'): ++ if 'resolved' not in linkinfo: + linkinfo['resolved'] = linkpath + if is_symlink(linkinfo): + target = linkinfo['target'] +@@ -1036,7 +1036,7 @@ class FTPFS(FS): + else: + dircache = self.dircache + paths = [normpath(abspath(path)) for path in paths] +- for cached_path in dircache.keys(): ++ for cached_path in list(dircache.keys()): + for path in paths: + if isbase(cached_path, path): + dircache.pop(cached_path, None) +@@ -1083,7 +1083,7 @@ class FTPFS(FS): + else: + ftp.connect(self.host, self.port, self.timeout) + ftp.login(self.user, self.passwd, self.acct) +- except socket_error, e: ++ except socket_error as e: + raise RemoteConnectionError(str(e), details=e) + return ftp + +@@ -1104,7 +1104,7 @@ class FTPFS(FS): + return '<FTPFS %s>' % self.host + + def __unicode__(self): +- return u'<FTPFS %s>' % self.host ++ return '<FTPFS %s>' % self.host + + @convert_os_errors + def _translate_exception(self, path, exception): +@@ -1225,7 +1225,7 @@ class FTPFS(FS): + raise ResourceNotFoundError(path) + if not self.isdir(path): + raise ResourceInvalidError(path) +- paths = self._readdir(path).keys() ++ paths = list(self._readdir(path).keys()) + + return self._listdir_helper(path, paths, wildcard, full, absolute, dirs_only, files_only) + +@@ -1266,7 +1266,7 @@ class FTPFS(FS): + self.ftp.mkd(_encode(path)) + except error_reply: + return +- except error_perm, e: ++ except error_perm as e: + if recursive or allow_recreate: + return + if str(e).split(' ', 1)[0]=='550': +@@ -1337,7 +1337,7 @@ class FTPFS(FS): + try: + self.refresh_dircache(dirname(src), dirname(dst)) + self.ftp.rename(_encode(src), _encode(dst)) +- except error_perm, exception: ++ except error_perm as exception: + code, message = str(exception).split(' ', 1) + if code == "550": + if not self.exists(dirname(dst)): +--- fs/httpfs.py.orig 2015-04-12 17:24:29 UTC ++++ fs/httpfs.py +@@ -10,8 +10,8 @@ from fs.path import normpath + from fs.errors import ResourceNotFoundError, UnsupportedError + from fs.filelike import FileWrapper + from fs import iotools +- +-from urllib2 import urlopen, URLError ++from urllib.request import urlopen ++from urllib.error import URLError + from datetime import datetime + + +@@ -50,9 +50,9 @@ class HTTPFS(FS): + url = self._make_url(path) + try: + f = urlopen(url) +- except URLError, e: ++ except URLError as e: + raise ResourceNotFoundError(path, details=e) +- except OSError, e: ++ except OSError as e: + raise ResourceNotFoundError(path, details=e) + + return FileWrapper(f) +--- fs/iotools.py.orig 2022-03-04 17:14:43 UTC ++++ fs/iotools.py +@@ -1,6 +1,6 @@ +-from __future__ import unicode_literals +-from __future__ import print_function + ++ ++ + from fs import SEEK_SET, SEEK_CUR, SEEK_END + + import io +@@ -178,7 +178,7 @@ def make_bytes_io(data, encoding=None, errors=None): + if hasattr(data, 'mode') and 'b' in data.mode: + # It's already a binary file + return data +- if not isinstance(data, basestring): ++ if not isinstance(data, str): + # It's a file, but we don't know if its binary + # TODO: Is there a better way than reading the entire file? + data = data.read() or b'' +--- fs/memoryfs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/memoryfs.py +@@ -78,10 +78,10 @@ class MemoryFile(object): + return "<MemoryFile in %s %s>" % (self.memory_fs, self.path) + + def __repr__(self): +- return u"<MemoryFile in %s %s>" % (self.memory_fs, self.path) ++ return "<MemoryFile in %s %s>" % (self.memory_fs, self.path) + + def __unicode__(self): +- return u"<MemoryFile in %s %s>" % (self.memory_fs, self.path) ++ return "<MemoryFile in %s %s>" % (self.memory_fs, self.path) + + def __del__(self): + if not self.closed: +@@ -101,7 +101,7 @@ class MemoryFile(object): + def next(self): + if 'r' not in self.mode and '+' not in self.mode: + raise IOError("File not open for reading") +- return self.mem_file.next() ++ return next(self.mem_file) + + @seek_and_lock + def readline(self, *args, **kwargs): +@@ -218,7 +218,7 @@ class DirEntry(object): + if self.isfile(): + return "<file %s>" % self.name + elif self.isdir(): +- return "<dir %s>" % "".join("%s: %s" % (k, v.desc_contents()) for k, v in self.contents.iteritems()) ++ return "<dir %s>" % "".join("%s: %s" % (k, v.desc_contents()) for k, v in self.contents.items()) + + def isdir(self): + return self.type == "dir" +@@ -559,10 +559,10 @@ class MemoryFS(FS): + raise ResourceNotFoundError(path) + if dir_entry.isfile(): + raise ResourceInvalidError(path, msg="not a directory: %(path)s") +- paths = dir_entry.contents.keys() ++ paths = list(dir_entry.contents.keys()) + for (i,p) in enumerate(paths): +- if not isinstance(p,unicode): +- paths[i] = unicode(p) ++ if not isinstance(p,str): ++ paths[i] = str(p) + return self._listdir_helper(path, paths, wildcard, full, absolute, dirs_only, files_only) + + @synchronize +@@ -578,10 +578,10 @@ class MemoryFS(FS): + info['accessed_time'] = dir_entry.accessed_time + + if dir_entry.isdir(): +- info['st_mode'] = 0755 | stat.S_IFDIR ++ info['st_mode'] = 0o755 | stat.S_IFDIR + else: + info['size'] = len(dir_entry.data or b('')) +- info['st_mode'] = 0666 | stat.S_IFREG ++ info['st_mode'] = 0o666 | stat.S_IFREG + + return info + +@@ -671,12 +671,12 @@ class MemoryFS(FS): + @synchronize + def setxattr(self, path, key, value): + dir_entry = self._dir_entry(path) +- key = unicode(key) ++ key = str(key) + dir_entry.xattrs[key] = value + + @synchronize + def getxattr(self, path, key, default=None): +- key = unicode(key) ++ key = str(key) + dir_entry = self._dir_entry(path) + return dir_entry.xattrs.get(key, default) + +@@ -691,4 +691,4 @@ class MemoryFS(FS): + @synchronize + def listxattrs(self, path): + dir_entry = self._dir_entry(path) +- return dir_entry.xattrs.keys() ++ return list(dir_entry.xattrs.keys()) +--- fs/mountfs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/mountfs.py +@@ -61,7 +61,7 @@ class DirMount(object): + return "<DirMount %s, %s>" % (self.path, self.fs) + + def __unicode__(self): +- return u"<DirMount %s, %s>" % (self.path, self.fs) ++ return "<DirMount %s, %s>" % (self.path, self.fs) + + + class FileMount(object): +@@ -90,12 +90,12 @@ class MountFS(FS): + self.mount_tree = PathMap() + + def __str__(self): +- return "<%s [%s]>" % (self.__class__.__name__,self.mount_tree.items(),) ++ return "<%s [%s]>" % (self.__class__.__name__,list(self.mount_tree.items()),) + + __repr__ = __str__ + + def __unicode__(self): +- return u"<%s [%s]>" % (self.__class__.__name__,self.mount_tree.items(),) ++ return "<%s [%s]>" % (self.__class__.__name__,list(self.mount_tree.items()),) + + def _delegate(self, path): + path = abspath(normpath(path)) +@@ -119,7 +119,7 @@ class MountFS(FS): + return self, "/", path + + try: +- self.mount_tree.iternames(path).next() ++ next(self.mount_tree.iternames(path)) + except StopIteration: + return None, None, None + else: +@@ -129,7 +129,7 @@ class MountFS(FS): + def close(self): + # Explicitly closes children if requested + if self.auto_close: +- for mount in self.mount_tree.itervalues(): ++ for mount in self.mount_tree.values(): + mount.fs.close() + # Free references (which may incidently call the close method of the child filesystems) + self.mount_tree.clear() +--- fs/multifs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/multifs.py +@@ -106,7 +106,7 @@ class MultiFS(FS): + + @synchronize + def __unicode__(self): +- return u"<MultiFS: %s>" % ", ".join(unicode(fs) for fs in self.fs_sequence) ++ return "<MultiFS: %s>" % ", ".join(str(fs) for fs in self.fs_sequence) + + def _get_priority(self, name): + return self.fs_priorities[name] +@@ -128,7 +128,7 @@ class MultiFS(FS): + + def _priority_sort(self): + """Sort filesystems by priority order""" +- priority_order = sorted(self.fs_lookup.keys(), key=lambda n: self.fs_priorities[n], reverse=True) ++ priority_order = sorted(list(self.fs_lookup.keys()), key=lambda n: self.fs_priorities[n], reverse=True) + self.fs_sequence = [self.fs_lookup[name] for name in priority_order] + + @synchronize +@@ -214,7 +214,7 @@ class MultiFS(FS): + return self.writefs + for fs in self: + if fs.exists(path): +- for fs_name, fs_object in self.fs_lookup.iteritems(): ++ for fs_name, fs_object in self.fs_lookup.items(): + if fs is fs_object: + return fs_name, fs + raise ResourceNotFoundError(path, msg="Path does not map to any filesystem: %(path)s") +--- fs/opener.py.orig 2022-03-04 17:14:43 UTC ++++ fs/opener.py +@@ -72,7 +72,7 @@ from fs.filelike import FileWrapper + from os import getcwd + import os.path + import re +-from urlparse import urlparse ++from urllib.parse import urlparse + + class OpenerError(Exception): + """The base exception thrown by openers""" +@@ -794,7 +794,7 @@ example: + def get_fs(cls, registry, fs_name, fs_name_params, fs_path, writeable, create_dir): + + from fs.mountfs import MountFS +- from ConfigParser import ConfigParser ++ from configparser import ConfigParser + cfg = ConfigParser() + + if '#' in fs_path: +@@ -830,7 +830,7 @@ example: + def get_fs(cls, registry, fs_name, fs_name_params, fs_path, writeable, create_dir): + + from fs.multifs import MultiFS +- from ConfigParser import ConfigParser ++ from configparser import ConfigParser + cfg = ConfigParser() + + if '#' in fs_path: +--- fs/osfs/__init__.py.orig 2015-11-13 22:18:37 UTC ++++ fs/osfs/__init__.py +@@ -48,13 +48,13 @@ def _os_stat(path): + + + @convert_os_errors +-def _os_mkdir(name, mode=0777): ++def _os_mkdir(name, mode=0o777): + """Replacement for os.mkdir that raises FSError subclasses.""" + return os.mkdir(name, mode) + + + @convert_os_errors +-def _os_makedirs(name, mode=0777): ++def _os_makedirs(name, mode=0o777): + """Replacement for os.makdirs that raises FSError subclasses. + + This implementation also correctly handles win32 long filenames (those +@@ -71,7 +71,7 @@ def _os_makedirs(name, mode=0777): + if head and tail and not os.path.exists(head): + try: + _os_makedirs(head, mode) +- except OSError, e: ++ except OSError as e: + if e.errno != errno.EEXIST: + raise + if tail == os.curdir: +@@ -98,11 +98,11 @@ class OSFS(OSFSXAttrMixin, OSFSWatchMixin, FS): + 'atomic.setcontents': False} + + if platform.system() == 'Windows': +- _meta["invalid_path_chars"] = ''.join(chr(n) for n in xrange(31)) + '\\:*?"<>|' ++ _meta["invalid_path_chars"] = ''.join(chr(n) for n in range(31)) + '\\:*?"<>|' + else: + _meta["invalid_path_chars"] = '\0' + +- def __init__(self, root_path, thread_synchronize=_thread_synchronize_default, encoding=None, create=False, dir_mode=0700, use_long_paths=True): ++ def __init__(self, root_path, thread_synchronize=_thread_synchronize_default, encoding=None, create=False, dir_mode=0o700, use_long_paths=True): + """ + Creates an FS object that represents the OS Filesystem under a given root path + +@@ -124,13 +124,13 @@ class OSFS(OSFSXAttrMixin, OSFSWatchMixin, FS): + if sys.platform == "win32": + if use_long_paths and not root_path.startswith("\\\\?\\"): + if not root_path.startswith("\\"): +- root_path = u"\\\\?\\" + root_path ++ root_path = "\\\\?\\" + root_path + else: + # Explicitly mark UNC paths, seems to work better. + if root_path.startswith("\\\\"): +- root_path = u"\\\\?\\UNC\\" + root_path[2:] ++ root_path = "\\\\?\\UNC\\" + root_path[2:] + else: +- root_path = u"\\\\?" + root_path ++ root_path = "\\\\?" + root_path + # If it points at the root of a drive, it needs a trailing slash. + if len(root_path) == 6 and not root_path.endswith("\\"): + root_path = root_path + "\\" +@@ -155,16 +155,16 @@ class OSFS(OSFSXAttrMixin, OSFSWatchMixin, FS): + return "<OSFS: %r>" % self.root_path + + def __unicode__(self): +- return u"<OSFS: %s>" % self.root_path ++ return "<OSFS: %s>" % self.root_path + + def _decode_path(self, p): +- if isinstance(p, unicode): ++ if isinstance(p, str): + return p + return p.decode(self.encoding, 'replace') + + def getsyspath(self, path, allow_none=False): + self.validatepath(path) +- path = relpath(normpath(path)).replace(u"/", os.sep) ++ path = relpath(normpath(path)).replace("/", os.sep) + path = os.path.join(self.root_path, path) + if not path.startswith(self.root_path): + raise PathError(path, msg="OSFS given path outside root: %(path)s") +@@ -234,7 +234,7 @@ class OSFS(OSFSXAttrMixin, OSFSWatchMixin, FS): + encoding = encoding or 'utf-8' + try: + return io.open(sys_path, mode=mode, buffering=buffering, encoding=encoding, errors=errors, newline=newline) +- except EnvironmentError, e: ++ except EnvironmentError as e: + # Win32 gives EACCES when opening a directory. + if sys.platform == "win32" and e.errno in (errno.EACCES,): + if self.isdir(path): +@@ -301,7 +301,7 @@ class OSFS(OSFSXAttrMixin, OSFSWatchMixin, FS): + sys_path = self.getsyspath(path) + try: + os.remove(sys_path) +- except OSError, e: ++ except OSError as e: + if e.errno == errno.EACCES and sys.platform == "win32": + # sometimes windows says this for attempts to remove a dir + if os.path.isdir(sys_path): +@@ -338,7 +338,7 @@ class OSFS(OSFSXAttrMixin, OSFSWatchMixin, FS): + path_dst = self.getsyspath(dst) + try: + os.rename(path_src, path_dst) +- except OSError, e: ++ except OSError as e: + if e.errno: + # POSIX rename() can rename over an empty directory but gives + # ENOTEMPTY if the dir has contents. Raise UnsupportedError +--- fs/osfs/watch_inotify.py.orig 2015-04-12 17:24:29 UTC ++++ fs/osfs/watch_inotify.py +@@ -18,7 +18,7 @@ from fs.watch import * + + try: + import pyinotify +-except Exception, e: ++except Exception as e: + # pyinotify sometimes raises its own custom errors on import. + # How on earth are we supposed to catch them when we can't import them? + if isinstance(e,ImportError): +@@ -39,7 +39,7 @@ class OSFSWatchMixin(WatchableFSMixin): + def close(self): + super(OSFSWatchMixin,self).close() + self.notify_watchers(CLOSED) +- for watcher_list in self._watchers.values(): ++ for watcher_list in list(self._watchers.values()): + for watcher in watcher_list: + self.del_watcher(watcher) + self.__watch_lock.acquire() +@@ -58,7 +58,7 @@ class OSFSWatchMixin(WatchableFSMixin): + w = super_add_watcher(callback,path,events,recursive) + w._pyinotify_id = None + syspath = self.getsyspath(path) +- if isinstance(syspath,unicode): ++ if isinstance(syspath,str): + syspath = syspath.encode(sys.getfilesystemencoding()) + # Each watch gets its own WatchManager, since it's tricky to make + # a single WatchManager handle multiple callbacks with different +@@ -73,7 +73,7 @@ class OSFSWatchMixin(WatchableFSMixin): + kwds = dict(rec=recursive,auto_add=recursive,quiet=False) + try: + wids = wm.add_watch(syspath,evtmask,process_events,**kwds) +- except pyinotify.WatchManagerError, e: ++ except pyinotify.WatchManagerError as e: + raise OperationFailedError("add_watcher",details=e) + w._pyinotify_id = wids[syspath] + self.__watch_lock.acquire() +@@ -239,7 +239,7 @@ class SharedThreadedNotifier(threading.Thread): + while self.running: + try: + ready_fds = self._poller.poll() +- except _select_error, e: ++ except _select_error as e: + if e[0] != errno.EINTR: + raise + else: +--- fs/osfs/watch_win32.py.orig 2015-04-12 17:24:29 UTC ++++ fs/osfs/watch_win32.py +@@ -10,7 +10,7 @@ import os + import sys + import errno + import threading +-import Queue ++import queue + import stat + import struct + import ctypes +@@ -226,7 +226,7 @@ class WatchedDirectory(object): + ctypes.byref(self.result),len(self.result), + self.recursive,self.flags,None, + overlapped,None) +- except WindowsError, e: ++ except WindowsError as e: + self.error = e + self.close() + +@@ -262,7 +262,7 @@ class WatchThread(threading.Thread): + self.watched_directories = {} + self.ready = threading.Event() + self._iocp = None +- self._new_watches = Queue.Queue() ++ self._new_watches = queue.Queue() + + def close(self): + if not self.closed: +@@ -383,11 +383,11 @@ class WatchThread(threading.Thread): + hash(w),0) + w.post() + w.ready.set() +- except Queue.Empty: ++ except queue.Empty: + pass + finally: + self.ready.set() +- for w in self.watched_directories.itervalues(): ++ for w in self.watched_directories.values(): + w.close() + if self._iocp: + CloseHandle(self._iocp) +--- fs/osfs/xattrs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/osfs/xattrs.py +@@ -49,7 +49,7 @@ if xattr is not None: + + @convert_os_errors + def listxattrs(self, path): +- return xattr.xattr(self.getsyspath(path)).keys() ++ return list(xattr.xattr(self.getsyspath(path)).keys()) + + else: + +--- fs/path.py.orig 2015-04-12 17:24:29 UTC ++++ fs/path.py +@@ -44,7 +44,7 @@ def normpath(path): + if not _requires_normalization(path): + return path.rstrip('/') + +- prefix = u'/' if path.startswith('/') else u'' ++ prefix = '/' if path.startswith('/') else '' + components = [] + append = components.append + special = ('..', '.', '').__contains__ +@@ -60,7 +60,7 @@ def normpath(path): + # causing a circular import. + from fs.errors import BackReferenceError + raise BackReferenceError('Too many backrefs in \'%s\'' % path) +- return prefix + u'/'.join(components) ++ return prefix + '/'.join(components) + + + if os.sep != '/': +@@ -100,11 +100,11 @@ def recursepath(path, reverse=False): + """ + + if path in ('', '/'): +- return [u'/'] ++ return ['/'] + + path = abspath(normpath(path)) + '/' + +- paths = [u'/'] ++ paths = ['/'] + find = path.find + append = paths.append + pos = 1 +@@ -133,7 +133,7 @@ def abspath(path): + + """ + if not path.startswith('/'): +- return u'/' + path ++ return '/' + path + return path + + +@@ -176,7 +176,7 @@ def pathjoin(*paths): + absolute = True + relpaths.append(p) + +- path = normpath(u"/".join(relpaths)) ++ path = normpath("/".join(relpaths)) + if absolute: + path = abspath(path) + return path +@@ -419,7 +419,7 @@ def relativefrom(base, path): + break + common += 1 + +- return u'/'.join([u'..'] * (len(base) - common) + path[common:]) ++ return '/'.join(['..'] * (len(base) - common) + path[common:]) + + + class PathMap(object): +@@ -559,7 +559,7 @@ class PathMap(object): + m = m[name] + except KeyError: + return +- for (nm, subm) in m.iteritems(): ++ for (nm, subm) in m.items(): + if not nm: + yield abspath(root) + else: +@@ -568,7 +568,7 @@ class PathMap(object): + yield subk + + def __iter__(self): +- return self.iterkeys() ++ return iter(self.keys()) + + def keys(self,root="/"): + return list(self.iterkeys(root)) +@@ -583,7 +583,7 @@ class PathMap(object): + m = m[name] + except KeyError: + return +- for (nm, subm) in m.iteritems(): ++ for (nm, subm) in m.items(): + if not nm: + yield subm + else: +@@ -604,7 +604,7 @@ class PathMap(object): + m = m[name] + except KeyError: + return +- for (nm, subm) in m.iteritems(): ++ for (nm, subm) in m.items(): + if not nm: + yield (abspath(normpath(root)), subm) + else: +@@ -627,7 +627,7 @@ class PathMap(object): + m = m[name] + except KeyError: + return +- for (nm, subm) in m.iteritems(): ++ for (nm, subm) in m.items(): + if nm and subm: + yield nm + +@@ -651,9 +651,9 @@ def iswildcard(path): + return not _wild_chars.isdisjoint(path) + + if __name__ == "__main__": +- print recursepath('a/b/c') ++ print(recursepath('a/b/c')) + +- print relativefrom('/', '/foo') +- print relativefrom('/foo/bar', '/foo/baz') +- print relativefrom('/foo/bar/baz', '/foo/egg') +- print relativefrom('/foo/bar/baz/egg', '/foo/egg') ++ print(relativefrom('/', '/foo')) ++ print(relativefrom('/foo/bar', '/foo/baz')) ++ print(relativefrom('/foo/bar/baz', '/foo/egg')) ++ print(relativefrom('/foo/bar/baz/egg', '/foo/egg')) +--- fs/remote.py.orig 2015-04-12 17:24:29 UTC ++++ fs/remote.py +@@ -20,8 +20,8 @@ FS subclasses interfacing with a remote filesystem. T + + """ + +-from __future__ import with_statement + ++ + import time + import stat as statinfo + from errno import EINVAL +@@ -422,11 +422,11 @@ class CachedInfo(object): + self.has_full_children = other.has_full_children + @classmethod + def new_file_stub(cls): +- info = {"info" : 0700 | statinfo.S_IFREG} ++ info = {"info" : 0o700 | statinfo.S_IFREG} + return cls(info,has_full_info=False) + @classmethod + def new_dir_stub(cls): +- info = {"info" : 0700 | statinfo.S_IFDIR} ++ info = {"info" : 0o700 | statinfo.S_IFDIR} + return cls(info,has_full_info=False) + + +@@ -512,7 +512,7 @@ class CacheFSMixin(FS): + if self.max_cache_size is not None and old_ci is None: + while self.__cache_size >= self.max_cache_size: + try: +- to_del = iter(self.__cache).next() ++ to_del = next(iter(self.__cache)) + except StopIteration: + break + else: +@@ -592,7 +592,7 @@ class CacheFSMixin(FS): + + def isdir(self, path): + try: +- self.__cache.iternames(path).next() ++ next(self.__cache.iternames(path)) + return True + except StopIteration: + pass +@@ -607,7 +607,7 @@ class CacheFSMixin(FS): + + def isfile(self, path): + try: +- self.__cache.iternames(path).next() ++ next(self.__cache.iternames(path)) + return False + except StopIteration: + pass +--- fs/remotefs.py.orig 2015-04-12 17:24:29 UTC ++++ fs/remotefs.py +@@ -1,5 +1,5 @@ + # Work in Progress - Do not use +-from __future__ import with_statement ++ + from fs.base import FS + from fs.expose.serve import packetstream + +@@ -7,7 +7,7 @@ from collections import defaultdict + import threading + from threading import Lock, RLock + from json import dumps +-import Queue as queue ++import queue as queue + import socket + + from six import b +@@ -35,12 +35,12 @@ class PacketHandler(threading.Thread): + while True: + data = read(1024*16) + if not data: +- print "No data" ++ print("No data") + break +- print "data", repr(data) ++ print("data", repr(data)) + for header, payload in decoder.feed(data): +- print repr(header) +- print repr(payload) ++ print(repr(header)) ++ print(repr(payload)) + on_packet(header, payload) + + def _new_call_id(self): +@@ -77,8 +77,8 @@ class PacketHandler(threading.Thread): + + while True: + header, payload = queue.get() +- print repr(header) +- print repr(payload) ++ print(repr(header)) ++ print(repr(payload)) + if client_ref is not None and header.get('client_ref') != client_ref: + continue + break +@@ -167,9 +167,9 @@ class RemoteFS(FS): + def ping(self, msg): + call_id = self.packet_handler.send_packet({'type':'rpc', 'method':'ping'}, msg) + header, payload = self.packet_handler.get_packet(call_id) +- print "PING" +- print header +- print payload ++ print("PING") ++ print(header) ++ print(payload) + + def close(self): + self.transport.close() +--- fs/rpcfs.py.orig 2015-04-12 17:24:29 UTC ++++ fs/rpcfs.py +@@ -8,7 +8,7 @@ class from the :mod:`fs.expose.xmlrpc` module. + + """ + +-import xmlrpclib ++import xmlrpc.client + import socket + import base64 + +@@ -28,11 +28,11 @@ def re_raise_faults(func): + def wrapper(*args, **kwds): + try: + return func(*args, **kwds) +- except (xmlrpclib.Fault), f: ++ except (xmlrpc.client.Fault) as f: + #raise + # Make sure it's in a form we can handle + +- print f.faultString ++ print(f.faultString) + bits = f.faultString.split(" ") + if bits[0] not in ["<type", "<class"]: + raise f +@@ -41,7 +41,7 @@ def re_raise_faults(func): + cls = bits[0] + msg = ">:".join(bits[1:]) + cls = cls.strip('\'') +- print "-" + cls ++ print("-" + cls) + cls = _object_by_name(cls) + # Re-raise using the remainder of the fault code as message + if cls: +@@ -50,7 +50,7 @@ def re_raise_faults(func): + else: + raise cls(msg) + raise f +- except socket.error, e: ++ except socket.error as e: + raise RemoteConnectionError(str(e), details=e) + return wrapper + +@@ -126,9 +126,9 @@ class RPCFS(FS): + kwds = dict(allow_none=True, use_datetime=True) + + if self._transport is not None: +- proxy = xmlrpclib.ServerProxy(self.uri, self._transport, **kwds) ++ proxy = xmlrpc.client.ServerProxy(self.uri, self._transport, **kwds) + else: +- proxy = xmlrpclib.ServerProxy(self.uri, **kwds) ++ proxy = xmlrpc.client.ServerProxy(self.uri, **kwds) + + return ReRaiseFaults(proxy) + +@@ -170,7 +170,7 @@ class RPCFS(FS): + meta = self.proxy.getmeta(meta_name) + else: + meta = self.proxy.getmeta_default(meta_name, default) +- if isinstance(meta, basestring): ++ if isinstance(meta, str): + # To allow transport of meta with invalid xml chars (like null) + meta = self.encode_path(meta) + return meta +@@ -185,7 +185,7 @@ class RPCFS(FS): + # TODO: chunked transport of large files + epath = self.encode_path(path) + if "w" in mode: +- self.proxy.set_contents(epath, xmlrpclib.Binary(b(""))) ++ self.proxy.set_contents(epath, xmlrpc.client.Binary(b(""))) + if "r" in mode or "a" in mode or "+" in mode: + try: + data = self.proxy.get_contents(epath, "rb").data +@@ -194,7 +194,7 @@ class RPCFS(FS): + raise ResourceNotFoundError(path) + if not self.isdir(dirname(path)): + raise ParentDirectoryMissingError(path) +- self.proxy.set_contents(path, xmlrpclib.Binary(b(""))) ++ self.proxy.set_contents(path, xmlrpc.client.Binary(b(""))) + else: + data = b("") + f = StringIO(data) +@@ -210,7 +210,7 @@ class RPCFS(FS): + self._lock.acquire() + try: + oldflush() +- self.proxy.set_contents(epath, xmlrpclib.Binary(f.getvalue())) ++ self.proxy.set_contents(epath, xmlrpc.client.Binary(f.getvalue())) + finally: + self._lock.release() + +--- fs/s3fs.py.orig 2015-11-13 16:37:26 UTC ++++ fs/s3fs.py +@@ -41,7 +41,7 @@ else: + try: + return self._map[(threading.currentThread(),attr)] + except KeyError: +- raise AttributeError, attr ++ raise AttributeError(attr) + def __setattr__(self,attr,value): + self._map[(threading.currentThread(),attr)] = value + +@@ -106,7 +106,7 @@ class S3FS(FS): + prefix = prefix[1:] + if not prefix.endswith(separator) and prefix != "": + prefix = prefix + separator +- if isinstance(prefix,unicode): ++ if isinstance(prefix,str): + prefix = prefix.encode("utf8") + if aws_access_key is None: + if "AWS_ACCESS_KEY_ID" not in os.environ: +@@ -149,7 +149,7 @@ class S3FS(FS): + b.get_key(self._prefix) + else: + b = self._s3conn.get_bucket(self._bucket_name, validate=1) +- except S3ResponseError, e: ++ except S3ResponseError as e: + if "404 Not Found" not in str(e): + raise + b = self._s3conn.create_bucket(self._bucket_name) +@@ -179,7 +179,7 @@ class S3FS(FS): + s3path = self._prefix + path + if s3path and s3path[-1] == self._separator: + s3path = s3path[:-1] +- if isinstance(s3path,unicode): ++ if isinstance(s3path,str): + s3path = s3path.encode("utf8") + return s3path + +@@ -220,9 +220,9 @@ class S3FS(FS): + + def _sync_set_contents(self,key,contents): + """Synchronously set the contents of a key.""" +- if isinstance(key,basestring): ++ if isinstance(key,str): + key = self._s3bukt.new_key(key) +- if isinstance(contents,basestring): ++ if isinstance(contents,str): + key.set_contents_from_string(contents) + elif hasattr(contents,"md5"): + hexmd5 = contents.md5 +@@ -338,7 +338,7 @@ class S3FS(FS): + # the directory itself, which other tools may not create. + ks = self._s3bukt.list(prefix=s3path,delimiter=self._separator) + try: +- iter(ks).next() ++ next(iter(ks)) + except StopIteration: + return False + else: +@@ -398,7 +398,7 @@ class S3FS(FS): + # Skip over the entry for the directory itself, if it exists + name = self._uns3path(k.name,s3path) + if name != "": +- if not isinstance(name,unicode): ++ if not isinstance(name,str): + name = name.decode("utf8") + if name.endswith(self._separator): + name = name[:-1] +@@ -572,14 +572,14 @@ class S3FS(FS): + else: + info["name"] = basename(self._uns3key(k.name)) + if self._key_is_dir(key): +- info["st_mode"] = 0700 | statinfo.S_IFDIR ++ info["st_mode"] = 0o700 | statinfo.S_IFDIR + else: +- info["st_mode"] = 0700 | statinfo.S_IFREG ++ info["st_mode"] = 0o700 | statinfo.S_IFREG + if hasattr(key,"size"): + info['size'] = int(key.size) + etag = getattr(key,"etag",None) + if etag is not None: +- if isinstance(etag,unicode): ++ if isinstance(etag,str): + etag = etag.encode("utf8") + info['etag'] = etag.strip('"').strip("'") + if hasattr(key,"last_modified"): +@@ -632,7 +632,7 @@ class S3FS(FS): + s3path_src = self._s3path(src) + try: + self._s3bukt.copy_key(s3path_dst,self._bucket_name,s3path_src) +- except S3ResponseError, e: ++ except S3ResponseError as e: + if "404 Not Found" in str(e): + msg = "Source is not a file: %(path)s" + raise ResourceInvalidError(src, msg=msg) +@@ -663,7 +663,7 @@ class S3FS(FS): + for k in self._s3bukt.list(prefix=prefix): + name = relpath(self._uns3path(k.name,prefix)) + if name != "": +- if not isinstance(name,unicode): ++ if not isinstance(name,str): + name = name.decode("utf8") + if not k.name.endswith(self._separator): + if wildcard is not None: +@@ -691,7 +691,7 @@ class S3FS(FS): + for k in self._s3bukt.list(prefix=prefix): + name = relpath(self._uns3path(k.name,prefix)) + if name != "": +- if not isinstance(name,unicode): ++ if not isinstance(name,str): + name = name.decode("utf8") + if wildcard is not None: + if callable(wildcard): +@@ -718,7 +718,7 @@ class S3FS(FS): + for k in self._s3bukt.list(prefix=prefix): + name = relpath(self._uns3path(k.name,prefix)) + if name != "": +- if not isinstance(name,unicode): ++ if not isinstance(name,str): + name = name.decode("utf8") + if not k.name.endswith(self._separator): + if wildcard is not None: +@@ -733,16 +733,16 @@ class S3FS(FS): + + + def _eq_utf8(name1,name2): +- if isinstance(name1,unicode): ++ if isinstance(name1,str): + name1 = name1.encode("utf8") +- if isinstance(name2,unicode): ++ if isinstance(name2,str): + name2 = name2.encode("utf8") + return name1 == name2 + + def _startswith_utf8(name1,name2): +- if isinstance(name1,unicode): ++ if isinstance(name1,str): + name1 = name1.encode("utf8") +- if isinstance(name2,unicode): ++ if isinstance(name2,str): + name2 = name2.encode("utf8") + return name1.startswith(name2) + +--- fs/sftpfs.py.orig 2015-04-12 17:24:29 UTC ++++ fs/sftpfs.py +@@ -131,7 +131,7 @@ class SFTPFS(FS): + self._client = None + + self.hostname = None +- if isinstance(connection, basestring): ++ if isinstance(connection, str): + self.hostname = connection + elif isinstance(connection, tuple): + self.hostname = '%s:%s' % connection +@@ -183,7 +183,7 @@ class SFTPFS(FS): + if not connection.is_authenticated(): + try: + connection.auth_none(username) +- except paramiko.BadAuthenticationType, e: ++ except paramiko.BadAuthenticationType as e: + self.close() + allowed = ', '.join(e.allowed_types) + raise RemoteConnectionError(msg='no auth - server requires one of the following: %s' % allowed, details=e) +@@ -192,14 +192,14 @@ class SFTPFS(FS): + self.close() + raise RemoteConnectionError(msg='no auth') + +- except paramiko.SSHException, e: ++ except paramiko.SSHException as e: + self.close() + raise RemoteConnectionError(msg='SSH exception (%s)' % str(e), details=e) + + self._transport = connection + + def __unicode__(self): +- return u'<SFTPFS: %s>' % self.desc('/') ++ return '<SFTPFS: %s>' % self.desc('/') + + @classmethod + def _agent_auth(cls, transport, username): +@@ -307,7 +307,7 @@ class SFTPFS(FS): + self.closed = True + + def _normpath(self, path): +- if not isinstance(path, unicode): ++ if not isinstance(path, str): + path = path.decode(self.encoding) + npath = pathjoin(self.root_path, relpath(normpath(path))) + if not isprefix(self.root_path, npath): +@@ -355,10 +355,10 @@ class SFTPFS(FS): + def desc(self, path): + npath = self._normpath(path) + if self.hostname: +- return u'sftp://%s%s' % (self.hostname, path) ++ return 'sftp://%s%s' % (self.hostname, path) + else: + addr, port = self._transport.getpeername() +- return u'sftp://%s:%i%s' % (addr, port, self.client.normalize(npath)) ++ return 'sftp://%s:%i%s' % (addr, port, self.client.normalize(npath)) + + @synchronize + @convert_os_errors +@@ -368,7 +368,7 @@ class SFTPFS(FS): + npath = self._normpath(path) + try: + self.client.stat(npath) +- except IOError, e: ++ except IOError as e: + if getattr(e,"errno",None) == ENOENT: + return False + raise +@@ -382,7 +382,7 @@ class SFTPFS(FS): + npath = self._normpath(path) + try: + stat = self.client.stat(npath) +- except IOError, e: ++ except IOError as e: + if getattr(e,"errno",None) == ENOENT: + return False + raise +@@ -394,7 +394,7 @@ class SFTPFS(FS): + npath = self._normpath(path) + try: + stat = self.client.stat(npath) +- except IOError, e: ++ except IOError as e: + if getattr(e,"errno",None) == ENOENT: + return False + raise +@@ -409,10 +409,10 @@ class SFTPFS(FS): + if dirs_only or files_only: + attrs = self.client.listdir_attr(npath) + attrs_map = dict((a.filename, a) for a in attrs) +- paths = list(attrs_map.iterkeys()) ++ paths = list(attrs_map.keys()) + else: + paths = self.client.listdir(npath) +- except IOError, e: ++ except IOError as e: + if getattr(e,"errno",None) == ENOENT: + if self.isfile(path): + raise ResourceInvalidError(path,msg="Can't list directory contents of a file: %(path)s") +@@ -424,19 +424,19 @@ class SFTPFS(FS): + if attrs_map: + if dirs_only: + filter_paths = [] +- for apath, attr in attrs_map.iteritems(): ++ for apath, attr in attrs_map.items(): + if isdir(self, path, attr.__dict__): + filter_paths.append(apath) + paths = filter_paths + elif files_only: + filter_paths = [] +- for apath, attr in attrs_map.iteritems(): ++ for apath, attr in attrs_map.items(): + if isfile(self, apath, attr.__dict__): + filter_paths.append(apath) + paths = filter_paths + + for (i,p) in enumerate(paths): +- if not isinstance(p,unicode): ++ if not isinstance(p,str): + paths[i] = p.decode(self.encoding) + + return self._listdir_helper(path, paths, wildcard, full, absolute, False, False) +@@ -448,8 +448,8 @@ class SFTPFS(FS): + try: + attrs = self.client.listdir_attr(npath) + attrs_map = dict((a.filename, a) for a in attrs) +- paths = attrs_map.keys() +- except IOError, e: ++ paths = list(attrs_map.keys()) ++ except IOError as e: + if getattr(e,"errno",None) == ENOENT: + if self.isfile(path): + raise ResourceInvalidError(path,msg="Can't list directory contents of a file: %(path)s") +@@ -460,19 +460,19 @@ class SFTPFS(FS): + + if dirs_only: + filter_paths = [] +- for path, attr in attrs_map.iteritems(): ++ for path, attr in attrs_map.items(): + if isdir(self, path, attr.__dict__): + filter_paths.append(path) + paths = filter_paths + elif files_only: + filter_paths = [] +- for path, attr in attrs_map.iteritems(): ++ for path, attr in attrs_map.items(): + if isfile(self, path, attr.__dict__): + filter_paths.append(path) + paths = filter_paths + + for (i, p) in enumerate(paths): +- if not isinstance(p, unicode): ++ if not isinstance(p, str): + paths[i] = p.decode(self.encoding) + + def getinfo(p): +@@ -491,7 +491,7 @@ class SFTPFS(FS): + npath = self._normpath(path) + try: + self.client.mkdir(npath) +- except IOError, _e: ++ except IOError as _e: + # Error code is unreliable, try to figure out what went wrong + try: + stat = self.client.stat(npath) +@@ -519,7 +519,7 @@ class SFTPFS(FS): + npath = self._normpath(path) + try: + self.client.remove(npath) +- except IOError, e: ++ except IOError as e: + if getattr(e,"errno",None) == ENOENT: + raise ResourceNotFoundError(path) + elif self.isdir(path): +@@ -542,7 +542,7 @@ class SFTPFS(FS): + raise ResourceNotFoundError(path) + try: + self.client.rmdir(npath) +- except IOError, e: ++ except IOError as e: + if getattr(e,"errno",None) == ENOENT: + if self.isfile(path): + raise ResourceInvalidError(path,msg="Can't use removedir() on a file: %(path)s") +@@ -565,7 +565,7 @@ class SFTPFS(FS): + ndst = self._normpath(dst) + try: + self.client.rename(nsrc,ndst) +- except IOError, e: ++ except IOError as e: + if getattr(e,"errno",None) == ENOENT: + raise ResourceNotFoundError(src) + if not self.isdir(dirname(dst)): +@@ -581,7 +581,7 @@ class SFTPFS(FS): + self.remove(dst) + try: + self.client.rename(nsrc,ndst) +- except IOError, e: ++ except IOError as e: + if getattr(e,"errno",None) == ENOENT: + raise ResourceNotFoundError(src) + if self.exists(dst): +@@ -599,7 +599,7 @@ class SFTPFS(FS): + self.removedir(dst) + try: + self.client.rename(nsrc,ndst) +- except IOError, e: ++ except IOError as e: + if getattr(e,"errno",None) == ENOENT: + raise ResourceNotFoundError(src) + if self.exists(dst): +@@ -612,7 +612,7 @@ class SFTPFS(FS): + @classmethod + def _extract_info(cls, stats): + fromtimestamp = datetime.datetime.fromtimestamp +- info = dict((k, v) for k, v in stats.iteritems() if k in cls._info_vars and not k.startswith('_')) ++ info = dict((k, v) for k, v in stats.items() if k in cls._info_vars and not k.startswith('_')) + info['size'] = info['st_size'] + ct = info.get('st_ctime') + if ct is not None: +--- fs/tempfs.py.orig 2015-04-12 17:24:29 UTC ++++ fs/tempfs.py +@@ -29,7 +29,7 @@ class TempFS(OSFS): + _meta['atomic.move'] = True + _meta['atomic.copy'] = True + +- def __init__(self, identifier=None, temp_dir=None, dir_mode=0700, thread_synchronize=_thread_synchronize_default): ++ def __init__(self, identifier=None, temp_dir=None, dir_mode=0o700, thread_synchronize=_thread_synchronize_default): + """Creates a temporary Filesystem + + identifier -- A string that is included in the name of the temporary directory, +@@ -49,7 +49,7 @@ class TempFS(OSFS): + __str__ = __repr__ + + def __unicode__(self): +- return u'<TempFS: %s>' % self._temp_dir ++ return '<TempFS: %s>' % self._temp_dir + + def __getstate__(self): + # If we are picking a TempFS, we want to preserve its contents, +--- fs/tests/__init__.py.orig 2015-11-13 22:33:26 UTC ++++ fs/tests/__init__.py +@@ -5,8 +5,8 @@ + + """ + +-from __future__ import with_statement + ++ + # Send any output from the logging module to stdout, so it will + # be captured by nose and reported appropriately + import sys +@@ -61,7 +61,7 @@ class FSTestCases(object): + self.assertEqual(self.fs.validatepath('.foo'), None) + self.assertEqual(self.fs.validatepath('foo'), None) + self.assertEqual(self.fs.validatepath('foo/bar'), None) +- self.assert_(self.fs.isvalidpath('foo/bar')) ++ self.assertTrue(self.fs.isvalidpath('foo/bar')) + + def test_tree(self): + """Test tree print""" +@@ -79,8 +79,8 @@ class FSTestCases(object): + stupid_meta = 'thismetashouldnotexist!"r$$%^&&*()_+' + self.assertRaises(NoMetaError, self.fs.getmeta, stupid_meta) + self.assertFalse(self.fs.hasmeta(stupid_meta)) +- self.assertEquals(None, self.fs.getmeta(stupid_meta, None)) +- self.assertEquals(3.14, self.fs.getmeta(stupid_meta, 3.14)) ++ self.assertEqual(None, self.fs.getmeta(stupid_meta, None)) ++ self.assertEqual(3.14, self.fs.getmeta(stupid_meta, 3.14)) + for meta_name in meta_names: + try: + meta = self.fs.getmeta(meta_name) +@@ -101,15 +101,15 @@ class FSTestCases(object): + except NoSysPathError: + pass + else: +- self.assertTrue(isinstance(syspath, unicode)) ++ self.assertTrue(isinstance(syspath, str)) + syspath = self.fs.getsyspath("/", allow_none=True) + if syspath is not None: +- self.assertTrue(isinstance(syspath, unicode)) ++ self.assertTrue(isinstance(syspath, str)) + + def test_debug(self): + str(self.fs) + repr(self.fs) +- self.assert_(hasattr(self.fs, 'desc')) ++ self.assertTrue(hasattr(self.fs, 'desc')) + + def test_open_on_directory(self): + self.fs.makedir("testdir") +@@ -132,20 +132,20 @@ class FSTestCases(object): + f.close() + self.assertTrue(self.check("test1.txt")) + f = self.fs.open("test1.txt", "rb") +- self.assertEquals(f.read(), b("testing")) ++ self.assertEqual(f.read(), b("testing")) + f.close() + f = self.fs.open("test1.txt", "wb") + f.write(b("test file overwrite")) + f.close() + self.assertTrue(self.check("test1.txt")) + f = self.fs.open("test1.txt", "rb") +- self.assertEquals(f.read(), b("test file overwrite")) ++ self.assertEqual(f.read(), b("test file overwrite")) + f.close() + + def test_createfile(self): + test = b('now with content') + self.fs.createfile("test.txt") +- self.assert_(self.fs.exists("test.txt")) ++ self.assertTrue(self.fs.exists("test.txt")) + self.assertEqual(self.fs.getcontents("test.txt", "rb"), b('')) + self.fs.setcontents("test.txt", test) + self.fs.createfile("test.txt") +@@ -163,36 +163,36 @@ class FSTestCases(object): + def test_setcontents(self): + # setcontents() should accept both a string... + self.fs.setcontents("hello", b("world")) +- self.assertEquals(self.fs.getcontents("hello", "rb"), b("world")) ++ self.assertEqual(self.fs.getcontents("hello", "rb"), b("world")) + # ...and a file-like object + self.fs.setcontents("hello", StringIO(b("to you, good sir!"))) +- self.assertEquals(self.fs.getcontents( ++ self.assertEqual(self.fs.getcontents( + "hello", "rb"), b("to you, good sir!")) + # setcontents() should accept both a string... + self.fs.setcontents("hello", b("world"), chunk_size=2) +- self.assertEquals(self.fs.getcontents("hello", "rb"), b("world")) ++ self.assertEqual(self.fs.getcontents("hello", "rb"), b("world")) + # ...and a file-like object + self.fs.setcontents("hello", StringIO( + b("to you, good sir!")), chunk_size=2) +- self.assertEquals(self.fs.getcontents( ++ self.assertEqual(self.fs.getcontents( + "hello", "rb"), b("to you, good sir!")) + self.fs.setcontents("hello", b("")) +- self.assertEquals(self.fs.getcontents("hello", "rb"), b("")) ++ self.assertEqual(self.fs.getcontents("hello", "rb"), b("")) + + def test_setcontents_async(self): + # setcontents() should accept both a string... + self.fs.setcontents_async("hello", b("world")).wait() +- self.assertEquals(self.fs.getcontents("hello", "rb"), b("world")) ++ self.assertEqual(self.fs.getcontents("hello", "rb"), b("world")) + # ...and a file-like object + self.fs.setcontents_async("hello", StringIO( + b("to you, good sir!"))).wait() +- self.assertEquals(self.fs.getcontents("hello"), b("to you, good sir!")) ++ self.assertEqual(self.fs.getcontents("hello"), b("to you, good sir!")) + self.fs.setcontents_async("hello", b("world"), chunk_size=2).wait() +- self.assertEquals(self.fs.getcontents("hello", "rb"), b("world")) ++ self.assertEqual(self.fs.getcontents("hello", "rb"), b("world")) + # ...and a file-like object + self.fs.setcontents_async("hello", StringIO( + b("to you, good sir!")), chunk_size=2).wait() +- self.assertEquals(self.fs.getcontents( ++ self.assertEqual(self.fs.getcontents( + "hello", "rb"), b("to you, good sir!")) + + def test_isdir_isfile(self): +@@ -214,19 +214,19 @@ class FSTestCases(object): + def test_listdir(self): + def check_unicode(items): + for item in items: +- self.assertTrue(isinstance(item, unicode)) +- self.fs.setcontents(u"a", b('')) ++ self.assertTrue(isinstance(item, str)) ++ self.fs.setcontents("a", b('')) + self.fs.setcontents("b", b('')) + self.fs.setcontents("foo", b('')) + self.fs.setcontents("bar", b('')) + # Test listing of the root directory + d1 = self.fs.listdir() + self.assertEqual(len(d1), 4) +- self.assertEqual(sorted(d1), [u"a", u"b", u"bar", u"foo"]) ++ self.assertEqual(sorted(d1), ["a", "b", "bar", "foo"]) + check_unicode(d1) + d1 = self.fs.listdir("") + self.assertEqual(len(d1), 4) +- self.assertEqual(sorted(d1), [u"a", u"b", u"bar", u"foo"]) ++ self.assertEqual(sorted(d1), ["a", "b", "bar", "foo"]) + check_unicode(d1) + d1 = self.fs.listdir("/") + self.assertEqual(len(d1), 4) +@@ -234,7 +234,7 @@ class FSTestCases(object): + # Test listing absolute paths + d2 = self.fs.listdir(absolute=True) + self.assertEqual(len(d2), 4) +- self.assertEqual(sorted(d2), [u"/a", u"/b", u"/bar", u"/foo"]) ++ self.assertEqual(sorted(d2), ["/a", "/b", "/bar", "/foo"]) + check_unicode(d2) + # Create some deeper subdirectories, to make sure their + # contents are not inadvertantly included +@@ -248,25 +248,25 @@ class FSTestCases(object): + dirs_only = self.fs.listdir(dirs_only=True) + files_only = self.fs.listdir(files_only=True) + contains_a = self.fs.listdir(wildcard="*a*") +- self.assertEqual(sorted(dirs_only), [u"p", u"q"]) +- self.assertEqual(sorted(files_only), [u"a", u"b", u"bar", u"foo"]) +- self.assertEqual(sorted(contains_a), [u"a", u"bar"]) ++ self.assertEqual(sorted(dirs_only), ["p", "q"]) ++ self.assertEqual(sorted(files_only), ["a", "b", "bar", "foo"]) ++ self.assertEqual(sorted(contains_a), ["a", "bar"]) + check_unicode(dirs_only) + check_unicode(files_only) + check_unicode(contains_a) + # Test listing a subdirectory + d3 = self.fs.listdir("p/1/2/3") + self.assertEqual(len(d3), 4) +- self.assertEqual(sorted(d3), [u"a", u"b", u"bar", u"foo"]) ++ self.assertEqual(sorted(d3), ["a", "b", "bar", "foo"]) + check_unicode(d3) + # Test listing a subdirectory with absoliute and full paths + d4 = self.fs.listdir("p/1/2/3", absolute=True) + self.assertEqual(len(d4), 4) +- self.assertEqual(sorted(d4), [u"/p/1/2/3/a", u"/p/1/2/3/b", u"/p/1/2/3/bar", u"/p/1/2/3/foo"]) ++ self.assertEqual(sorted(d4), ["/p/1/2/3/a", "/p/1/2/3/b", "/p/1/2/3/bar", "/p/1/2/3/foo"]) + check_unicode(d4) + d4 = self.fs.listdir("p/1/2/3", full=True) + self.assertEqual(len(d4), 4) +- self.assertEqual(sorted(d4), [u"p/1/2/3/a", u"p/1/2/3/b", u"p/1/2/3/bar", u"p/1/2/3/foo"]) ++ self.assertEqual(sorted(d4), ["p/1/2/3/a", "p/1/2/3/b", "p/1/2/3/bar", "p/1/2/3/foo"]) + check_unicode(d4) + # Test that appropriate errors are raised + self.assertRaises(ResourceNotFoundError, self.fs.listdir, "zebra") +@@ -275,32 +275,32 @@ class FSTestCases(object): + def test_listdirinfo(self): + def check_unicode(items): + for (nm, info) in items: +- self.assertTrue(isinstance(nm, unicode)) ++ self.assertTrue(isinstance(nm, str)) + + def check_equal(items, target): + names = [nm for (nm, info) in items] + self.assertEqual(sorted(names), sorted(target)) +- self.fs.setcontents(u"a", b('')) ++ self.fs.setcontents("a", b('')) + self.fs.setcontents("b", b('')) + self.fs.setcontents("foo", b('')) + self.fs.setcontents("bar", b('')) + # Test listing of the root directory + d1 = self.fs.listdirinfo() + self.assertEqual(len(d1), 4) +- check_equal(d1, [u"a", u"b", u"bar", u"foo"]) ++ check_equal(d1, ["a", "b", "bar", "foo"]) + check_unicode(d1) + d1 = self.fs.listdirinfo("") + self.assertEqual(len(d1), 4) +- check_equal(d1, [u"a", u"b", u"bar", u"foo"]) ++ check_equal(d1, ["a", "b", "bar", "foo"]) + check_unicode(d1) + d1 = self.fs.listdirinfo("/") + self.assertEqual(len(d1), 4) +- check_equal(d1, [u"a", u"b", u"bar", u"foo"]) ++ check_equal(d1, ["a", "b", "bar", "foo"]) + check_unicode(d1) + # Test listing absolute paths + d2 = self.fs.listdirinfo(absolute=True) + self.assertEqual(len(d2), 4) +- check_equal(d2, [u"/a", u"/b", u"/bar", u"/foo"]) ++ check_equal(d2, ["/a", "/b", "/bar", "/foo"]) + check_unicode(d2) + # Create some deeper subdirectories, to make sure their + # contents are not inadvertantly included +@@ -314,25 +314,25 @@ class FSTestCases(object): + dirs_only = self.fs.listdirinfo(dirs_only=True) + files_only = self.fs.listdirinfo(files_only=True) + contains_a = self.fs.listdirinfo(wildcard="*a*") +- check_equal(dirs_only, [u"p", u"q"]) +- check_equal(files_only, [u"a", u"b", u"bar", u"foo"]) +- check_equal(contains_a, [u"a", u"bar"]) ++ check_equal(dirs_only, ["p", "q"]) ++ check_equal(files_only, ["a", "b", "bar", "foo"]) ++ check_equal(contains_a, ["a", "bar"]) + check_unicode(dirs_only) + check_unicode(files_only) + check_unicode(contains_a) + # Test listing a subdirectory + d3 = self.fs.listdirinfo("p/1/2/3") + self.assertEqual(len(d3), 4) +- check_equal(d3, [u"a", u"b", u"bar", u"foo"]) ++ check_equal(d3, ["a", "b", "bar", "foo"]) + check_unicode(d3) + # Test listing a subdirectory with absoliute and full paths + d4 = self.fs.listdirinfo("p/1/2/3", absolute=True) + self.assertEqual(len(d4), 4) +- check_equal(d4, [u"/p/1/2/3/a", u"/p/1/2/3/b", u"/p/1/2/3/bar", u"/p/1/2/3/foo"]) ++ check_equal(d4, ["/p/1/2/3/a", "/p/1/2/3/b", "/p/1/2/3/bar", "/p/1/2/3/foo"]) + check_unicode(d4) + d4 = self.fs.listdirinfo("p/1/2/3", full=True) + self.assertEqual(len(d4), 4) +- check_equal(d4, [u"p/1/2/3/a", u"p/1/2/3/b", u"p/1/2/3/bar", u"p/1/2/3/foo"]) ++ check_equal(d4, ["p/1/2/3/a", "p/1/2/3/b", "p/1/2/3/bar", "p/1/2/3/foo"]) + check_unicode(d4) + # Test that appropriate errors are raised + self.assertRaises(ResourceNotFoundError, self.fs.listdirinfo, "zebra") +@@ -343,7 +343,7 @@ class FSTestCases(object): + self.fs.setcontents('b.txt', b('world')) + self.fs.makeopendir('foo').setcontents('c', b('123')) + sorted_walk = sorted([(d, sorted(fs)) for (d, fs) in self.fs.walk()]) +- self.assertEquals(sorted_walk, ++ self.assertEqual(sorted_walk, + [("/", ["a.txt", "b.txt"]), + ("/foo", ["c"])]) + # When searching breadth-first, shallow entries come first +@@ -371,10 +371,10 @@ class FSTestCases(object): + self.fs.makeopendir('.svn').setcontents('ignored', b('')) + for dir_path, paths in self.fs.walk(wildcard='*.txt'): + for path in paths: +- self.assert_(path.endswith('.txt')) ++ self.assertTrue(path.endswith('.txt')) + for dir_path, paths in self.fs.walk(wildcard=lambda fn: fn.endswith('.txt')): + for path in paths: +- self.assert_(path.endswith('.txt')) ++ self.assertTrue(path.endswith('.txt')) + + def test_walk_dir_wildcard(self): + self.fs.setcontents('a.txt', b('hello')) +@@ -383,35 +383,35 @@ class FSTestCases(object): + self.fs.makeopendir('.svn').setcontents('ignored', b('')) + for dir_path, paths in self.fs.walk(dir_wildcard=lambda fn: not fn.endswith('.svn')): + for path in paths: +- self.assert_('.svn' not in path) ++ self.assertTrue('.svn' not in path) + + def test_walkfiles(self): + self.fs.makeopendir('bar').setcontents('a.txt', b('123')) + self.fs.makeopendir('foo').setcontents('b', b('123')) +- self.assertEquals(sorted( ++ self.assertEqual(sorted( + self.fs.walkfiles()), ["/bar/a.txt", "/foo/b"]) +- self.assertEquals(sorted(self.fs.walkfiles( ++ self.assertEqual(sorted(self.fs.walkfiles( + dir_wildcard="*foo*")), ["/foo/b"]) +- self.assertEquals(sorted(self.fs.walkfiles( ++ self.assertEqual(sorted(self.fs.walkfiles( + wildcard="*.txt")), ["/bar/a.txt"]) + + def test_walkdirs(self): + self.fs.makeopendir('bar').setcontents('a.txt', b('123')) + self.fs.makeopendir('foo').makeopendir( + "baz").setcontents('b', b('123')) +- self.assertEquals(sorted(self.fs.walkdirs()), [ ++ self.assertEqual(sorted(self.fs.walkdirs()), [ + "/", "/bar", "/foo", "/foo/baz"]) +- self.assertEquals(sorted(self.fs.walkdirs( ++ self.assertEqual(sorted(self.fs.walkdirs( + wildcard="*foo*")), ["/", "/foo", "/foo/baz"]) + + def test_unicode(self): +- alpha = u"\N{GREEK SMALL LETTER ALPHA}" +- beta = u"\N{GREEK SMALL LETTER BETA}" ++ alpha = "\N{GREEK SMALL LETTER ALPHA}" ++ beta = "\N{GREEK SMALL LETTER BETA}" + self.fs.makedir(alpha) + self.fs.setcontents(alpha + "/a", b('')) + self.fs.setcontents(alpha + "/" + beta, b('')) + self.assertTrue(self.check(alpha)) +- self.assertEquals(sorted(self.fs.listdir(alpha)), ["a", beta]) ++ self.assertEqual(sorted(self.fs.listdir(alpha)), ["a", beta]) + + def test_makedir(self): + check = self.check +@@ -420,11 +420,11 @@ class FSTestCases(object): + self.assertRaises( + ParentDirectoryMissingError, self.fs.makedir, "a/b/c") + self.fs.makedir("a/b/c", recursive=True) +- self.assert_(check("a/b/c")) ++ self.assertTrue(check("a/b/c")) + self.fs.makedir("foo/bar/baz", recursive=True) +- self.assert_(check("foo/bar/baz")) ++ self.assertTrue(check("foo/bar/baz")) + self.fs.makedir("a/b/child") +- self.assert_(check("a/b/child")) ++ self.assertTrue(check("a/b/child")) + self.assertRaises(DestinationExistsError, self.fs.makedir, "/a/b") + self.fs.makedir("/a/b", allow_recreate=True) + self.fs.setcontents("/a/file", b('')) +@@ -446,30 +446,30 @@ class FSTestCases(object): + def test_removedir(self): + check = self.check + self.fs.makedir("a") +- self.assert_(check("a")) ++ self.assertTrue(check("a")) + self.fs.removedir("a") + self.assertRaises(ResourceNotFoundError, self.fs.removedir, "a") +- self.assert_(not check("a")) ++ self.assertTrue(not check("a")) + self.fs.makedir("a/b/c/d", recursive=True) + self.assertRaises(DirectoryNotEmptyError, self.fs.removedir, "a/b") + self.fs.removedir("a/b/c/d") +- self.assert_(not check("a/b/c/d")) ++ self.assertTrue(not check("a/b/c/d")) + self.fs.removedir("a/b/c") +- self.assert_(not check("a/b/c")) ++ self.assertTrue(not check("a/b/c")) + self.fs.removedir("a/b") +- self.assert_(not check("a/b")) ++ self.assertTrue(not check("a/b")) + # Test recursive removal of empty parent dirs + self.fs.makedir("foo/bar/baz", recursive=True) + self.fs.removedir("foo/bar/baz", recursive=True) +- self.assert_(not check("foo/bar/baz")) +- self.assert_(not check("foo/bar")) +- self.assert_(not check("foo")) ++ self.assertTrue(not check("foo/bar/baz")) ++ self.assertTrue(not check("foo/bar")) ++ self.assertTrue(not check("foo")) + self.fs.makedir("foo/bar/baz", recursive=True) + self.fs.setcontents("foo/file.txt", b("please don't delete me")) + self.fs.removedir("foo/bar/baz", recursive=True) +- self.assert_(not check("foo/bar/baz")) +- self.assert_(not check("foo/bar")) +- self.assert_(check("foo/file.txt")) ++ self.assertTrue(not check("foo/bar/baz")) ++ self.assertTrue(not check("foo/bar")) ++ self.assertTrue(check("foo/file.txt")) + # Ensure that force=True works as expected + self.fs.makedir("frollic/waggle", recursive=True) + self.fs.setcontents("frollic/waddle.txt", b("waddlewaddlewaddle")) +@@ -477,41 +477,41 @@ class FSTestCases(object): + self.assertRaises( + ResourceInvalidError, self.fs.removedir, "frollic/waddle.txt") + self.fs.removedir("frollic", force=True) +- self.assert_(not check("frollic")) ++ self.assertTrue(not check("frollic")) + # Test removing unicode dirs +- kappa = u"\N{GREEK CAPITAL LETTER KAPPA}" ++ kappa = "\N{GREEK CAPITAL LETTER KAPPA}" + self.fs.makedir(kappa) +- self.assert_(self.fs.isdir(kappa)) ++ self.assertTrue(self.fs.isdir(kappa)) + self.fs.removedir(kappa) + self.assertRaises(ResourceNotFoundError, self.fs.removedir, kappa) +- self.assert_(not self.fs.isdir(kappa)) ++ self.assertTrue(not self.fs.isdir(kappa)) + self.fs.makedir(pathjoin("test", kappa), recursive=True) +- self.assert_(check(pathjoin("test", kappa))) ++ self.assertTrue(check(pathjoin("test", kappa))) + self.fs.removedir("test", force=True) +- self.assert_(not check("test")) ++ self.assertTrue(not check("test")) + + def test_rename(self): + check = self.check + # test renaming a file in the same directory + self.fs.setcontents("foo.txt", b("Hello, World!")) +- self.assert_(check("foo.txt")) ++ self.assertTrue(check("foo.txt")) + self.fs.rename("foo.txt", "bar.txt") +- self.assert_(check("bar.txt")) +- self.assert_(not check("foo.txt")) ++ self.assertTrue(check("bar.txt")) ++ self.assertTrue(not check("foo.txt")) + # test renaming a directory in the same directory + self.fs.makedir("dir_a") + self.fs.setcontents("dir_a/test.txt", b("testerific")) +- self.assert_(check("dir_a")) ++ self.assertTrue(check("dir_a")) + self.fs.rename("dir_a", "dir_b") +- self.assert_(check("dir_b")) +- self.assert_(check("dir_b/test.txt")) +- self.assert_(not check("dir_a/test.txt")) +- self.assert_(not check("dir_a")) ++ self.assertTrue(check("dir_b")) ++ self.assertTrue(check("dir_b/test.txt")) ++ self.assertTrue(not check("dir_a/test.txt")) ++ self.assertTrue(not check("dir_a")) + # test renaming a file into a different directory + self.fs.makedir("dir_a") + self.fs.rename("dir_b/test.txt", "dir_a/test.txt") +- self.assert_(not check("dir_b/test.txt")) +- self.assert_(check("dir_a/test.txt")) ++ self.assertTrue(not check("dir_b/test.txt")) ++ self.assertTrue(check("dir_a/test.txt")) + # test renaming a file into a non-existent directory + self.assertRaises(ParentDirectoryMissingError, + self.fs.rename, "dir_a/test.txt", "nonexistent/test.txt") +@@ -530,7 +530,7 @@ class FSTestCases(object): + test_str = b("Hello, World!") + self.fs.setcontents("info.txt", test_str) + info = self.fs.getinfo("info.txt") +- for k, v in info.iteritems(): ++ for k, v in info.items(): + self.assertEqual(self.fs.getinfokeys('info.txt', k), {k: v}) + + test_info = {} +@@ -562,26 +562,26 @@ class FSTestCases(object): + + self.fs.makedir("foo/bar", recursive=True) + makefile("foo/bar/a.txt") +- self.assert_(check("foo/bar/a.txt")) +- self.assert_(checkcontents("foo/bar/a.txt")) ++ self.assertTrue(check("foo/bar/a.txt")) ++ self.assertTrue(checkcontents("foo/bar/a.txt")) + self.fs.move("foo/bar/a.txt", "foo/b.txt") +- self.assert_(not check("foo/bar/a.txt")) +- self.assert_(check("foo/b.txt")) +- self.assert_(checkcontents("foo/b.txt")) ++ self.assertTrue(not check("foo/bar/a.txt")) ++ self.assertTrue(check("foo/b.txt")) ++ self.assertTrue(checkcontents("foo/b.txt")) + + self.fs.move("foo/b.txt", "c.txt") +- self.assert_(not check("foo/b.txt")) +- self.assert_(check("/c.txt")) +- self.assert_(checkcontents("/c.txt")) ++ self.assertTrue(not check("foo/b.txt")) ++ self.assertTrue(check("/c.txt")) ++ self.assertTrue(checkcontents("/c.txt")) + + makefile("foo/bar/a.txt") + self.assertRaises( + DestinationExistsError, self.fs.move, "foo/bar/a.txt", "/c.txt") +- self.assert_(check("foo/bar/a.txt")) +- self.assert_(check("/c.txt")) ++ self.assertTrue(check("foo/bar/a.txt")) ++ self.assertTrue(check("/c.txt")) + self.fs.move("foo/bar/a.txt", "/c.txt", overwrite=True) +- self.assert_(not check("foo/bar/a.txt")) +- self.assert_(check("/c.txt")) ++ self.assertTrue(not check("foo/bar/a.txt")) ++ self.assertTrue(check("/c.txt")) + + def test_movedir(self): + check = self.check +@@ -602,29 +602,29 @@ class FSTestCases(object): + + self.fs.movedir("a", "copy of a") + +- self.assert_(self.fs.isdir("copy of a")) +- self.assert_(check("copy of a/1.txt")) +- self.assert_(check("copy of a/2.txt")) +- self.assert_(check("copy of a/3.txt")) +- self.assert_(check("copy of a/foo/bar/baz.txt")) ++ self.assertTrue(self.fs.isdir("copy of a")) ++ self.assertTrue(check("copy of a/1.txt")) ++ self.assertTrue(check("copy of a/2.txt")) ++ self.assertTrue(check("copy of a/3.txt")) ++ self.assertTrue(check("copy of a/foo/bar/baz.txt")) + +- self.assert_(not check("a/1.txt")) +- self.assert_(not check("a/2.txt")) +- self.assert_(not check("a/3.txt")) +- self.assert_(not check("a/foo/bar/baz.txt")) +- self.assert_(not check("a/foo/bar")) +- self.assert_(not check("a/foo")) +- self.assert_(not check("a")) ++ self.assertTrue(not check("a/1.txt")) ++ self.assertTrue(not check("a/2.txt")) ++ self.assertTrue(not check("a/3.txt")) ++ self.assertTrue(not check("a/foo/bar/baz.txt")) ++ self.assertTrue(not check("a/foo/bar")) ++ self.assertTrue(not check("a/foo")) ++ self.assertTrue(not check("a")) + + self.fs.makedir("a") + self.assertRaises( + DestinationExistsError, self.fs.movedir, "copy of a", "a") + self.fs.movedir("copy of a", "a", overwrite=True) +- self.assert_(not check("copy of a")) +- self.assert_(check("a/1.txt")) +- self.assert_(check("a/2.txt")) +- self.assert_(check("a/3.txt")) +- self.assert_(check("a/foo/bar/baz.txt")) ++ self.assertTrue(not check("copy of a")) ++ self.assertTrue(check("a/1.txt")) ++ self.assertTrue(check("a/2.txt")) ++ self.assertTrue(check("a/3.txt")) ++ self.assertTrue(check("a/foo/bar/baz.txt")) + + def test_cant_copy_from_os(self): + sys_executable = os.path.abspath(os.path.realpath(sys.executable)) +@@ -645,28 +645,28 @@ class FSTestCases(object): + + self.fs.makedir("foo/bar", recursive=True) + makefile("foo/bar/a.txt") +- self.assert_(check("foo/bar/a.txt")) +- self.assert_(checkcontents("foo/bar/a.txt")) ++ self.assertTrue(check("foo/bar/a.txt")) ++ self.assertTrue(checkcontents("foo/bar/a.txt")) + # import rpdb2; rpdb2.start_embedded_debugger('password'); + self.fs.copy("foo/bar/a.txt", "foo/b.txt") +- self.assert_(check("foo/bar/a.txt")) +- self.assert_(check("foo/b.txt")) +- self.assert_(checkcontents("foo/bar/a.txt")) +- self.assert_(checkcontents("foo/b.txt")) ++ self.assertTrue(check("foo/bar/a.txt")) ++ self.assertTrue(check("foo/b.txt")) ++ self.assertTrue(checkcontents("foo/bar/a.txt")) ++ self.assertTrue(checkcontents("foo/b.txt")) + + self.fs.copy("foo/b.txt", "c.txt") +- self.assert_(check("foo/b.txt")) +- self.assert_(check("/c.txt")) +- self.assert_(checkcontents("/c.txt")) ++ self.assertTrue(check("foo/b.txt")) ++ self.assertTrue(check("/c.txt")) ++ self.assertTrue(checkcontents("/c.txt")) + + makefile("foo/bar/a.txt", b("different contents")) +- self.assert_(checkcontents("foo/bar/a.txt", b("different contents"))) ++ self.assertTrue(checkcontents("foo/bar/a.txt", b("different contents"))) + self.assertRaises( + DestinationExistsError, self.fs.copy, "foo/bar/a.txt", "/c.txt") +- self.assert_(checkcontents("/c.txt")) ++ self.assertTrue(checkcontents("/c.txt")) + self.fs.copy("foo/bar/a.txt", "/c.txt", overwrite=True) +- self.assert_(checkcontents("foo/bar/a.txt", b("different contents"))) +- self.assert_(checkcontents("/c.txt", b("different contents"))) ++ self.assertTrue(checkcontents("foo/bar/a.txt", b("different contents"))) ++ self.assertTrue(checkcontents("/c.txt", b("different contents"))) + + def test_copydir(self): + check = self.check +@@ -690,24 +690,24 @@ class FSTestCases(object): + makefile("a/foo/bar/baz.txt") + + self.fs.copydir("a", "copy of a") +- self.assert_(check("copy of a/1.txt")) +- self.assert_(check("copy of a/2.txt")) +- self.assert_(check("copy of a/3.txt")) +- self.assert_(check("copy of a/foo/bar/baz.txt")) ++ self.assertTrue(check("copy of a/1.txt")) ++ self.assertTrue(check("copy of a/2.txt")) ++ self.assertTrue(check("copy of a/3.txt")) ++ self.assertTrue(check("copy of a/foo/bar/baz.txt")) + checkcontents("copy of a/1.txt") + +- self.assert_(check("a/1.txt")) +- self.assert_(check("a/2.txt")) +- self.assert_(check("a/3.txt")) +- self.assert_(check("a/foo/bar/baz.txt")) ++ self.assertTrue(check("a/1.txt")) ++ self.assertTrue(check("a/2.txt")) ++ self.assertTrue(check("a/3.txt")) ++ self.assertTrue(check("a/foo/bar/baz.txt")) + checkcontents("a/1.txt") + + self.assertRaises(DestinationExistsError, self.fs.copydir, "a", "b") + self.fs.copydir("a", "b", overwrite=True) +- self.assert_(check("b/1.txt")) +- self.assert_(check("b/2.txt")) +- self.assert_(check("b/3.txt")) +- self.assert_(check("b/foo/bar/baz.txt")) ++ self.assertTrue(check("b/1.txt")) ++ self.assertTrue(check("b/2.txt")) ++ self.assertTrue(check("b/3.txt")) ++ self.assertTrue(check("b/foo/bar/baz.txt")) + checkcontents("b/1.txt") + + def test_copydir_with_dotfile(self): +@@ -724,13 +724,13 @@ class FSTestCases(object): + makefile("a/.hidden.txt") + + self.fs.copydir("a", "copy of a") +- self.assert_(check("copy of a/1.txt")) +- self.assert_(check("copy of a/2.txt")) +- self.assert_(check("copy of a/.hidden.txt")) ++ self.assertTrue(check("copy of a/1.txt")) ++ self.assertTrue(check("copy of a/2.txt")) ++ self.assertTrue(check("copy of a/.hidden.txt")) + +- self.assert_(check("a/1.txt")) +- self.assert_(check("a/2.txt")) +- self.assert_(check("a/.hidden.txt")) ++ self.assertTrue(check("a/1.txt")) ++ self.assertTrue(check("a/2.txt")) ++ self.assertTrue(check("a/.hidden.txt")) + + def test_readwriteappendseek(self): + def checkcontents(path, check_contents): +@@ -743,7 +743,7 @@ class FSTestCases(object): + all_strings = b("").join(test_strings) + + self.assertRaises(ResourceNotFoundError, self.fs.open, "a.txt", "r") +- self.assert_(not self.fs.exists("a.txt")) ++ self.assertTrue(not self.fs.exists("a.txt")) + f1 = self.fs.open("a.txt", "wb") + pos = 0 + for s in test_strings: +@@ -751,26 +751,26 @@ class FSTestCases(object): + pos += len(s) + self.assertEqual(pos, f1.tell()) + f1.close() +- self.assert_(self.fs.exists("a.txt")) +- self.assert_(checkcontents("a.txt", all_strings)) ++ self.assertTrue(self.fs.exists("a.txt")) ++ self.assertTrue(checkcontents("a.txt", all_strings)) + + f2 = self.fs.open("b.txt", "wb") + f2.write(test_strings[0]) + f2.close() +- self.assert_(checkcontents("b.txt", test_strings[0])) ++ self.assertTrue(checkcontents("b.txt", test_strings[0])) + f3 = self.fs.open("b.txt", "ab") + # On win32, tell() gives zero until you actually write to the file + # self.assertEquals(f3.tell(),len(test_strings[0])) + f3.write(test_strings[1]) +- self.assertEquals(f3.tell(), len(test_strings[0])+len(test_strings[1])) ++ self.assertEqual(f3.tell(), len(test_strings[0])+len(test_strings[1])) + f3.write(test_strings[2]) +- self.assertEquals(f3.tell(), len(all_strings)) ++ self.assertEqual(f3.tell(), len(all_strings)) + f3.close() +- self.assert_(checkcontents("b.txt", all_strings)) ++ self.assertTrue(checkcontents("b.txt", all_strings)) + f4 = self.fs.open("b.txt", "wb") + f4.write(test_strings[2]) + f4.close() +- self.assert_(checkcontents("b.txt", test_strings[2])) ++ self.assertTrue(checkcontents("b.txt", test_strings[2])) + f5 = self.fs.open("c.txt", "wb") + for s in test_strings: + f5.write(s+b("\n")) +@@ -815,7 +815,7 @@ class FSTestCases(object): + with self.fs.open("hello", "wb") as f: + f.truncate(30) + +- self.assertEquals(self.fs.getsize("hello"), 30) ++ self.assertEqual(self.fs.getsize("hello"), 30) + + # Some file systems (FTPFS) don't support both reading and writing + if self.fs.getmeta('file.read_and_write', True): +@@ -825,7 +825,7 @@ class FSTestCases(object): + + with self.fs.open("hello", "rb") as f: + f.seek(25) +- self.assertEquals(f.read(), b("123456")) ++ self.assertEqual(f.read(), b("123456")) + + def test_write_past_end_of_file(self): + if self.fs.getmeta('file.read_and_write', True): +@@ -833,7 +833,7 @@ class FSTestCases(object): + f.seek(25) + f.write(b("EOF")) + with self.fs.open("write_at_end", "rb") as f: +- self.assertEquals(f.read(), b("\x00")*25 + b("EOF")) ++ self.assertEqual(f.read(), b("\x00")*25 + b("EOF")) + + def test_with_statement(self): + # This is a little tricky since 'with' is actually new syntax. +@@ -856,15 +856,15 @@ class FSTestCases(object): + code += " raise ValueError\n" + code = compile(code, "<string>", 'exec') + self.assertRaises(ValueError, eval, code, globals(), locals()) +- self.assertEquals(self.fs.getcontents('f.txt', 'rb'), contents) ++ self.assertEqual(self.fs.getcontents('f.txt', 'rb'), contents) + + def test_pickling(self): + if self.fs.getmeta('pickle_contents', True): + self.fs.setcontents("test1", b("hello world")) + fs2 = pickle.loads(pickle.dumps(self.fs)) +- self.assert_(fs2.isfile("test1")) ++ self.assertTrue(fs2.isfile("test1")) + fs3 = pickle.loads(pickle.dumps(self.fs, -1)) +- self.assert_(fs3.isfile("test1")) ++ self.assertTrue(fs3.isfile("test1")) + else: + # Just make sure it doesn't throw an exception + fs2 = pickle.loads(pickle.dumps(self.fs)) +@@ -879,9 +879,9 @@ class FSTestCases(object): + r = random.Random(0) + randint = r.randint + int2byte = six.int2byte +- for _i in xrange(num_chunks): ++ for _i in range(num_chunks): + c = b("").join(int2byte(randint( +- 0, 255)) for _j in xrange(chunk_size//8)) ++ 0, 255)) for _j in range(chunk_size//8)) + yield c * 8 + f = self.fs.open("bigfile", "wb") + try: +@@ -894,7 +894,7 @@ class FSTestCases(object): + try: + try: + while True: +- if chunks.next() != f.read(chunk_size): ++ if next(chunks) != f.read(chunk_size): + assert False, "bigfile was corrupted" + except StopIteration: + if f.read() != b(""): +@@ -929,9 +929,9 @@ class FSTestCases(object): + """Test read(0) returns empty string""" + self.fs.setcontents('foo.txt', b('Hello, World')) + with self.fs.open('foo.txt', 'rb') as f: +- self.assert_(len(f.read(0)) == 0) ++ self.assertTrue(len(f.read(0)) == 0) + with self.fs.open('foo.txt', 'rt') as f: +- self.assert_(len(f.read(0)) == 0) ++ self.assertTrue(len(f.read(0)) == 0) + + # May be disabled - see end of file + +@@ -977,7 +977,7 @@ class ThreadingTestCases(object): + for t in threads: + t.join() + for (c, e, t) in errors: +- raise e, None, t ++ raise e.with_traceback(t) + finally: + sys.setcheckinterval(check_interval) + +@@ -994,12 +994,12 @@ class ThreadingTestCases(object): + def thread1(): + c = b("thread1 was 'ere") + setcontents("thread1.txt", c) +- self.assertEquals(self.fs.getcontents("thread1.txt", 'rb'), c) ++ self.assertEqual(self.fs.getcontents("thread1.txt", 'rb'), c) + + def thread2(): + c = b("thread2 was 'ere") + setcontents("thread2.txt", c) +- self.assertEquals(self.fs.getcontents("thread2.txt", 'rb'), c) ++ self.assertEqual(self.fs.getcontents("thread2.txt", 'rb'), c) + self._runThreads(thread1, thread2) + + def test_setcontents_threaded_samefile(self): +@@ -1016,19 +1016,19 @@ class ThreadingTestCases(object): + c = b("thread1 was 'ere") + setcontents("threads.txt", c) + self._yield() +- self.assertEquals(self.fs.listdir("/"), ["threads.txt"]) ++ self.assertEqual(self.fs.listdir("/"), ["threads.txt"]) + + def thread2(): + c = b("thread2 was 'ere") + setcontents("threads.txt", c) + self._yield() +- self.assertEquals(self.fs.listdir("/"), ["threads.txt"]) ++ self.assertEqual(self.fs.listdir("/"), ["threads.txt"]) + + def thread3(): + c = b("thread3 was 'ere") + setcontents("threads.txt", c) + self._yield() +- self.assertEquals(self.fs.listdir("/"), ["threads.txt"]) ++ self.assertEqual(self.fs.listdir("/"), ["threads.txt"]) + try: + self._runThreads(thread1, thread2, thread3) + except ResourceLockedError: +@@ -1079,23 +1079,23 @@ class ThreadingTestCases(object): + def makedir(): + try: + self.fs.makedir("testdir") +- except DestinationExistsError, e: ++ except DestinationExistsError as e: + errors.append(e) + + def makedir_noerror(): + try: + self.fs.makedir("testdir", allow_recreate=True) +- except DestinationExistsError, e: ++ except DestinationExistsError as e: + errors.append(e) + + def removedir(): + try: + self.fs.removedir("testdir") +- except (ResourceNotFoundError, ResourceLockedError), e: ++ except (ResourceNotFoundError, ResourceLockedError) as e: + errors.append(e) + # One thread should succeed, one should error + self._runThreads(makedir, makedir) +- self.assertEquals(len(errors), 1) ++ self.assertEqual(len(errors), 1) + self.fs.removedir("testdir") + # One thread should succeed, two should error + errors = [] +@@ -1106,18 +1106,18 @@ class ThreadingTestCases(object): + # All threads should succeed + errors = [] + self._runThreads(makedir_noerror, makedir_noerror, makedir_noerror) +- self.assertEquals(len(errors), 0) ++ self.assertEqual(len(errors), 0) + self.assertTrue(self.fs.isdir("testdir")) + self.fs.removedir("testdir") + # makedir() can beat removedir() and vice-versa + errors = [] + self._runThreads(makedir, removedir) + if self.fs.isdir("testdir"): +- self.assertEquals(len(errors), 1) ++ self.assertEqual(len(errors), 1) + self.assertFalse(isinstance(errors[0], DestinationExistsError)) + self.fs.removedir("testdir") + else: +- self.assertEquals(len(errors), 0) ++ self.assertEqual(len(errors), 0) + + def test_concurrent_copydir(self): + self.fs.makedir("a") +@@ -1136,10 +1136,10 @@ class ThreadingTestCases(object): + # This should error out since we're not overwriting + self.assertRaises( + DestinationExistsError, self._runThreads, copydir, copydir) +- self.assert_(self.fs.isdir('a')) +- self.assert_(self.fs.isdir('a')) ++ self.assertTrue(self.fs.isdir('a')) ++ self.assertTrue(self.fs.isdir('a')) + copydir_overwrite() +- self.assert_(self.fs.isdir('a')) ++ self.assertTrue(self.fs.isdir('a')) + # This should run to completion and give a valid state, unless + # files get locked when written to. + try: +@@ -1160,19 +1160,19 @@ class ThreadingTestCases(object): + "contents the second"), b("number three")] + + def thread1(): +- for i in xrange(30): ++ for i in range(30): + for c in contents: + self.fs.setcontents("thread1.txt", c) +- self.assertEquals(self.fs.getsize("thread1.txt"), len(c)) +- self.assertEquals(self.fs.getcontents( ++ self.assertEqual(self.fs.getsize("thread1.txt"), len(c)) ++ self.assertEqual(self.fs.getcontents( + "thread1.txt", 'rb'), c) + + def thread2(): +- for i in xrange(30): ++ for i in range(30): + for c in contents: + self.fs.setcontents("thread2.txt", c) +- self.assertEquals(self.fs.getsize("thread2.txt"), len(c)) +- self.assertEquals(self.fs.getcontents( ++ self.assertEqual(self.fs.getsize("thread2.txt"), len(c)) ++ self.assertEqual(self.fs.getcontents( + "thread2.txt", 'rb'), c) + self._runThreads(thread1, thread2) + +--- fs/tests/test_archivefs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_archivefs.py +@@ -58,7 +58,7 @@ class TestReadArchiveFS(unittest.TestCase): + contents = f.read() + return contents + def check_contents(path, expected): +- self.assert_(read_contents(path)==expected) ++ self.assertTrue(read_contents(path)==expected) + check_contents("a.txt", b("Hello, World!")) + check_contents("1.txt", b("1")) + check_contents("foo/bar/baz.txt", b("baz")) +@@ -67,29 +67,29 @@ class TestReadArchiveFS(unittest.TestCase): + def read_contents(path): + return self.fs.getcontents(path) + def check_contents(path, expected): +- self.assert_(read_contents(path)==expected) ++ self.assertTrue(read_contents(path)==expected) + check_contents("a.txt", b("Hello, World!")) + check_contents("1.txt", b("1")) + check_contents("foo/bar/baz.txt", b("baz")) + + def test_is(self): +- self.assert_(self.fs.isfile('a.txt')) +- self.assert_(self.fs.isfile('1.txt')) +- self.assert_(self.fs.isfile('foo/bar/baz.txt')) +- self.assert_(self.fs.isdir('foo')) +- self.assert_(self.fs.isdir('foo/bar')) +- self.assert_(self.fs.exists('a.txt')) +- self.assert_(self.fs.exists('1.txt')) +- self.assert_(self.fs.exists('foo/bar/baz.txt')) +- self.assert_(self.fs.exists('foo')) +- self.assert_(self.fs.exists('foo/bar')) ++ self.assertTrue(self.fs.isfile('a.txt')) ++ self.assertTrue(self.fs.isfile('1.txt')) ++ self.assertTrue(self.fs.isfile('foo/bar/baz.txt')) ++ self.assertTrue(self.fs.isdir('foo')) ++ self.assertTrue(self.fs.isdir('foo/bar')) ++ self.assertTrue(self.fs.exists('a.txt')) ++ self.assertTrue(self.fs.exists('1.txt')) ++ self.assertTrue(self.fs.exists('foo/bar/baz.txt')) ++ self.assertTrue(self.fs.exists('foo')) ++ self.assertTrue(self.fs.exists('foo/bar')) + + def test_listdir(self): + def check_listing(path, expected): + dir_list = self.fs.listdir(path) +- self.assert_(sorted(dir_list) == sorted(expected)) ++ self.assertTrue(sorted(dir_list) == sorted(expected)) + for item in dir_list: +- self.assert_(isinstance(item,unicode)) ++ self.assertTrue(isinstance(item,str)) + check_listing('/', ['a.txt', '1.txt', 'foo', 'b.txt']) + check_listing('foo', ['second.txt', 'bar']) + check_listing('foo/bar', ['baz.txt']) +@@ -114,7 +114,7 @@ class TestWriteArchiveFS(unittest.TestCase): + + makefile("a.txt", b("Hello, World!")) + makefile("b.txt", b("b")) +- makefile(u"\N{GREEK SMALL LETTER ALPHA}/\N{GREEK CAPITAL LETTER OMEGA}.txt", b("this is the alpha and the omega")) ++ makefile("\N{GREEK SMALL LETTER ALPHA}/\N{GREEK CAPITAL LETTER OMEGA}.txt", b("this is the alpha and the omega")) + makefile("foo/bar/baz.txt", b("baz")) + makefile("foo/second.txt", b("hai")) + +@@ -125,7 +125,7 @@ class TestWriteArchiveFS(unittest.TestCase): + + def test_valid(self): + zf = zipfile.ZipFile(self.temp_filename, "r") +- self.assert_(zf.testzip() is None) ++ self.assertTrue(zf.testzip() is None) + zf.close() + + def test_creation(self): +@@ -140,7 +140,7 @@ class TestWriteArchiveFS(unittest.TestCase): + check_contents("b.txt", b("b")) + check_contents("foo/bar/baz.txt", b("baz")) + check_contents("foo/second.txt", b("hai")) +- check_contents(u"\N{GREEK SMALL LETTER ALPHA}/\N{GREEK CAPITAL LETTER OMEGA}.txt", b("this is the alpha and the omega")) ++ check_contents("\N{GREEK SMALL LETTER ALPHA}/\N{GREEK CAPITAL LETTER OMEGA}.txt", b("this is the alpha and the omega")) + + + #~ class TestAppendArchiveFS(TestWriteArchiveFS): +--- fs/tests/test_errors.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_errors.py +@@ -29,4 +29,4 @@ class TestFSError(unittest.TestCase): + + def test_unicode_representation_of_error_with_non_ascii_characters(self): + path_error = PathError('/Shïrê/Frødø') +- _ = unicode(path_error) +\ No newline at end of file ++ _ = str(path_error) +--- fs/tests/test_expose.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_expose.py +@@ -149,7 +149,7 @@ if dokan.is_available: + + def tearDown(self): + self.mount_proc.unmount() +- for _ in xrange(10): ++ for _ in range(10): + try: + if self.mount_proc.poll() is None: + self.mount_proc.terminate() +--- fs/tests/test_fs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_fs.py +@@ -20,7 +20,7 @@ from fs import osfs + class TestOSFS(unittest.TestCase,FSTestCases,ThreadingTestCases): + + def setUp(self): +- self.temp_dir = tempfile.mkdtemp(u"fstest") ++ self.temp_dir = tempfile.mkdtemp("fstest") + self.fs = osfs.OSFS(self.temp_dir) + + def tearDown(self): +@@ -35,14 +35,14 @@ class TestOSFS(unittest.TestCase,FSTestCases,Threading + + self.assertRaises(errors.InvalidCharsInPathError, self.fs.open, 'invalid\0file', 'wb') + self.assertFalse(self.fs.isvalidpath('invalid\0file')) +- self.assert_(self.fs.isvalidpath('validfile')) +- self.assert_(self.fs.isvalidpath('completely_valid/path/foo.bar')) ++ self.assertTrue(self.fs.isvalidpath('validfile')) ++ self.assertTrue(self.fs.isvalidpath('completely_valid/path/foo.bar')) + + + class TestSubFS(unittest.TestCase,FSTestCases,ThreadingTestCases): + + def setUp(self): +- self.temp_dir = tempfile.mkdtemp(u"fstest") ++ self.temp_dir = tempfile.mkdtemp("fstest") + self.parent_fs = osfs.OSFS(self.temp_dir) + self.parent_fs.makedir("foo/bar", recursive=True) + self.fs = self.parent_fs.opendir("foo/bar") +@@ -118,7 +118,7 @@ class TestTempFS(unittest.TestCase,FSTestCases,Threadi + def tearDown(self): + td = self.fs._temp_dir + self.fs.close() +- self.assert_(not os.path.exists(td)) ++ self.assertTrue(not os.path.exists(td)) + + def check(self, p): + td = self.fs._temp_dir +@@ -129,5 +129,5 @@ class TestTempFS(unittest.TestCase,FSTestCases,Threadi + + self.assertRaises(errors.InvalidCharsInPathError, self.fs.open, 'invalid\0file', 'wb') + self.assertFalse(self.fs.isvalidpath('invalid\0file')) +- self.assert_(self.fs.isvalidpath('validfile')) +- self.assert_(self.fs.isvalidpath('completely_valid/path/foo.bar')) ++ self.assertTrue(self.fs.isvalidpath('validfile')) ++ self.assertTrue(self.fs.isvalidpath('completely_valid/path/foo.bar')) +--- fs/tests/test_ftpfs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_ftpfs.py +@@ -10,7 +10,7 @@ import tempfile + import subprocess + import time + from os.path import abspath +-import urllib ++import urllib.request, urllib.parse, urllib.error + + from six import PY3 + +@@ -37,7 +37,7 @@ class TestFTPFS(unittest.TestCase, FSTestCases, Thread + ftp_port += 1 + use_port = str(ftp_port) + #ftp_port = 10000 +- self.temp_dir = tempfile.mkdtemp(u"ftpfstests") ++ self.temp_dir = tempfile.mkdtemp("ftpfstests") + + file_path = __file__ + if ':' not in file_path: +@@ -58,7 +58,7 @@ class TestFTPFS(unittest.TestCase, FSTestCases, Thread + start_time = time.time() + while time.time() - start_time < 5: + try: +- ftpurl = urllib.urlopen('ftp://127.0.0.1:%s' % use_port) ++ ftpurl = urllib.request.urlopen('ftp://127.0.0.1:%s' % use_port) + except IOError: + time.sleep(0) + else: +--- fs/tests/test_importhook.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_importhook.py +@@ -25,7 +25,7 @@ class TestFSImportHook(unittest.TestCase): + for ph in list(sys.path_hooks): + if issubclass(ph,FSImportHook): + sys.path_hooks.remove(mph) +- for (k,v) in sys.modules.items(): ++ for (k,v) in list(sys.modules.items()): + if k.startswith("fsih_"): + del sys.modules[k] + elif hasattr(v,"__loader__"): +@@ -64,22 +64,22 @@ class TestFSImportHook(unittest.TestCase): + ih = FSImportHook(t) + sys.meta_path.append(ih) + try: +- self.assertEquals(ih.find_module("fsih_hello"),ih) +- self.assertEquals(ih.find_module("fsih_helo"),None) +- self.assertEquals(ih.find_module("fsih_pkg"),ih) +- self.assertEquals(ih.find_module("fsih_pkg.sub1"),ih) +- self.assertEquals(ih.find_module("fsih_pkg.sub2"),ih) +- self.assertEquals(ih.find_module("fsih_pkg.sub3"),None) ++ self.assertEqual(ih.find_module("fsih_hello"),ih) ++ self.assertEqual(ih.find_module("fsih_helo"),None) ++ self.assertEqual(ih.find_module("fsih_pkg"),ih) ++ self.assertEqual(ih.find_module("fsih_pkg.sub1"),ih) ++ self.assertEqual(ih.find_module("fsih_pkg.sub2"),ih) ++ self.assertEqual(ih.find_module("fsih_pkg.sub3"),None) + m = ih.load_module("fsih_hello") +- self.assertEquals(m.message,"hello world!") ++ self.assertEqual(m.message,"hello world!") + self.assertRaises(ImportError,ih.load_module,"fsih_helo") + ih.load_module("fsih_pkg") + m = ih.load_module("fsih_pkg.sub1") +- self.assertEquals(m.message,"hello world!") +- self.assertEquals(m.a,42) ++ self.assertEqual(m.message,"hello world!") ++ self.assertEqual(m.a,42) + m = ih.load_module("fsih_pkg.sub2") +- self.assertEquals(m.message,"hello world!") +- self.assertEquals(m.a,42 * 2) ++ self.assertEqual(m.message,"hello world!") ++ self.assertEqual(m.a,42 * 2) + self.assertRaises(ImportError,ih.load_module,"fsih_pkg.sub3") + finally: + sys.meta_path.remove(ih) +@@ -88,7 +88,7 @@ class TestFSImportHook(unittest.TestCase): + def _check_imports_are_working(self): + try: + import fsih_hello +- self.assertEquals(fsih_hello.message,"hello world!") ++ self.assertEqual(fsih_hello.message,"hello world!") + try: + import fsih_helo + except ImportError: +@@ -97,11 +97,11 @@ class TestFSImportHook(unittest.TestCase): + assert False, "ImportError not raised" + import fsih_pkg + import fsih_pkg.sub1 +- self.assertEquals(fsih_pkg.sub1.message,"hello world!") +- self.assertEquals(fsih_pkg.sub1.a,42) ++ self.assertEqual(fsih_pkg.sub1.message,"hello world!") ++ self.assertEqual(fsih_pkg.sub1.a,42) + import fsih_pkg.sub2 +- self.assertEquals(fsih_pkg.sub2.message,"hello world!") +- self.assertEquals(fsih_pkg.sub2.a,42 * 2) ++ self.assertEqual(fsih_pkg.sub2.message,"hello world!") ++ self.assertEqual(fsih_pkg.sub2.a,42 * 2) + try: + import fsih_pkg.sub3 + except ImportError: +@@ -109,7 +109,7 @@ class TestFSImportHook(unittest.TestCase): + else: + assert False, "ImportError not raised" + finally: +- for k in sys.modules.keys(): ++ for k in list(sys.modules.keys()): + if k.startswith("fsih_"): + del sys.modules[k] + +--- fs/tests/test_iotools.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_iotools.py +@@ -1,5 +1,5 @@ +-from __future__ import unicode_literals + ++ + from fs import iotools + + import io +@@ -7,9 +7,9 @@ import unittest + from os.path import dirname, join, abspath + + try: +- unicode ++ str + except NameError: +- unicode = str ++ str = str + + + class OpenFilelike(object): +@@ -37,20 +37,20 @@ class TestIOTools(unittest.TestCase): + """Test make_stream""" + with self.get_bin_file() as f: + text = f.read() +- self.assert_(isinstance(text, bytes)) ++ self.assertTrue(isinstance(text, bytes)) + + with self.get_bin_file() as f: + with iotools.make_stream("data/UTF-8-demo.txt", f, 'rt') as f2: + text = f2.read() +- self.assert_(isinstance(text, unicode)) ++ self.assertTrue(isinstance(text, str)) + + def test_decorator(self): + """Test filelike_to_stream decorator""" + o = OpenFilelike(self.get_bin_file) + with o.open('file', 'rb') as f: + text = f.read() +- self.assert_(isinstance(text, bytes)) ++ self.assertTrue(isinstance(text, bytes)) + + with o.open('file', 'rt') as f: + text = f.read() +- self.assert_(isinstance(text, unicode)) ++ self.assertTrue(isinstance(text, str)) +--- fs/tests/test_mountfs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_mountfs.py +@@ -12,11 +12,11 @@ class TestMountFS(unittest.TestCase): + m2 = MemoryFS() + multi_fs.mount('/m1', m1) + multi_fs.mount('/m2', m2) +- self.assert_(not m1.closed) +- self.assert_(not m2.closed) ++ self.assertTrue(not m1.closed) ++ self.assertTrue(not m2.closed) + multi_fs.close() +- self.assert_(m1.closed) +- self.assert_(m2.closed) ++ self.assertTrue(m1.closed) ++ self.assertTrue(m2.closed) + + def test_no_auto_close(self): + """Test MountFS auto close can be disabled""" +@@ -25,11 +25,11 @@ class TestMountFS(unittest.TestCase): + m2 = MemoryFS() + multi_fs.mount('/m1', m1) + multi_fs.mount('/m2', m2) +- self.assert_(not m1.closed) +- self.assert_(not m2.closed) ++ self.assertTrue(not m1.closed) ++ self.assertTrue(not m2.closed) + multi_fs.close() +- self.assert_(not m1.closed) +- self.assert_(not m2.closed) ++ self.assertTrue(not m1.closed) ++ self.assertTrue(not m2.closed) + + def test_mountfile(self): + """Test mounting a file""" +@@ -42,16 +42,16 @@ class TestMountFS(unittest.TestCase): + mount_fs = MountFS() + mount_fs.mountfile('bar.txt', foo_dir.open, foo_dir.getinfo) + +- self.assert_(mount_fs.isdir('/')) +- self.assert_(mount_fs.isdir('./')) +- self.assert_(mount_fs.isdir('')) ++ self.assertTrue(mount_fs.isdir('/')) ++ self.assertTrue(mount_fs.isdir('./')) ++ self.assertTrue(mount_fs.isdir('')) + + # Check we can see the mounted file in the dir list + self.assertEqual(mount_fs.listdir(), ["bar.txt"]) +- self.assert_(not mount_fs.exists('nobodyhere.txt')) +- self.assert_(mount_fs.exists('bar.txt')) +- self.assert_(mount_fs.isfile('bar.txt')) +- self.assert_(not mount_fs.isdir('bar.txt')) ++ self.assertTrue(not mount_fs.exists('nobodyhere.txt')) ++ self.assertTrue(mount_fs.exists('bar.txt')) ++ self.assertTrue(mount_fs.isfile('bar.txt')) ++ self.assertTrue(not mount_fs.isdir('bar.txt')) + + # Check open and getinfo callables + self.assertEqual(mount_fs.getcontents('bar.txt'), quote) +@@ -67,9 +67,9 @@ class TestMountFS(unittest.TestCase): + self.assertEqual(mem_fs.getsize('foo/bar.txt'), len('baz')) + + # Check unmount +- self.assert_(mount_fs.unmount("bar.txt")) ++ self.assertTrue(mount_fs.unmount("bar.txt")) + self.assertEqual(mount_fs.listdir(), []) +- self.assert_(not mount_fs.exists('bar.txt')) ++ self.assertTrue(not mount_fs.exists('bar.txt')) + + # Check unount a second time is a null op, and returns False + self.assertFalse(mount_fs.unmount("bar.txt")) +--- fs/tests/test_multifs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_multifs.py +@@ -13,11 +13,11 @@ class TestMultiFS(unittest.TestCase): + m2 = MemoryFS() + multi_fs.addfs('m1', m1) + multi_fs.addfs('m2', m2) +- self.assert_(not m1.closed) +- self.assert_(not m2.closed) ++ self.assertTrue(not m1.closed) ++ self.assertTrue(not m2.closed) + multi_fs.close() +- self.assert_(m1.closed) +- self.assert_(m2.closed) ++ self.assertTrue(m1.closed) ++ self.assertTrue(m2.closed) + + def test_no_auto_close(self): + """Test MultiFS auto close can be disables""" +@@ -26,11 +26,11 @@ class TestMultiFS(unittest.TestCase): + m2 = MemoryFS() + multi_fs.addfs('m1', m1) + multi_fs.addfs('m2', m2) +- self.assert_(not m1.closed) +- self.assert_(not m2.closed) ++ self.assertTrue(not m1.closed) ++ self.assertTrue(not m2.closed) + multi_fs.close() +- self.assert_(not m1.closed) +- self.assert_(not m2.closed) ++ self.assertTrue(not m1.closed) ++ self.assertTrue(not m2.closed) + + + def test_priority(self): +@@ -45,7 +45,7 @@ class TestMultiFS(unittest.TestCase): + multi_fs.addfs("m1", m1) + multi_fs.addfs("m2", m2) + multi_fs.addfs("m3", m3) +- self.assert_(multi_fs.getcontents("name") == b("m3")) ++ self.assertTrue(multi_fs.getcontents("name") == b("m3")) + + m1 = MemoryFS() + m2 = MemoryFS() +@@ -57,7 +57,7 @@ class TestMultiFS(unittest.TestCase): + multi_fs.addfs("m1", m1) + multi_fs.addfs("m2", m2, priority=10) + multi_fs.addfs("m3", m3) +- self.assert_(multi_fs.getcontents("name") == b("m2")) ++ self.assertTrue(multi_fs.getcontents("name") == b("m2")) + + m1 = MemoryFS() + m2 = MemoryFS() +@@ -69,7 +69,7 @@ class TestMultiFS(unittest.TestCase): + multi_fs.addfs("m1", m1) + multi_fs.addfs("m2", m2, priority=10) + multi_fs.addfs("m3", m3, priority=10) +- self.assert_(multi_fs.getcontents("name") == b("m3")) ++ self.assertTrue(multi_fs.getcontents("name") == b("m3")) + + m1 = MemoryFS() + m2 = MemoryFS() +@@ -81,5 +81,5 @@ class TestMultiFS(unittest.TestCase): + multi_fs.addfs("m1", m1, priority=11) + multi_fs.addfs("m2", m2, priority=10) + multi_fs.addfs("m3", m3, priority=10) +- self.assert_(multi_fs.getcontents("name") == b("m1")) ++ self.assertTrue(multi_fs.getcontents("name") == b("m1")) + +--- fs/tests/test_opener.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_opener.py +@@ -14,7 +14,7 @@ from fs import path + class TestOpener(unittest.TestCase): + + def setUp(self): +- self.temp_dir = tempfile.mkdtemp(u"fstest_opener") ++ self.temp_dir = tempfile.mkdtemp("fstest_opener") + + def tearDown(self): + shutil.rmtree(self.temp_dir) +--- fs/tests/test_path.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_path.py +@@ -23,7 +23,7 @@ class TestPathFunctions(unittest.TestCase): + ("a/b/c", "a/b/c"), + ("a/b/../c/", "a/c"), + ("/","/"), +- (u"a/\N{GREEK SMALL LETTER BETA}/c",u"a/\N{GREEK SMALL LETTER BETA}/c"), ++ ("a/\N{GREEK SMALL LETTER BETA}/c","a/\N{GREEK SMALL LETTER BETA}/c"), + ] + for path, result in tests: + self.assertEqual(normpath(path), result) +@@ -44,7 +44,7 @@ class TestPathFunctions(unittest.TestCase): + ("a/b", "./d", "e", "a/b/d/e"), + ("/", "/", "/"), + ("/", "", "/"), +- (u"a/\N{GREEK SMALL LETTER BETA}","c",u"a/\N{GREEK SMALL LETTER BETA}/c"), ++ ("a/\N{GREEK SMALL LETTER BETA}","c","a/\N{GREEK SMALL LETTER BETA}/c"), + ] + for testpaths in tests: + paths = testpaths[:-1] +@@ -101,12 +101,12 @@ class TestPathFunctions(unittest.TestCase): + self.assertEqual(pathsplit(path), result) + + def test_recursepath(self): +- self.assertEquals(recursepath("/"),["/"]) +- self.assertEquals(recursepath("hello"),["/","/hello"]) +- self.assertEquals(recursepath("/hello/world/"),["/","/hello","/hello/world"]) +- self.assertEquals(recursepath("/hello/world/",reverse=True),["/hello/world","/hello","/"]) +- self.assertEquals(recursepath("hello",reverse=True),["/hello","/"]) +- self.assertEquals(recursepath("",reverse=True),["/"]) ++ self.assertEqual(recursepath("/"),["/"]) ++ self.assertEqual(recursepath("hello"),["/","/hello"]) ++ self.assertEqual(recursepath("/hello/world/"),["/","/hello","/hello/world"]) ++ self.assertEqual(recursepath("/hello/world/",reverse=True),["/hello/world","/hello","/"]) ++ self.assertEqual(recursepath("hello",reverse=True),["/hello","/"]) ++ self.assertEqual(recursepath("",reverse=True),["/"]) + + def test_isdotfile(self): + for path in ['.foo', +@@ -114,7 +114,7 @@ class TestPathFunctions(unittest.TestCase): + 'foo/.svn', + 'foo/bar/.svn', + '/foo/.bar']: +- self.assert_(isdotfile(path)) ++ self.assertTrue(isdotfile(path)) + + for path in ['asfoo', + 'df.svn', +@@ -142,10 +142,10 @@ class TestPathFunctions(unittest.TestCase): + self.assertEqual(basename(path), test_basename) + + def test_iswildcard(self): +- self.assert_(iswildcard('*')) +- self.assert_(iswildcard('*.jpg')) +- self.assert_(iswildcard('foo/*')) +- self.assert_(iswildcard('foo/{}')) ++ self.assertTrue(iswildcard('*')) ++ self.assertTrue(iswildcard('*.jpg')) ++ self.assertTrue(iswildcard('foo/*')) ++ self.assertTrue(iswildcard('foo/{}')) + self.assertFalse(iswildcard('foo')) + self.assertFalse(iswildcard('img.jpg')) + self.assertFalse(iswildcard('foo/bar')) +@@ -171,9 +171,9 @@ class Test_PathMap(unittest.TestCase): + def test_basics(self): + map = PathMap() + map["hello"] = "world" +- self.assertEquals(map["/hello"],"world") +- self.assertEquals(map["/hello/"],"world") +- self.assertEquals(map.get("hello"),"world") ++ self.assertEqual(map["/hello"],"world") ++ self.assertEqual(map["/hello/"],"world") ++ self.assertEqual(map.get("hello"),"world") + + def test_iteration(self): + map = PathMap() +@@ -183,17 +183,17 @@ class Test_PathMap(unittest.TestCase): + map["hello/kitty"] = 4 + map["hello/kitty/islame"] = 5 + map["batman/isawesome"] = 6 +- self.assertEquals(set(map.iterkeys()),set(("/hello/world","/hello/world/howareya","/hello/world/iamfine","/hello/kitty","/hello/kitty/islame","/batman/isawesome"))) +- self.assertEquals(sorted(map.values()),range(1,7)) +- self.assertEquals(sorted(map.items("/hello/world/")),[("/hello/world",1),("/hello/world/howareya",2),("/hello/world/iamfine",3)]) +- self.assertEquals(zip(map.keys(),map.values()),map.items()) +- self.assertEquals(zip(map.keys("batman"),map.values("batman")),map.items("batman")) +- self.assertEquals(set(map.iternames("hello")),set(("world","kitty"))) +- self.assertEquals(set(map.iternames("/hello/kitty")),set(("islame",))) ++ self.assertEqual(set(map.keys()),set(("/hello/world","/hello/world/howareya","/hello/world/iamfine","/hello/kitty","/hello/kitty/islame","/batman/isawesome"))) ++ self.assertEqual(sorted(map.values()),list(range(1,7))) ++ self.assertEqual(sorted(map.items("/hello/world/")),[("/hello/world",1),("/hello/world/howareya",2),("/hello/world/iamfine",3)]) ++ self.assertEqual(list(zip(list(map.keys()),list(map.values()))),list(map.items())) ++ self.assertEqual(list(zip(map.keys("batman"),map.values("batman"))),map.items("batman")) ++ self.assertEqual(set(map.iternames("hello")),set(("world","kitty"))) ++ self.assertEqual(set(map.iternames("/hello/kitty")),set(("islame",))) + + del map["hello/kitty/islame"] +- self.assertEquals(set(map.iternames("/hello/kitty")),set()) +- self.assertEquals(set(map.iterkeys()),set(("/hello/world","/hello/world/howareya","/hello/world/iamfine","/hello/kitty","/batman/isawesome"))) +- self.assertEquals(set(map.values()),set(range(1,7)) - set((5,))) ++ self.assertEqual(set(map.iternames("/hello/kitty")),set()) ++ self.assertEqual(set(map.keys()),set(("/hello/world","/hello/world/howareya","/hello/world/iamfine","/hello/kitty","/batman/isawesome"))) ++ self.assertEqual(set(map.values()),set(range(1,7)) - set((5,))) + + +--- fs/tests/test_remote.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_remote.py +@@ -116,37 +116,37 @@ class TestRemoteFileBuffer(unittest.TestCase, FSTestCa + self.fakeOn() + + f = self.fs.open('test.txt', 'rb') +- self.assertEquals(f.read(10), contents[:10]) ++ self.assertEqual(f.read(10), contents[:10]) + f.wrapped_file.seek(0, SEEK_END) +- self.assertEquals(f._rfile.tell(), 10) ++ self.assertEqual(f._rfile.tell(), 10) + f.seek(20) +- self.assertEquals(f.tell(), 20) +- self.assertEquals(f._rfile.tell(), 20) ++ self.assertEqual(f.tell(), 20) ++ self.assertEqual(f._rfile.tell(), 20) + f.seek(0, SEEK_END) +- self.assertEquals(f._rfile.tell(), len(contents)) ++ self.assertEqual(f._rfile.tell(), len(contents)) + f.close() + + f = self.fs.open('test.txt', 'ab') +- self.assertEquals(f.tell(), len(contents)) ++ self.assertEqual(f.tell(), len(contents)) + f.close() + + self.fakeOff() + + # Writing over the rfile edge + f = self.fs.open('test.txt', 'wb+') +- self.assertEquals(f.tell(), 0) ++ self.assertEqual(f.tell(), 0) + f.seek(len(contents) - 5) + # Last 5 characters not loaded from remote file +- self.assertEquals(f._rfile.tell(), len(contents) - 5) ++ self.assertEqual(f._rfile.tell(), len(contents) - 5) + # Confirm that last 5 characters are still in rfile buffer +- self.assertEquals(f._rfile.read(), contents[-5:]) ++ self.assertEqual(f._rfile.read(), contents[-5:]) + # Rollback position 5 characters before eof + f._rfile.seek(len(contents[:-5])) + # Write 10 new characters (will make contents longer for 5 chars) + f.write(b('1234567890')) + f.flush() + # We are on the end of file (and buffer not serve anything anymore) +- self.assertEquals(f.read(), b('')) ++ self.assertEqual(f.read(), b('')) + f.close() + + self.fakeOn() +@@ -154,7 +154,7 @@ class TestRemoteFileBuffer(unittest.TestCase, FSTestCa + # Check if we wrote everything OK from + # previous writing over the remote buffer edge + f = self.fs.open('test.txt', 'rb') +- self.assertEquals(f.read(), contents[:-5] + b('1234567890')) ++ self.assertEqual(f.read(), contents[:-5] + b('1234567890')) + f.close() + + self.fakeOff() +@@ -199,36 +199,36 @@ class TestRemoteFileBuffer(unittest.TestCase, FSTestCa + + f = self.fs.open('test.txt', 'rb+') + # Check if we read just 10 characters +- self.assertEquals(f.read(10), contents[:10]) +- self.assertEquals(f._rfile.tell(), 10) ++ self.assertEqual(f.read(10), contents[:10]) ++ self.assertEqual(f._rfile.tell(), 10) + # Write garbage to file to mark it as _changed + f.write(b('x')) + # This should read the rest of file and store file back to again. + f.flush() + f.seek(0) + # Try if we have unocrrupted file locally... +- self.assertEquals(f.read(), contents[:10] + b('x') + contents[11:]) ++ self.assertEqual(f.read(), contents[:10] + b('x') + contents[11:]) + f.close() + + # And if we have uncorrupted file also on storage + f = self.fs.open('test.txt', 'rb') +- self.assertEquals(f.read(), contents[:10] + b('x') + contents[11:]) ++ self.assertEqual(f.read(), contents[:10] + b('x') + contents[11:]) + f.close() + + # Now try it again, but write garbage behind edge of remote file + f = self.fs.open('test.txt', 'rb+') +- self.assertEquals(f.read(10), contents[:10]) ++ self.assertEqual(f.read(10), contents[:10]) + # Write garbage to file to mark it as _changed + f.write(contents2) + f.flush() + f.seek(0) + # Try if we have unocrrupted file locally... +- self.assertEquals(f.read(), contents[:10] + contents2) ++ self.assertEqual(f.read(), contents[:10] + contents2) + f.close() + + # And if we have uncorrupted file also on storage + f = self.fs.open('test.txt', 'rb') +- self.assertEquals(f.read(), contents[:10] + contents2) ++ self.assertEqual(f.read(), contents[:10] + contents2) + f.close() + + +--- fs/tests/test_rpcfs.py.orig 2015-04-12 17:24:29 UTC ++++ fs/tests/test_rpcfs.py +@@ -48,7 +48,7 @@ class TestRPCFS(unittest.TestCase, FSTestCases, Thread + while not self.server: + try: + self.server = self.makeServer(self.temp_fs,("127.0.0.1",port)) +- except socket.error, e: ++ except socket.error as e: + if e.args[1] == "Address already in use": + port += 1 + else: +@@ -63,7 +63,7 @@ class TestRPCFS(unittest.TestCase, FSTestCases, Thread + #self.server.serve_forever() + while self.serve_more_requests: + self.server.handle_request() +- except Exception, e: ++ except Exception as e: + pass + + self.end_event.set() +@@ -93,7 +93,7 @@ class TestRPCFS(unittest.TestCase, FSTestCases, Thread + sock.settimeout(.1) + sock.connect(sa) + sock.send(b("\n")) +- except socket.error, e: ++ except socket.error as e: + pass + finally: + if sock is not None: +--- fs/tests/test_utils.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_utils.py +@@ -16,11 +16,11 @@ class TestUtils(unittest.TestCase): + fs.setcontents("foo/bar/fruit", b("apple")) + + def _check_fs(self, fs): +- self.assert_(fs.isfile("f1")) +- self.assert_(fs.isfile("f2")) +- self.assert_(fs.isfile("f3")) +- self.assert_(fs.isdir("foo/bar")) +- self.assert_(fs.isfile("foo/bar/fruit")) ++ self.assertTrue(fs.isfile("f1")) ++ self.assertTrue(fs.isfile("f2")) ++ self.assertTrue(fs.isfile("f3")) ++ self.assertTrue(fs.isdir("foo/bar")) ++ self.assertTrue(fs.isfile("foo/bar/fruit")) + self.assertEqual(fs.getcontents("f1", "rb"), b("file 1")) + self.assertEqual(fs.getcontents("f2", "rb"), b("file 2")) + self.assertEqual(fs.getcontents("f3", "rb"), b("file 3")) +@@ -61,7 +61,7 @@ class TestUtils(unittest.TestCase): + fs1sub = fs1.makeopendir("from") + self._make_fs(fs1sub) + utils.movedir((fs1, "from"), (fs2, "copy")) +- self.assert_(not fs1.exists("from")) ++ self.assertTrue(not fs1.exists("from")) + self._check_fs(fs2.opendir("copy")) + + fs1 = TempFS() +@@ -69,7 +69,7 @@ class TestUtils(unittest.TestCase): + fs1sub = fs1.makeopendir("from") + self._make_fs(fs1sub) + utils.movedir((fs1, "from"), (fs2, "copy")) +- self.assert_(not fs1.exists("from")) ++ self.assertTrue(not fs1.exists("from")) + self._check_fs(fs2.opendir("copy")) + + def test_movedir_root(self): +@@ -79,7 +79,7 @@ class TestUtils(unittest.TestCase): + fs1sub = fs1.makeopendir("from") + self._make_fs(fs1sub) + utils.movedir((fs1, "from"), fs2) +- self.assert_(not fs1.exists("from")) ++ self.assertTrue(not fs1.exists("from")) + self._check_fs(fs2) + + fs1 = TempFS() +@@ -87,7 +87,7 @@ class TestUtils(unittest.TestCase): + fs1sub = fs1.makeopendir("from") + self._make_fs(fs1sub) + utils.movedir((fs1, "from"), fs2) +- self.assert_(not fs1.exists("from")) ++ self.assertTrue(not fs1.exists("from")) + self._check_fs(fs2) + + def test_remove_all(self): +@@ -101,15 +101,15 @@ class TestUtils(unittest.TestCase): + fs.setcontents("foo/baz", b("baz")) + + utils.remove_all(fs, "foo/bar") +- self.assert_(not fs.exists("foo/bar/fruit")) +- self.assert_(fs.exists("foo/bar")) +- self.assert_(fs.exists("foo/baz")) ++ self.assertTrue(not fs.exists("foo/bar/fruit")) ++ self.assertTrue(fs.exists("foo/bar")) ++ self.assertTrue(fs.exists("foo/baz")) + utils.remove_all(fs, "") +- self.assert_(not fs.exists("foo/bar/fruit")) +- self.assert_(not fs.exists("foo/bar/baz")) +- self.assert_(not fs.exists("foo/baz")) +- self.assert_(not fs.exists("foo")) +- self.assert_(not fs.exists("f1")) +- self.assert_(fs.isdirempty('/')) ++ self.assertTrue(not fs.exists("foo/bar/fruit")) ++ self.assertTrue(not fs.exists("foo/bar/baz")) ++ self.assertTrue(not fs.exists("foo/baz")) ++ self.assertTrue(not fs.exists("foo")) ++ self.assertTrue(not fs.exists("f1")) ++ self.assertTrue(fs.isdirempty('/')) + + +--- fs/tests/test_watch.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_watch.py +@@ -71,7 +71,7 @@ class WatcherTestCases: + for event in event_list: + if isinstance(event,cls): + if path is None or event.path == path: +- for (k,v) in attrs.iteritems(): ++ for (k,v) in attrs.items(): + if getattr(event,k) != v: + break + else: +@@ -98,7 +98,7 @@ class WatcherTestCases: + self.assertEventOccurred(CREATED,"/hello") + self.clearCapturedEvents() + old_atime = self.fs.getinfo("hello").get("accessed_time") +- self.assertEquals(self.fs.getcontents("hello"), b("hello world")) ++ self.assertEqual(self.fs.getcontents("hello"), b("hello world")) + if not isinstance(self.watchfs,PollingWatchableFS): + # Help it along by updting the atime. + # TODO: why is this necessary? +@@ -113,7 +113,7 @@ class WatcherTestCases: + # update it if it's too old, or don't update it at all! + # Try to force the issue, wait for it to change, but eventually + # give up and bail out. +- for i in xrange(10): ++ for i in range(10): + if self.fs.getinfo("hello").get("accessed_time") != old_atime: + if not self.checkEventOccurred(MODIFIED,"/hello"): + self.assertEventOccurred(ACCESSED,"/hello") +@@ -142,7 +142,7 @@ class WatcherTestCases: + self.waitForEvents() + for evt in events: + assert isinstance(evt,MODIFIED) +- self.assertEquals(evt.path,"/hello") ++ self.assertEqual(evt.path,"/hello") + + def test_watch_single_file_remove(self): + self.fs.makedir("testing") +@@ -153,9 +153,9 @@ class WatcherTestCases: + self.waitForEvents() + self.fs.remove("testing/hello") + self.waitForEvents() +- self.assertEquals(len(events),1) ++ self.assertEqual(len(events),1) + assert isinstance(events[0],REMOVED) +- self.assertEquals(events[0].path,"/testing/hello") ++ self.assertEqual(events[0].path,"/testing/hello") + + def test_watch_iter_changes(self): + changes = iter_changes(self.watchfs) +@@ -195,9 +195,9 @@ class TestWatchers_TempFS(unittest.TestCase,FSTestCase + watchfs = osfs.OSFS(self.fs.root_path) + self.watchfs = ensure_watchable(watchfs,poll_interval=0.1) + if watch_inotify is not None: +- self.assertEquals(watchfs,self.watchfs) ++ self.assertEqual(watchfs,self.watchfs) + if watch_win32 is not None: +- self.assertEquals(watchfs,self.watchfs) ++ self.assertEqual(watchfs,self.watchfs) + + def tearDown(self): + self.watchfs.close() +--- fs/tests/test_wrapfs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_wrapfs.py +@@ -26,7 +26,7 @@ class TestWrapFS(unittest.TestCase, FSTestCases, Threa + #__test__ = False + + def setUp(self): +- self.temp_dir = tempfile.mkdtemp(u"fstest") ++ self.temp_dir = tempfile.mkdtemp("fstest") + self.fs = wrapfs.WrapFS(osfs.OSFS(self.temp_dir)) + + def tearDown(self): +@@ -41,7 +41,7 @@ from fs.wrapfs.lazyfs import LazyFS + class TestLazyFS(unittest.TestCase, FSTestCases, ThreadingTestCases): + + def setUp(self): +- self.temp_dir = tempfile.mkdtemp(u"fstest") ++ self.temp_dir = tempfile.mkdtemp("fstest") + self.fs = LazyFS((osfs.OSFS,(self.temp_dir,))) + + def tearDown(self): +@@ -63,13 +63,13 @@ class TestLimitSizeFS(TestWrapFS): + + def tearDown(self): + remove_all(self.fs, "/") +- self.assertEquals(self.fs.cur_size,0) ++ self.assertEqual(self.fs.cur_size,0) + super(TestLimitSizeFS,self).tearDown() + self.fs.close() + + def test_storage_error(self): + total_written = 0 +- for i in xrange(1024*2): ++ for i in range(1024*2): + try: + total_written += 1030 + self.fs.setcontents("file %i" % i, b("C")*1030) +@@ -85,11 +85,11 @@ from fs.wrapfs.hidedotfilesfs import HideDotFilesFS + class TestHideDotFilesFS(unittest.TestCase): + + def setUp(self): +- self.temp_dir = tempfile.mkdtemp(u"fstest") +- open(os.path.join(self.temp_dir, u".dotfile"), 'w').close() +- open(os.path.join(self.temp_dir, u"regularfile"), 'w').close() +- os.mkdir(os.path.join(self.temp_dir, u".dotdir")) +- os.mkdir(os.path.join(self.temp_dir, u"regulardir")) ++ self.temp_dir = tempfile.mkdtemp("fstest") ++ open(os.path.join(self.temp_dir, ".dotfile"), 'w').close() ++ open(os.path.join(self.temp_dir, "regularfile"), 'w').close() ++ os.mkdir(os.path.join(self.temp_dir, ".dotdir")) ++ os.mkdir(os.path.join(self.temp_dir, "regulardir")) + self.fs = HideDotFilesFS(osfs.OSFS(self.temp_dir)) + + def tearDown(self): +@@ -97,15 +97,15 @@ class TestHideDotFilesFS(unittest.TestCase): + self.fs.close() + + def test_hidden(self): +- self.assertEquals(len(self.fs.listdir(hidden=False)), 2) +- self.assertEquals(len(list(self.fs.ilistdir(hidden=False))), 2) ++ self.assertEqual(len(self.fs.listdir(hidden=False)), 2) ++ self.assertEqual(len(list(self.fs.ilistdir(hidden=False))), 2) + + def test_nonhidden(self): +- self.assertEquals(len(self.fs.listdir(hidden=True)), 4) +- self.assertEquals(len(list(self.fs.ilistdir(hidden=True))), 4) ++ self.assertEqual(len(self.fs.listdir(hidden=True)), 4) ++ self.assertEqual(len(list(self.fs.ilistdir(hidden=True))), 4) + + def test_default(self): +- self.assertEquals(len(self.fs.listdir()), 2) +- self.assertEquals(len(list(self.fs.ilistdir())), 2) ++ self.assertEqual(len(self.fs.listdir()), 2) ++ self.assertEqual(len(list(self.fs.ilistdir())), 2) + + +--- fs/tests/test_xattr.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_xattr.py +@@ -37,19 +37,19 @@ class XAttrTestCases: + + def test_list_xattrs(self): + def do_list(p): +- self.assertEquals(sorted(self.fs.listxattrs(p)),[]) ++ self.assertEqual(sorted(self.fs.listxattrs(p)),[]) + self.fs.setxattr(p,"xattr1","value1") +- self.assertEquals(self.fs.getxattr(p,"xattr1"),"value1") +- self.assertEquals(sorted(self.fs.listxattrs(p)),["xattr1"]) +- self.assertTrue(isinstance(self.fs.listxattrs(p)[0],unicode)) ++ self.assertEqual(self.fs.getxattr(p,"xattr1"),"value1") ++ self.assertEqual(sorted(self.fs.listxattrs(p)),["xattr1"]) ++ self.assertTrue(isinstance(self.fs.listxattrs(p)[0],str)) + self.fs.setxattr(p,"attr2","value2") +- self.assertEquals(sorted(self.fs.listxattrs(p)),["attr2","xattr1"]) +- self.assertTrue(isinstance(self.fs.listxattrs(p)[0],unicode)) +- self.assertTrue(isinstance(self.fs.listxattrs(p)[1],unicode)) ++ self.assertEqual(sorted(self.fs.listxattrs(p)),["attr2","xattr1"]) ++ self.assertTrue(isinstance(self.fs.listxattrs(p)[0],str)) ++ self.assertTrue(isinstance(self.fs.listxattrs(p)[1],str)) + self.fs.delxattr(p,"xattr1") +- self.assertEquals(sorted(self.fs.listxattrs(p)),["attr2"]) ++ self.assertEqual(sorted(self.fs.listxattrs(p)),["attr2"]) + self.fs.delxattr(p,"attr2") +- self.assertEquals(sorted(self.fs.listxattrs(p)),[]) ++ self.assertEqual(sorted(self.fs.listxattrs(p)),[]) + self.fs.setcontents("test.txt",b("hello")) + do_list("test.txt") + self.fs.makedir("mystuff") +@@ -64,16 +64,16 @@ class XAttrTestCases: + self.fs.makedir("stuff") + self.fs.copy("a.txt","stuff/a.txt") + self.assertTrue(self.fs.exists("stuff/a.txt")) +- self.assertEquals(self.fs.getxattr("stuff/a.txt","myattr"),"myvalue") +- self.assertEquals(self.fs.getxattr("stuff/a.txt","testattr"),"testvalue") +- self.assertEquals(self.fs.getxattr("a.txt","myattr"),"myvalue") +- self.assertEquals(self.fs.getxattr("a.txt","testattr"),"testvalue") ++ self.assertEqual(self.fs.getxattr("stuff/a.txt","myattr"),"myvalue") ++ self.assertEqual(self.fs.getxattr("stuff/a.txt","testattr"),"testvalue") ++ self.assertEqual(self.fs.getxattr("a.txt","myattr"),"myvalue") ++ self.assertEqual(self.fs.getxattr("a.txt","testattr"),"testvalue") + self.fs.setxattr("stuff","dirattr","a directory") + self.fs.copydir("stuff","stuff2") +- self.assertEquals(self.fs.getxattr("stuff2/a.txt","myattr"),"myvalue") +- self.assertEquals(self.fs.getxattr("stuff2/a.txt","testattr"),"testvalue") +- self.assertEquals(self.fs.getxattr("stuff2","dirattr"),"a directory") +- self.assertEquals(self.fs.getxattr("stuff","dirattr"),"a directory") ++ self.assertEqual(self.fs.getxattr("stuff2/a.txt","myattr"),"myvalue") ++ self.assertEqual(self.fs.getxattr("stuff2/a.txt","testattr"),"testvalue") ++ self.assertEqual(self.fs.getxattr("stuff2","dirattr"),"a directory") ++ self.assertEqual(self.fs.getxattr("stuff","dirattr"),"a directory") + + def test_move_xattrs(self): + self.fs.setcontents("a.txt",b("content")) +@@ -82,29 +82,29 @@ class XAttrTestCases: + self.fs.makedir("stuff") + self.fs.move("a.txt","stuff/a.txt") + self.assertTrue(self.fs.exists("stuff/a.txt")) +- self.assertEquals(self.fs.getxattr("stuff/a.txt","myattr"),"myvalue") +- self.assertEquals(self.fs.getxattr("stuff/a.txt","testattr"),"testvalue") ++ self.assertEqual(self.fs.getxattr("stuff/a.txt","myattr"),"myvalue") ++ self.assertEqual(self.fs.getxattr("stuff/a.txt","testattr"),"testvalue") + self.fs.setxattr("stuff","dirattr","a directory") + self.fs.movedir("stuff","stuff2") +- self.assertEquals(self.fs.getxattr("stuff2/a.txt","myattr"),"myvalue") +- self.assertEquals(self.fs.getxattr("stuff2/a.txt","testattr"),"testvalue") +- self.assertEquals(self.fs.getxattr("stuff2","dirattr"),"a directory") ++ self.assertEqual(self.fs.getxattr("stuff2/a.txt","myattr"),"myvalue") ++ self.assertEqual(self.fs.getxattr("stuff2/a.txt","testattr"),"testvalue") ++ self.assertEqual(self.fs.getxattr("stuff2","dirattr"),"a directory") + + def test_remove_file(self): + def listxattrs(path): + return list(self.fs.listxattrs(path)) + # Check that xattrs aren't preserved after a file is removed + self.fs.createfile("myfile") +- self.assertEquals(listxattrs("myfile"),[]) ++ self.assertEqual(listxattrs("myfile"),[]) + self.fs.setxattr("myfile","testattr","testvalue") +- self.assertEquals(listxattrs("myfile"),["testattr"]) ++ self.assertEqual(listxattrs("myfile"),["testattr"]) + self.fs.remove("myfile") + self.assertRaises(ResourceNotFoundError,listxattrs,"myfile") + self.fs.createfile("myfile") +- self.assertEquals(listxattrs("myfile"),[]) ++ self.assertEqual(listxattrs("myfile"),[]) + self.fs.setxattr("myfile","testattr2","testvalue2") +- self.assertEquals(listxattrs("myfile"),["testattr2"]) +- self.assertEquals(self.fs.getxattr("myfile","testattr2"),"testvalue2") ++ self.assertEqual(listxattrs("myfile"),["testattr2"]) ++ self.assertEqual(self.fs.getxattr("myfile","testattr2"),"testvalue2") + # Check that removing a file without xattrs still works + self.fs.createfile("myfile2") + self.fs.remove("myfile2") +@@ -114,16 +114,16 @@ class XAttrTestCases: + return list(self.fs.listxattrs(path)) + # Check that xattrs aren't preserved after a dir is removed + self.fs.makedir("mydir") +- self.assertEquals(listxattrs("mydir"),[]) ++ self.assertEqual(listxattrs("mydir"),[]) + self.fs.setxattr("mydir","testattr","testvalue") +- self.assertEquals(listxattrs("mydir"),["testattr"]) ++ self.assertEqual(listxattrs("mydir"),["testattr"]) + self.fs.removedir("mydir") + self.assertRaises(ResourceNotFoundError,listxattrs,"mydir") + self.fs.makedir("mydir") +- self.assertEquals(listxattrs("mydir"),[]) ++ self.assertEqual(listxattrs("mydir"),[]) + self.fs.setxattr("mydir","testattr2","testvalue2") +- self.assertEquals(listxattrs("mydir"),["testattr2"]) +- self.assertEquals(self.fs.getxattr("mydir","testattr2"),"testvalue2") ++ self.assertEqual(listxattrs("mydir"),["testattr2"]) ++ self.assertEqual(self.fs.getxattr("mydir","testattr2"),"testvalue2") + # Check that removing a dir without xattrs still works + self.fs.makedir("mydir2") + self.fs.removedir("mydir2") +@@ -149,7 +149,7 @@ class TestXAttr_TempFS(unittest.TestCase,FSTestCases,X + except AttributeError: + td = self.fs.wrapped_fs._temp_dir + self.fs.close() +- self.assert_(not os.path.exists(td)) ++ self.assertTrue(not os.path.exists(td)) + + def check(self, p): + try: +--- fs/tests/test_zipfs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/tests/test_zipfs.py +@@ -52,7 +52,7 @@ class TestReadZipFS(unittest.TestCase): + return contents + + def check_contents(path, expected): +- self.assert_(read_contents(path) == expected) ++ self.assertTrue(read_contents(path) == expected) + check_contents("a.txt", b("Hello, World!")) + check_contents("1.txt", b("1")) + check_contents("foo/bar/baz.txt", b("baz")) +@@ -62,30 +62,30 @@ class TestReadZipFS(unittest.TestCase): + return self.fs.getcontents(path, 'rb') + + def check_contents(path, expected): +- self.assert_(read_contents(path) == expected) ++ self.assertTrue(read_contents(path) == expected) + check_contents("a.txt", b("Hello, World!")) + check_contents("1.txt", b("1")) + check_contents("foo/bar/baz.txt", b("baz")) + + def test_is(self): +- self.assert_(self.fs.isfile('a.txt')) +- self.assert_(self.fs.isfile('1.txt')) +- self.assert_(self.fs.isfile('foo/bar/baz.txt')) +- self.assert_(self.fs.isdir('foo')) +- self.assert_(self.fs.isdir('foo/bar')) +- self.assert_(self.fs.exists('a.txt')) +- self.assert_(self.fs.exists('1.txt')) +- self.assert_(self.fs.exists('foo/bar/baz.txt')) +- self.assert_(self.fs.exists('foo')) +- self.assert_(self.fs.exists('foo/bar')) ++ self.assertTrue(self.fs.isfile('a.txt')) ++ self.assertTrue(self.fs.isfile('1.txt')) ++ self.assertTrue(self.fs.isfile('foo/bar/baz.txt')) ++ self.assertTrue(self.fs.isdir('foo')) ++ self.assertTrue(self.fs.isdir('foo/bar')) ++ self.assertTrue(self.fs.exists('a.txt')) ++ self.assertTrue(self.fs.exists('1.txt')) ++ self.assertTrue(self.fs.exists('foo/bar/baz.txt')) ++ self.assertTrue(self.fs.exists('foo')) ++ self.assertTrue(self.fs.exists('foo/bar')) + + def test_listdir(self): + + def check_listing(path, expected): + dir_list = self.fs.listdir(path) +- self.assert_(sorted(dir_list) == sorted(expected)) ++ self.assertTrue(sorted(dir_list) == sorted(expected)) + for item in dir_list: +- self.assert_(isinstance(item, unicode)) ++ self.assertTrue(isinstance(item, str)) + check_listing('/', ['a.txt', '1.txt', 'foo', 'b.txt']) + check_listing('foo', ['second.txt', 'bar']) + check_listing('foo/bar', ['baz.txt']) +@@ -108,7 +108,7 @@ class TestWriteZipFS(unittest.TestCase): + + makefile("a.txt", b("Hello, World!")) + makefile("b.txt", b("b")) +- makefile(u"\N{GREEK SMALL LETTER ALPHA}/\N{GREEK CAPITAL LETTER OMEGA}.txt", b("this is the alpha and the omega")) ++ makefile("\N{GREEK SMALL LETTER ALPHA}/\N{GREEK CAPITAL LETTER OMEGA}.txt", b("this is the alpha and the omega")) + makefile("foo/bar/baz.txt", b("baz")) + makefile("foo/second.txt", b("hai")) + +@@ -119,7 +119,7 @@ class TestWriteZipFS(unittest.TestCase): + + def test_valid(self): + zf = zipfile.ZipFile(self.temp_filename, "r") +- self.assert_(zf.testzip() is None) ++ self.assertTrue(zf.testzip() is None) + zf.close() + + def test_creation(self): +@@ -134,7 +134,7 @@ class TestWriteZipFS(unittest.TestCase): + check_contents("b.txt", b("b")) + check_contents("foo/bar/baz.txt", b("baz")) + check_contents("foo/second.txt", b("hai")) +- check_contents(u"\N{GREEK SMALL LETTER ALPHA}/\N{GREEK CAPITAL LETTER OMEGA}.txt", b("this is the alpha and the omega")) ++ check_contents("\N{GREEK SMALL LETTER ALPHA}/\N{GREEK CAPITAL LETTER OMEGA}.txt", b("this is the alpha and the omega")) + + + class TestAppendZipFS(TestWriteZipFS): +@@ -159,7 +159,7 @@ class TestAppendZipFS(TestWriteZipFS): + zip_fs = zipfs.ZipFS(self.temp_filename, 'a') + + makefile("foo/bar/baz.txt", b("baz")) +- makefile(u"\N{GREEK SMALL LETTER ALPHA}/\N{GREEK CAPITAL LETTER OMEGA}.txt", b("this is the alpha and the omega")) ++ makefile("\N{GREEK SMALL LETTER ALPHA}/\N{GREEK CAPITAL LETTER OMEGA}.txt", b("this is the alpha and the omega")) + makefile("foo/second.txt", b("hai")) + + zip_fs.close() +--- fs/utils.py.orig 2015-11-13 23:12:33 UTC ++++ fs/utils.py +@@ -384,7 +384,7 @@ def isfile(fs,path,info=None): + def contains_files(fs, path='/'): + """Check if there are any files in the filesystem""" + try: +- iter(fs.walkfiles(path)).next() ++ next(iter(fs.walkfiles(path))) + except StopIteration: + return False + return True +@@ -426,7 +426,7 @@ def find_duplicates(fs, + for path in compare_paths: + file_sizes[fs.getsize(path)].append(path) + +- size_duplicates = [paths for paths in file_sizes.itervalues() if len(paths) > 1] ++ size_duplicates = [paths for paths in file_sizes.values() if len(paths) > 1] + + signatures = defaultdict(list) + +@@ -453,7 +453,7 @@ def find_duplicates(fs, + # If 'quick' is True then the signature comparison is adequate (although + # it may result in false positives) + if quick: +- for paths in signatures.itervalues(): ++ for paths in signatures.values(): + if len(paths) > 1: + yield paths + return +@@ -482,7 +482,7 @@ def find_duplicates(fs, + # byte by byte. + # All path groups in this loop have the same size and same signature, so are + # highly likely to be identical. +- for paths in signatures.itervalues(): ++ for paths in signatures.values(): + + while len(paths) > 1: + +@@ -535,7 +535,7 @@ def print_fs(fs, + if file_out is None: + file_out = sys.stdout + +- file_encoding = getattr(file_out, 'encoding', u'utf-8') or u'utf-8' ++ file_encoding = getattr(file_out, 'encoding', 'utf-8') or 'utf-8' + file_encoding = file_encoding.upper() + + if terminal_colors is None: +@@ -546,44 +546,44 @@ def print_fs(fs, + + def write(line): + if PY3: +- file_out.write((line + u'\n')) ++ file_out.write((line + '\n')) + else: +- file_out.write((line + u'\n').encode(file_encoding, 'replace')) ++ file_out.write((line + '\n').encode(file_encoding, 'replace')) + + def wrap_prefix(prefix): + if not terminal_colors: + return prefix +- return u'\x1b[32m%s\x1b[0m' % prefix ++ return '\x1b[32m%s\x1b[0m' % prefix + + def wrap_dirname(dirname): + if not terminal_colors: + return dirname +- return u'\x1b[1;34m%s\x1b[0m' % dirname ++ return '\x1b[1;34m%s\x1b[0m' % dirname + + def wrap_error(msg): + if not terminal_colors: + return msg +- return u'\x1b[31m%s\x1b[0m' % msg ++ return '\x1b[31m%s\x1b[0m' % msg + + def wrap_filename(fname): + if not terminal_colors: + return fname +- if fname.startswith(u'.'): +- fname = u'\x1b[33m%s\x1b[0m' % fname ++ if fname.startswith('.'): ++ fname = '\x1b[33m%s\x1b[0m' % fname + return fname + dircount = [0] + filecount = [0] + def print_dir(fs, path, levels=[]): + if file_encoding == 'UTF-8' and terminal_colors: +- char_vertline = u'│' +- char_newnode = u'├' +- char_line = u'──' +- char_corner = u'╰' ++ char_vertline = '│' ++ char_newnode = '├' ++ char_line = '──' ++ char_corner = '╰' + else: +- char_vertline = u'|' +- char_newnode = u'|' +- char_line = u'--' +- char_corner = u'`' ++ char_vertline = '|' ++ char_newnode = '|' ++ char_line = '--' ++ char_corner = '`' + + try: + dirs = fs.listdir(path, dirs_only=True) +@@ -593,18 +593,18 @@ def print_fs(fs, + files = fs.listdir(path, files_only=True, wildcard=files_wildcard) + dir_listing = ( [(True, p) for p in dirs] + + [(False, p) for p in files] ) +- except Exception, e: ++ except Exception as e: + prefix = ''.join([(char_vertline + ' ', ' ')[last] for last in levels]) + ' ' +- write(wrap_prefix(prefix[:-1] + ' ') + wrap_error(u"unable to retrieve directory list (%s) ..." % str(e))) ++ write(wrap_prefix(prefix[:-1] + ' ') + wrap_error("unable to retrieve directory list (%s) ..." % str(e))) + return 0 + + if hide_dotfiles: + dir_listing = [(isdir, p) for isdir, p in dir_listing if not p.startswith('.')] + + if dirs_first: +- dir_listing.sort(key = lambda (isdir, p):(not isdir, p.lower())) ++ dir_listing.sort(key = lambda isdir_p:(not isdir_p[0], isdir_p[1].lower())) + else: +- dir_listing.sort(key = lambda (isdir, p):p.lower()) ++ dir_listing.sort(key = lambda isdir_p1:isdir_p1[1].lower()) + + for i, (is_dir, item) in enumerate(dir_listing): + if is_dir: +@@ -685,9 +685,9 @@ if __name__ == "__main__": + t1.tree() + + t2 = TempFS() +- print t2.listdir() ++ print(t2.listdir()) + movedir(t1, t2) + +- print t2.listdir() ++ print(t2.listdir()) + t1.tree() + t2.tree() +--- fs/watch.py.orig 2022-03-04 17:14:43 UTC ++++ fs/watch.py +@@ -32,7 +32,7 @@ an iterator over the change events. + import sys + import weakref + import threading +-import Queue ++import queue + import traceback + + from fs.path import * +@@ -54,10 +54,10 @@ class EVENT(object): + self.path = path + + def __str__(self): +- return unicode(self).encode("utf8") ++ return str(self).encode("utf8") + + def __unicode__(self): +- return u"<fs.watch.%s object (path='%s') at %s>" % (self.__class__.__name__,self.path,hex(id(self))) ++ return "<fs.watch.%s object (path='%s') at %s>" % (self.__class__.__name__,self.path,hex(id(self))) + + def clone(self,fs=None,path=None): + if fs is None: +@@ -102,7 +102,7 @@ class MOVED_DST(EVENT): + self.source = source + + def __unicode__(self): +- return u"<fs.watch.%s object (path=%r,src=%r) at %s>" % (self.__class__.__name__,self.path,self.source,hex(id(self))) ++ return "<fs.watch.%s object (path=%r,src=%r) at %s>" % (self.__class__.__name__,self.path,self.source,hex(id(self))) + + def clone(self,fs=None,path=None,source=None): + evt = super(MOVED_DST,self).clone(fs,path) +@@ -120,7 +120,7 @@ class MOVED_SRC(EVENT): + self.destination = destination + + def __unicode__(self): +- return u"<fs.watch.%s object (path=%r,dst=%r) at %s>" % (self.__class__.__name__,self.path,self.destination,hex(id(self))) ++ return "<fs.watch.%s object (path=%r,dst=%r) at %s>" % (self.__class__.__name__,self.path,self.destination,hex(id(self))) + + def clone(self,fs=None,path=None,destination=None): + evt = super(MOVED_SRC,self).clone(fs,path) +@@ -182,7 +182,7 @@ class Watcher(object): + try: + self.callback(event) + except Exception: +- print >>sys.stderr, "error in FS watcher callback", self.callback ++ print("error in FS watcher callback", self.callback, file=sys.stderr) + traceback.print_exc() + + +@@ -213,7 +213,7 @@ class WatchableFSMixin(FS): + if isinstance(watcher_or_callback,Watcher): + self._watchers[watcher_or_callback.path].remove(watcher_or_callback) + else: +- for watchers in self._watchers.itervalues(): ++ for watchers in self._watchers.values(): + for i,watcher in enumerate(watchers): + if watcher.callback is watcher_or_callback: + del watchers[i] +@@ -221,7 +221,7 @@ class WatchableFSMixin(FS): + + def _find_watchers(self,callback): + """Find watchers registered with the given callback.""" +- for watchers in self._watchers.itervalues(): ++ for watchers in self._watchers.values(): + for watcher in watchers: + if watcher.callback is callback: + yield watcher +@@ -235,7 +235,7 @@ class WatchableFSMixin(FS): + if path is None: + path = event.path + if path is None: +- for watchers in self._watchers.itervalues(): ++ for watchers in self._watchers.values(): + for watcher in watchers: + watcher.handle_event(event) + else: +@@ -443,7 +443,7 @@ class WatchableFS(WatchableFSMixin,WrapFS): + + def _post_move(self,src,dst,data): + (src_paths,dst_paths) = data +- for src_path,isdir in sorted(src_paths.items(),reverse=True): ++ for src_path,isdir in sorted(list(src_paths.items()),reverse=True): + path = pathjoin(src,src_path) + self.notify_watchers(REMOVED,path) + +@@ -554,7 +554,7 @@ class PollingWatchableFS(WatchableFS): + else: + was_accessed = False + was_modified = False +- for (k,v) in new_info.iteritems(): ++ for (k,v) in new_info.items(): + if k not in old_info: + was_modified = True + break +@@ -612,7 +612,7 @@ class iter_changes(object): + + def __init__(self,fs=None,path="/",events=None,**kwds): + self.closed = False +- self._queue = Queue.Queue() ++ self._queue = queue.Queue() + self._watching = set() + if fs is not None: + self.add_watcher(fs,path,events,**kwds) +@@ -628,7 +628,7 @@ class iter_changes(object): + raise StopIteration + try: + event = self._queue.get(timeout=timeout) +- except Queue.Empty: ++ except queue.Empty: + raise StopIteration + if event is None: + raise StopIteration +--- fs/wrapfs/__init__.py.orig 2015-04-12 17:24:29 UTC ++++ fs/wrapfs/__init__.py +@@ -32,12 +32,12 @@ def rewrite_errors(func): + def wrapper(self,*args,**kwds): + try: + return func(self,*args,**kwds) +- except ResourceError, e: ++ except ResourceError as e: + (exc_type,exc_inst,tb) = sys.exc_info() + try: + e.path = self._decode(e.path) + except (AttributeError, ValueError, TypeError): +- raise e, None, tb ++ raise e.with_traceback(tb) + raise + return wrapper + +@@ -119,7 +119,7 @@ class WrapFS(FS): + return (mode, mode) + + def __unicode__(self): +- return u"<%s: %s>" % (self.__class__.__name__,self.wrapped_fs,) ++ return "<%s: %s>" % (self.__class__.__name__,self.wrapped_fs,) + + #def __str__(self): + # return unicode(self).encode(sys.getdefaultencoding(),"replace") +--- fs/wrapfs/debugfs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/wrapfs/debugfs.py +@@ -66,7 +66,7 @@ class DebugFS(object): + logger.log(level, message) + + def __parse_param(self, value): +- if isinstance(value, basestring): ++ if isinstance(value, str): + if len(value) > 60: + value = "%s ... (length %d)" % (repr(value[:60]), len(value)) + else: +@@ -75,7 +75,7 @@ class DebugFS(object): + value = "%s (%d items)" % (repr(value[:3]), len(value)) + elif isinstance(value, dict): + items = {} +- for k, v in value.items()[:3]: ++ for k, v in list(value.items())[:3]: + items[k] = v + value = "%s (%d items)" % (repr(items), len(value)) + else: +@@ -84,7 +84,7 @@ class DebugFS(object): + + def __parse_args(self, *arguments, **kwargs): + args = [self.__parse_param(a) for a in arguments] +- for k, v in kwargs.items(): ++ for k, v in list(kwargs.items()): + args.append("%s=%s" % (k, self.__parse_param(v))) + + args = ','.join(args) +@@ -105,10 +105,10 @@ class DebugFS(object): + + try: + attr = getattr(self.__wrapped_fs, key) +- except AttributeError, e: ++ except AttributeError as e: + self.__log(DEBUG, "Asking for not implemented method %s" % key) + raise e +- except Exception, e: ++ except Exception as e: + self.__log(CRITICAL, "Exception %s: %s" % \ + (e.__class__.__name__, str(e))) + raise e +@@ -122,19 +122,19 @@ class DebugFS(object): + try: + value = attr(*args, **kwargs) + self.__report("Call method", key, value, *args, **kwargs) +- except FSError, e: ++ except FSError as e: + self.__log(ERROR, "Call method %s%s -> Exception %s: %s" % \ + (key, self.__parse_args(*args, **kwargs), \ + e.__class__.__name__, str(e))) + (exc_type,exc_inst,tb) = sys.exc_info() +- raise e, None, tb +- except Exception, e: ++ raise e.with_traceback(tb) ++ except Exception as e: + self.__log(CRITICAL, + "Call method %s%s -> Non-FS exception %s: %s" %\ + (key, self.__parse_args(*args, **kwargs), \ + e.__class__.__name__, str(e))) + (exc_type,exc_inst,tb) = sys.exc_info() +- raise e, None, tb ++ raise e.with_traceback(tb) + return value + + if self.__verbose: +--- fs/wrapfs/hidedotfilesfs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/wrapfs/hidedotfilesfs.py +@@ -87,7 +87,7 @@ class HideDotFilesFS(WrapFS): + path = normpath(path) + iter_dir = iter(self.listdir(path,hidden=True)) + try: +- iter_dir.next() ++ next(iter_dir) + except StopIteration: + return True + return False +--- fs/wrapfs/lazyfs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/wrapfs/lazyfs.py +@@ -39,14 +39,14 @@ class LazyFS(WrapFS): + # It appears that python2.5 has trouble printing out + # classes that define a __unicode__ method. + try: +- return u"<LazyFS: %s>" % (self._fsclass,) ++ return "<LazyFS: %s>" % (self._fsclass,) + except TypeError: + try: +- return u"<LazyFS: %s>" % (self._fsclass.__name__,) ++ return "<LazyFS: %s>" % (self._fsclass.__name__,) + except AttributeError: +- return u"<LazyFS: <unprintable>>" ++ return "<LazyFS: <unprintable>>" + else: +- return u"<LazyFS: %s>" % (wrapped_fs,) ++ return "<LazyFS: %s>" % (wrapped_fs,) + + def __getstate__(self): + state = super(LazyFS,self).__getstate__() +--- fs/wrapfs/limitsizefs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/wrapfs/limitsizefs.py +@@ -9,7 +9,7 @@ total size of files stored in the wrapped FS. + + """ + +-from __future__ import with_statement ++ + + from fs.errors import * + from fs.path import * +--- fs/wrapfs/subfs.py.orig 2022-03-04 17:14:43 UTC ++++ fs/wrapfs/subfs.py +@@ -34,7 +34,7 @@ class SubFS(WrapFS): + return '<SubFS: %s/%s>' % (self.wrapped_fs, self.sub_dir.lstrip('/')) + + def __unicode__(self): +- return u'<SubFS: %s/%s>' % (self.wrapped_fs, self.sub_dir.lstrip('/')) ++ return '<SubFS: %s/%s>' % (self.wrapped_fs, self.sub_dir.lstrip('/')) + + def __repr__(self): + return "SubFS(%r, %r)" % (self.wrapped_fs, self.sub_dir) +--- fs/xattrs.py.orig 2015-04-12 17:24:29 UTC ++++ fs/xattrs.py +@@ -23,7 +23,7 @@ if it has native xattr support, and return a wrapped v + + import sys + try: +- import cPickle as pickle ++ import pickle as pickle + except ImportError: + import pickle + +@@ -104,7 +104,7 @@ class SimulateXAttr(WrapFS): + """Set an extended attribute on the given path.""" + if not self.exists(path): + raise ResourceNotFoundError(path) +- key = unicode(key) ++ key = str(key) + attrs = self._get_attr_dict(path) + attrs[key] = str(value) + self._set_attr_dict(path, attrs) +@@ -133,7 +133,7 @@ class SimulateXAttr(WrapFS): + """List all the extended attribute keys set on the given path.""" + if not self.exists(path): + raise ResourceNotFoundError(path) +- return self._get_attr_dict(path).keys() ++ return list(self._get_attr_dict(path).keys()) + + def _encode(self,path): + """Prevent requests for operations on .xattr files.""" +@@ -189,7 +189,7 @@ class SimulateXAttr(WrapFS): + d_attr_file = self._get_attr_path(dst) + try: + self.wrapped_fs.copy(s_attr_file,d_attr_file,overwrite=True) +- except ResourceNotFoundError,e: ++ except ResourceNotFoundError as e: + pass + + def move(self,src,dst,**kwds): +--- fs/zipfs.py.orig 2015-04-12 17:25:37 UTC ++++ fs/zipfs.py +@@ -16,9 +16,9 @@ from fs.filelike import StringIO + from fs import iotools + + from zipfile import ZipFile, ZIP_DEFLATED, ZIP_STORED, BadZipfile, LargeZipFile +-from memoryfs import MemoryFS ++from .memoryfs import MemoryFS + +-import tempfs ++from . import tempfs + + from six import PY3 + +@@ -74,7 +74,7 @@ class _ExceptionProxy(object): + def __setattr__(self, name, value): + raise ValueError("Zip file has been closed") + +- def __nonzero__(self): ++ def __bool__(self): + return False + + +@@ -117,7 +117,7 @@ class ZipFS(FS): + self.zip_mode = mode + self.encoding = encoding + +- if isinstance(zip_file, basestring): ++ if isinstance(zip_file, str): + zip_file = os.path.expanduser(os.path.expandvars(zip_file)) + zip_file = os.path.normpath(os.path.abspath(zip_file)) + self._zip_file_string = True +@@ -126,10 +126,10 @@ class ZipFS(FS): + + try: + self.zf = ZipFile(zip_file, mode, compression_type, allow_zip_64) +- except BadZipfile, bzf: ++ except BadZipfile as bzf: + raise ZipOpenError("Not a zip file or corrupt (%s)" % str(zip_file), + details=bzf) +- except IOError, ioe: ++ except IOError as ioe: + if str(ioe).startswith('[Errno 22] Invalid argument'): + raise ZipOpenError("Not a zip file or corrupt (%s)" % str(zip_file), + details=ioe) +@@ -151,7 +151,7 @@ class ZipFS(FS): + return "<ZipFS: %s>" % self.zip_path + + def __unicode__(self): +- return u"<ZipFS: %s>" % self.zip_path ++ return "<ZipFS: %s>" % self.zip_path + + def _decode_path(self, path): + if PY3: +@@ -280,7 +280,7 @@ class ZipFS(FS): + try: + zi = self.zf.getinfo(self._encode_path(path)) + zinfo = dict((attrib, getattr(zi, attrib)) for attrib in dir(zi) if not attrib.startswith('_')) +- for k, v in zinfo.iteritems(): ++ for k, v in zinfo.items(): + if callable(v): + zinfo[k] = v() + except KeyError: +--- setup.py.orig 2015-11-14 11:44:01 UTC ++++ setup.py +@@ -38,8 +38,6 @@ with open('README.txt', 'r') as f: + + + extra = {} +-if PY3: +- extra["use_2to3"] = True + + setup(install_requires=['setuptools', 'six'], + name='fs', diff --git a/filesystems/py-fs/pkg-descr b/filesystems/py-fs/pkg-descr new file mode 100644 index 000000000000..712dede347d6 --- /dev/null +++ b/filesystems/py-fs/pkg-descr @@ -0,0 +1,8 @@ +Pyfilesystem is a Python module that provides a simplified common interface to +many types of filesystem. Filesystems exposed via Pyfilesystem can also be +served over the network, or 'mounted' on the native filesystem. + +Pyfilesystem simplifies working directories and paths, even if you only intend +to work with local files. Differences in path formats between platforms are +abstracted away, and you can write code that sand-boxes any changes to a given +directory. diff --git a/filesystems/py-fs2/Makefile b/filesystems/py-fs2/Makefile new file mode 100644 index 000000000000..b6f702cdbce5 --- /dev/null +++ b/filesystems/py-fs2/Makefile @@ -0,0 +1,26 @@ +PORTNAME= fs +PORTVERSION= 2.4.16 +CATEGORIES= filesystems devel +MASTER_SITES= PYPI +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} +PKGNAMESUFFIX= 2 + +MAINTAINER= bofh@FreeBSD.org +COMMENT= Python Filesystem abstraction layer, version 2.x +WWW= https://www.pyfilesystem.org/ + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}appdirs>=1.4.3:devel/py-appdirs@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pytz>0:devel/py-pytz@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}six>=1.10:devel/py-six@${PY_FLAVOR} + +USES= python +USE_PYTHON= autoplist concurrent distutils + +NO_ARCH= yes + +PORTSCOUT= limit:^2\. + +.include <bsd.port.mk> diff --git a/filesystems/py-fs2/distinfo b/filesystems/py-fs2/distinfo new file mode 100644 index 000000000000..0aee290aa7cd --- /dev/null +++ b/filesystems/py-fs2/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1681495093 +SHA256 (fs-2.4.16.tar.gz) = ae97c7d51213f4b70b6a958292530289090de3a7e15841e108fbe144f069d313 +SIZE (fs-2.4.16.tar.gz) = 187441 diff --git a/filesystems/py-fs2/pkg-descr b/filesystems/py-fs2/pkg-descr new file mode 100644 index 000000000000..6807f41b753b --- /dev/null +++ b/filesystems/py-fs2/pkg-descr @@ -0,0 +1,5 @@ +Filesystem Abstraction for Python. Work with files and directories in archives, +memory, the cloud etc. as easily as your local drive. Write code now, decide +later where the data will be stored; unit test without writing real files; +upload files to the cloud without learning a new API; sandbox your file writing +code; etc. diff --git a/filesystems/py-fsspec-xrootd/Makefile b/filesystems/py-fsspec-xrootd/Makefile new file mode 100644 index 000000000000..b121c44958f9 --- /dev/null +++ b/filesystems/py-fsspec-xrootd/Makefile @@ -0,0 +1,26 @@ +PORTNAME= fsspec-xrootd +PORTVERSION= 0.4.0 +CATEGORIES= filesystems devel python +MASTER_SITES= PYPI +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} +DISTNAME= fsspec_xrootd-${PORTVERSION} + +MAINTAINER= sunpoet@FreeBSD.org +COMMENT= XRootD implementation for fsspec +WWW= https://coffeateam.github.io/fsspec-xrootd/ \ + https://github.com/CoffeaTeam/fsspec-xrootd + +LICENSE= BSD3CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>=42:devel/py-setuptools@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}setuptools-scm>=3.4:devel/py-setuptools-scm@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR} +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}fsspec>=0:filesystems/py-fsspec@${PY_FLAVOR} + +USES= python +USE_PYTHON= autoplist concurrent pep517 + +NO_ARCH= yes + +.include <bsd.port.mk> diff --git a/filesystems/py-fsspec-xrootd/distinfo b/filesystems/py-fsspec-xrootd/distinfo new file mode 100644 index 000000000000..2d8ab0f7585e --- /dev/null +++ b/filesystems/py-fsspec-xrootd/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1725559717 +SHA256 (fsspec_xrootd-0.4.0.tar.gz) = d7f124430d26ab9139d33bc50fa8abfde3624db5dcaa5c18f56af9bf17f16f13 +SIZE (fsspec_xrootd-0.4.0.tar.gz) = 23442 diff --git a/filesystems/py-fsspec-xrootd/pkg-descr b/filesystems/py-fsspec-xrootd/pkg-descr new file mode 100644 index 000000000000..cd72b8510731 --- /dev/null +++ b/filesystems/py-fsspec-xrootd/pkg-descr @@ -0,0 +1,3 @@ +To allow fsspec to use XRootD accessible storage systems, install fsspec-xrootd +alongside fsspec and have easy access to files stored on XRootD servers. Once +installed, fsspec will be able to work with urls with the 'root' protocol. diff --git a/filesystems/py-fsspec/Makefile b/filesystems/py-fsspec/Makefile new file mode 100644 index 000000000000..13612b3d29ca --- /dev/null +++ b/filesystems/py-fsspec/Makefile @@ -0,0 +1,28 @@ +PORTNAME= fsspec +PORTVERSION= 2024.10.0 +CATEGORIES= filesystems devel python +MASTER_SITES= PYPI +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= sunpoet@FreeBSD.org +COMMENT= File-system specification +WWW= https://filesystem-spec.readthedocs.io/en/latest/ \ + https://github.com/fsspec/filesystem_spec + +LICENSE= BSD3CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}hatch-vcs>=0:devel/py-hatch-vcs@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}hatchling>=0:devel/py-hatchling@${PY_FLAVOR} + +USES= python +USE_PYTHON= autoplist concurrent pep517 + +NO_ARCH= yes + +OPTIONS_DEFINE= GITHUB +GITHUB_DESC= GitHub file system + +GITHUB_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}requests>=0:www/py-requests@${PY_FLAVOR} + +.include <bsd.port.mk> diff --git a/filesystems/py-fsspec/distinfo b/filesystems/py-fsspec/distinfo new file mode 100644 index 000000000000..09aee0a26075 --- /dev/null +++ b/filesystems/py-fsspec/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1729653348 +SHA256 (fsspec-2024.10.0.tar.gz) = eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493 +SIZE (fsspec-2024.10.0.tar.gz) = 286853 diff --git a/filesystems/py-fsspec/pkg-descr b/filesystems/py-fsspec/pkg-descr new file mode 100644 index 000000000000..7d23085ccff9 --- /dev/null +++ b/filesystems/py-fsspec/pkg-descr @@ -0,0 +1,3 @@ +Filesystem Spec is a project to unify various projects and classes to work with +remote filesystems and file-system-like abstractions using a standard pythonic +interface. diff --git a/filesystems/py-fusepy/Makefile b/filesystems/py-fusepy/Makefile new file mode 100644 index 000000000000..7161a1b1fe0d --- /dev/null +++ b/filesystems/py-fusepy/Makefile @@ -0,0 +1,24 @@ +PORTNAME= fusepy +PORTVERSION= 3.0.1 +PORTREVISION= 1 +CATEGORIES= filesystems devel python +MASTER_SITES= PYPI +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= sunpoet@FreeBSD.org +COMMENT= Simple ctypes bindings for FUSE +WWW= https://github.com/fusepy/fusepy + +LICENSE= ISCL + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>=0:devel/py-setuptools@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR} + +USES= fuse python +USE_PYTHON= autoplist concurrent pep517 + +NO_ARCH= yes + +CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}fusefs # fuse.py + +.include <bsd.port.mk> diff --git a/filesystems/py-fusepy/distinfo b/filesystems/py-fusepy/distinfo new file mode 100644 index 000000000000..ef6c8fc3299e --- /dev/null +++ b/filesystems/py-fusepy/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1537143232 +SHA256 (fusepy-3.0.1.tar.gz) = 72ff783ec2f43de3ab394e3f7457605bf04c8cf288a2f4068b4cde141d4ee6bd +SIZE (fusepy-3.0.1.tar.gz) = 11519 diff --git a/filesystems/py-fusepy/pkg-descr b/filesystems/py-fusepy/pkg-descr new file mode 100644 index 000000000000..898b2d3e9be3 --- /dev/null +++ b/filesystems/py-fusepy/pkg-descr @@ -0,0 +1,2 @@ +fusepy is a Python module that provides a simple interface to FUSE and MacFUSE. +It's just one file and is implemented using ctypes. diff --git a/filesystems/py-gcsfs/Makefile b/filesystems/py-gcsfs/Makefile new file mode 100644 index 000000000000..b02e89e48711 --- /dev/null +++ b/filesystems/py-gcsfs/Makefile @@ -0,0 +1,37 @@ +PORTNAME= gcsfs +PORTVERSION= 2024.10.0 +CATEGORIES= filesystems devel python +MASTER_SITES= PYPI +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= sunpoet@FreeBSD.org +COMMENT= Convenient Filesystem interface over GCS +WWW= https://gcsfs.readthedocs.io/en/latest/ \ + https://github.com/fsspec/gcsfs + +LICENSE= BSD3CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE.txt + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>=0:devel/py-setuptools@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR} +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}aiohttp>=0:www/py-aiohttp@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}decorator>=4.1.2:devel/py-decorator@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}fsspec>=${PORTVERSION}<${PORTVERSION}_99:filesystems/py-fsspec@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}google-auth-oauthlib>=0:security/py-google-auth-oauthlib@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}google-auth>=1.2:security/py-google-auth@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}google-cloud-storage>=0:www/py-google-cloud-storage@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}requests>=0:www/py-requests@${PY_FLAVOR} + +USES= python +USE_PYTHON= autoplist concurrent pep517 + +NO_ARCH= yes + +OPTIONS_DEFINE= GCSFUSE CRC +GCSFUSE_DESC= Fuse support +CRC_DESC= CRC support + +GCSFUSE_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}crcmod>=0:devel/py-crcmod@${PY_FLAVOR} +CRC_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}fusepy>=0:filesystems/py-fusepy@${PY_FLAVOR} + +.include <bsd.port.mk> diff --git a/filesystems/py-gcsfs/distinfo b/filesystems/py-gcsfs/distinfo new file mode 100644 index 000000000000..e0a97da9c6a0 --- /dev/null +++ b/filesystems/py-gcsfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1729653350 +SHA256 (gcsfs-2024.10.0.tar.gz) = 5df54cfe568e8fdeea5aafa7fed695cdc69a9a674e991ca8c1ce634f5df1d314 +SIZE (gcsfs-2024.10.0.tar.gz) = 79588 diff --git a/filesystems/py-gcsfs/pkg-descr b/filesystems/py-gcsfs/pkg-descr new file mode 100644 index 000000000000..781572993acc --- /dev/null +++ b/filesystems/py-gcsfs/pkg-descr @@ -0,0 +1 @@ +Pythonic file-system for Google Cloud Storage diff --git a/filesystems/py-libzfs/Makefile b/filesystems/py-libzfs/Makefile new file mode 100644 index 000000000000..c4bc9fd0007b --- /dev/null +++ b/filesystems/py-libzfs/Makefile @@ -0,0 +1,35 @@ +PORTNAME= libzfs +PORTVERSION= 1.1.2023020700 +CATEGORIES= filesystems devel python +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= freqlabs@FreeBSD.org +COMMENT= Python libzfs bindings +WWW= https://github.com/freenas/py-libzfs + +LICENSE= BSD2CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE + +USE_GITHUB= yes +GH_ACCOUNT= truenas +GH_PROJECT= py-libzfs +GH_TAGNAME= c1bd4a0 + +HAS_CONFIGURE= yes +USES= compiler:c11 python +USE_PYTHON= autoplist distutils cython + +CONFIGURE_ENV= freebsd_src=${SRC_BASE} +MAKE_ENV= freebsd_src=${SRC_BASE} + +.include <bsd.port.options.mk> + +.if ${OPSYS} == FreeBSD && (${OSVERSION} >= 1500018 || (${OSVERSION} >= 1401000 && ${OSVERSION} < 1500000)) +EXTRA_PATCHES+= ${FILESDIR}/extra-zpool-add.patch +.endif + +.if !exists(${SRC_BASE}/sys/Makefile) +IGNORE= requires kernel source files in ${SRC_BASE} +.endif + +.include <bsd.port.mk> diff --git a/filesystems/py-libzfs/distinfo b/filesystems/py-libzfs/distinfo new file mode 100644 index 000000000000..3ae8f5fa9a4d --- /dev/null +++ b/filesystems/py-libzfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1675808317 +SHA256 (truenas-py-libzfs-1.1.2023020700-c1bd4a0_GH0.tar.gz) = 23b2d6e1b6ed78be2d12068f9b1b0b01270afaaf0f017817a5fb109d358aa818 +SIZE (truenas-py-libzfs-1.1.2023020700-c1bd4a0_GH0.tar.gz) = 99656 diff --git a/filesystems/py-libzfs/files/extra-zpool-add.patch b/filesystems/py-libzfs/files/extra-zpool-add.patch new file mode 100644 index 000000000000..7d0688ca4f13 --- /dev/null +++ b/filesystems/py-libzfs/files/extra-zpool-add.patch @@ -0,0 +1,44 @@ +From b5ffe1f1d6097df6e2f5cc6dd3c968872ec60804 Mon Sep 17 00:00:00 2001 +From: Ameer Hamza <ahamza@ixsystems.com> +Date: Tue, 2 Apr 2024 23:56:55 +0500 +Subject: [PATCH] zpool_add API changed in upstream zfs master + +--- + libzfs.pyx | 5 +++-- + pxd/libzfs.pxd | 2 +- + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/libzfs.pyx b/libzfs.pyx +index a59fca8..71efa96 100644 +--- a/libzfs.pyx ++++ ./libzfs.pyx +@@ -3175,13 +3175,14 @@ cdef class ZFSPool(object): + hopts = self.root.generate_history_opts(fsopts, '-o') + self.root.write_history('zfs create', hopts, name) + +- def attach_vdevs(self, vdevs_tree): ++ def attach_vdevs(self, vdevs_tree, check_ashift=0): + cdef const char *command = 'zpool add' + cdef ZFSVdev vd = self.root.make_vdev_tree(vdevs_tree, {'ashift': self.properties['ashift'].parsed}) + cdef int ret ++ cdef boolean_t ashift = check_ashift + + with nogil: +- ret = libzfs.zpool_add(self.handle, vd.nvlist.handle) ++ ret = libzfs.zpool_add(self.handle, vd.nvlist.handle, ashift) + + if ret != 0: + raise self.root.get_error() +diff --git a/pxd/libzfs.pxd b/pxd/libzfs.pxd +index 3ab9374..6afa275 100644 +--- a/pxd/libzfs.pxd ++++ ./pxd/libzfs.pxd +@@ -228,7 +228,7 @@ cdef extern from "libzfs.h" nogil: + extern int zpool_create(libzfs_handle_t *, const char *, nvpair.nvlist_t *, + nvpair.nvlist_t *, nvpair.nvlist_t *) + extern int zpool_destroy(zpool_handle_t *, const char *) +- extern int zpool_add(zpool_handle_t *, nvpair.nvlist_t *) ++ extern int zpool_add(zpool_handle_t *, nvpair.nvlist_t *, boolean_t) + + IF HAVE_ZPOOL_SCAN == 3: + extern int zpool_scan(zpool_handle_t *, zfs.pool_scan_func_t, zfs.pool_scrub_cmd_t) diff --git a/filesystems/py-libzfs/pkg-descr b/filesystems/py-libzfs/pkg-descr new file mode 100644 index 000000000000..51a23404441a --- /dev/null +++ b/filesystems/py-libzfs/pkg-descr @@ -0,0 +1 @@ +Python libzfs bindings using cython. diff --git a/filesystems/py-llfuse/Makefile b/filesystems/py-llfuse/Makefile new file mode 100644 index 000000000000..2b69e3173c74 --- /dev/null +++ b/filesystems/py-llfuse/Makefile @@ -0,0 +1,26 @@ +PORTNAME= llfuse +PORTVERSION= 1.5.1 +CATEGORIES= filesystems devel python +MASTER_SITES= PYPI \ + https://github.com/python-llfuse/python-llfuse/releases/download/release-${PORTVERSION}/ +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= sunpoet@FreeBSD.org +COMMENT= Python bindings for the low-level FUSE API +WWW= https://github.com/python-llfuse/python-llfuse + +LICENSE= LGPL20+ +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>=0:devel/py-setuptools@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR} + +USES= compiler:c++11-lang fuse pkgconfig python +USE_PYTHON= autoplist concurrent cython pep517 pytest + +TEST_ENV= PYTHONPATH=${STAGEDIR}${PYTHON_SITELIBDIR} + +post-install: + ${FIND} ${STAGEDIR}${PYTHON_SITELIBDIR} -name '*.so' -exec ${STRIP_CMD} {} + + +.include <bsd.port.mk> diff --git a/filesystems/py-llfuse/distinfo b/filesystems/py-llfuse/distinfo new file mode 100644 index 000000000000..30da47d20723 --- /dev/null +++ b/filesystems/py-llfuse/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1725559735 +SHA256 (llfuse-1.5.1.tar.gz) = 7c9be52289cf647e3d735104531cc23a1a89fd1be3a621613a1cc0991f1b2699 +SIZE (llfuse-1.5.1.tar.gz) = 959557 diff --git a/filesystems/py-llfuse/pkg-descr b/filesystems/py-llfuse/pkg-descr new file mode 100644 index 000000000000..b6da83cc7e55 --- /dev/null +++ b/filesystems/py-llfuse/pkg-descr @@ -0,0 +1,3 @@ +Python-LLFUSE is a set of Python bindings for the low level FUSE API. It +requires at least FUSE 2.8.0 and supports both Python 2.x and 3.x. It runs +under Linux, OS-X, FreeBSD and NetBSD. diff --git a/filesystems/py-prometheus-zfs/Makefile b/filesystems/py-prometheus-zfs/Makefile new file mode 100644 index 000000000000..b25e5527cb09 --- /dev/null +++ b/filesystems/py-prometheus-zfs/Makefile @@ -0,0 +1,33 @@ +PORTNAME= prometheus-zfs +DISTVERSIONPREFIX= v +DISTVERSION= 1.0.4 +CATEGORIES= filesystems sysutils python +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= 0mp@FreeBSD.org +COMMENT= Prometheus exporter for ZFS statistics using py-libzfs +WWW= https://github.com/matusnovak/prometheus-zfs + +LICENSE= UNLICENSE +LICENSE_FILE= ${WRKSRC}/LICENSE + +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}libzfs>=0:filesystems/py-libzfs@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}prometheus-client>=0:net-mgmt/py-prometheus-client@${PY_FLAVOR} + +USES= python shebangfix +USE_GITHUB= yes +GH_ACCOUNT= matusnovak +USE_RC_SUBR= zfsprom +SHEBANG_FILES= zfsprom.py + +NO_ARCH= yes +NO_BUILD= yes + +SUB_LIST= PYTHON_CMD=${PYTHON_CMD} + +PLIST_FILES= sbin/zfsprom.py + +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/zfsprom.py ${STAGEDIR}${PREFIX}/sbin + +.include <bsd.port.mk> diff --git a/filesystems/py-prometheus-zfs/distinfo b/filesystems/py-prometheus-zfs/distinfo new file mode 100644 index 000000000000..89dbf2a5a11c --- /dev/null +++ b/filesystems/py-prometheus-zfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1642968848 +SHA256 (matusnovak-prometheus-zfs-v1.0.4_GH0.tar.gz) = aa005e5df3b8dfd3e4944a09cf7dbb21fe4150653a5e6b95681283ec86e6df25 +SIZE (matusnovak-prometheus-zfs-v1.0.4_GH0.tar.gz) = 3933 diff --git a/filesystems/py-prometheus-zfs/files/zfsprom.in b/filesystems/py-prometheus-zfs/files/zfsprom.in new file mode 100644 index 000000000000..f4e3fbfc2e49 --- /dev/null +++ b/filesystems/py-prometheus-zfs/files/zfsprom.in @@ -0,0 +1,32 @@ +#! /bin/sh - +# +# SPDX-License-Identifier: (BSD-2-Clause or Unlicense) +# +# Copyright (c) 2021 Mateusz Piotrowski <0mp@FreeBSD.org> +# + +# Add the following lines to rc.conf(5) to configure the zfsprom service: +# +# zfsprom_enable (bool): Set to "YES" to enable the service. +# Default: "NO". + +# PROVIDE: zfsprom +# REQUIRE: DAEMON +# KEYWORD: shutdown + +. /etc/rc.subr + +name="zfsprom" +rcvar="zfsprom_enable" + +load_rc_config "${name}" + +: "${zfsprom_enable:=NO}" + +pidfile="/var/run/${name}.pid" +procname="%%PREFIX%%/sbin/zfsprom.py" +command_interpreter="%%PYTHON_CMD%%" +command="/usr/sbin/daemon" +command_args="-o /var/log/${name}.log -p ${pidfile} -- ${procname}" + +run_rc_command "$1" diff --git a/filesystems/py-prometheus-zfs/pkg-descr b/filesystems/py-prometheus-zfs/pkg-descr new file mode 100644 index 000000000000..a75059149294 --- /dev/null +++ b/filesystems/py-prometheus-zfs/pkg-descr @@ -0,0 +1,3 @@ +This is a simple exporter for the Prometheus metrics for ZFS using +py-libzfs. It comes with a zfsprom service that can be run in the +background as an HTTP server. diff --git a/filesystems/py-pyfakefs/Makefile b/filesystems/py-pyfakefs/Makefile new file mode 100644 index 000000000000..5fd0516b932c --- /dev/null +++ b/filesystems/py-pyfakefs/Makefile @@ -0,0 +1,24 @@ +PORTNAME= pyfakefs +PORTVERSION= 5.7.1 +CATEGORIES= filesystems devel python +MASTER_SITES= PYPI +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= sunpoet@FreeBSD.org +COMMENT= Implement a fake file system that mocks the Python file system modules +WWW= https://pytest-pyfakefs.readthedocs.io/en/stable/ \ + https://github.com/jmcgeheeiv/pyfakefs + +LICENSE= APACHE20 +LICENSE_FILE= ${WRKSRC}/COPYING + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>=0:devel/py-setuptools@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR} +TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}undefined>=0:devel/py-undefined@${PY_FLAVOR} + +USES= python +USE_PYTHON= autoplist concurrent pep517 pytest + +NO_ARCH= yes + +.include <bsd.port.mk> diff --git a/filesystems/py-pyfakefs/distinfo b/filesystems/py-pyfakefs/distinfo new file mode 100644 index 000000000000..d76b6044cd26 --- /dev/null +++ b/filesystems/py-pyfakefs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1729509154 +SHA256 (pyfakefs-5.7.1.tar.gz) = 24774c632f3b67ea26fd56b08115ba7c339d5cd65655410bca8572d73a1ae9a4 +SIZE (pyfakefs-5.7.1.tar.gz) = 211163 diff --git a/filesystems/py-pyfakefs/pkg-descr b/filesystems/py-pyfakefs/pkg-descr new file mode 100644 index 000000000000..4e82fbb5cd45 --- /dev/null +++ b/filesystems/py-pyfakefs/pkg-descr @@ -0,0 +1,13 @@ +pyfakefs implements a fake file system that mocks the Python file system +modules. Using pyfakefs, your tests operate on a fake file system in memory +without touching the real disk. The software under test requires no modification +to work with pyfakefs. + +Pyfakefs creates a new empty in-memory file system at each test start, which +replaces the real filesystem during the test. Think of pyfakefs as making a +per-test temporary directory, except for an entire file system. + +There are several means to achieve this: by using the fs fixture if running +pytest, by using fake_filesystem_unittest.TestCase as a base class if using +unittest, by using a fake_filesystem_unittest.Patcher instance as a context +manager, or by using the patchfs decorator. diff --git a/filesystems/py-s3fs/Makefile b/filesystems/py-s3fs/Makefile new file mode 100644 index 000000000000..055547d3f385 --- /dev/null +++ b/filesystems/py-s3fs/Makefile @@ -0,0 +1,33 @@ +PORTNAME= s3fs +PORTVERSION= 2024.10.0 +CATEGORIES= filesystems devel python +MASTER_SITES= PYPI +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= sunpoet@FreeBSD.org +COMMENT= Convenient Filesystem interface over S3 +WWW= https://s3fs.readthedocs.io/en/latest/ \ + https://github.com/fsspec/s3fs + +LICENSE= BSD3CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE.txt + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>=0:devel/py-setuptools@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR} +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}aiobotocore>=2.5.4<3.0.0:devel/py-aiobotocore@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}aiohttp>=0:www/py-aiohttp@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}fsspec>=${PORTVERSION}<${PORTVERSION}_99:filesystems/py-fsspec@${PY_FLAVOR} + +USES= python +USE_PYTHON= autoplist concurrent pep517 + +NO_ARCH= yes + +OPTIONS_DEFINE= AWSCLI BOTO3 +AWSCLI_DESC= Use awscli +BOTO3_DESC= Use boto3 + +AWSCLI_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}awscli>=1.29.17:devel/py-awscli@${PY_FLAVOR} +BOTO3_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}boto3>=1.28.17:www/py-boto3@${PY_FLAVOR} + +.include <bsd.port.mk> diff --git a/filesystems/py-s3fs/distinfo b/filesystems/py-s3fs/distinfo new file mode 100644 index 000000000000..e12bca6c5c7a --- /dev/null +++ b/filesystems/py-s3fs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1729653364 +SHA256 (s3fs-2024.10.0.tar.gz) = 58b8c3650f8b99dbedf361543da3533aac8707035a104db5d80b094617ad4a3f +SIZE (s3fs-2024.10.0.tar.gz) = 75916 diff --git a/filesystems/py-s3fs/pkg-descr b/filesystems/py-s3fs/pkg-descr new file mode 100644 index 000000000000..ba62075e68c6 --- /dev/null +++ b/filesystems/py-s3fs/pkg-descr @@ -0,0 +1,2 @@ +S3FS builds on aiobotocore to provide a convenient Python filesystem interface +for S3. diff --git a/filesystems/py-zfs-autobackup/Makefile b/filesystems/py-zfs-autobackup/Makefile new file mode 100644 index 000000000000..5c4b9f55ec28 --- /dev/null +++ b/filesystems/py-zfs-autobackup/Makefile @@ -0,0 +1,24 @@ +PORTNAME= zfs-autobackup +DISTVERSIONPREFIX= v +DISTVERSION= 3.2.2 +CATEGORIES= filesystems sysutils python +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= skozlov@FreeBSD.org +COMMENT= Periodicly backup zfs filesystems to other locations +WWW= https://github.com/psy0rz/zfs_autobackup + +LICENSE= GPLv3 + +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}colorama>0:devel/py-colorama@${PY_FLAVOR} + +USES= python +USE_PYTHON= autoplist distutils + +USE_GITHUB= yes +GH_ACCOUNT= psy0rz +GH_PROJECT= zfs_autobackup + +NO_ARCH= yes + +.include <bsd.port.mk> diff --git a/filesystems/py-zfs-autobackup/distinfo b/filesystems/py-zfs-autobackup/distinfo new file mode 100644 index 000000000000..bc8df6ea038e --- /dev/null +++ b/filesystems/py-zfs-autobackup/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1694871100 +SHA256 (psy0rz-zfs_autobackup-v3.2.2_GH0.tar.gz) = 736019c61a7829c3f60124e9213e51099cffad5a2d10826e3008c8f3b788b88e +SIZE (psy0rz-zfs_autobackup-v3.2.2_GH0.tar.gz) = 115708 diff --git a/filesystems/py-zfs-autobackup/pkg-descr b/filesystems/py-zfs-autobackup/pkg-descr new file mode 100644 index 000000000000..a76d09ca93f4 --- /dev/null +++ b/filesystems/py-zfs-autobackup/pkg-descr @@ -0,0 +1,20 @@ +This is a tool written to make replicating ZFS datasets easy and reliable. + +You can either use it as a backup tool, replication tool or snapshot tool. +You can select what to backup by setting a custom ZFS property. This allows you +to set and forget: Configure it so it backups your entire pool, and you never +have to worry about backupping again. Even new datasets you create later will be +backupped. Other settings are just specified on the commandline. This also makes +it easier to setup and test zfs-autobackup and helps you fix all the issues you +might encounter. When you're done you can just copy/paste your command to a cron +or script. +Since its using ZFS commands, you can see what its actually doing by specifying +--debug. This also helps a lot if you run into some strange problem or error. +You can just copy-paste the command that fails and play around with it on the +commandline. (also something I missed in other tools) +An important feature thats missing from other tools is a reliable --test option: +This allows you to see what zfs-autobackup will do and tune your parameters. It +will do everything, except make changes to your zfs datasets. Another nice +thing is progress reporting: Its very useful with HUGE datasets, +when you want to know how many hours/days it will take. zfs-autobackup tries to +be the easiest to use backup tool for zfs. diff --git a/filesystems/rar2fs/Makefile b/filesystems/rar2fs/Makefile new file mode 100644 index 000000000000..14727f144467 --- /dev/null +++ b/filesystems/rar2fs/Makefile @@ -0,0 +1,37 @@ +PORTNAME= rar2fs +DISTVERSION= 1.29.6 +DISTVERSIONPREFIX= v +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- + +MAINTAINER= n_carlsson@outlook.com +COMMENT= Mount RAR archives as file system +WWW= https://hasse69.github.io/rar2fs/ + +LICENSE= GPLv3+ +LICENSE_FILE= ${WRKSRC}/COPYING + +BUILD_DEPENDS= ${NONEXISTENT}:${LIBUNRAR_PORT}:patch +LIB_DEPENDS= libunrar.so:${LIBUNRAR_PORT} + +USES= autoreconf compiler:c11 gmake fuse +USE_GITHUB= yes +GH_ACCOUNT= hasse69 + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_ARGS= --disable-static-unrar \ + --with-fuse-lib=${LOCALBASE}/lib \ + --with-fuse=${LOCALBASE}/include/fuse \ + --with-unrar=`${MAKE} -C ${PORTSDIR}/${LIBUNRAR_PORT} -VWRKSRC` \ + --with-unrar-lib=${LOCALBASE}/lib +CONFIGURE_ENV= LIBUNRAR_PKG=${LIBUNRAR_PKG} + +PLIST_FILES= bin/${PORTNAME} \ + bin/mkr2i \ + share/man/man1/rar2fs.1.gz + +LIBUNRAR_PORT= archivers/libunrar +LIBUNRAR_PKG= ${LIBUNRAR_PORT:S|archivers/||} + +.include <bsd.port.mk> diff --git a/filesystems/rar2fs/distinfo b/filesystems/rar2fs/distinfo new file mode 100644 index 000000000000..abf89d3cdeef --- /dev/null +++ b/filesystems/rar2fs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1718328615 +SHA256 (hasse69-rar2fs-v1.29.6_GH0.tar.gz) = c9c2381dea863bccf4e6ebfe1b4c9934e506644f321b1f664524cf467fa5e769 +SIZE (hasse69-rar2fs-v1.29.6_GH0.tar.gz) = 126654 diff --git a/filesystems/rar2fs/files/patch-configure.ac b/filesystems/rar2fs/files/patch-configure.ac new file mode 100644 index 000000000000..02ff1d32cef8 --- /dev/null +++ b/filesystems/rar2fs/files/patch-configure.ac @@ -0,0 +1,24 @@ +--- configure.ac.orig 2017-01-05 12:03:06 UTC ++++ configure.ac +@@ -434,6 +434,21 @@ if test x"$UNRAR_LIBS" != x; then + fi + ######################################################## + ++######################################################## ++# Check if we need to set -DOPENSSL_AES ++if test x"$UNRAR_LIBS" != x; then ++ AC_CHECK_TOOL(PKG_STATIC,pkg-static) ++ AC_MSG_CHECKING([if unrar library needs -DOPENSSL_AES]) ++ openssl_aes=`$PKG_STATIC query '%Ok %Ov' $LIBUNRAR_PKG | grep '^OPENSSL_AES' | cut -f 2 -d ' '` ++ if test x"$openssl_aes" != x"on"; then ++ AC_MSG_RESULT([no]) ++ else ++ AC_MSG_RESULT([yes]) ++ UNRAR_CXXFLAGS="$UNRAR_CXXFLAGS -DOPENSSL_AES" ++ fi ++fi ++######################################################## ++ + AM_ICONV + + AC_MSG_CHECKING(for commit hash in git repo) diff --git a/filesystems/rar2fs/files/patch-src_dllext.cpp b/filesystems/rar2fs/files/patch-src_dllext.cpp new file mode 100644 index 000000000000..e3a8682f763a --- /dev/null +++ b/filesystems/rar2fs/files/patch-src_dllext.cpp @@ -0,0 +1,199 @@ +Add compatibility with libunrar >= 7. Based upon upstream commits: + +https://github.com/hasse69/rar2fs/commit/d1d31f416269f4abb1262850b1fe645713a14fc4 +https://github.com/hasse69/rar2fs/commit/89d144d17bb23bd2ff143a3aac3593cbfc2dd3c1 + +--- src/dllext.cpp.orig 2021-05-02 06:17:04 UTC ++++ src/dllext.cpp +@@ -169,13 +169,21 @@ int PASCAL RARListArchiveEx(HANDLE hArcData, RARArchiv + } + else + { ++#if RARVER_MAJOR >= 7 ++ wcscpy(N->LinkTargetW,Arc.FileHead.RedirName.c_str()); ++#else + wcscpy(N->LinkTargetW,Arc.FileHead.RedirName); ++#endif + N->LinkTargetFlags |= LINK_T_UNICODE; // Make sure UNICODE is set + } + } + else if (Arc.FileHead.RedirType == FSREDIR_FILECOPY) + { ++#if RARVER_MAJOR >= 7 ++ wcscpy(N->LinkTargetW,Arc.FileHead.RedirName.c_str()); ++#else + wcscpy(N->LinkTargetW,Arc.FileHead.RedirName); ++#endif + N->LinkTargetFlags |= LINK_T_FILECOPY; + } + } +@@ -208,6 +216,13 @@ void PASCAL RARNextVolumeName(char *arch, bool oldstyl + { + #if RARVER_MAJOR < 5 + NextVolumeName(arch, NULL, 0, oldstylevolume); ++#elif RARVER_MAJOR >= 7 ++ wstring ArchiveW; ++ size_t len=strlen(arch); ++ ArchiveW.assign(arch,arch+len); ++ NextVolumeName(ArchiveW,oldstylevolume); ++ string NextArchive(ArchiveW.begin(),ArchiveW.end()); ++ strcpy(arch,NextArchive.c_str()); + #else + wchar NextName[NM]; + CharToWide(arch, NextName, ASIZE(NextName)); +@@ -221,6 +236,14 @@ void PASCAL RARVolNameToFirstName(char *arch, bool old + { + #if RARVER_MAJOR < 5 + VolNameToFirstName(arch, arch, !oldstylevolume); ++#elif RARVER_MAJOR >=7 ++ wstring ArcName; ++ size_t len=strlen(arch); ++ ArcName.assign(arch,arch+len); ++ VolNameToFirstName(ArcName, ArcName, !oldstylevolume); ++ string FirstName(ArcName.begin(),ArcName.end()); ++ strcpy(arch,FirstName.c_str()); ++ return; + #else + wchar ArcName[NM]; + CharToWide(arch, ArcName, ASIZE(ArcName)); +@@ -239,7 +262,6 @@ void PASCAL RARGetFileInfo(HANDLE hArcData, const char + void PASCAL RARGetFileInfo(HANDLE hArcData, const char *FileName, struct RARWcb *wcb) + { + #if RARVER_MAJOR > 4 +- char FileNameUtf[NM]; + DataSet *Data = (DataSet *)hArcData; + Archive& Arc = Data->Arc; + struct RARHeaderDataEx h; +@@ -248,8 +270,17 @@ void PASCAL RARGetFileInfo(HANDLE hArcData, const char + wcb->bytes = 0; + while (!RARReadHeaderEx(hArcData, &h)) + { ++#if RARVER_MAJOR >= 7 ++ size_t FileNameLen=Arc.FileHead.FileName.size()*sizeof(char32_t); ++ string FileNameUtf(FileNameLen,'\0'); ++ WideToUtf(Arc.FileHead.FileName.c_str(),&FileNameUtf[0],FileNameLen); ++ FileNameUtf.resize(strlen(FileNameUtf.c_str())); ++ if (!strcmp(FileNameUtf.c_str(), FileName)) ++#else ++ char FileNameUtf[NM]; + WideToUtf(Arc.FileHead.FileName,FileNameUtf,ASIZE(FileNameUtf)); + if (!strcmp(FileNameUtf, FileName)) ++#endif + { + wcb->bytes = ListFileHeader(wcb->data, Arc); + return; +@@ -368,7 +399,11 @@ static size_t ListFileHeader(wchar *wcs,Archive &Arc) + static size_t ListFileHeader(wchar *wcs,Archive &Arc) + { + FileHeader &hd=Arc.FileHead; ++#if RARVER_MAJOR >= 7 ++ wstring *Name=&hd.FileName; ++#else + wchar *Name=hd.FileName; ++#endif + RARFORMAT Format=Arc.Format; + + void *wcs_start = (void *)wcs; +@@ -433,25 +468,45 @@ static size_t ListFileHeader(wchar *wcs,Archive &Arc) + { + if (Format==RARFMT15) + { ++#if RARVER_MAJOR >= 7 ++ string LinkTargetA; ++#else + char LinkTargetA[NM]; ++#endif + if (Arc.FileHead.Encrypted) + { + // Link data are encrypted. We would need to ask for password + // and initialize decryption routine to display the link target. ++#if RARVER_MAJOR >= 7 ++ LinkTargetA="*<-?->"; ++#else + strncpyz(LinkTargetA,"*<-?->",ASIZE(LinkTargetA)); ++#endif + } + else + { + int DataSize=(int)Min((size_t)hd.PackSize,ASIZE(LinkTargetA)-1); ++#if RARVER_MAJOR >= 7 ++ Arc.Read(&LinkTargetA,DataSize); ++#else + Arc.Read(LinkTargetA,DataSize); ++#endif + LinkTargetA[DataSize > 0 ? DataSize : 0] = 0; + } ++#if RARVER_MAJOR >= 7 ++ wstring LinkTarget(LinkTargetA.begin(),LinkTargetA.end()); ++ wcs += msprintf(wcs, L"\n%12ls: %ls",St(MListTarget),LinkTarget.c_str()); ++ } ++ else ++ wcs += msprintf(wcs, L"\n%12ls: %ls",St(MListTarget),hd.RedirName.c_str()); ++#else + wchar LinkTarget[NM]; + CharToWide(LinkTargetA,LinkTarget,ASIZE(LinkTarget)); + wcs += msprintf(wcs, L"\n%12ls: %ls",St(MListTarget),LinkTarget); + } + else + wcs += msprintf(wcs, L"\n%12ls: %ls",St(MListTarget),hd.RedirName); ++#endif + } + + if (!hd.Dir) +@@ -487,11 +542,20 @@ static size_t ListFileHeader(wchar *wcs,Archive &Arc) + hd.FileHash.CRC32); + if (hd.FileHash.Type==HASH_BLAKE2) + { ++#if RARVER_MAJOR >= 7 ++ wstring BlakeStr; ++ BinToHex(hd.FileHash.Digest,BLAKE2_DIGEST_SIZE,BlakeStr); ++#else + wchar BlakeStr[BLAKE2_DIGEST_SIZE*2+1]; + BinToHex(hd.FileHash.Digest,BLAKE2_DIGEST_SIZE,NULL,BlakeStr,ASIZE(BlakeStr)); ++#endif + wcs += msprintf(wcs, L"\n%12ls: %ls", + hd.UseHashKey ? L"BLAKE2 MAC":hd.SplitAfter ? L"Pack-BLAKE2":L"BLAKE2", ++#if RARVER_MAJOR >= 7 ++ BlakeStr.c_str()); ++#else + BlakeStr); ++#endif + } + + const wchar *HostOS=L""; +@@ -529,7 +593,11 @@ static size_t ListFileHeader(wchar *wcs,Archive &Arc) + + if (hd.Version) + { ++#if RARVER_MAJOR >= 7 ++ uint Version=ParseVersionFileName(*Name,false); ++#else + uint Version=ParseVersionFileName(Name,false); ++#endif + if (Version!=0) + wcs += msprintf(wcs, L"\n%12ls: %u",St(MListFileVer),Version); + } +@@ -538,9 +606,17 @@ static size_t ListFileHeader(wchar *wcs,Archive &Arc) + { + wcs += msprintf(wcs, L"\n%12ls: ",L"Unix owner"); + if (*hd.UnixOwnerName!=0) ++#if RARVER_MAJOR >= 7 ++ wcs += msprintf(wcs, L"%ls:",GetWide(hd.UnixOwnerName).c_str()); ++#else + wcs += msprintf(wcs, L"%ls:",GetWide(hd.UnixOwnerName)); ++#endif + if (*hd.UnixGroupName!=0) ++#if RARVER_MAJOR >= 7 ++ wcs += msprintf(wcs, L"%ls",GetWide(hd.UnixGroupName).c_str()); ++#else + wcs += msprintf(wcs, L"%ls",GetWide(hd.UnixGroupName)); ++#endif + if ((*hd.UnixOwnerName!=0 || *hd.UnixGroupName!=0) && (hd.UnixOwnerNumeric || hd.UnixGroupNumeric)) + wcs += msprintf(wcs, L" "); + if (hd.UnixOwnerNumeric) +@@ -555,5 +631,3 @@ static size_t ListFileHeader(wchar *wcs,Archive &Arc) + } + + #endif +- +- diff --git a/filesystems/rar2fs/pkg-descr b/filesystems/rar2fs/pkg-descr new file mode 100644 index 000000000000..8bb098de582c --- /dev/null +++ b/filesystems/rar2fs/pkg-descr @@ -0,0 +1,7 @@ +rar2fs is a FUSE based file system that can mount a source RAR +archive/volume or a directory containing any number of RAR +archives and access (read only) the contents as plain files/directories. +Other files located in the source directory are handled transparently. +Both compressed and non-compressed archives/volumes are supported but +full media seek support (aka. indexing) is only available for +non-compressed plaintext archives. diff --git a/filesystems/rubygem-aws-sdk-efs/Makefile b/filesystems/rubygem-aws-sdk-efs/Makefile new file mode 100644 index 000000000000..f362964453ef --- /dev/null +++ b/filesystems/rubygem-aws-sdk-efs/Makefile @@ -0,0 +1,20 @@ +PORTNAME= aws-sdk-efs +PORTVERSION= 1.86.0 +CATEGORIES= filesystems devel rubygems +MASTER_SITES= RG + +MAINTAINER= sunpoet@FreeBSD.org +COMMENT= Official AWS Ruby gem for Amazon Elastic File System (EFS) +WWW= https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-efs + +LICENSE= APACHE20 +LICENSE_FILE= ${WRKSRC}/LICENSE.txt + +RUN_DEPENDS= rubygem-aws-sdk-core>=3.210.0<4:devel/rubygem-aws-sdk-core \ + rubygem-aws-sigv4>=1.5<2:devel/rubygem-aws-sigv4 + +USES= gem + +NO_ARCH= yes + +.include <bsd.port.mk> diff --git a/filesystems/rubygem-aws-sdk-efs/distinfo b/filesystems/rubygem-aws-sdk-efs/distinfo new file mode 100644 index 000000000000..2b61149e6faa --- /dev/null +++ b/filesystems/rubygem-aws-sdk-efs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1729856552 +SHA256 (rubygem/aws-sdk-efs-1.86.0.gem) = f62c273472bf5010a6e71dc87fd0cc343fc7e52ad4bfe774ee01d34ad1ea41fa +SIZE (rubygem/aws-sdk-efs-1.86.0.gem) = 65024 diff --git a/filesystems/rubygem-aws-sdk-efs/pkg-descr b/filesystems/rubygem-aws-sdk-efs/pkg-descr new file mode 100644 index 000000000000..6bee43ab7c62 --- /dev/null +++ b/filesystems/rubygem-aws-sdk-efs/pkg-descr @@ -0,0 +1 @@ +Official AWS Ruby gem for Amazon Elastic File System (EFS). diff --git a/filesystems/rubygem-winrm-fs/Makefile b/filesystems/rubygem-winrm-fs/Makefile new file mode 100644 index 000000000000..531f6a52c7c4 --- /dev/null +++ b/filesystems/rubygem-winrm-fs/Makefile @@ -0,0 +1,24 @@ +PORTNAME= winrm-fs +PORTVERSION= 1.3.5 +CATEGORIES= filesystems sysutils rubygems +MASTER_SITES= RG + +MAINTAINER= ruby@FreeBSD.org +COMMENT= Library for file system operations via WinRM +WWW= https://github.com/WinRb/winrm-fs + +LICENSE= APACHE20 +LICENSE_FILE= ${WRKSRC}/LICENSE + +RUN_DEPENDS= rubygem-erubi>=1.8<2:www/rubygem-erubi \ + rubygem-logging>=1.6.1<3.0:devel/rubygem-logging \ + rubygem-rubyzip>=2.0<3:archivers/rubygem-rubyzip \ + rubygem-winrm>=2.0<3:sysutils/rubygem-winrm + +USES= gem + +NO_ARCH= yes + +PLIST_FILES= bin/rwinrmcp + +.include <bsd.port.mk> diff --git a/filesystems/rubygem-winrm-fs/distinfo b/filesystems/rubygem-winrm-fs/distinfo new file mode 100644 index 000000000000..cd58beb1948e --- /dev/null +++ b/filesystems/rubygem-winrm-fs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1626714674 +SHA256 (rubygem/winrm-fs-1.3.5.gem) = 0d2cdd9e1fb6fc8d01f56a32dce41d98ae6eefb481937ed0e058faa0cd0c693d +SIZE (rubygem/winrm-fs-1.3.5.gem) = 21504 diff --git a/filesystems/rubygem-winrm-fs/pkg-descr b/filesystems/rubygem-winrm-fs/pkg-descr new file mode 100644 index 000000000000..68293f4f359f --- /dev/null +++ b/filesystems/rubygem-winrm-fs/pkg-descr @@ -0,0 +1 @@ +Ruby library for file system operations via Windows Remote Management diff --git a/filesystems/s3backer/Makefile b/filesystems/s3backer/Makefile new file mode 100644 index 000000000000..725ee9d03d17 --- /dev/null +++ b/filesystems/s3backer/Makefile @@ -0,0 +1,26 @@ +PORTNAME= s3backer +DISTVERSION= 1.5.4 +PORTREVISION= 1 +CATEGORIES= filesystems +MASTER_SITES= https://s3.amazonaws.com/archie-public/s3backer/ +PKGNAMEPREFIX= fusefs- + +MAINTAINER= bsdports@staktrace.com +COMMENT= FUSE filesystem that uses Amazon S3 as a backing store +WWW= https://github.com/archiecobbs/s3backer + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libcurl.so:ftp/curl \ + libexpat.so:textproc/expat2 + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +# Need to have curl/curl.h on the include path. Is there a better +# way to do this than sending CPPFLAGS to configure? +CONFIGURE_ARGS= CPPFLAGS="-I${LOCALBASE}/include" + +USES= fuse pkgconfig ssl + +.include <bsd.port.mk> diff --git a/filesystems/s3backer/distinfo b/filesystems/s3backer/distinfo new file mode 100644 index 000000000000..5962e7dd3853 --- /dev/null +++ b/filesystems/s3backer/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1584785989 +SHA256 (s3backer-1.5.4.tar.gz) = 7e73bb8378a4ccf7b1904a078fbc4731b07138951cbe1c20ce7aa0eb3e8da0d0 +SIZE (s3backer-1.5.4.tar.gz) = 201362 diff --git a/filesystems/s3backer/pkg-descr b/filesystems/s3backer/pkg-descr new file mode 100644 index 000000000000..bb97b04b3ce2 --- /dev/null +++ b/filesystems/s3backer/pkg-descr @@ -0,0 +1,22 @@ +s3backer is a filesystem that contains a single file backed by the +Amazon Simple Storage Service (Amazon S3). As a filesystem, it is +very simple: it provides a single normal file having a fixed size. +Underneath, the file is divided up into blocks, and the content of +each block is stored in a unique Amazon S3 object. In other words, +what s3backer provides is really more like an S3-backed virtual +hard disk device, rather than a filesystem. + +In typical usage, a normal filesystem is mounted on top of the file +exported by the s3backer filesystem using a loopback mount (or disk +image mount on Mac OS X). + +By not attempting to implement a complete filesystem, which is a +complex undertaking and difficult to get right, s3backer can stay +very lightweight and simple. Only three HTTP operations are used: +GET, PUT, and DELETE. All of the experience and knowledge about +how to properly implement filesystems that already exists can be +reused. + +By utilizing existing filesystems atop s3backer, you get full UNIX +filesystem semantics. Subtle bugs or missing functionality relating +to hard links, extended attributes, POSIX locking, etc. are avoided. diff --git a/filesystems/s3backer/pkg-plist b/filesystems/s3backer/pkg-plist new file mode 100644 index 000000000000..0cf15714456a --- /dev/null +++ b/filesystems/s3backer/pkg-plist @@ -0,0 +1,7 @@ +bin/s3backer +share/man/man1/s3backer.1.gz +share/doc/packages/s3backer/CHANGES +share/doc/packages/s3backer/COPYING +share/doc/packages/s3backer/INSTALL +share/doc/packages/s3backer/README +share/doc/packages/s3backer/TODO diff --git a/filesystems/s3fs/Makefile b/filesystems/s3fs/Makefile new file mode 100644 index 000000000000..20cdfb4ae528 --- /dev/null +++ b/filesystems/s3fs/Makefile @@ -0,0 +1,36 @@ +PORTNAME= s3fs +DISTVERSIONPREFIX= v +DISTVERSION= 1.92 +PORTREVISION= 1 +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- + +MAINTAINER= dmgk@FreeBSD.org +COMMENT= FUSE-based file system backed by Amazon S3 +WWW= https://github.com/s3fs-fuse/s3fs-fuse + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libcurl.so:ftp/curl \ + libxml2.so:textproc/libxml2 + +USES= autoreconf fuse pkgconfig ssl + +USE_GITHUB= yes +GH_ACCOUNT= s3fs-fuse +GH_PROJECT= s3fs-fuse + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share + +CONFIGURE_ENV+= ac_cv_prog_GITCMD=no + +PLIST_FILES= bin/s3fs share/man/man1/s3fs.1.gz + +post-patch: + @${REINPLACE_CMD} -e 's/libcrypto >= 0.9//' ${WRKSRC}/configure.ac + @${REINPLACE_CMD} -e '/DEPS_LIBS/s/$$/ -lcrypto/' \ + ${WRKSRC}/src/Makefile.am + +.include <bsd.port.mk> diff --git a/filesystems/s3fs/distinfo b/filesystems/s3fs/distinfo new file mode 100644 index 000000000000..0b27b3158f5a --- /dev/null +++ b/filesystems/s3fs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1685836142 +SHA256 (s3fs-fuse-s3fs-fuse-v1.92_GH0.tar.gz) = 76ebea3c0784c5c0f6b84e009d555806aff86258886ced39eee316bf02ae8750 +SIZE (s3fs-fuse-s3fs-fuse-v1.92_GH0.tar.gz) = 283295 diff --git a/filesystems/s3fs/files/patch-test_mknod__test.c b/filesystems/s3fs/files/patch-test_mknod__test.c new file mode 100644 index 000000000000..c3e06b5e0bae --- /dev/null +++ b/filesystems/s3fs/files/patch-test_mknod__test.c @@ -0,0 +1,13 @@ +--- test/mknod_test.c.orig 2023-05-21 23:25:50 UTC ++++ test/mknod_test.c +@@ -28,7 +28,10 @@ + #include <string.h> + #include <errno.h> + #ifndef __APPLE__ ++#elif ++#ifndef __FreeBSD__ + #include <sys/sysmacros.h> ++#endif + #endif + + //--------------------------------------------------------- diff --git a/filesystems/s3fs/pkg-descr b/filesystems/s3fs/pkg-descr new file mode 100644 index 000000000000..67900733a8f9 --- /dev/null +++ b/filesystems/s3fs/pkg-descr @@ -0,0 +1,2 @@ +FUSE-based file system backed by Amazon S3. Mount a bucket as a local +file system read/write. Store files/folders natively and transparently. diff --git a/filesystems/s3fs/pkg-message b/filesystems/s3fs/pkg-message new file mode 100644 index 000000000000..0d5dfff241e3 --- /dev/null +++ b/filesystems/s3fs/pkg-message @@ -0,0 +1,7 @@ +[ +{ type: install + message: <<EOM +The usage of s3fs can be found at https://github.com/s3fs-fuse/s3fs-fuse/wiki/Fuse-Over-Amazon if you want to understand it. +EOM +} +] diff --git a/filesystems/sandboxfs/Makefile b/filesystems/sandboxfs/Makefile new file mode 100644 index 000000000000..51512f949899 --- /dev/null +++ b/filesystems/sandboxfs/Makefile @@ -0,0 +1,91 @@ +PORTNAME= sandboxfs +DISTVERSIONPREFIX= sandboxfs- +DISTVERSION= 0.2.0 +PORTREVISION= 42 +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- + +MAINTAINER= mikael@FreeBSD.org +COMMENT= Virtual file system for sandboxing +WWW= https://github.com/bazelbuild/sandboxfs + +LICENSE= APACHE20 +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= cargo fuse +USE_GITHUB= yes +GH_ACCOUNT= bazelbuild + +CARGO_CRATES= aho-corasick-0.7.10 \ + arc-swap-0.4.5 \ + atty-0.2.14 \ + backtrace-0.3.46 \ + backtrace-sys-0.1.35 \ + bitflags-1.2.1 \ + cc-1.0.50 \ + cfg-if-0.1.10 \ + cpuprofiler-0.0.4 \ + env_logger-0.5.13 \ + error-chain-0.12.2 \ + failure-0.1.7 \ + failure_derive-0.1.7 \ + fuse-0.3.1 \ + getopts-0.2.21 \ + getrandom-0.1.14 \ + hermit-abi-0.1.11 \ + humantime-1.3.0 \ + itoa-0.4.5 \ + lazy_static-1.4.0 \ + libc-0.2.69 \ + log-0.3.9 \ + log-0.4.8 \ + memchr-2.3.3 \ + nix-0.12.1 \ + num_cpus-1.13.0 \ + pkg-config-0.3.17 \ + ppv-lite86-0.2.6 \ + proc-macro2-1.0.10 \ + quick-error-1.2.3 \ + quote-1.0.3 \ + rand-0.7.3 \ + rand_chacha-0.2.2 \ + rand_core-0.5.1 \ + rand_hc-0.2.0 \ + redox_syscall-0.1.56 \ + regex-1.3.7 \ + regex-syntax-0.6.17 \ + remove_dir_all-0.5.2 \ + rustc-demangle-0.1.16 \ + ryu-1.0.3 \ + serde-1.0.106 \ + serde_derive-1.0.106 \ + serde_json-1.0.51 \ + signal-hook-0.1.13 \ + signal-hook-registry-1.2.0 \ + syn-1.0.17 \ + synstructure-0.12.3 \ + tempfile-3.1.0 \ + termcolor-1.1.0 \ + thread-scoped-1.0.2 \ + thread_local-1.0.1 \ + threadpool-1.7.1 \ + time-0.1.43 \ + unicode-width-0.1.7 \ + unicode-xid-0.2.0 \ + users-0.9.1 \ + version_check-0.9.1 \ + void-1.0.2 \ + wasi-0.9.0+wasi-snapshot-preview1 \ + winapi-0.3.8 \ + winapi-i686-pc-windows-gnu-0.4.0 \ + winapi-util-0.1.5 \ + winapi-x86_64-pc-windows-gnu-0.4.0 \ + xattr-0.2.2 + +PLIST_FILES= bin/sandboxfs \ + share/man/man1/sandboxfs.1.gz + +post-install: + ${INSTALL_MAN} ${WRKSRC}/man/sandboxfs.1 ${STAGEDIR}${PREFIX}/share/man/man1 + +.include <bsd.port.mk> diff --git a/filesystems/sandboxfs/distinfo b/filesystems/sandboxfs/distinfo new file mode 100644 index 000000000000..42005c53f6bd --- /dev/null +++ b/filesystems/sandboxfs/distinfo @@ -0,0 +1,133 @@ +TIMESTAMP = 1587409578 +SHA256 (rust/crates/aho-corasick-0.7.10.tar.gz) = 8716408b8bc624ed7f65d223ddb9ac2d044c0547b6fa4b0d554f3a9540496ada +SIZE (rust/crates/aho-corasick-0.7.10.tar.gz) = 111039 +SHA256 (rust/crates/arc-swap-0.4.5.tar.gz) = d663a8e9a99154b5fb793032533f6328da35e23aac63d5c152279aa8ba356825 +SIZE (rust/crates/arc-swap-0.4.5.tar.gz) = 48047 +SHA256 (rust/crates/atty-0.2.14.tar.gz) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8 +SIZE (rust/crates/atty-0.2.14.tar.gz) = 5470 +SHA256 (rust/crates/backtrace-0.3.46.tar.gz) = b1e692897359247cc6bb902933361652380af0f1b7651ae5c5013407f30e109e +SIZE (rust/crates/backtrace-0.3.46.tar.gz) = 68107 +SHA256 (rust/crates/backtrace-sys-0.1.35.tar.gz) = 7de8aba10a69c8e8d7622c5710229485ec32e9d55fdad160ea559c086fdcd118 +SIZE (rust/crates/backtrace-sys-0.1.35.tar.gz) = 635446 +SHA256 (rust/crates/bitflags-1.2.1.tar.gz) = cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693 +SIZE (rust/crates/bitflags-1.2.1.tar.gz) = 16745 +SHA256 (rust/crates/cc-1.0.50.tar.gz) = 95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd +SIZE (rust/crates/cc-1.0.50.tar.gz) = 49792 +SHA256 (rust/crates/cfg-if-0.1.10.tar.gz) = 4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822 +SIZE (rust/crates/cfg-if-0.1.10.tar.gz) = 7933 +SHA256 (rust/crates/cpuprofiler-0.0.4.tar.gz) = 43f8479dbcfd2bbaa0c0c26779b913052b375981cdf533091f2127ea3d42e52b +SIZE (rust/crates/cpuprofiler-0.0.4.tar.gz) = 97586 +SHA256 (rust/crates/env_logger-0.5.13.tar.gz) = 15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38 +SIZE (rust/crates/env_logger-0.5.13.tar.gz) = 25275 +SHA256 (rust/crates/error-chain-0.12.2.tar.gz) = d371106cc88ffdfb1eabd7111e432da544f16f3e2d7bf1dfe8bf575f1df045cd +SIZE (rust/crates/error-chain-0.12.2.tar.gz) = 29761 +SHA256 (rust/crates/failure-0.1.7.tar.gz) = b8529c2421efa3066a5cbd8063d2244603824daccb6936b079010bb2aa89464b +SIZE (rust/crates/failure-0.1.7.tar.gz) = 37416 +SHA256 (rust/crates/failure_derive-0.1.7.tar.gz) = 030a733c8287d6213886dd487564ff5c8f6aae10278b3588ed177f9d18f8d231 +SIZE (rust/crates/failure_derive-0.1.7.tar.gz) = 4902 +SHA256 (rust/crates/fuse-0.3.1.tar.gz) = 80e57070510966bfef93662a81cb8aa2b1c7db0964354fa9921434f04b9e8660 +SIZE (rust/crates/fuse-0.3.1.tar.gz) = 25001 +SHA256 (rust/crates/getopts-0.2.21.tar.gz) = 14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5 +SIZE (rust/crates/getopts-0.2.21.tar.gz) = 18457 +SHA256 (rust/crates/getrandom-0.1.14.tar.gz) = 7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb +SIZE (rust/crates/getrandom-0.1.14.tar.gz) = 24698 +SHA256 (rust/crates/hermit-abi-0.1.11.tar.gz) = 8a0d737e0f947a1864e93d33fdef4af8445a00d1ed8dc0c8ddb73139ea6abf15 +SIZE (rust/crates/hermit-abi-0.1.11.tar.gz) = 9203 +SHA256 (rust/crates/humantime-1.3.0.tar.gz) = df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f +SIZE (rust/crates/humantime-1.3.0.tar.gz) = 17020 +SHA256 (rust/crates/itoa-0.4.5.tar.gz) = b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e +SIZE (rust/crates/itoa-0.4.5.tar.gz) = 11194 +SHA256 (rust/crates/lazy_static-1.4.0.tar.gz) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646 +SIZE (rust/crates/lazy_static-1.4.0.tar.gz) = 10443 +SHA256 (rust/crates/libc-0.2.69.tar.gz) = 99e85c08494b21a9054e7fe1374a732aeadaff3980b6990b94bfd3a70f690005 +SIZE (rust/crates/libc-0.2.69.tar.gz) = 472393 +SHA256 (rust/crates/log-0.3.9.tar.gz) = e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b +SIZE (rust/crates/log-0.3.9.tar.gz) = 16686 +SHA256 (rust/crates/log-0.4.8.tar.gz) = 14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7 +SIZE (rust/crates/log-0.4.8.tar.gz) = 31297 +SHA256 (rust/crates/memchr-2.3.3.tar.gz) = 3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400 +SIZE (rust/crates/memchr-2.3.3.tar.gz) = 22566 +SHA256 (rust/crates/nix-0.12.1.tar.gz) = 319fffb13b63c0f4ff5a4e1c97566e7e741561ff5d03bf8bbf11653454bbd70b +SIZE (rust/crates/nix-0.12.1.tar.gz) = 173207 +SHA256 (rust/crates/num_cpus-1.13.0.tar.gz) = 05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3 +SIZE (rust/crates/num_cpus-1.13.0.tar.gz) = 14704 +SHA256 (rust/crates/pkg-config-0.3.17.tar.gz) = 05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677 +SIZE (rust/crates/pkg-config-0.3.17.tar.gz) = 14533 +SHA256 (rust/crates/ppv-lite86-0.2.6.tar.gz) = 74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b +SIZE (rust/crates/ppv-lite86-0.2.6.tar.gz) = 20522 +SHA256 (rust/crates/proc-macro2-1.0.10.tar.gz) = df246d292ff63439fea9bc8c0a270bed0e390d5ebd4db4ba15aba81111b5abe3 +SIZE (rust/crates/proc-macro2-1.0.10.tar.gz) = 35622 +SHA256 (rust/crates/quick-error-1.2.3.tar.gz) = a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0 +SIZE (rust/crates/quick-error-1.2.3.tar.gz) = 15066 +SHA256 (rust/crates/quote-1.0.3.tar.gz) = 2bdc6c187c65bca4260c9011c9e3132efe4909da44726bad24cf7572ae338d7f +SIZE (rust/crates/quote-1.0.3.tar.gz) = 22939 +SHA256 (rust/crates/rand-0.7.3.tar.gz) = 6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03 +SIZE (rust/crates/rand-0.7.3.tar.gz) = 112246 +SHA256 (rust/crates/rand_chacha-0.2.2.tar.gz) = f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402 +SIZE (rust/crates/rand_chacha-0.2.2.tar.gz) = 13267 +SHA256 (rust/crates/rand_core-0.5.1.tar.gz) = 90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19 +SIZE (rust/crates/rand_core-0.5.1.tar.gz) = 21116 +SHA256 (rust/crates/rand_hc-0.2.0.tar.gz) = ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c +SIZE (rust/crates/rand_hc-0.2.0.tar.gz) = 11670 +SHA256 (rust/crates/redox_syscall-0.1.56.tar.gz) = 2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84 +SIZE (rust/crates/redox_syscall-0.1.56.tar.gz) = 17117 +SHA256 (rust/crates/regex-1.3.7.tar.gz) = a6020f034922e3194c711b82a627453881bc4682166cabb07134a10c26ba7692 +SIZE (rust/crates/regex-1.3.7.tar.gz) = 235600 +SHA256 (rust/crates/regex-syntax-0.6.17.tar.gz) = 7fe5bd57d1d7414c6b5ed48563a2c855d995ff777729dcd91c369ec7fea395ae +SIZE (rust/crates/regex-syntax-0.6.17.tar.gz) = 294004 +SHA256 (rust/crates/remove_dir_all-0.5.2.tar.gz) = 4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e +SIZE (rust/crates/remove_dir_all-0.5.2.tar.gz) = 8907 +SHA256 (rust/crates/rustc-demangle-0.1.16.tar.gz) = 4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783 +SIZE (rust/crates/rustc-demangle-0.1.16.tar.gz) = 19137 +SHA256 (rust/crates/ryu-1.0.3.tar.gz) = 535622e6be132bccd223f4bb2b8ac8d53cda3c7a6394944d3b2b33fb974f9d76 +SIZE (rust/crates/ryu-1.0.3.tar.gz) = 41983 +SHA256 (rust/crates/serde-1.0.106.tar.gz) = 36df6ac6412072f67cf767ebbde4133a5b2e88e76dc6187fa7104cd16f783399 +SIZE (rust/crates/serde-1.0.106.tar.gz) = 73343 +SHA256 (rust/crates/serde_derive-1.0.106.tar.gz) = 9e549e3abf4fb8621bd1609f11dfc9f5e50320802273b12f3811a67e6716ea6c +SIZE (rust/crates/serde_derive-1.0.106.tar.gz) = 49719 +SHA256 (rust/crates/serde_json-1.0.51.tar.gz) = da07b57ee2623368351e9a0488bb0b261322a15a6e0ae53e243cbdc0f4208da9 +SIZE (rust/crates/serde_json-1.0.51.tar.gz) = 72691 +SHA256 (rust/crates/signal-hook-0.1.13.tar.gz) = 10b9f3a1686a29f53cfd91ee5e3db3c12313ec02d33765f02c1a9645a1811e2c +SIZE (rust/crates/signal-hook-0.1.13.tar.gz) = 26045 +SHA256 (rust/crates/signal-hook-registry-1.2.0.tar.gz) = 94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41 +SIZE (rust/crates/signal-hook-registry-1.2.0.tar.gz) = 14490 +SHA256 (rust/crates/syn-1.0.17.tar.gz) = 0df0eb663f387145cab623dea85b09c2c5b4b0aef44e945d928e682fce71bb03 +SIZE (rust/crates/syn-1.0.17.tar.gz) = 198158 +SHA256 (rust/crates/synstructure-0.12.3.tar.gz) = 67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545 +SIZE (rust/crates/synstructure-0.12.3.tar.gz) = 17788 +SHA256 (rust/crates/tempfile-3.1.0.tar.gz) = 7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9 +SIZE (rust/crates/tempfile-3.1.0.tar.gz) = 25823 +SHA256 (rust/crates/termcolor-1.1.0.tar.gz) = bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f +SIZE (rust/crates/termcolor-1.1.0.tar.gz) = 17193 +SHA256 (rust/crates/thread-scoped-1.0.2.tar.gz) = bcbb6aa301e5d3b0b5ef639c9a9c7e2f1c944f177b460c04dc24c69b1fa2bd99 +SIZE (rust/crates/thread-scoped-1.0.2.tar.gz) = 4321 +SHA256 (rust/crates/thread_local-1.0.1.tar.gz) = d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14 +SIZE (rust/crates/thread_local-1.0.1.tar.gz) = 12609 +SHA256 (rust/crates/threadpool-1.7.1.tar.gz) = e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865 +SIZE (rust/crates/threadpool-1.7.1.tar.gz) = 15756 +SHA256 (rust/crates/time-0.1.43.tar.gz) = ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438 +SIZE (rust/crates/time-0.1.43.tar.gz) = 28653 +SHA256 (rust/crates/unicode-width-0.1.7.tar.gz) = caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479 +SIZE (rust/crates/unicode-width-0.1.7.tar.gz) = 16644 +SHA256 (rust/crates/unicode-xid-0.2.0.tar.gz) = 826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c +SIZE (rust/crates/unicode-xid-0.2.0.tar.gz) = 14994 +SHA256 (rust/crates/users-0.9.1.tar.gz) = c72f4267aea0c3ec6d07eaabea6ead7c5ddacfafc5e22bcf8d186706851fb4cf +SIZE (rust/crates/users-0.9.1.tar.gz) = 20456 +SHA256 (rust/crates/version_check-0.9.1.tar.gz) = 078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce +SIZE (rust/crates/version_check-0.9.1.tar.gz) = 11459 +SHA256 (rust/crates/void-1.0.2.tar.gz) = 6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d +SIZE (rust/crates/void-1.0.2.tar.gz) = 2356 +SHA256 (rust/crates/wasi-0.9.0+wasi-snapshot-preview1.tar.gz) = cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519 +SIZE (rust/crates/wasi-0.9.0+wasi-snapshot-preview1.tar.gz) = 31521 +SHA256 (rust/crates/winapi-0.3.8.tar.gz) = 8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6 +SIZE (rust/crates/winapi-0.3.8.tar.gz) = 1128308 +SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.tar.gz) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6 +SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.tar.gz) = 2918815 +SHA256 (rust/crates/winapi-util-0.1.5.tar.gz) = 70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178 +SIZE (rust/crates/winapi-util-0.1.5.tar.gz) = 10164 +SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f +SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz) = 2947998 +SHA256 (rust/crates/xattr-0.2.2.tar.gz) = 244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c +SIZE (rust/crates/xattr-0.2.2.tar.gz) = 11750 +SHA256 (bazelbuild-sandboxfs-sandboxfs-0.2.0_GH0.tar.gz) = bff68e7d33ae56a3f34a79a74b2576599f5ccc381a237bbc10b5a3c3ea106b60 +SIZE (bazelbuild-sandboxfs-sandboxfs-0.2.0_GH0.tar.gz) = 118702 diff --git a/filesystems/sandboxfs/files/patch-powerpc b/filesystems/sandboxfs/files/patch-powerpc new file mode 100644 index 000000000000..df525d6e5b13 --- /dev/null +++ b/filesystems/sandboxfs/files/patch-powerpc @@ -0,0 +1,62 @@ +--- cargo-crates/libc-0.2.69/src/unix/bsd/freebsdlike/freebsd/mod.rs.orig 2020-03-17 20:35:43 UTC ++++ cargo-crates/libc-0.2.69/src/unix/bsd/freebsdlike/freebsd/mod.rs +@@ -1486,6 +1486,9 @@ cfg_if! { + } else if #[cfg(target_arch = "powerpc64")] { + mod powerpc64; + pub use self::powerpc64::*; ++ } else if #[cfg(target_arch = "powerpc")] { ++ mod powerpc; ++ pub use self::powerpc::*; + } else { + // Unknown target_arch + } +--- cargo-crates/libc-0.2.69/src/unix/bsd/freebsdlike/freebsd/powerpc.rs.orig 2021-06-23 22:40:24 UTC ++++ cargo-crates/libc-0.2.69/src/unix/bsd/freebsdlike/freebsd/powerpc.rs +@@ -0,0 +1,47 @@ ++pub type c_char = u8; ++pub type c_long = i32; ++pub type c_ulong = u32; ++pub type wchar_t = i32; ++pub type time_t = i64; ++pub type suseconds_t = i32; ++pub type register_t = i32; ++ ++s! { ++ 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_uid: ::uid_t, ++ pub st_gid: ::gid_t, ++ pub st_rdev: ::dev_t, ++ pub st_atime: ::time_t, ++ pub st_atime_nsec: ::c_long, ++ pub st_mtime: ::time_t, ++ pub st_mtime_nsec: ::c_long, ++ pub st_ctime: ::time_t, ++ pub st_ctime_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: u32, ++ pub st_lspare: i32, ++ pub st_birthtime: ::time_t, ++ pub st_birthtime_nsec: ::c_long, ++ } ++} ++ ++// should be pub(crate), but that requires Rust 1.18.0 ++cfg_if! { ++ if #[cfg(libc_const_size_of)] { ++ #[doc(hidden)] ++ pub const _ALIGNBYTES: usize = ::mem::size_of::<::c_int>() - 1; ++ } else { ++ #[doc(hidden)] ++ pub const _ALIGNBYTES: usize = 4 - 1; ++ } ++} ++ ++pub const MAP_32BIT: ::c_int = 0x00080000; ++pub const MINSIGSTKSZ: ::size_t = 2048; // 512 * 4 diff --git a/filesystems/sandboxfs/files/patch-src_lib.rs b/filesystems/sandboxfs/files/patch-src_lib.rs new file mode 100644 index 000000000000..ffee85062382 --- /dev/null +++ b/filesystems/sandboxfs/files/patch-src_lib.rs @@ -0,0 +1,15 @@ +--- src/lib.rs.orig 2020-04-20 18:46:46 UTC ++++ src/lib.rs +@@ -463,10 +463,10 @@ impl SandboxFS { + #[cfg(target_os = "linux")] + let code = Errno::ENODATA; + +- #[cfg(target_os = "macos")] ++ #[cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "macos"))] + let code = Errno::ENOATTR; + +- #[cfg(not(any(target_os = "linux", target_os = "macos")))] ++ #[cfg(not(any(target_os = "dragonfly", target_os = "freebsd", target_os = "linux", target_os = "macos")))] + compile_error!("Don't know what error to return on a missing getxattr"); + + Err(KernelError::from_errno(code)) diff --git a/filesystems/sandboxfs/files/patch-src_nodes_conv.rs b/filesystems/sandboxfs/files/patch-src_nodes_conv.rs new file mode 100644 index 000000000000..949974945d2c --- /dev/null +++ b/filesystems/sandboxfs/files/patch-src_nodes_conv.rs @@ -0,0 +1,41 @@ +Unbreak on i386 + +error[E0308]: mismatched types + --> src/nodes/conv.rs:72:19 + | +72 | Timespec::new(val.tv_sec() as sys::time::time_t, usec) + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected i64, found i32 + +--- src/nodes/conv.rs.orig 2020-04-20 18:46:46 UTC ++++ src/nodes/conv.rs +@@ -69,7 +69,7 @@ pub fn timeval_to_timespec(val: sys::time::TimeVal) -> + } else { + val.tv_usec() as i32 + }; +- Timespec::new(val.tv_sec() as sys::time::time_t, usec) ++ Timespec::new((val.tv_sec() as sys::time::time_t).into(), usec) + } + + /// Converts a `sys::time::TimeVal` object into a `sys::time::TimeSpec`. +@@ -328,6 +328,10 @@ mod tests { + // modified and may not be queryable, so stub them out. + attr.ctime = BAD_TIME; + attr.crtime = BAD_TIME; ++ // Ignore rdev too ++ attr.rdev = 0; ++ // XXX: gid is always 0 when the tests run on tmpfs(5) ++ attr.gid = exp_attr.gid; + assert!(fileattrs_eq(&exp_attr, &attr)); + } + +@@ -365,6 +369,10 @@ mod tests { + // modified and may not be queryable, so stub them out. + attr.ctime = BAD_TIME; + attr.crtime = BAD_TIME; ++ // Ignore rdev too ++ attr.rdev = 0; ++ // XXX: gid is always 0 when the tests run on tmpfs(5) ++ attr.gid = exp_attr.gid; + assert!(fileattrs_eq(&exp_attr, &attr)); + } + diff --git a/filesystems/sandboxfs/files/patch-src_nodes_mod.rs b/filesystems/sandboxfs/files/patch-src_nodes_mod.rs new file mode 100644 index 000000000000..696e611469c7 --- /dev/null +++ b/filesystems/sandboxfs/files/patch-src_nodes_mod.rs @@ -0,0 +1,23 @@ +libc crate defines ENOTSUP as an alias for EOPNOTSUPP. nix crate +does not re-export EOPNOTSUPP on FreeBSD but ENOTSUP is available. + +--- src/nodes/mod.rs.orig 2020-04-20 18:46:46 UTC ++++ src/nodes/mod.rs +@@ -97,7 +97,7 @@ fn setattr_mode(attr: &mut fuse::FileAttr, path: Optio + if attr.kind == fuse::FileType::Symlink { + // TODO(jmmv): Should use NoFollowSymlink to support changing the mode of a symlink if + // requested to do so, but this is not supported on Linux. +- return Err(nix::Error::from_errno(Errno::EOPNOTSUPP)); ++ return Err(nix::Error::from_errno(Errno::ENOTSUP)); + } + + let result = try_path(path, |p| +@@ -144,7 +144,7 @@ fn setattr_times(attr: &mut fuse::FileAttr, path: Opti + if attr.kind == fuse::FileType::Symlink { + eprintln!( + "utimensat not present; ignoring request to change symlink times for {:?}", path); +- Err(nix::Error::from_errno(Errno::EOPNOTSUPP)) ++ Err(nix::Error::from_errno(Errno::ENOTSUP)) + } else { + try_path(path, |p| sys::stat::utimes(p, &atime, &mtime)) + } diff --git a/filesystems/sandboxfs/pkg-descr b/filesystems/sandboxfs/pkg-descr new file mode 100644 index 000000000000..92e275c2262c --- /dev/null +++ b/filesystems/sandboxfs/pkg-descr @@ -0,0 +1,9 @@ +Sandboxfs is a FUSE file system that exposes a combination of +multiple files and directories from the host's file system in the +form of a virtual tree with an arbitrary layout. You can think of +a sandbox as an arbitrary view into the host's file system with +different access privileges per directory. + +Sandboxfs is designed to allow running commands with limited access +to the file system by using the virtual tree as their new root, and +to do so consistently across a variety of platforms. diff --git a/filesystems/sandboxfs/pkg-message b/filesystems/sandboxfs/pkg-message new file mode 100644 index 000000000000..7ec584f0028f --- /dev/null +++ b/filesystems/sandboxfs/pkg-message @@ -0,0 +1,10 @@ +[ +{ type: install + message: <<EOM +WARNING: The interaction points with sandboxfs are subject to change +at this point. In particular, the command-line interface and the +data format used to reconfigure sandboxfs while it's running will +most certainly change. +EOM +} +] diff --git a/filesystems/scan_ffs/Makefile b/filesystems/scan_ffs/Makefile new file mode 100644 index 000000000000..59d5340aa7fb --- /dev/null +++ b/filesystems/scan_ffs/Makefile @@ -0,0 +1,18 @@ +PORTNAME= scan_ffs +PORTVERSION= 1.2 +PORTREVISION= 1 +CATEGORIES= filesystems sysutils +MASTER_SITES= http://www.ranner.eu/stuff/ + +MAINTAINER= michael@ranner.eu +COMMENT= Scan_ffs recovers lost disklabel + +USES= tar:bzip2 + +PLIST_FILES= sbin/scan_ffs share/man/man8/scan_ffs.8.gz + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/scan_ffs ${STAGEDIR}${PREFIX}/sbin + ${INSTALL_MAN} ${WRKSRC}/scan_ffs.8 ${STAGEDIR}${PREFIX}/share/man/man8 + +.include <bsd.port.mk> diff --git a/filesystems/scan_ffs/distinfo b/filesystems/scan_ffs/distinfo new file mode 100644 index 000000000000..f5fe89273c1e --- /dev/null +++ b/filesystems/scan_ffs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905190 +SHA256 (scan_ffs-1.2.tar.bz2) = a6d52583a275c02ca8c504a302e065b20512da5795cd2929cda13184c5305d4a +SIZE (scan_ffs-1.2.tar.bz2) = 5119 diff --git a/filesystems/scan_ffs/pkg-descr b/filesystems/scan_ffs/pkg-descr new file mode 100644 index 000000000000..d156d70ae1b7 --- /dev/null +++ b/filesystems/scan_ffs/pkg-descr @@ -0,0 +1,12 @@ +scan_ffs(8) recovers accidential lost or deleted disklabels. + +This is the life-saver of typos. If you have ever been working too long, +and just happened to type 'disklabel -rw da0 floppy', instead of 'diskla- +bel -rw fd0 floppy', you know what I am talking about. + +This little program will take a raw disk device (which you might have to +create) that covers the whole disk, and finds all probable UFS/FFS parti- +tions on the disk. It has various options to make it go faster, and to +print out information to help in the reconstruction of the disklabel. + +Ported from OpenBSD to FreeBSD 4/5 with support for UFS1 and UFS2. diff --git a/filesystems/securefs/Makefile b/filesystems/securefs/Makefile new file mode 100644 index 000000000000..89cd7aa324d1 --- /dev/null +++ b/filesystems/securefs/Makefile @@ -0,0 +1,33 @@ +PORTNAME= securefs +DISTVERSION= 0.14.3 +PORTREVISION= 2 +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- + +MAINTAINER= ports@FreeBSD.org +COMMENT= Filesystem in userspace with transparent encryption and decryption +WWW= https://github.com/netheril96/securefs + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE.md + +BUILD_DEPENDS= ${LOCALBASE}/include/tclap/TCLAPConfig.h:devel/tclap +LIB_DEPENDS= libutf8proc.so:textproc/utf8proc \ + libargon2.so:security/libargon2 \ + libjsoncpp.so:devel/jsoncpp \ + libcryptopp.so:security/cryptopp \ + libabsl_strings.so:devel/abseil + +USES= cmake compiler:c++17-lang fuse pkgconfig + +USE_GITHUB= yes +GH_ACCOUNT= netheril96 + +PLIST_FILES= bin/securefs + +CMAKE_OFF= SECUREFS_ENABLE_BUILD_TEST \ + SECUREFS_ENABLE_UNIT_TEST \ + SECUREFS_USE_VCPKG +CMAKE_ARGS= -DCMAKE_CXX_STANDARD=17 + +.include <bsd.port.mk> diff --git a/filesystems/securefs/distinfo b/filesystems/securefs/distinfo new file mode 100644 index 000000000000..caa7b87bbd5f --- /dev/null +++ b/filesystems/securefs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1697868086 +SHA256 (netheril96-securefs-0.14.3_GH0.tar.gz) = 3323e027fc4399dbbaf2a2e5cde11dae4b4e19ff08b2f9208dc6742a9f2f0611 +SIZE (netheril96-securefs-0.14.3_GH0.tar.gz) = 419328 diff --git a/filesystems/securefs/pkg-descr b/filesystems/securefs/pkg-descr new file mode 100644 index 000000000000..cbd0e2663d3e --- /dev/null +++ b/filesystems/securefs/pkg-descr @@ -0,0 +1,4 @@ +securefs mounts a regular directory onto a mount point. The mount point appears +as a regular filesystem, where one can read/write/create files, directories and +symbolic links. The underlying directory will be automatically updated to +contain the encrypted and authenticated contents. diff --git a/filesystems/simple-mtpfs/Makefile b/filesystems/simple-mtpfs/Makefile new file mode 100644 index 000000000000..2c04141d0886 --- /dev/null +++ b/filesystems/simple-mtpfs/Makefile @@ -0,0 +1,46 @@ +PORTNAME= simple-mtpfs +DISTVERSIONPREFIX= v +DISTVERSION= 0.4.0 +PORTREVISION= 1 +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- + +MAINTAINER= ports@FreeBSD.org +COMMENT= Simple MTP fuse filesystem driver +WWW= https://github.com/phatina/simple-mtpfs + +LICENSE= GPLv2+ + +BUILD_DEPENDS= autoconf-archive>0.2017:devel/autoconf-archive +LIB_DEPENDS= libmtp.so:multimedia/libmtp + +USE_GITHUB= yes +GH_ACCOUNT= phatina + +USES= autoreconf compiler:c++17-lang fuse localbase pkgconfig +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +MAKEFILE= makefile +INSTALL_TARGET= install-strip +PLIST_FILES= bin/${PORTNAME} \ + share/man/man1/${PORTNAME}.1.gz +PORTDOCS= AUTHORS NEWS README.md + +OPTIONS_DEFINE= DOCS + +# XXX move to PREFIX when bug 193596 lands +.if exists(/etc/autofs) +PLIST_FILES+= /etc/autofs/special_${PORTNAME} +SUB_FILES+= special_${PORTNAME} +.endif + +post-install: + (cd ${WRKSRC} && ${COPYTREE_SHARE} \ + "${PORTDOCS}" ${STAGEDIR}${DOCSDIR}) +.if exists(/etc/autofs) + @${MKDIR} ${STAGEDIR}/etc/autofs + ${INSTALL_SCRIPT} ${WRKDIR}/special_${PORTNAME} \ + ${STAGEDIR}/etc/autofs +.endif + +.include <bsd.port.mk> diff --git a/filesystems/simple-mtpfs/distinfo b/filesystems/simple-mtpfs/distinfo new file mode 100644 index 000000000000..d9a8c2d015ab --- /dev/null +++ b/filesystems/simple-mtpfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1595446039 +SHA256 (phatina-simple-mtpfs-v0.4.0_GH0.tar.gz) = 1d011df3fa09ad0a5c09d48d84c03e6cddf86390af9eb4e0c178193f32f0e2fc +SIZE (phatina-simple-mtpfs-v0.4.0_GH0.tar.gz) = 36234 diff --git a/filesystems/simple-mtpfs/files/patch-src__simple-mtpfs-fuse.cpp b/filesystems/simple-mtpfs/files/patch-src__simple-mtpfs-fuse.cpp new file mode 100644 index 000000000000..d1dbca44fbe2 --- /dev/null +++ b/filesystems/simple-mtpfs/files/patch-src__simple-mtpfs-fuse.cpp @@ -0,0 +1,32 @@ +# Allow fake device file to use with fstab(5) + +--- src/simple-mtpfs-fuse.cpp.orig 2015-08-24 11:34:39 UTC ++++ src/simple-mtpfs-fuse.cpp +@@ -309,12 +309,6 @@ bool SMTPFileSystem::parseOptions(int ar + + --m_options.m_device_no; + +- // device file and -- device are mutually exclusive, fail if both set +- if (m_options.m_device_no && m_options.m_device_file) { +- m_options.m_good = false; +- return false; +- } +- + m_options.m_good = true; + return true; + } +@@ -379,11 +373,9 @@ bool SMTPFileSystem::exec() + return false; + } + +- if (m_options.m_device_file) { +- // Try to use device file first, if provided +- if (!m_device.connect(m_options.m_device_file)) +- return false; +- } else { ++ // Try to use device file first, ignore otherwise ++ if (!m_options.m_device_file || ++ !m_device.connect(m_options.m_device_file)) { + // Connect to MTP device by order number, if no device file supplied + if (!m_device.connect(m_options.m_device_no)) + return false; diff --git a/filesystems/simple-mtpfs/files/special_simple-mtpfs.in b/filesystems/simple-mtpfs/files/special_simple-mtpfs.in new file mode 100644 index 000000000000..7f45b8649e53 --- /dev/null +++ b/filesystems/simple-mtpfs/files/special_simple-mtpfs.in @@ -0,0 +1,18 @@ +#!/bin/sh +# +# Intended for use with /etc/auto_master containing +# /mtp -simple-mtpfs -allow_other +# + +out=$(%%PREFIX%%/bin/simple-mtpfs --list-devices) +[ $? -eq 0 ] || exit 1 + +if [ $# -eq 0 ]; then + echo "$out" | sed 's/[^:]*: //' | sort -u + exit 0 +fi + +devno=$(echo "$out" | (fgrep "$1" || echo 0) | sed 's/:.*//') +[ $devno -gt 0 ] || exit 1 + +echo "/ -fstype=none,--device=$devno,mountprog=%%PREFIX%%/bin/simple-mtpfs :none" diff --git a/filesystems/simple-mtpfs/pkg-descr b/filesystems/simple-mtpfs/pkg-descr new file mode 100644 index 000000000000..4b44f0a90134 --- /dev/null +++ b/filesystems/simple-mtpfs/pkg-descr @@ -0,0 +1,6 @@ +Simple FUSE filesystem for reading from and writing to MTP devices. + +SIMPLE-MTPFS (Simple Media Transfer Protocol FileSystem) is a file system for +Linux (and other operating systems with a FUSE implementation, such as Mac OS X +or FreeBSD) capable of operating on files on MTP devices attached via USB to +local machine. diff --git a/filesystems/smbnetfs/Makefile b/filesystems/smbnetfs/Makefile new file mode 100644 index 000000000000..a577b6ece99b --- /dev/null +++ b/filesystems/smbnetfs/Makefile @@ -0,0 +1,54 @@ +PORTNAME= smbnetfs +PORTVERSION= 0.6.3 +PORTREVISION= 1 +CATEGORIES= filesystems net +MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/SMBNetFS-${PORTVERSION} +PKGNAMEPREFIX= fusefs- + +MAINTAINER= ports@virtual-estates.net +COMMENT= Mount smb shares (Fuse filesystem) +WWW= https://sourceforge.net/projects/smbnetfs/ + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +OPTIONS_DEFINE= DOCS LIBSECRET + +LIBSECRET_DESC= Use libsecret to store credentials +LIBSECRET_CONFIGURE_WITH= libsecret +LIBSECRET_LIB_DEPENDS= libsecret-*.so:security/libsecret + +DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}-${PORTVERSION} + +USES= compiler:c11 fuse gnome iconv pkgconfig samba:lib tar:bzip2 +USE_GNOME= glib20:build + +GNU_CONFIGURE= yes +# A hack to disable gratuitous linking with -lglib-2.0 +CONFIGURE_ENV+= GLIB_LIBS=-L/var/empty +CFLAGS+= -I${SAMBAINCLUDES} -DFUSE_USE_VERSION=${FUSE_VERSION} +LDFLAGS+= -L${SAMBALIBS} +SUB_FILES= pkg-message +# configure just generated config.h -- we do not need to redo it: +MAKE_ARGS+= AUTOHEADER=${TRUE} + +.include <bsd.port.pre.mk> + +.if ${ICONV_LIB} == "" +CONFIGURE_ENV+= ac_cv_lib_iconv_iconv_open=yes +CONFIGURE_ARGS+=--with-libiconv=native +.endif + +# Uses/fuse.mk should be doing the below: +.if ${LIBFUSE_VER} == 3 +CONFIGURE_ENV+= FUSE_CFLAGS="-I${LOCALBASE}/include/fuse3" \ + FUSE_LIBS="-L${LOCALBASE}/lib -lfuse3" +FUSEPKG= fuse3 +LDFLAGS+= -lthr +.else +FUSEPKG= fuse +.endif +FUSE_VERSION= "`pkgconf --modversion ${FUSEPKG} | \ + ${SED} -E 's,^([0-9]+)\.([0-9]+)\..*,\1\2,'`" + +.include <bsd.port.post.mk> diff --git a/filesystems/smbnetfs/distinfo b/filesystems/smbnetfs/distinfo new file mode 100644 index 000000000000..3e27f3e6cd71 --- /dev/null +++ b/filesystems/smbnetfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1681329971 +SHA256 (smbnetfs-0.6.3.tar.bz2) = eac37b9769fbe9c3f4baf3eb64c61a6b59ad4f2aa05dfddcba5a1ac4adf4d560 +SIZE (smbnetfs-0.6.3.tar.bz2) = 187460 diff --git a/filesystems/smbnetfs/files/patch-fuse3 b/filesystems/smbnetfs/files/patch-fuse3 new file mode 100644 index 000000000000..c30563999e05 --- /dev/null +++ b/filesystems/smbnetfs/files/patch-fuse3 @@ -0,0 +1,216 @@ +Allow use of either libfuse3 or libfuse... + + -mi + +--- src/event.c 2018-01-04 15:59:38 -0500 ++++ src/event.c 2018-02-01 11:12:59 -0500 +@@ -5,5 +5,5 @@ + #include <pthread.h> + #include <libsmbclient.h> +-#include <fuse/fuse.h> ++#include <fuse.h> + #include <glib.h> + +--- configure 2018-01-04 16:00:23 -0500 ++++ configure 2018-02-01 11:16:43 -0500 +@@ -4059,5 +4059,5 @@ + fi + LIBS="$LIBS $FUSE_LIBS" +-CFLAGS="$CFLAGS -D_REENTRANT -D_GNU_SOURCE -DFUSE_USE_VERSION=26 $FUSE_CFLAGS" ++CFLAGS="$CFLAGS -D_REENTRANT -D_GNU_SOURCE $FUSE_CFLAGS" + + +--- src/event.h 2018-01-04 15:59:38.000000000 -0500 ++++ src/event.h 2018-02-01 11:20:21.779895000 -0500 +@@ -2,5 +2,5 @@ + #define __EVENT_H__ + +-#include <fuse/fuse.h> ++#include <fuse.h> + + int event_set_query_browser_flag(int flag); +--- src/function.h 2018-01-04 15:59:38.000000000 -0500 ++++ src/function.h 2018-02-01 11:21:10.116105000 -0500 +@@ -2,5 +2,5 @@ + #define __FUNCTION_H__ + +-#include <fuse/fuse.h> ++#include <fuse.h> + + extern struct fuse_operations smb_oper; +--- src/function.c 2018-01-04 20:59:38.000000000 +0000 ++++ src/function.c 2018-02-01 18:28:01.664078000 +0000 +@@ -149,5 +151,13 @@ + } + +-static int function_rename(const char *from, const char *to){ ++static int function_rename(const char *from, const char *to ++#if FUSE_USE_VERSION > 29 ++ , unsigned int flags __unused ++#endif ++){ ++ /* ++ * XXX Maybe, we should check the flags-argument to better ++ * XXX manage the caller's expectations? ++ */ + DPRINTF(5, "(%s, %s)\n", from, to); + if (smbitem_what_is(from) != SMBITEM_SMB_SHARE_ITEM) return -EINVAL; +@@ -188,6 +198,15 @@ + } + ++ + static int function_readdir(const char *path, void *buf, fuse_fill_dir_t filler, +- off_t offset, struct fuse_file_info *fi){ ++ off_t offset, struct fuse_file_info *fi ++#if FUSE_USE_VERSION > 29 ++ , enum fuse_readdir_flags flags __unused ++#define CALL_FILLER(buf, path, st, offset) \ ++ filler(buf, path, st, offset, 0) ++#else ++#define CALL_FILLER filler ++#endif ++){ + samba_fd fd; + int error, rec_cnt; +@@ -208,6 +227,6 @@ + error = EINVAL; + st.st_mode = S_IFDIR; +- if (filler(buf, ".", &st, 0)) goto error0; +- if (filler(buf, "..", &st, 0)) goto error0; ++ if (CALL_FILLER(buf, ".", &st, 0)) goto error0; ++ if (CALL_FILLER(buf, "..", &st, 0)) goto error0; + + show_hidden_hosts = function_get_hidden_hosts_visibility(); +@@ -227,5 +246,5 @@ + goto error0; + } +- if (filler(buf, dir->childs[i]->name, &st, 0)) goto end; ++ if (CALL_FILLER(buf, dir->childs[i]->name, &st, 0)) goto end; + } + error = 0; +@@ -299,9 +318,9 @@ + memset(&st, 0, sizeof(st)); + st.st_mode = S_IFDIR; +- if (filler(buf, ".", &st, 0)) goto end; +- if (filler(buf, "..", &st, 0)) goto end; ++ if (CALL_FILLER(buf, ".", &st, 0)) goto end; ++ if (CALL_FILLER(buf, "..", &st, 0)) goto end; + rec_cnt += 2; + } +- if (filler(buf, rec->d_name, &st, 0)){ ++ if (CALL_FILLER(buf, rec->d_name, &st, 0)){ + error = EINVAL; + goto end; +@@ -317,6 +336,6 @@ + error = EINVAL; + st.st_mode = S_IFDIR; +- if (filler(buf, ".", &st, 0)) goto end; +- if (filler(buf, "..", &st, 0)) goto end; ++ if (CALL_FILLER(buf, ".", &st, 0)) goto end; ++ if (CALL_FILLER(buf, "..", &st, 0)) goto end; + rec_cnt += 2; + } +@@ -341,5 +360,11 @@ + } + +-static int function_stat(const char *path, struct stat *stbuf){ ++static int function_fstat(const char *path, struct stat *stbuf, ++ struct fuse_file_info *fi); ++static int function_stat(const char *path, struct stat *stbuf ++#if FUSE_USE_VERSION > 29 ++ , struct fuse_file_info *fi ++#endif ++){ + int i, count; + size_t len; +@@ -347,4 +372,8 @@ + char buf[2048]; + ++#if FUSE_USE_VERSION > 29 ++ if (fi != NULL) ++ return function_fstat(path, stbuf, fi); ++#endif + DPRINTF(5, "(%s)\n", path); + if (stat_workaround_is_name_ignored(path)) return -ENOENT; +@@ -462,5 +491,9 @@ + } + +-static int function_chmod(const char *path, mode_t mode){ ++static int function_chmod(const char *path, mode_t mode ++#if FUSE_USE_VERSION > 29 ++ , struct fuse_file_info *fi __unused /* XXX make some use of it? */ ++#endif ++){ + DPRINTF(5, "(%s, %o)\n", path, mode); + if (smbitem_what_is(path) != SMBITEM_SMB_SHARE_ITEM) return -EINVAL; +@@ -469,4 +502,5 @@ + } + ++#if FUSE_USE_VERSION < 30 + static int function_utimes(const char *path, struct utimbuf *buffer){ + struct timeval tbuf[2]; +@@ -483,4 +517,21 @@ + return 0; + } ++#else ++static int function_utimens(const char *path, const struct timespec tv[2], ++ struct fuse_file_info *fi __unused) ++{ ++ struct timeval tbuf[2]; ++ ++ DPRINTF(5, "(%s, %lu)\n", path, (unsigned long)tv[0].tv_sec); ++ if (smbitem_what_is(path) != SMBITEM_SMB_SHARE_ITEM) return -EINVAL; ++ ++ tbuf[0].tv_sec = tv[0].tv_sec; ++ tbuf[0].tv_usec = tv[0].tv_nsec / 1000; ++ tbuf[1].tv_sec = tv[1].tv_sec; ++ tbuf[1].tv_usec = tv[1].tv_nsec / 1000; ++ if (samba_utimes(path, tbuf) != 0) return -errno; ++ return 0; ++} ++#endif + + /* libfuse does not support lsetxattr() and fsetxattr(), but samba does */ +@@ -542,5 +593,9 @@ + } + +-static int function_chown(const char *path, uid_t uid, gid_t gid){ ++static int function_chown(const char *path, uid_t uid, gid_t gid ++#if FUSE_USE_VERSION > 29 ++ , struct fuse_file_info *fi __unused ++#endif ++){ + (void) path; + (void) uid; +@@ -552,7 +607,15 @@ + } + +-static int function_truncate(const char *path, off_t size){ ++static int function_truncate(const char *path, off_t size ++#if FUSE_USE_VERSION > 29 ++ , struct fuse_file_info *fi ++#endif ++){ + samba_fd fd; + ++#if FUSE_USE_VERSION > 29 ++ if (fi != NULL) ++ return function_ftruncate(path, size, fi); ++#endif + DPRINTF(5, "(%s, %lld)\n", path, (long long) size); + if (size < 0) return -EINVAL; +@@ -602,8 +665,14 @@ + .rmdir = function_rmdir, + .getattr = function_stat, ++#if FUSE_USE_VERSION < 30 + .fgetattr = function_fstat, + .ftruncate = function_ftruncate, ++#endif + .chmod = function_chmod, ++#if FUSE_USE_VERSION < 30 + .utime = function_utimes, ++#else ++ .utimens = function_utimens, ++#endif + .setxattr = function_setxattr, + .getxattr = function_getxattr, diff --git a/filesystems/smbnetfs/files/pkg-message.in b/filesystems/smbnetfs/files/pkg-message.in new file mode 100644 index 000000000000..0fcdc867d05a --- /dev/null +++ b/filesystems/smbnetfs/files/pkg-message.in @@ -0,0 +1,33 @@ +[ +{ type: install + message: <<EOM +===> Basic Instructions: + +Load fusefs: + # kldload fusefs + +To load fusefs at boot time, add it to rc.conf: + # sysrc kld_list+=fusefs + +After fusefs is loaded, and setting + # sysctl vfs.usermount=1 + +you should make .smb directory in your homedir: + % mkdir ~/.smb + +Copy your smb.conf (usually in %%PREFIX%%/etc/) and +%%DOCSDIR%%/smbnetfs.conf to this directory: + % cp %%PREFIX%%/etc/smb.conf %%DOCSDIR%%/smbnetfs.conf ~/.smb/ + +Make mountpoint for smb network and mount it: + % mkdir ~/mountpoint + % smbnetfs ~/mountpoint + +Now you can get access to smb shares in your network, for example: + % cd ~/mountpoint/ip-addr + +XXX Note, use of Gnome keyring was replaced in version 0.6.1 with +XXX libsecret, which this port does not enable by default. +EOM +} +] diff --git a/filesystems/smbnetfs/pkg-descr b/filesystems/smbnetfs/pkg-descr new file mode 100644 index 000000000000..b8083d7ddc58 --- /dev/null +++ b/filesystems/smbnetfs/pkg-descr @@ -0,0 +1,18 @@ +SMBNetFS is a filesystem that allow you to use samba/microsoft network +in the same manner as the network neighborhood in Microsoft Windows. + +Featuries: + * you can use Samba/Microsoft network as a regular Unix filesystem + * workgroup/computer/share entries are dynamically created + * Windows domain supported + * kerberos support (New) + * user defined workgroup/link/hosts are supported + * national character supported + * in config files you can specify different user/password to access + different network shares + * you can access any computer in the world by "cd mountpoint/ip-addr" + command, where "ip-addr" is the IP address of the desired computer. Do + not warry that there is no file with such name :-) + * command "cd mountpoint/username:password@computer_or_ip" allows + you to access "computer_or_ip" as user "username" with password + "password" (this is insecure, but usefull) diff --git a/filesystems/smbnetfs/pkg-plist b/filesystems/smbnetfs/pkg-plist new file mode 100644 index 000000000000..655ee52c5eb8 --- /dev/null +++ b/filesystems/smbnetfs/pkg-plist @@ -0,0 +1,5 @@ +bin/smbnetfs +%%PORTDOCS%%%%DOCSDIR%%/INSTALL +%%PORTDOCS%%%%DOCSDIR%%/ENGLISH.FAQ +%%PORTDOCS%%%%DOCSDIR%%/RUSSIAN.FAQ +%%PORTDOCS%%%%DOCSDIR%%/smbnetfs.conf diff --git a/filesystems/sqlfs/Makefile b/filesystems/sqlfs/Makefile new file mode 100644 index 000000000000..820783f9370f --- /dev/null +++ b/filesystems/sqlfs/Makefile @@ -0,0 +1,41 @@ +PORTNAME= sqlfs +PORTVERSION= 1.1 +PORTREVISION= 1 +PORTEPOCH= 1 +CATEGORIES= filesystems +MASTER_SITES= SAVANNAH/libsqlfs +PKGNAMEPREFIX= fusefs- +DISTNAME= lib${PORTNAME}-${PORTVERSION} + +MAINTAINER= ports@FreeBSD.org +COMMENT= SQLite backed FUSE file system +WWW= https://www.nongnu.org/libsqlfs/ + +LICENSE= LGPL21+ +LICENSE_FILE= ${WRKSRC}/COPYING + +DEPRECATED= Abandoned upstream, superseded by forks +EXPIRATION_DATE=2024-12-31 + +USES= fuse sqlite + +PORTDOCS= README +PLIST_FILES= bin/sqlfs + +OPTIONS_DEFINE= DOCS + +do-build: + (cd ${WRKSRC} && ${CC} -DFUSE -DFUSE_USE_VERSION=25 \ + -D_FILE_OFFSET_BITS=64 -D_REENTRANT ${CFLAGS} \ + -I. -I${LOCALBASE}/include -L${LOCALBASE}/lib \ + -lfuse -lsqlite${SQLITE_VER} sqlfs.c fuse_main.c \ + -o sqlfs) + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/sqlfs ${STAGEDIR}${PREFIX}/bin + +do-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${PORTDOCS:S,^,${WRKSRC}/,} ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.mk> diff --git a/filesystems/sqlfs/distinfo b/filesystems/sqlfs/distinfo new file mode 100644 index 000000000000..dea05271c448 --- /dev/null +++ b/filesystems/sqlfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905177 +SHA256 (libsqlfs-1.1.tar.gz) = 0ca70ae5f6153186e54931365bb4932a29c96be3e39aa9a981d838b53f3705ff +SIZE (libsqlfs-1.1.tar.gz) = 329744 diff --git a/filesystems/sqlfs/files/patch-fuse_main.c b/filesystems/sqlfs/files/patch-fuse_main.c new file mode 100644 index 000000000000..2e9fff3146e2 --- /dev/null +++ b/filesystems/sqlfs/files/patch-fuse_main.c @@ -0,0 +1,65 @@ +--- fuse_main.c.orig 2006-10-25 15:28:26 UTC ++++ fuse_main.c +@@ -17,12 +17,60 @@ Foundation, Inc., 51 Franklin Street, Fi + + *****************************************************************************/ + ++#include <stdlib.h> ++#include <stdio.h> ++#include <sysexits.h> + #include "sqlfs.h" + ++void usage() __dead2; ++ ++void usage() ++{ ++ fprintf(stderr, "Usage: %s -o dbname [-h] dir\n", getprogname()); ++ ++ exit(EX_USAGE); ++} + + int main(int argc, char **argv) + { +- sqlfs_init("/tmp/fsdata"); ++ char c; ++ int ret; ++ char *dbname = NULL; ++ char *args[2]; ++ char *prog = argv[0]; ++ ++ while ((c = getopt(argc, argv, "o:h")) != -1) ++ switch (c) { ++ case 'o': ++ dbname = strdup(optarg); ++ break; ++ case 'h': ++ /* FALLTHROUGH */ ++ default: ++ usage(); ++ /* NOTREACHED */ ++ } ++ argc -= optind; ++ argv += optind; ++ ++ if (dbname == NULL) { ++ dbname = getenv("SQLFS_DBNAME"); ++ } ++ ++ if (dbname == NULL || argc < 1) ++ usage(); ++ /* NOTREACHED */ ++ ++ ret = sqlfs_init(dbname); ++ if (ret != 0) ++ return ret; ++ ++ fprintf(stderr, "init\n"); ++ ++ args[0] = strdup(getprogname()); ++ args[1] = strdup(argv[0]); + +- return sqlfs_fuse_main(argc, argv); ++ ret = sqlfs_fuse_main(2, args); ++ ++ return ret; + } diff --git a/filesystems/sqlfs/pkg-descr b/filesystems/sqlfs/pkg-descr new file mode 100644 index 000000000000..378379443d03 --- /dev/null +++ b/filesystems/sqlfs/pkg-descr @@ -0,0 +1,6 @@ +The sqlfs filesystem implements a POSIX style file system on top of an SQLite +database. It allows applications to have access to a full read/write +file system in a single file, complete with its own file hierarchy and name +space. This is useful for applications which needs structured storage, such +as embedding documents within documents, or management of configuration +data or preferences. diff --git a/filesystems/sqlfs/pkg-message b/filesystems/sqlfs/pkg-message new file mode 100644 index 000000000000..7d5fccea8529 --- /dev/null +++ b/filesystems/sqlfs/pkg-message @@ -0,0 +1,13 @@ +[ +{ type: install + message: <<EOM +Now sqlfs filesystem is installed. +You can mount it by issuing +% sqlfs -o /path/to/sqlite/database /path/to/mountpoint + +Alternatively you can supply database name via SQLFS_DBNAME env variable + +For additional information see supplied documentation. +EOM +} +] diff --git a/filesystems/squashfs-tools-ng/Makefile b/filesystems/squashfs-tools-ng/Makefile new file mode 100644 index 000000000000..c2b6818c66d2 --- /dev/null +++ b/filesystems/squashfs-tools-ng/Makefile @@ -0,0 +1,43 @@ +PORTNAME= squashfs-tools-ng +PORTVERSION= 1.3.2 +CATEGORIES= filesystems sysutils +MASTER_SITES= https://infraroot.at/pub/squashfs/ + +MAINTAINER= danfe@FreeBSD.org +COMMENT= New set of tools and libraries to work with SquashFS images +WWW= https://infraroot.at/projects/squashfs-tools-ng/ + +LICENSE= GPLv3+ LGPL3+ +LICENSE_COMB= dual +LICENSE_FILE= ${WRKSRC}/COPYING.md + +USES= libtool pkgconfig tar:xz +GNU_CONFIGURE= yes +USE_LDCONFIG= yes +INSTALL_TARGET= install-strip +TEST_TARGET= check + +OPTIONS_DEFINE= DOCS LZ4 LZO TOOLS ZSTD +OPTIONS_DEFAULT= LZ4 LZO TOOLS ZSTD +OPTIONS_SUB= yes +TOOLS_DESC= Build the tools, not just the library + +LZ4_LIB_DEPENDS= liblz4.so:archivers/liblz4 +LZ4_CONFIGURE_OFF= --without-lz4 + +LZO_LIB_DEPENDS= liblzo2.so:archivers/lzo2 +LZO_CONFIGURE_ENV= LZO_CFLAGS="-I${LOCALBASE}/include" \ + LZO_LIBS="-L${LOCALBASE}/lib -llzo2" +LZO_CONFIGURE_OFF= --without-lzo + +TOOLS_CONFIGURE_OFF= --without-tools + +ZSTD_LIB_DEPENDS= libzstd.so:archivers/zstd +ZSTD_CONFIGURE_OFF= --without-zstd + +post-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/CHANGELOG.md ${WRKSRC}/README.md \ + ${WRKSRC}/doc/* ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.mk> diff --git a/filesystems/squashfs-tools-ng/distinfo b/filesystems/squashfs-tools-ng/distinfo new file mode 100644 index 000000000000..e39b6384c88e --- /dev/null +++ b/filesystems/squashfs-tools-ng/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1727359852 +SHA256 (squashfs-tools-ng-1.3.2.tar.xz) = 0d907ac3e735c351e47c867fb51d94bffa3b05fb95bec01f31e848b7c44215a9 +SIZE (squashfs-tools-ng-1.3.2.tar.xz) = 585380 diff --git a/filesystems/squashfs-tools-ng/pkg-descr b/filesystems/squashfs-tools-ng/pkg-descr new file mode 100644 index 000000000000..e11c2c62ff02 --- /dev/null +++ b/filesystems/squashfs-tools-ng/pkg-descr @@ -0,0 +1,19 @@ +SquashFS is a highly compressed, read-only file system often used as +a root file system on embedded devices, live systems, or simply as a +compressed archive format. + +This project originally started out as a fork of squashfs-tools 4.3, +after encountering some short comings and realizing that there have +been no updates on the SourceForge site or mailing list for a long +time. Even before the first public release, the fork was replaced +with a complete re-write after growing frustrated with the existing +code base. + +The utilities provided by squashfs-tools-ng offer alternative tooling +and are intentionally named differently, so both packages can be +installed side by side. + +The actual guts of squashfs-tools-ng are encapsulated in a library +with a generic API designed to make SquashFS available to other +applications as an embeddable, extensible archive format (or simply +to read, write, or manipulate SquashFS file systems). diff --git a/filesystems/squashfs-tools-ng/pkg-plist b/filesystems/squashfs-tools-ng/pkg-plist new file mode 100644 index 000000000000..c45f36f07a70 --- /dev/null +++ b/filesystems/squashfs-tools-ng/pkg-plist @@ -0,0 +1,44 @@ +%%TOOLS%%bin/gensquashfs +%%TOOLS%%bin/rdsquashfs +%%TOOLS%%bin/sqfs2tar +%%TOOLS%%bin/sqfsdiff +%%TOOLS%%bin/tar2sqfs +include/sqfs/block.h +include/sqfs/block_processor.h +include/sqfs/block_writer.h +include/sqfs/compressor.h +include/sqfs/data_reader.h +include/sqfs/dir.h +include/sqfs/dir_reader.h +include/sqfs/dir_writer.h +include/sqfs/error.h +include/sqfs/frag_table.h +include/sqfs/id_table.h +include/sqfs/inode.h +include/sqfs/io.h +include/sqfs/meta_reader.h +include/sqfs/meta_writer.h +include/sqfs/predef.h +include/sqfs/super.h +include/sqfs/table.h +include/sqfs/xattr.h +include/sqfs/xattr_reader.h +include/sqfs/xattr_writer.h +lib/libsquashfs.a +lib/libsquashfs.so +lib/libsquashfs.so.1 +lib/libsquashfs.so.1.4.1 +libdata/pkgconfig/libsquashfs1.pc +%%PORTDOCS%%%%DOCSDIR%%/CHANGELOG.md +%%PORTDOCS%%%%DOCSDIR%%/README.md +%%PORTDOCS%%%%DOCSDIR%%/architecture.md +%%PORTDOCS%%%%DOCSDIR%%/benchmark.ods +%%PORTDOCS%%%%DOCSDIR%%/benchmark.txt +%%PORTDOCS%%%%DOCSDIR%%/format.adoc +%%PORTDOCS%%%%DOCSDIR%%/mainpage.dox +%%PORTDOCS%%%%DOCSDIR%%/parallelism.txt +%%TOOLS%%share/man/man1/gensquashfs.1.gz +%%TOOLS%%share/man/man1/rdsquashfs.1.gz +%%TOOLS%%share/man/man1/sqfs2tar.1.gz +%%TOOLS%%share/man/man1/sqfsdiff.1.gz +%%TOOLS%%share/man/man1/tar2sqfs.1.gz diff --git a/filesystems/squashfs-tools/Makefile b/filesystems/squashfs-tools/Makefile new file mode 100644 index 000000000000..d7a8a1105688 --- /dev/null +++ b/filesystems/squashfs-tools/Makefile @@ -0,0 +1,66 @@ +PORTNAME= squashfs-tools +PORTVERSION= 4.6.1 +PORTREVISION= 1 +CATEGORIES= filesystems sysutils +MASTER_SITES= SF/squashfs/squashfs/squashfs${PORTVERSION} +DISTFILES= squashfs${PORTVERSION}${EXTRACT_SUFX} + +MAINTAINER= danfe@FreeBSD.org +COMMENT= Set of tools to manipulate squashfs images +WWW= https://squashfs.sourceforge.net/ + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/../COPYING + +BUILD_DEPENDS= gsed:textproc/gsed help2man:misc/help2man + +USES= alias cpe gmake + +MAKE_ARGS= INSTALL_MANPAGES_DIR=${PREFIX}/share/man/man1 + +BINARY_ALIAS= sed=gsed + +PLIST_FILES= bin/mksquashfs bin/sqfscat bin/sqfstar bin/unsquashfs \ + share/man/man1/mksquashfs.1.gz share/man/man1/sqfscat.1.gz \ + share/man/man1/sqfstar.1.gz share/man/man1/unsquashfs.1.gz + +OPTIONS_DEFINE= DOCS LZ4 LZMA LZO XZ ZSTD +OPTIONS_DEFAULT= LZ4 LZMA LZO XZ ZSTD +LZMA_DESC= LZMA1 compression support (obsolete) +XZ_DESC= XZ (LZMA2) compression support + +WRKSRC= ${WRKDIR}/${DISTNAME}/squashfs-tools + +CPE_PRODUCT= squashfs +CPE_VENDOR= squashfs_project + +PORTDOCS= ACKNOWLEDGEMENTS ACTIONS-README CHANGES \ + README-${PORTVERSION} TECHNICAL-INFO USAGE-* \ + pseudo-file.example + +LZ4_LIB_DEPENDS= liblz4.so:archivers/liblz4 +LZ4_MAKE_ARGS= LZ4_SUPPORT=1 + +LZMA_MASTER_SITES= SF/sevenzip/LZMA%20SDK/:lzma +LZMA_DISTFILES= lzma922.tar.bz2:lzma +LZMA_MAKE_ARGS= LZMA_SUPPORT=1 LZMA_DIR=${WRKDIR} EXTRA_CFLAGS=-D_7ZIP_ST + +LZO_LIB_DEPENDS= liblzo2.so:archivers/lzo2 +LZO_MAKE_ARGS= LZO_SUPPORT=1 LZO_LIBDIR=-L${LOCALBASE}/lib + +XZ_MAKE_ARGS= XZ_SUPPORT=1 + +ZSTD_LIB_DEPENDS= libzstd.so:archivers/zstd +ZSTD_MAKE_ARGS= ZSTD_SUPPORT=1 + +post-patch: + @${REINPLACE_CMD} -e '/^#include "squashfs_fs\.h"/ { x; \ + s,^,typedef struct __sFILE FILE;,; G; }' \ + ${WRKSRC}/lzma_wrapper.c + +post-install: + @${LN} -f ${WRKSRC:H}/examples/pseudo-file.example ${WRKSRC:H} + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC:H}/|} ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.mk> diff --git a/filesystems/squashfs-tools/distinfo b/filesystems/squashfs-tools/distinfo new file mode 100644 index 000000000000..4747eff52625 --- /dev/null +++ b/filesystems/squashfs-tools/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1679779447 +SHA256 (squashfs4.6.1.tar.gz) = 94201754b36121a9f022a190c75f718441df15402df32c2b520ca331a107511c +SIZE (squashfs4.6.1.tar.gz) = 286848 +SHA256 (lzma922.tar.bz2) = 9aade84f229fb25f7aef39d8866b375fe6d35a9e18098d7cd86a99e294902944 +SIZE (lzma922.tar.bz2) = 546148 diff --git a/filesystems/squashfs-tools/files/patch-Makefile b/filesystems/squashfs-tools/files/patch-Makefile new file mode 100644 index 000000000000..cb729b5d2dc4 --- /dev/null +++ b/filesystems/squashfs-tools/files/patch-Makefile @@ -0,0 +1,75 @@ +--- Makefile.orig 2022-03-17 19:32:02 UTC ++++ Makefile +@@ -101,7 +101,7 @@ COMP_DEFAULT = gzip + # If your C library or build/target environment doesn't support XATTRs then + # comment out the next line to build Mksquashfs and Unsquashfs without XATTR + # support +-XATTR_SUPPORT = 1 ++# XATTR_SUPPORT = 1 + + # Select whether you wish xattrs to be stored by Mksquashfs and extracted + # by Unsquashfs by default. If selected users can disable xattr support by +@@ -109,7 +109,7 @@ XATTR_SUPPORT = 1 + # + # If unselected, Mksquashfs/Unsquashfs won't store and extract xattrs by + # default. Users can enable xattrs by using the -xattrs option. +-XATTR_DEFAULT = 1 ++# XATTR_DEFAULT = 1 + + + ############################################### +@@ -177,7 +177,7 @@ UNSQUASHFS_OBJS = unsquashfs.o unsquash-1.o unsquash-2 + + CFLAGS ?= -O2 + CFLAGS += $(EXTRA_CFLAGS) $(INCLUDEDIR) -D_FILE_OFFSET_BITS=64 \ +- -D_LARGEFILE_SOURCE -D_GNU_SOURCE -DCOMP_DEFAULT=\"$(COMP_DEFAULT)\" \ ++ -D_LARGEFILE_SOURCE -DFNM_EXTMATCH=0 -D_GNU_SOURCE -DCOMP_DEFAULT=\"$(COMP_DEFAULT)\" \ + -Wall + + LIBS = -lpthread -lm +@@ -217,6 +217,7 @@ endif + + ifeq ($(LZO_SUPPORT),1) + CFLAGS += -DLZO_SUPPORT ++INCLUDEDIR += -I$(LOCALBASE)/include + MKSQUASHFS_OBJS += lzo_wrapper.o + UNSQUASHFS_OBJS += lzo_wrapper.o + LIBS += -llzo2 +@@ -225,17 +226,19 @@ endif + + ifeq ($(LZ4_SUPPORT),1) + CFLAGS += -DLZ4_SUPPORT ++INCLUDEDIR += -I$(LOCALBASE)/include + MKSQUASHFS_OBJS += lz4_wrapper.o + UNSQUASHFS_OBJS += lz4_wrapper.o +-LIBS += -llz4 ++LIBS += -L$(LOCALBASE)/lib -llz4 + COMPRESSORS += lz4 + endif + + ifeq ($(ZSTD_SUPPORT),1) + CFLAGS += -DZSTD_SUPPORT ++INCLUDEDIR += -I$(LOCALBASE)/include + MKSQUASHFS_OBJS += zstd_wrapper.o + UNSQUASHFS_OBJS += zstd_wrapper.o +-LIBS += -lzstd ++LIBS += -L$(LOCALBASE)/lib -lzstd + COMPRESSORS += zstd + endif + +@@ -417,9 +420,9 @@ clean: + + .PHONY: install + install: mksquashfs unsquashfs +- mkdir -p $(INSTALL_DIR) +- cp mksquashfs $(INSTALL_DIR) +- cp unsquashfs $(INSTALL_DIR) +- ln -fs unsquashfs $(INSTALL_DIR)/sqfscat +- ln -fs mksquashfs $(INSTALL_DIR)/sqfstar +- ../generate-manpages/install-manpages.sh $(shell pwd)/.. "$(INSTALL_MANPAGES_DIR)" "$(USE_PREBUILT_MANPAGES)" ++ mkdir -p $(DESTDIR)$(PREFIX)/bin ++ $(BSD_INSTALL_PROGRAM) mksquashfs $(DESTDIR)$(PREFIX)/bin ++ $(BSD_INSTALL_PROGRAM) unsquashfs $(DESTDIR)$(PREFIX)/bin ++ ln -fs unsquashfs $(DESTDIR)$(INSTALL_DIR)/sqfscat ++ ln -fs mksquashfs $(DESTDIR)$(INSTALL_DIR)/sqfstar ++ ../generate-manpages/install-manpages.sh $(shell pwd)/.. "$(DESTDIR)$(INSTALL_MANPAGES_DIR)" "$(USE_PREBUILT_MANPAGES)" diff --git a/filesystems/squashfs-tools/files/patch-action.c b/filesystems/squashfs-tools/files/patch-action.c new file mode 100644 index 000000000000..2c07b6980c84 --- /dev/null +++ b/filesystems/squashfs-tools/files/patch-action.c @@ -0,0 +1,17 @@ +Hack for lack of strdupa() in BSD libc + +--- action.c.orig 2014-05-10 04:54:13 UTC ++++ action.c +@@ -44,6 +44,12 @@ + #include "action.h" + #include "error.h" + ++#ifndef strdupa ++#include <string.h> // required for str*() ++#include <stdlib.h> // required for alloca ++#define strdupa(foo) (strncpy( alloca( strlen(foo) + 1 ), foo, strlen( foo ) + 1 )) ++#endif ++ + /* + * code to parse actions + */ diff --git a/filesystems/squashfs-tools/files/patch-pseudo.c b/filesystems/squashfs-tools/files/patch-pseudo.c new file mode 100644 index 000000000000..3639ca3e0c1a --- /dev/null +++ b/filesystems/squashfs-tools/files/patch-pseudo.c @@ -0,0 +1,13 @@ +--- pseudo.c.orig 2014-05-10 04:54:13 UTC ++++ pseudo.c +@@ -34,6 +34,10 @@ + #include <sys/wait.h> + #include <ctype.h> + ++#ifdef __FreeBSD__ ++#include <sys/stat.h> ++#endif ++ + #include "pseudo.h" + #include "error.h" + #include "progressbar.h" diff --git a/filesystems/squashfs-tools/pkg-descr b/filesystems/squashfs-tools/pkg-descr new file mode 100644 index 000000000000..af37d38d07e0 --- /dev/null +++ b/filesystems/squashfs-tools/pkg-descr @@ -0,0 +1,8 @@ +Squashfs is a compressed read-only filesystem for Linux. Squashfs is +intended for general read-only filesystem use, for archival use (i.e. +in cases where a .tar.gz file may be used), and in constrained block +device/memory systems (e.g. embedded systems) where low overhead is +needed. The filesystem is currently stable, and has been tested on +PowerPC, i586, Sparc and ARM architectures. + +squashfs-tools are the set of tools to manipulate squashfs images. diff --git a/filesystems/squashfuse/Makefile b/filesystems/squashfuse/Makefile new file mode 100644 index 000000000000..e79c6b87eb82 --- /dev/null +++ b/filesystems/squashfuse/Makefile @@ -0,0 +1,29 @@ +PORTNAME= squashfuse +DISTVERSION= 0.5.2 +PORTREVISION= 1 +CATEGORIES= filesystems +MASTER_SITES= https://github.com/vasi/${PORTNAME}/releases/download/${DISTVERSION}/ +PKGNAMEPREFIX= fusefs- + +MAINTAINER= jsmith@resonatingmedia.com +COMMENT= Mount a squashfs archive and treat it like a local file system +WWW= https://github.com/vasi/squashfuse + +LICENSE= BSD2CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE + +LIB_DEPENDS= liblzo2.so:archivers/lzo2 \ + liblz4.so:archivers/liblz4 \ + libzstd.so:archivers/zstd + +USES= fuse:3 libtool localbase:ldflags pkgconfig +USE_LDCONFIG= yes + +GNU_CONFIGURE= yes + +INSTALL_TARGET= install-strip + +CONFIGURE_ARGS= --disable-static \ + --with-pkgconfigdir=${PREFIX}/libdata/pkgconfig + +.include <bsd.port.mk> diff --git a/filesystems/squashfuse/distinfo b/filesystems/squashfuse/distinfo new file mode 100644 index 000000000000..430954dba40e --- /dev/null +++ b/filesystems/squashfuse/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730016280 +SHA256 (squashfuse-0.5.2.tar.gz) = 54e4baaa20796e86a214a1f62bab07c7c361fb7a598375576d585712691178f5 +SIZE (squashfuse-0.5.2.tar.gz) = 438619 diff --git a/filesystems/squashfuse/pkg-descr b/filesystems/squashfuse/pkg-descr new file mode 100644 index 000000000000..df92832d0777 --- /dev/null +++ b/filesystems/squashfuse/pkg-descr @@ -0,0 +1,2 @@ +Squashfuse is a command line utility for mounting SquashFS archives +in user-space. It supports almost all features of the SquashFS format. diff --git a/filesystems/squashfuse/pkg-plist b/filesystems/squashfuse/pkg-plist new file mode 100644 index 000000000000..c895195a0a6c --- /dev/null +++ b/filesystems/squashfuse/pkg-plist @@ -0,0 +1,27 @@ +bin/squashfuse +bin/squashfuse_ll +include/squashfuse/cache.h +include/squashfuse/common.h +include/squashfuse/config.h +include/squashfuse/decompress.h +include/squashfuse/dir.h +include/squashfuse/file.h +include/squashfuse/fs.h +include/squashfuse/ll.h +include/squashfuse/squashfs_fs.h +include/squashfuse/squashfuse.h +include/squashfuse/stack.h +include/squashfuse/table.h +include/squashfuse/traverse.h +include/squashfuse/util.h +include/squashfuse/xattr.h +lib/libsquashfuse.so +lib/libsquashfuse.so.0 +lib/libsquashfuse.so.0.0.0 +lib/libsquashfuse_ll.so +lib/libsquashfuse_ll.so.0 +lib/libsquashfuse_ll.so.0.0.0 +libdata/pkgconfig/squashfuse.pc +libdata/pkgconfig/squashfuse_ll.pc +share/man/man1/squashfuse.1.gz +share/man/man1/squashfuse_ll.1.gz diff --git a/filesystems/sshfs/Makefile b/filesystems/sshfs/Makefile new file mode 100644 index 000000000000..6dd076551ea4 --- /dev/null +++ b/filesystems/sshfs/Makefile @@ -0,0 +1,32 @@ +PORTNAME= sshfs +PORTVERSION= 3.7.3 +PORTREVISION= 2 +DISTVERSIONPREFIX= ${PORTNAME}- +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- + +PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/ +PATCHFILES+= a73501f2159875aef082ab0a61731a8b7673d477.patch:-p1 # https://github.com/libfuse/sshfs/pull/212 + +MAINTAINER= bofh@FreeBSD.org +COMMENT= Mount remote directories over ssh +WWW= https://github.com/libfuse/sshfs + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +USES= compiler:c11 fuse:3 gnome meson pkgconfig +USE_GITHUB= yes +GH_ACCOUNT= libfuse +USE_GNOME= glib20 + +CFLAGS+= -DNDEBUG + +PLIST_FILES= bin/sshfs + +OPTIONS_DEFINE= DOCS + +DOCS_BUILD_DEPENDS= rst2man:textproc/py-docutils +DOCS_PLIST_FILES= share/man/man1/sshfs.1.gz + +.include <bsd.port.mk> diff --git a/filesystems/sshfs/distinfo b/filesystems/sshfs/distinfo new file mode 100644 index 000000000000..10d8cf33b962 --- /dev/null +++ b/filesystems/sshfs/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1655312051 +SHA256 (libfuse-sshfs-sshfs-3.7.3_GH0.tar.gz) = 52a1a1e017859dfe72a550e6fef8ad4f8703ce312ae165f74b579fd7344e3a26 +SIZE (libfuse-sshfs-sshfs-3.7.3_GH0.tar.gz) = 63968 +SHA256 (a73501f2159875aef082ab0a61731a8b7673d477.patch) = ef0fc2d7d292eb1bef4c2c63d0f5c1be00f29f9f4360cefe27fed70f69a31d10 +SIZE (a73501f2159875aef082ab0a61731a8b7673d477.patch) = 3032 diff --git a/filesystems/sshfs/files/patch-meson.build b/filesystems/sshfs/files/patch-meson.build new file mode 100644 index 000000000000..34209e1f6504 --- /dev/null +++ b/filesystems/sshfs/files/patch-meson.build @@ -0,0 +1,27 @@ +--- meson.build.orig 2018-12-22 14:33:52 UTC ++++ meson.build +@@ -19,12 +19,7 @@ int main(void) { + (void) get_4(); + return 0; + }''' +-if not cc.compiles(code, args: [ '-O0', '-Werror=unused-result' ]) +- message('Compiler warns about unused result even when casting to void') +- add_global_arguments('-Wno-unused-result', language: 'c') +-endif + +- + rst2man = find_program('rst2man', 'rst2man.py', required: false) + + cfg = configuration_data() +@@ -62,11 +57,6 @@ if rst2man.found() + else + message('rst2man not found, not building manual page.') + endif +- +-meson.add_install_script('utils/install_helper.sh', +- get_option('sbindir'), +- get_option('bindir')) +- + + subdir('test') + diff --git a/filesystems/sshfs/pkg-descr b/filesystems/sshfs/pkg-descr new file mode 100644 index 000000000000..91ee403527c4 --- /dev/null +++ b/filesystems/sshfs/pkg-descr @@ -0,0 +1 @@ +SSHFS allows you to mount a remote directory over a normal ssh connection. diff --git a/filesystems/sshfs/pkg-message b/filesystems/sshfs/pkg-message new file mode 100644 index 000000000000..187edabe7faf --- /dev/null +++ b/filesystems/sshfs/pkg-message @@ -0,0 +1,26 @@ +[ +{ type: install + message: <<EOM +Basic Instructions: +There are three ways to do this: + +1) +% sshfs -o idmap=user username@example.org: /path/to/mount/point + +or + +2) +% mount_fusefs auto /path/to/mount/point sshfs -o idmap=user \ + username@example.org: + +or + +3) +% env FUSE_DEV_NAME=/dev/fuse0 sshfs -o idmap=user \ + username@example.org: +% mount_fusefs /dev/fuse0 /path/to/mount/point + +For further options see ``sshfs -h''. +EOM +} +] diff --git a/filesystems/tclvfs/Makefile b/filesystems/tclvfs/Makefile new file mode 100644 index 000000000000..192f2df2af56 --- /dev/null +++ b/filesystems/tclvfs/Makefile @@ -0,0 +1,18 @@ +PORTNAME= tclvfs +PORTVERSION= 20080503 +PORTREVISION= 1 +CATEGORIES= filesystems devel +MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${PORTNAME}-${PORTVERSION}/ + +MAINTAINER= tcltk@FreeBSD.org +COMMENT= Tcl VirtualFileSystem layer +WWW= https://sourceforge.net/projects/tclvfs/ + +LIB_DEPENDS= libTrf2.1.4.so:devel/tcl-trf + +USES+= gmake tcl:tea +TCL_PKG= vfs1.3 + +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share + +.include <bsd.port.mk> diff --git a/filesystems/tclvfs/distinfo b/filesystems/tclvfs/distinfo new file mode 100644 index 000000000000..2ec546790727 --- /dev/null +++ b/filesystems/tclvfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905188 +SHA256 (tclvfs-20080503.tar.gz) = 0d90362078c8f59347b14be377e9306336b6d25d147397f845e705a6fa1d38f2 +SIZE (tclvfs-20080503.tar.gz) = 258723 diff --git a/filesystems/tclvfs/files/patch-Makefile.in b/filesystems/tclvfs/files/patch-Makefile.in new file mode 100644 index 000000000000..f14d9d60f5a4 --- /dev/null +++ b/filesystems/tclvfs/files/patch-Makefile.in @@ -0,0 +1,12 @@ +--- Makefile.in.orig 2013-04-30 12:23:15.000000000 +0200 ++++ Makefile.in 2013-04-30 12:23:54.000000000 +0200 +@@ -256,7 +256,8 @@ + + VPATH = $(srcdir)/generic:$(srcdir)/unix:$(srcdir)/win + +-.c.@OBJEXT@: ++ ++vfs.@OBJEXT@: $(srcdir)/generic/vfs.c + $(COMPILE) -c `@CYGPATH@ $<` -o $@ + + #======================================================================== diff --git a/filesystems/tclvfs/files/patch-generic_vfs.c b/filesystems/tclvfs/files/patch-generic_vfs.c new file mode 100644 index 000000000000..1c52b734021d --- /dev/null +++ b/filesystems/tclvfs/files/patch-generic_vfs.c @@ -0,0 +1,14 @@ +--- generic/vfs.c.orig 2006-08-30 21:38:03.000000000 +0200 ++++ generic/vfs.c 2013-09-24 10:26:34.000000000 +0200 +@@ -1656,7 +1656,10 @@ + return returnVal; + } + +-static CONST char** ++#ifndef CONST86 ++#define CONST86 ++#endif ++static CONST char*CONST86 * + VfsFileAttrStrings(pathPtr, objPtrRef) + Tcl_Obj* pathPtr; + Tcl_Obj** objPtrRef; diff --git a/filesystems/tclvfs/pkg-descr b/filesystems/tclvfs/pkg-descr new file mode 100644 index 000000000000..462b43010f65 --- /dev/null +++ b/filesystems/tclvfs/pkg-descr @@ -0,0 +1,4 @@ +The TclVfs project aims to provide an extension to the Tcl language which +allows Virtual Filesystems to be built using Tcl scripts only. It is also a +repository of such Tcl-implemented filesystems (metakit, zip, ftp, tar, http, +webdav, namespace, url) diff --git a/filesystems/tclvfs/pkg-plist b/filesystems/tclvfs/pkg-plist new file mode 100644 index 000000000000..1edebfbba711 --- /dev/null +++ b/filesystems/tclvfs/pkg-plist @@ -0,0 +1,28 @@ +lib/%%TCL_PKG%%/ftpvfs.tcl +lib/%%TCL_PKG%%/httpvfs.tcl +lib/%%TCL_PKG%%/lib%%TCL_PKG%%.so +lib/%%TCL_PKG%%/mk4vfs.tcl +lib/%%TCL_PKG%%/mk4vfscompat.tcl +lib/%%TCL_PKG%%/pkgIndex.tcl +lib/%%TCL_PKG%%/starkit.tcl +lib/%%TCL_PKG%%/tarvfs.tcl +lib/%%TCL_PKG%%/tclIndex +lib/%%TCL_PKG%%/tclprocvfs.tcl +lib/%%TCL_PKG%%/template/collatevfs.tcl +lib/%%TCL_PKG%%/template/deltavfs.tcl +lib/%%TCL_PKG%%/template/fishvfs.tcl +lib/%%TCL_PKG%%/template/globfind.tcl +lib/%%TCL_PKG%%/template/quotavfs.tcl +lib/%%TCL_PKG%%/template/tdelta.tcl +lib/%%TCL_PKG%%/template/templatevfs.tcl +lib/%%TCL_PKG%%/template/versionvfs.tcl +lib/%%TCL_PKG%%/testvfs.tcl +lib/%%TCL_PKG%%/tkvfs.tcl +lib/%%TCL_PKG%%/vfsUrl.tcl +lib/%%TCL_PKG%%/vfsUtils.tcl +lib/%%TCL_PKG%%/vfslib.tcl +lib/%%TCL_PKG%%/webdavvfs.tcl +lib/%%TCL_PKG%%/zipvfs.tcl +lib/%%TCL_PKG%%/zipvfscompat.tcl +share/man/mann/vfs.n.gz +share/man/mann/vfslib.n.gz diff --git a/filesystems/ufs/Makefile b/filesystems/ufs/Makefile new file mode 100644 index 000000000000..411c31af777c --- /dev/null +++ b/filesystems/ufs/Makefile @@ -0,0 +1,25 @@ +PORTNAME= ufs +DISTVERSION= 0.4.3 +CATEGORIES= filesystems sysutils +PKGNAMEPREFIX= fusefs- + +MAINTAINER= fuz@FreeBSD.org +COMMENT= FUSE driver for FreeBSD's UFSv2 +WWW= https://github.com/realchonk/fuse-ufs + +# dependencies are all MIT licensed +LICENSE= BSD2CLAUSE MIT +LICENSE_COMB= multi +LICENSE_FILE= ${WRKSRC}/LICENSE.md + +USES= cargo fuse:3 +USE_GITHUB= yes +GH_ACCOUNT= realchonk +GH_PROJECT= fuse-ufs +CARGO_INSTALL_PATH= fuse-ufs + +post-install: + ${INSTALL_MAN} ${WRKSRC}/docs/fuse-ufs.8 ${STAGEDIR}${PREFIX}/share/man/man8/ + ${LN} ${STAGEDIR}${PREFIX}/bin/fuse-ufs ${STAGEDIR}${PREFIX}/bin/mount.ufs + +.include <bsd.port.mk> diff --git a/filesystems/ufs/Makefile.crates b/filesystems/ufs/Makefile.crates new file mode 100644 index 000000000000..5753ed67fb60 --- /dev/null +++ b/filesystems/ufs/Makefile.crates @@ -0,0 +1,108 @@ +CARGO_CRATES= aho-corasick-1.1.3 \ + anstream-0.6.17 \ + anstyle-1.0.9 \ + anstyle-parse-0.2.6 \ + anstyle-query-1.1.2 \ + anstyle-wincon-3.0.6 \ + anyhow-1.0.91 \ + arbitrary-1.3.2 \ + assert_cmd-2.0.16 \ + bincode-2.0.0-rc.3 \ + bincode_derive-2.0.0-rc.3 \ + bindgen-0.70.1 \ + bitflags-2.6.0 \ + bstr-1.10.0 \ + byteorder-1.5.0 \ + cc-1.1.31 \ + cexpr-0.6.0 \ + cfg-if-1.0.0 \ + cfg_aliases-0.1.1 \ + clang-sys-1.8.1 \ + clap-4.5.20 \ + clap-verbosity-flag-2.2.2 \ + clap_builder-4.5.20 \ + clap_derive-4.5.18 \ + clap_lex-0.7.2 \ + colorchoice-1.0.3 \ + cstr-0.2.12 \ + daemonize-0.5.0 \ + difflib-0.4.0 \ + doc-comment-0.3.3 \ + either-1.13.0 \ + env_filter-0.1.2 \ + env_logger-0.11.5 \ + errno-0.3.9 \ + fastrand-2.1.1 \ + fuse2rs-0.0.2 \ + fuser-0.14.0 \ + getrandom-0.2.15 \ + glob-0.3.1 \ + heck-0.5.0 \ + humantime-2.1.0 \ + is_terminal_polyfill-1.70.1 \ + itertools-0.13.0 \ + jobserver-0.1.32 \ + lazy_static-1.5.0 \ + libc-0.2.161 \ + libfuzzer-sys-0.4.7 \ + libloading-0.8.5 \ + linux-raw-sys-0.4.14 \ + log-0.4.22 \ + memchr-2.7.4 \ + minimal-lexical-0.2.1 \ + nix-0.28.0 \ + nom-7.1.3 \ + once_cell-1.20.2 \ + page_size-0.6.0 \ + pkg-config-0.3.31 \ + ppv-lite86-0.2.20 \ + predicates-3.1.2 \ + predicates-core-1.0.8 \ + predicates-tree-1.0.11 \ + prettyplease-0.2.25 \ + proc-macro2-1.0.89 \ + quote-1.0.37 \ + rand-0.8.5 \ + rand_chacha-0.3.1 \ + rand_core-0.6.4 \ + regex-1.11.1 \ + regex-automata-0.4.8 \ + regex-syntax-0.8.5 \ + relative-path-1.9.3 \ + rstest-0.19.0 \ + rstest_macros-0.19.0 \ + rstest_reuse-0.7.0 \ + rustc-hash-1.1.0 \ + rustc_version-0.4.1 \ + rustix-0.38.37 \ + semver-1.0.23 \ + serde-1.0.213 \ + serde_derive-1.0.213 \ + shlex-1.3.0 \ + smallvec-1.13.2 \ + strsim-0.11.1 \ + syn-2.0.85 \ + tempfile-3.13.0 \ + termtree-0.4.1 \ + unicode-ident-1.0.13 \ + utf8parse-0.2.2 \ + virtue-0.0.13 \ + wait-timeout-0.2.0 \ + wasi-0.11.0+wasi-snapshot-preview1 \ + winapi-0.3.9 \ + winapi-i686-pc-windows-gnu-0.4.0 \ + winapi-x86_64-pc-windows-gnu-0.4.0 \ + windows-sys-0.52.0 \ + windows-sys-0.59.0 \ + windows-targets-0.52.6 \ + windows_aarch64_gnullvm-0.52.6 \ + windows_aarch64_msvc-0.52.6 \ + windows_i686_gnu-0.52.6 \ + windows_i686_gnullvm-0.52.6 \ + windows_i686_msvc-0.52.6 \ + windows_x86_64_gnu-0.52.6 \ + windows_x86_64_gnullvm-0.52.6 \ + windows_x86_64_msvc-0.52.6 \ + xattr-1.3.1 \ + zerocopy-0.7.35 \ + zerocopy-derive-0.7.35 diff --git a/filesystems/ufs/distinfo b/filesystems/ufs/distinfo new file mode 100644 index 000000000000..3551e171a522 --- /dev/null +++ b/filesystems/ufs/distinfo @@ -0,0 +1,219 @@ +TIMESTAMP = 1729861106 +SHA256 (rust/crates/aho-corasick-1.1.3.crate) = 8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916 +SIZE (rust/crates/aho-corasick-1.1.3.crate) = 183311 +SHA256 (rust/crates/anstream-0.6.17.crate) = 23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338 +SIZE (rust/crates/anstream-0.6.17.crate) = 29445 +SHA256 (rust/crates/anstyle-1.0.9.crate) = 8365de52b16c035ff4fcafe0092ba9390540e3e352870ac09933bebcaa2c8c56 +SIZE (rust/crates/anstyle-1.0.9.crate) = 15770 +SHA256 (rust/crates/anstyle-parse-0.2.6.crate) = 3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9 +SIZE (rust/crates/anstyle-parse-0.2.6.crate) = 22343 +SHA256 (rust/crates/anstyle-query-1.1.2.crate) = 79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c +SIZE (rust/crates/anstyle-query-1.1.2.crate) = 9969 +SHA256 (rust/crates/anstyle-wincon-3.0.6.crate) = 2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125 +SIZE (rust/crates/anstyle-wincon-3.0.6.crate) = 12271 +SHA256 (rust/crates/anyhow-1.0.91.crate) = c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8 +SIZE (rust/crates/anyhow-1.0.91.crate) = 47348 +SHA256 (rust/crates/arbitrary-1.3.2.crate) = 7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110 +SIZE (rust/crates/arbitrary-1.3.2.crate) = 32037 +SHA256 (rust/crates/assert_cmd-2.0.16.crate) = dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d +SIZE (rust/crates/assert_cmd-2.0.16.crate) = 26554 +SHA256 (rust/crates/bincode-2.0.0-rc.3.crate) = f11ea1a0346b94ef188834a65c068a03aec181c94896d481d7a0a40d85b0ce95 +SIZE (rust/crates/bincode-2.0.0-rc.3.crate) = 57746 +SHA256 (rust/crates/bincode_derive-2.0.0-rc.3.crate) = 7e30759b3b99a1b802a7a3aa21c85c3ded5c28e1c83170d82d70f08bbf7f3e4c +SIZE (rust/crates/bincode_derive-2.0.0-rc.3.crate) = 6335 +SHA256 (rust/crates/bindgen-0.70.1.crate) = f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f +SIZE (rust/crates/bindgen-0.70.1.crate) = 226363 +SHA256 (rust/crates/bitflags-2.6.0.crate) = b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de +SIZE (rust/crates/bitflags-2.6.0.crate) = 45357 +SHA256 (rust/crates/bstr-1.10.0.crate) = 40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c +SIZE (rust/crates/bstr-1.10.0.crate) = 380426 +SHA256 (rust/crates/byteorder-1.5.0.crate) = 1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b +SIZE (rust/crates/byteorder-1.5.0.crate) = 23288 +SHA256 (rust/crates/cc-1.1.31.crate) = c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f +SIZE (rust/crates/cc-1.1.31.crate) = 84637 +SHA256 (rust/crates/cexpr-0.6.0.crate) = 6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766 +SIZE (rust/crates/cexpr-0.6.0.crate) = 17966 +SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd +SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934 +SHA256 (rust/crates/cfg_aliases-0.1.1.crate) = fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e +SIZE (rust/crates/cfg_aliases-0.1.1.crate) = 6009 +SHA256 (rust/crates/clang-sys-1.8.1.crate) = 0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4 +SIZE (rust/crates/clang-sys-1.8.1.crate) = 44009 +SHA256 (rust/crates/clap-4.5.20.crate) = b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8 +SIZE (rust/crates/clap-4.5.20.crate) = 56376 +SHA256 (rust/crates/clap-verbosity-flag-2.2.2.crate) = e099138e1807662ff75e2cebe4ae2287add879245574489f9b1588eb5e5564ed +SIZE (rust/crates/clap-verbosity-flag-2.2.2.crate) = 13009 +SHA256 (rust/crates/clap_builder-4.5.20.crate) = 19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54 +SIZE (rust/crates/clap_builder-4.5.20.crate) = 163812 +SHA256 (rust/crates/clap_derive-4.5.18.crate) = 4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab +SIZE (rust/crates/clap_derive-4.5.18.crate) = 30131 +SHA256 (rust/crates/clap_lex-0.7.2.crate) = 1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97 +SIZE (rust/crates/clap_lex-0.7.2.crate) = 12805 +SHA256 (rust/crates/colorchoice-1.0.3.crate) = 5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990 +SIZE (rust/crates/colorchoice-1.0.3.crate) = 7923 +SHA256 (rust/crates/cstr-0.2.12.crate) = 68523903c8ae5aacfa32a0d9ae60cadeb764e1da14ee0d26b1f3089f13a54636 +SIZE (rust/crates/cstr-0.2.12.crate) = 6078 +SHA256 (rust/crates/daemonize-0.5.0.crate) = ab8bfdaacb3c887a54d41bdf48d3af8873b3f5566469f8ba21b92057509f116e +SIZE (rust/crates/daemonize-0.5.0.crate) = 7125 +SHA256 (rust/crates/difflib-0.4.0.crate) = 6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8 +SIZE (rust/crates/difflib-0.4.0.crate) = 7638 +SHA256 (rust/crates/doc-comment-0.3.3.crate) = fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10 +SIZE (rust/crates/doc-comment-0.3.3.crate) = 4123 +SHA256 (rust/crates/either-1.13.0.crate) = 60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0 +SIZE (rust/crates/either-1.13.0.crate) = 19169 +SHA256 (rust/crates/env_filter-0.1.2.crate) = 4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab +SIZE (rust/crates/env_filter-0.1.2.crate) = 13327 +SHA256 (rust/crates/env_logger-0.11.5.crate) = e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d +SIZE (rust/crates/env_logger-0.11.5.crate) = 30683 +SHA256 (rust/crates/errno-0.3.9.crate) = 534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba +SIZE (rust/crates/errno-0.3.9.crate) = 10690 +SHA256 (rust/crates/fastrand-2.1.1.crate) = e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6 +SIZE (rust/crates/fastrand-2.1.1.crate) = 14983 +SHA256 (rust/crates/fuse2rs-0.0.2.crate) = 8316e54f1a37c6c64ce2a0f6393c61cbedcc8456e3dc76a1b824f69060a47afd +SIZE (rust/crates/fuse2rs-0.0.2.crate) = 10252 +SHA256 (rust/crates/fuser-0.14.0.crate) = 2e697f6f62c20b6fad1ba0f84ae909f25971cf16e735273524e3977c94604cf8 +SIZE (rust/crates/fuser-0.14.0.crate) = 95109 +SHA256 (rust/crates/getrandom-0.2.15.crate) = c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7 +SIZE (rust/crates/getrandom-0.2.15.crate) = 37163 +SHA256 (rust/crates/glob-0.3.1.crate) = d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b +SIZE (rust/crates/glob-0.3.1.crate) = 18880 +SHA256 (rust/crates/heck-0.5.0.crate) = 2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea +SIZE (rust/crates/heck-0.5.0.crate) = 11517 +SHA256 (rust/crates/humantime-2.1.0.crate) = 9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4 +SIZE (rust/crates/humantime-2.1.0.crate) = 16749 +SHA256 (rust/crates/is_terminal_polyfill-1.70.1.crate) = 7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf +SIZE (rust/crates/is_terminal_polyfill-1.70.1.crate) = 7492 +SHA256 (rust/crates/itertools-0.13.0.crate) = 413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186 +SIZE (rust/crates/itertools-0.13.0.crate) = 146261 +SHA256 (rust/crates/jobserver-0.1.32.crate) = 48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0 +SIZE (rust/crates/jobserver-0.1.32.crate) = 27549 +SHA256 (rust/crates/lazy_static-1.5.0.crate) = bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe +SIZE (rust/crates/lazy_static-1.5.0.crate) = 14025 +SHA256 (rust/crates/libc-0.2.161.crate) = 8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1 +SIZE (rust/crates/libc-0.2.161.crate) = 765389 +SHA256 (rust/crates/libfuzzer-sys-0.4.7.crate) = a96cfd5557eb82f2b83fed4955246c988d331975a002961b07c81584d107e7f7 +SIZE (rust/crates/libfuzzer-sys-0.4.7.crate) = 128332 +SHA256 (rust/crates/libloading-0.8.5.crate) = 4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4 +SIZE (rust/crates/libloading-0.8.5.crate) = 28902 +SHA256 (rust/crates/linux-raw-sys-0.4.14.crate) = 78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89 +SIZE (rust/crates/linux-raw-sys-0.4.14.crate) = 1826665 +SHA256 (rust/crates/log-0.4.22.crate) = a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24 +SIZE (rust/crates/log-0.4.22.crate) = 44027 +SHA256 (rust/crates/memchr-2.7.4.crate) = 78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3 +SIZE (rust/crates/memchr-2.7.4.crate) = 96670 +SHA256 (rust/crates/minimal-lexical-0.2.1.crate) = 68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a +SIZE (rust/crates/minimal-lexical-0.2.1.crate) = 94841 +SHA256 (rust/crates/nix-0.28.0.crate) = ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4 +SIZE (rust/crates/nix-0.28.0.crate) = 311086 +SHA256 (rust/crates/nom-7.1.3.crate) = d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a +SIZE (rust/crates/nom-7.1.3.crate) = 117570 +SHA256 (rust/crates/once_cell-1.20.2.crate) = 1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775 +SIZE (rust/crates/once_cell-1.20.2.crate) = 33394 +SHA256 (rust/crates/page_size-0.6.0.crate) = 30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da +SIZE (rust/crates/page_size-0.6.0.crate) = 8479 +SHA256 (rust/crates/pkg-config-0.3.31.crate) = 953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2 +SIZE (rust/crates/pkg-config-0.3.31.crate) = 20880 +SHA256 (rust/crates/ppv-lite86-0.2.20.crate) = 77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04 +SIZE (rust/crates/ppv-lite86-0.2.20.crate) = 22478 +SHA256 (rust/crates/predicates-3.1.2.crate) = 7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97 +SIZE (rust/crates/predicates-3.1.2.crate) = 23986 +SHA256 (rust/crates/predicates-core-1.0.8.crate) = ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931 +SIZE (rust/crates/predicates-core-1.0.8.crate) = 8552 +SHA256 (rust/crates/predicates-tree-1.0.11.crate) = 41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13 +SIZE (rust/crates/predicates-tree-1.0.11.crate) = 8393 +SHA256 (rust/crates/prettyplease-0.2.25.crate) = 64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033 +SIZE (rust/crates/prettyplease-0.2.25.crate) = 58681 +SHA256 (rust/crates/proc-macro2-1.0.89.crate) = f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e +SIZE (rust/crates/proc-macro2-1.0.89.crate) = 49446 +SHA256 (rust/crates/quote-1.0.37.crate) = b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af +SIZE (rust/crates/quote-1.0.37.crate) = 28558 +SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404 +SIZE (rust/crates/rand-0.8.5.crate) = 87113 +SHA256 (rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88 +SIZE (rust/crates/rand_chacha-0.3.1.crate) = 15251 +SHA256 (rust/crates/rand_core-0.6.4.crate) = ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c +SIZE (rust/crates/rand_core-0.6.4.crate) = 22666 +SHA256 (rust/crates/regex-1.11.1.crate) = b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191 +SIZE (rust/crates/regex-1.11.1.crate) = 254170 +SHA256 (rust/crates/regex-automata-0.4.8.crate) = 368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3 +SIZE (rust/crates/regex-automata-0.4.8.crate) = 617784 +SHA256 (rust/crates/regex-syntax-0.8.5.crate) = 2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c +SIZE (rust/crates/regex-syntax-0.8.5.crate) = 357541 +SHA256 (rust/crates/relative-path-1.9.3.crate) = ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2 +SIZE (rust/crates/relative-path-1.9.3.crate) = 22400 +SHA256 (rust/crates/rstest-0.19.0.crate) = 9d5316d2a1479eeef1ea21e7f9ddc67c191d497abc8fc3ba2467857abbb68330 +SIZE (rust/crates/rstest-0.19.0.crate) = 32932 +SHA256 (rust/crates/rstest_macros-0.19.0.crate) = 04a9df72cc1f67020b0d63ad9bfe4a323e459ea7eb68e03bd9824db49f9a4c25 +SIZE (rust/crates/rstest_macros-0.19.0.crate) = 61243 +SHA256 (rust/crates/rstest_reuse-0.7.0.crate) = b3a8fb4672e840a587a66fc577a5491375df51ddb88f2a2c2a792598c326fe14 +SIZE (rust/crates/rstest_reuse-0.7.0.crate) = 12828 +SHA256 (rust/crates/rustc-hash-1.1.0.crate) = 08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2 +SIZE (rust/crates/rustc-hash-1.1.0.crate) = 9331 +SHA256 (rust/crates/rustc_version-0.4.1.crate) = cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92 +SIZE (rust/crates/rustc_version-0.4.1.crate) = 12245 +SHA256 (rust/crates/rustix-0.38.37.crate) = 8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811 +SIZE (rust/crates/rustix-0.38.37.crate) = 371243 +SHA256 (rust/crates/semver-1.0.23.crate) = 61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b +SIZE (rust/crates/semver-1.0.23.crate) = 30622 +SHA256 (rust/crates/serde-1.0.213.crate) = 3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1 +SIZE (rust/crates/serde-1.0.213.crate) = 78349 +SHA256 (rust/crates/serde_derive-1.0.213.crate) = 7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5 +SIZE (rust/crates/serde_derive-1.0.213.crate) = 56625 +SHA256 (rust/crates/shlex-1.3.0.crate) = 0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64 +SIZE (rust/crates/shlex-1.3.0.crate) = 18713 +SHA256 (rust/crates/smallvec-1.13.2.crate) = 3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67 +SIZE (rust/crates/smallvec-1.13.2.crate) = 35216 +SHA256 (rust/crates/strsim-0.11.1.crate) = 7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f +SIZE (rust/crates/strsim-0.11.1.crate) = 14266 +SHA256 (rust/crates/syn-2.0.85.crate) = 5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56 +SIZE (rust/crates/syn-2.0.85.crate) = 275231 +SHA256 (rust/crates/tempfile-3.13.0.crate) = f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b +SIZE (rust/crates/tempfile-3.13.0.crate) = 34910 +SHA256 (rust/crates/termtree-0.4.1.crate) = 3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76 +SIZE (rust/crates/termtree-0.4.1.crate) = 4557 +SHA256 (rust/crates/unicode-ident-1.0.13.crate) = e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe +SIZE (rust/crates/unicode-ident-1.0.13.crate) = 43279 +SHA256 (rust/crates/utf8parse-0.2.2.crate) = 06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821 +SIZE (rust/crates/utf8parse-0.2.2.crate) = 13499 +SHA256 (rust/crates/virtue-0.0.13.crate) = 9dcc60c0624df774c82a0ef104151231d37da4962957d691c011c852b2473314 +SIZE (rust/crates/virtue-0.0.13.crate) = 26483 +SHA256 (rust/crates/wait-timeout-0.2.0.crate) = 9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6 +SIZE (rust/crates/wait-timeout-0.2.0.crate) = 12441 +SHA256 (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423 +SIZE (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 28131 +SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419 +SIZE (rust/crates/winapi-0.3.9.crate) = 1200382 +SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6 +SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815 +SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f +SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998 +SHA256 (rust/crates/windows-sys-0.52.0.crate) = 282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d +SIZE (rust/crates/windows-sys-0.52.0.crate) = 2576877 +SHA256 (rust/crates/windows-sys-0.59.0.crate) = 1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b +SIZE (rust/crates/windows-sys-0.59.0.crate) = 2387323 +SHA256 (rust/crates/windows-targets-0.52.6.crate) = 9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973 +SIZE (rust/crates/windows-targets-0.52.6.crate) = 6403 +SHA256 (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3 +SIZE (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 435718 +SHA256 (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469 +SIZE (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 832615 +SHA256 (rust/crates/windows_i686_gnu-0.52.6.crate) = 8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b +SIZE (rust/crates/windows_i686_gnu-0.52.6.crate) = 880402 +SHA256 (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66 +SIZE (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 475940 +SHA256 (rust/crates/windows_i686_msvc-0.52.6.crate) = 240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66 +SIZE (rust/crates/windows_i686_msvc-0.52.6.crate) = 901163 +SHA256 (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78 +SIZE (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 836363 +SHA256 (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d +SIZE (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 435707 +SHA256 (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec +SIZE (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 832564 +SHA256 (rust/crates/xattr-1.3.1.crate) = 8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f +SIZE (rust/crates/xattr-1.3.1.crate) = 12580 +SHA256 (rust/crates/zerocopy-0.7.35.crate) = 1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0 +SIZE (rust/crates/zerocopy-0.7.35.crate) = 152645 +SHA256 (rust/crates/zerocopy-derive-0.7.35.crate) = fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e +SIZE (rust/crates/zerocopy-derive-0.7.35.crate) = 37829 +SHA256 (realchonk-fuse-ufs-0.4.3_GH0.tar.gz) = 937915f823c5872a97974743299396bc17bc50d2e45b86b8bcbed4cb825bcb0a +SIZE (realchonk-fuse-ufs-0.4.3_GH0.tar.gz) = 1368650 diff --git a/filesystems/ufs/pkg-descr b/filesystems/ufs/pkg-descr new file mode 100644 index 000000000000..a4268e90af05 --- /dev/null +++ b/filesystems/ufs/pkg-descr @@ -0,0 +1,7 @@ +A FUSE file system driver for FreeBSD's UFSv2. + +Features: + + - Read support for FreeBSD UFSv2 + - Extended Attributes (no ACLs) + - Bi-Endian support (eg. mounting big endian FS on little endian system) diff --git a/filesystems/ufs/pkg-plist b/filesystems/ufs/pkg-plist new file mode 100644 index 000000000000..4cc756be2006 --- /dev/null +++ b/filesystems/ufs/pkg-plist @@ -0,0 +1,3 @@ +bin/fuse-ufs +bin/mount.ufs +share/man/man8/fuse-ufs.8.gz diff --git a/filesystems/ufs_copy/Makefile b/filesystems/ufs_copy/Makefile new file mode 100644 index 000000000000..4a600350aa63 --- /dev/null +++ b/filesystems/ufs_copy/Makefile @@ -0,0 +1,28 @@ +PORTNAME= ufs_copy +PORTVERSION= 20060921 +PORTREVISION= 2 +CATEGORIES= filesystems sysutils +MASTER_SITES= https://people.freebsd.org/~simokawa/ufs/ +DISTNAME= ufs-${PORTVERSION} + +MAINTAINER= nobutaka@FreeBSD.org +COMMENT= Fast copy utility for UFS filesystem +WWW= https://people.freebsd.org/~simokawa/ufs/ + +LICENSE= BSD4CLAUSE + +USES= uidfix +WRKSRC= ${WRKDIR}/ufs +MAKE_ARGS= BINDIR=${PREFIX}/sbin + +PORTDOCS= README + +OPTIONS_DEFINE= DOCS + +PLIST_FILES= sbin/ufs_copy + +post-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/${PORTDOCS} ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.mk> diff --git a/filesystems/ufs_copy/distinfo b/filesystems/ufs_copy/distinfo new file mode 100644 index 000000000000..3e8ccd65ccd4 --- /dev/null +++ b/filesystems/ufs_copy/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905208 +SHA256 (ufs-20060921.tar.gz) = 0dc787a8c10334fa7bbfc56b166498a3057f6adff34dac4f6454a88c75d967ed +SIZE (ufs-20060921.tar.gz) = 9734 diff --git a/filesystems/ufs_copy/files/patch-ufs_copy.c b/filesystems/ufs_copy/files/patch-ufs_copy.c new file mode 100644 index 000000000000..3c5bfd367a81 --- /dev/null +++ b/filesystems/ufs_copy/files/patch-ufs_copy.c @@ -0,0 +1,72 @@ +--- ufs_copy.c.orig 2006-09-21 06:28:09 UTC ++++ ufs_copy.c +@@ -111,9 +111,11 @@ int + main(int argc, char *argv[]) + { + struct fstab *fs; +- int ch, eval=0; ++ int ch, eval=0, md; + char *snapshot = NULL; +- char *src, *dst; ++ char *src, *dst, *snap = NULL; ++ char mddev[256]; ++ FILE *readp; + + #ifdef USEMMAP + while ((ch = getopt(argc, argv, "aBb:ceMms:v")) != -1) +@@ -174,6 +176,21 @@ main(int argc, char *argv[]) + eval = system(buf); + if (eval) + errx(eval, "mksnap_ffs failed"); ++ ++ snprintf(buf, sizeof(buf), ++ "/sbin/mdconfig -a -n -t vnode -f %s", src); ++ fprintf(stderr, "%s\n", buf); ++ readp = popen(buf, "r"); ++ if (readp == NULL) ++ errx(eval, "mdconfig failed"); ++ eval = fscanf(readp, "%d", &md); ++ if (eval != 1) ++ errx(eval, "mdconfig failed"); ++ pclose(readp); ++ snprintf(mddev, sizeof(mddev), "/dev/md%d", md); ++ snap = src; ++ src = mddev; ++ fprintf(stderr, "attached %s as memory disk %s\n", snap, mddev); + } + + if ((fs = getfsfile(src)) == NULL) { +@@ -188,9 +205,19 @@ main(int argc, char *argv[]) + } + + if (snapshot) { +- fprintf(stderr, "removing snapshot file %s ... ", src); ++ char buf[1024]; ++ ++ snprintf(buf, sizeof(buf), ++ "/sbin/mdconfig -d -u %d", md); ++ fprintf(stderr, "%s\n", buf); ++ eval = system(buf); ++ if (eval) ++ errx(eval, "mdconfig failed"); ++ fprintf(stderr, "detached memory disk %s\n", mddev); ++ ++ fprintf(stderr, "removing snapshot file %s ... ", snap); + fflush(stderr); +- if (unlink(src) == 0) ++ if (unlink(snap) == 0) + fprintf(stderr, "done\n"); + else + fprintf(stderr, "failed\n"); +@@ -262,6 +289,11 @@ copy_ufs(const char *src_path, const char *dst_path) + } + } + bcopy(&src, &dst, sizeof(dst)); ++#if (defined(__FreeBSD_version) && __FreeBSD_version >= 1300100) ++ dst.d_si = NULL; ++#else ++ dst.d_sbcsum = NULL; ++#endif + dst.d_name = dst_path; + dst.d_fd = open(dst_path, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR ); + if (dst.d_fd < 0) { diff --git a/filesystems/ufs_copy/pkg-descr b/filesystems/ufs_copy/pkg-descr new file mode 100644 index 000000000000..3bc45eb518d3 --- /dev/null +++ b/filesystems/ufs_copy/pkg-descr @@ -0,0 +1,3 @@ +The ufs_copy copies a UFS filesystem image like dd(1). +It doesn't copy free blocks for speed and it generates a sparse destination +file for saving space. diff --git a/filesystems/unionfs/Makefile b/filesystems/unionfs/Makefile new file mode 100644 index 000000000000..4db9d90fc34c --- /dev/null +++ b/filesystems/unionfs/Makefile @@ -0,0 +1,38 @@ +PORTNAME= unionfs +DISTVERSIONPREFIX= v +DISTVERSION= 2.2 +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- + +MAINTAINER= 0mp@FreeBSD.org +COMMENT= FUSE based implementation of the well-known unionfs +WWW= https://github.com/rpodgorny/unionfs-fuse + +LICENSE= BSD3CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE + +TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytest>=0:devel/py-pytest@${PY_FLAVOR} + +USES= cmake fuse localbase:ldflags python:test + +USE_GITHUB= yes +GH_ACCOUNT= rpodgorny +GH_PROJECT= unionfs-fuse + +SUB_FILES= pkg-message + +PLIST_FILES= bin/unionfs \ + bin/unionfsctl \ + share/man/man8/unionfs.8.gz + +post-install: + @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/* + +pre-test: + ${RLN} ${BUILD_WRKSRC}/src/unionfs ${WRKSRC}/src/unionfs + ${RLN} ${BUILD_WRKSRC}/src/unionfsctl ${WRKSRC}/src/unionfsctl + +do-test: + cd ${WRKSRC} && ${SETNEV} ${MAKE_ENV} ${PYTHON_CMD} -m pytest -k test_help --verbose + +.include <bsd.port.mk> diff --git a/filesystems/unionfs/distinfo b/filesystems/unionfs/distinfo new file mode 100644 index 000000000000..de0face115d1 --- /dev/null +++ b/filesystems/unionfs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1635114774 +SHA256 (rpodgorny-unionfs-fuse-v2.2_GH0.tar.gz) = 248a0fee9979146b79b05fc728621869da5936c1f43a27e36e7515b301817e43 +SIZE (rpodgorny-unionfs-fuse-v2.2_GH0.tar.gz) = 47955 diff --git a/filesystems/unionfs/files/patch-CMakeLists.txt b/filesystems/unionfs/files/patch-CMakeLists.txt new file mode 100644 index 000000000000..107d85a0e259 --- /dev/null +++ b/filesystems/unionfs/files/patch-CMakeLists.txt @@ -0,0 +1,15 @@ +--- CMakeLists.txt.orig 2015-01-14 10:08:20 UTC ++++ CMakeLists.txt +@@ -9,12 +9,6 @@ IF(NOT CMAKE_CONFIGURATION_TYPES AND NOT + SET(CMAKE_BUILD_TYPE RelWithDebInfo) + ENDIF(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) + +-# Select flags. +-SET(CMAKE_C_FLAGS "-pipe -W -Wall -DFORTIFY_SOURCE=2") +-SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g") +-SET(CMAKE_C_FLAGS_RELEASE "-O2") +-SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -DDEBUG") +- + if (UNIX AND APPLE) + include_directories("/usr/local/include/osxfuse/fuse") + endif() diff --git a/filesystems/unionfs/files/patch-src__usyslog.c b/filesystems/unionfs/files/patch-src__usyslog.c new file mode 100644 index 000000000000..42f8ec61068b --- /dev/null +++ b/filesystems/unionfs/files/patch-src__usyslog.c @@ -0,0 +1,11 @@ +--- src/usyslog.c.orig 2015-01-14 10:08:20 UTC ++++ src/usyslog.c +@@ -23,7 +23,7 @@ + + #if __APPLE__ + #include <malloc/malloc.h> +-#else ++#elif !defined(__FreeBSD__) + #include <malloc.h> + #endif + diff --git a/filesystems/unionfs/files/pkg-message.in b/filesystems/unionfs/files/pkg-message.in new file mode 100644 index 000000000000..4859a839c805 --- /dev/null +++ b/filesystems/unionfs/files/pkg-message.in @@ -0,0 +1,20 @@ +[ +{ type: install + message: <<EOM +You will need to load the kernel module 'fuse' to use this package. To load +this at boot time, add the following line to /boot/loader.conf: + +fuse_load="YES" + +If you want unprivileged users to be able to use unionfs, add the following +line to /etc/sysctl.conf: + +vfs.usermount=1 + +You can enable them immediately with: + +kldload fuse +sysctl vfs.usermount=1 +EOM +} +] diff --git a/filesystems/unionfs/pkg-descr b/filesystems/unionfs/pkg-descr new file mode 100644 index 000000000000..850c1a069c5a --- /dev/null +++ b/filesystems/unionfs/pkg-descr @@ -0,0 +1,2 @@ +This is an effort to create a unionfs filesystem implementation which is way +more flexible than the current in-kernel unionfs solution. diff --git a/filesystems/unreliablefs/Makefile b/filesystems/unreliablefs/Makefile new file mode 100644 index 000000000000..532c5a696b2d --- /dev/null +++ b/filesystems/unreliablefs/Makefile @@ -0,0 +1,43 @@ +PORTNAME= unreliablefs +DISTVERSION= 0.2.0 +CATEGORIES= filesystems +PKGNAMEPREFIX= fusefs- +PATCH_SITES= https://github.com/ligurio/unreliablefs/commit/ +PATCHFILES= e97d259b1cda3c1342c9cb472d31230e50b0776d.patch:-p1 + +MAINTAINER= 0mp@FreeBSD.org +COMMENT= FUSE-based fault injection filesystem +WWW= https://github.com/ligurio/unreliablefs + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytest>=0:devel/py-pytest@${PY_FLAVOR} \ + fio:benchmarks/fio + +USES= compiler:c++11-lang cmake fuse pkgconfig python:env +USE_CSTD= c11 +USE_GITHUB= yes +GH_ACCOUNT= ligurio + +PLIST_FILES= bin/${PORTNAME} \ + share/man/man1/${PORTNAME}.1.gz \ + share/man/man5/${PORTNAME}.conf.5.gz + +do-test: +# fusefs(5) must be loaded. + if ! kldload -n fusefs; then \ + ${ECHO_MSG} "Cannot load the fusefs kernel module"; \ + ${FALSE}; \ + fi +# /dev/fuse must be writtable and readable to the user running the tests. + if [ ! -r /dev/fuse ] || [ ! -w /dev/fuse ]; then \ + ${ECHO_MSG} "Current user does cannot access /dev/fuse"; \ + ${FALSE}; \ + fi +# The test suite assumes that the binaries are available in the ${WRKSRC}/build +# directory, which is not the case here. + ${LN} -Fs ${INSTALL_WRKSRC} ${WRKSRC}/build + cd ${WRKSRC} && ${SETENV} ${TEST_ENV} pytest --verbose -rxXs tests/ + +.include <bsd.port.mk> diff --git a/filesystems/unreliablefs/distinfo b/filesystems/unreliablefs/distinfo new file mode 100644 index 000000000000..42458d53119d --- /dev/null +++ b/filesystems/unreliablefs/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1628591422 +SHA256 (ligurio-unreliablefs-0.2.0_GH0.tar.gz) = 51ea2bdd0ef2b9d4e0960e244ab34d50d8f01fc8f2acb34b13d58ab9208b03f5 +SIZE (ligurio-unreliablefs-0.2.0_GH0.tar.gz) = 34574 +SHA256 (e97d259b1cda3c1342c9cb472d31230e50b0776d.patch) = 42cbe74153bb90b1b528a5b738c45e6086f32bcfb691c7d66acabd9b05ff7746 +SIZE (e97d259b1cda3c1342c9cb472d31230e50b0776d.patch) = 830 diff --git a/filesystems/unreliablefs/pkg-descr b/filesystems/unreliablefs/pkg-descr new file mode 100644 index 000000000000..dfc24ceb8f34 --- /dev/null +++ b/filesystems/unreliablefs/pkg-descr @@ -0,0 +1,10 @@ +UnreliableFS is a FUSE-based fault injection filesystem that allows to change +fault-injections in runtime using simple configuration file. + +Supported fault injections are: + +- errinj_errno - return error value and set random errno. +- errinj_kill_caller - send SIGKILL to a process that invoked file operation. +- errinj_noop - replace file operation with no operation (similar to + libeatmydata, but applicable to any file operation). +- errinj_slowdown - slowdown invoked file operation. diff --git a/filesystems/vzvol/Makefile b/filesystems/vzvol/Makefile new file mode 100644 index 000000000000..98aa8be7bc74 --- /dev/null +++ b/filesystems/vzvol/Makefile @@ -0,0 +1,50 @@ +PORTNAME= vzvol +DISTVERSIONPREFIX= v +DISTVERSION= 0.7.0 +PORTREVISION= 3 +CATEGORIES= filesystems sysutils + +MAINTAINER= rainbow@sanitylinux.org +COMMENT= Feature-rich ZFS zvol management tool +WWW= https://github.com/RainbowHackerHorse/vzvol + +LICENSE= BSD2CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE + +GROUPS= operator + +USE_GITHUB= yes +GH_ACCOUNT= RainbowHackerHorse +NO_BUILD= yes +NO_ARCH= yes + +PORTDOCS= README.md CONTRIBUTORS + +OPTIONS_DEFINE= DOCS PROGRESS VIRTUALBOX +OPTIONS_GROUP= FILESYSTEMS +OPTIONS_GROUP_FILESYSTEMS= EXT XFS +OPTIONS_DEFAULT= EXT PROGRESS VIRTUALBOX XFS + +EXT_RUN_DEPENDS= mke2fs:filesystems/e2fsprogs-core +PROGRESS_RUN_DEPENDS= pv:sysutils/pv +VIRTUALBOX_RUN_DEPENDS= VBoxManage:emulators/virtualbox-ose +XFS_RUN_DEPENDS= mkfs.xfs:filesystems/xfsprogs + +EXT_DESC= Install support for ext2, ext3, and ext4 +PROGRESS_DESC= Enables progress bars for import +VIRTUALBOX_DESC= Support .VMDK creation with VirtualBox tools +XFS_DESC= Install support for XFS filesystem + +do-install: + ${INSTALL_MAN} ${WRKSRC}/man/freebsd/vzvol.8 ${STAGEDIR}${PREFIX}/share/man/man8/ + ${INSTALL_SCRIPT} ${WRKSRC}/bin/vzvol ${STAGEDIR}${PREFIX}/sbin +.for dir in shared freebsd linux + @${MKDIR} ${STAGEDIR}${PREFIX}/lib/vzvol/lib/${dir} + ${INSTALL_SCRIPT} ${WRKSRC}/lib/${dir}/* ${STAGEDIR}${PREFIX}/lib/vzvol/lib/${dir} +.endfor + +do-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/docs/* ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.mk> diff --git a/filesystems/vzvol/distinfo b/filesystems/vzvol/distinfo new file mode 100644 index 000000000000..c9c7eef70932 --- /dev/null +++ b/filesystems/vzvol/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1528566896 +SHA256 (RainbowHackerHorse-vzvol-v0.7.0_GH0.tar.gz) = 9e9f0586c3c1c22bf29fb250851968c092bedd517535c02caedbfbe728452579 +SIZE (RainbowHackerHorse-vzvol-v0.7.0_GH0.tar.gz) = 11181 diff --git a/filesystems/vzvol/pkg-descr b/filesystems/vzvol/pkg-descr new file mode 100644 index 000000000000..d3aea5ba1fbb --- /dev/null +++ b/filesystems/vzvol/pkg-descr @@ -0,0 +1,5 @@ +vzvol is a zvol manager, that allows a user to create, +format, and manage zvols in the context of use for +virtualization. It is meant to simplify the management of +these devices, as well as allow the creation of a shim +.VMDK file to allow the use of a zvol with VirtualBox. diff --git a/filesystems/vzvol/pkg-plist b/filesystems/vzvol/pkg-plist new file mode 100644 index 000000000000..a243674c5e1c --- /dev/null +++ b/filesystems/vzvol/pkg-plist @@ -0,0 +1,22 @@ +lib/vzvol/lib/freebsd/vzvol_fs_fat32.sh +lib/vzvol/lib/freebsd/vzvol_import.sh +lib/vzvol/lib/freebsd/vzvol_pkgcheck.sh +lib/vzvol/lib/linux/vzvol_fs_fat32.sh +lib/vzvol/lib/linux/vzvol_import.sh +lib/vzvol/lib/linux/vzvol_pkgcheck.sh +lib/vzvol/lib/shared/vzvol_create.sh +lib/vzvol/lib/shared/vzvol_delete.sh +lib/vzvol/lib/shared/vzvol_errorcode.sh +lib/vzvol/lib/shared/vzvol_existondisk.sh +lib/vzvol/lib/shared/vzvol_fs.sh +lib/vzvol/lib/shared/vzvol_fs_type.sh +lib/vzvol/lib/shared/vzvol_fscheck.sh +lib/vzvol/lib/shared/vzvol_getargz.sh +lib/vzvol/lib/shared/vzvol_list.sh +lib/vzvol/lib/shared/vzvol_permissions.sh +lib/vzvol/lib/shared/vzvol_showhelp.sh +lib/vzvol/lib/shared/vzvol_type.sh +lib/vzvol/lib/shared/vzvol_vmdk.sh +lib/vzvol/lib/shared/zvol_check.sh +sbin/vzvol +share/man/man8/vzvol.8.gz diff --git a/filesystems/webdavfs/Makefile b/filesystems/webdavfs/Makefile new file mode 100644 index 000000000000..fcf14c2f1f5f --- /dev/null +++ b/filesystems/webdavfs/Makefile @@ -0,0 +1,47 @@ +PORTNAME= fusefs-webdavfs +DISTVERSION= g20200520 +PORTREVISION= 23 +CATEGORIES= filesystems + +MAINTAINER= eugen@FreeBSD.org +COMMENT= FUSE filesystem for WEBDAV shares +WWW= https://github.com/miquels/webdavfs + +LICENSE= BSD3CLAUSE BSD4CLAUSE MIT +LICENSE_COMB= multi +LICENSE_FILE_BSD3CLAUSE= ${WRKDIR}/webdavfs-${GH_TAGNAME}/vendor/bazil.org/fuse/LICENSE +LICENSE_FILE_BSD4CLAUSE= ${WRKDIR}/webdavfs-${GH_TAGNAME}/vendor/github.com/pborman/getopt/LICENSE +LICENSE_FILE_MIT= ${WRKDIR}/webdavfs-${GH_TAGNAME}/LICENSE.md +LICENSE_DISTFILES_MIT= ${DISTNAME}${EXTRACT_SUFX} +LICENSE_DISTFILES_BSD3CLAUSE= bazil-fuse-${FUSE_GH_TAGNAME}_GH0${EXTRACT_SUFX} +LICENSE_DISTFILES_BSD4CLAUSE= pborman-getopt-${GETOPT_GH_TAGNAME}_GH0${EXTRACT_SUFX} + +# This needs to be Go 1.7 or newer. +USES= go:modules + +USE_GITHUB= yes +GH_ACCOUNT= miquels +GH_PROJECT= webdavfs +GH_TAGNAME= 117d633 + +# 2020-12-04 pborman/getopt +GETOPT_GH_TAGNAME= ee0cd42419d3 +# 2020-05-25 bazil/fuse +FUSE_GH_TAGNAME= 65cc252bf669 +# 2020-05-20 golang/net +NET_GH_TAGNAME= 59133d7f0dd7 + +GH_TUPLE= bazil:fuse:${FUSE_GH_TAGNAME}:bazil_fuse/vendor/bazil.org/fuse \ + golang:net:${NET_GH_TAGNAME}:golang_net/vendor/golang.org/x/net \ + pborman:getopt:${GETOPT_GH_TAGNAME}:pborman_getopt/vendor/github.com/pborman/getopt + +GO_TARGET= :${PREFIX}/sbin/mount.webdavfs + +PLIST_FILES= sbin/mount.webdavfs sbin/mount_webdavfs + +SUB_FILES= pkg-message mount_webdavfs + +post-install: + ${INSTALL_SCRIPT} ${WRKDIR}/mount_webdavfs ${STAGEDIR}${PREFIX}/sbin + +.include <bsd.port.mk> diff --git a/filesystems/webdavfs/distinfo b/filesystems/webdavfs/distinfo new file mode 100644 index 000000000000..190ae655ec4c --- /dev/null +++ b/filesystems/webdavfs/distinfo @@ -0,0 +1,9 @@ +TIMESTAMP = 1623902743 +SHA256 (miquels-webdavfs-g20200520-117d633_GH0.tar.gz) = a70042e90006a2da61c9a0c79eb717984d67ec60dfd5de7cc912e4aa429cabeb +SIZE (miquels-webdavfs-g20200520-117d633_GH0.tar.gz) = 22930 +SHA256 (bazil-fuse-65cc252bf669_GH0.tar.gz) = 5586365a61aed3e37375ccd8b2341c7486e1b8ed46b37fa162b83ef56d84be2a +SIZE (bazil-fuse-65cc252bf669_GH0.tar.gz) = 187896 +SHA256 (golang-net-59133d7f0dd7_GH0.tar.gz) = ea0a358ca3f8e31ba20c4f20177c4fb8a081ad5119543ea454cabfd8707b5b16 +SIZE (golang-net-59133d7f0dd7_GH0.tar.gz) = 1174691 +SHA256 (pborman-getopt-ee0cd42419d3_GH0.tar.gz) = 8eaa2477da03612e053997e0cc0f541947e8cbd3b6e89c4bed628341a58623f2 +SIZE (pborman-getopt-ee0cd42419d3_GH0.tar.gz) = 39691 diff --git a/filesystems/webdavfs/files/mount_webdavfs.in b/filesystems/webdavfs/files/mount_webdavfs.in new file mode 100644 index 000000000000..a8600c2c88ef --- /dev/null +++ b/filesystems/webdavfs/files/mount_webdavfs.in @@ -0,0 +1,33 @@ +#!/bin/sh + +mountprog=%%PREFIX%%/sbin/mount.webdavfs + +while getopts "fo:DF:T:" opt +do + case "$opt" in + o) case "$OPTARG" in + username=*) username=${OPTARG#username=} ;; + password=*) password=${OPTARG#password=} ;; + rw) ;; + *) options="$options,$OPTARG" ;; + esac ;; + T) traceopts="$traceopts,$OPTARG" ;; + *) flags="$flags -$opt $OPTARG" ;; + esac +done +shift $((OPTIND - 1)) + +[ -n "$username" ] && options="$options,username=$username" +[ -n "$password" ] && options="$options,password=$password" +options=${options#,} + +traceopts=${traceopts#,} +[ -n "$traceopts" ] && flags="$flags -T $traceopts" + +if [ -z "$options" ]; then + exec $mountprog $flags "$@" +else + exec $mountprog $flags -o "$options" "$@" +fi + + diff --git a/filesystems/webdavfs/files/pkg-message.in b/filesystems/webdavfs/files/pkg-message.in new file mode 100644 index 000000000000..eaf4a6f48f16 --- /dev/null +++ b/filesystems/webdavfs/files/pkg-message.in @@ -0,0 +1,10 @@ +[ +{ type: install + message: <<EOM +Make sure you have fusefs.ko loaded then use mount.webdavfs command +or add an entry to the /etc/fstab such as: + +https://webdav.server.net/path /mnt/path fusefs rw,late,mountprog=%%PREFIX%%/sbin/mount_webdavfs,username=login,password=pass,-F=/var/tmp/trace.log,-T=webdav,-T=httpreq,-T=httphdr 0 0 +EOM +} +] diff --git a/filesystems/webdavfs/pkg-descr b/filesystems/webdavfs/pkg-descr new file mode 100644 index 000000000000..6b585d937353 --- /dev/null +++ b/filesystems/webdavfs/pkg-descr @@ -0,0 +1,6 @@ +FUSE webdav filesystem. + +This filesystem behaves like a real network filesystem - no unnecessary +copying of entire files. Currently, it claims read-write support for +Apache's mod_dav and PHP's SabreDav (used by e.g. NextCloud) only. +It forces read-only mode for other DAV servers. diff --git a/filesystems/wimlib/Makefile b/filesystems/wimlib/Makefile new file mode 100644 index 000000000000..8f5fa210b35d --- /dev/null +++ b/filesystems/wimlib/Makefile @@ -0,0 +1,30 @@ +PORTNAME= wimlib +PORTVERSION= 1.13.0 +PORTREVISION= 3 +CATEGORIES= filesystems sysutils +MASTER_SITES= https://wimlib.net/downloads/ + +MAINTAINER= mail_of_sergey@mail.ru +COMMENT= Manipulate Windows Imaging (WIM) archives +WWW= https://wimlib.net/ + +LICENSE= GPLv3+ +LICENSE_FILE= ${WRKSRC}/COPYING.GPLv3 + +USES= gmake gnome fuse libtool pkgconfig +USE_GNOME= libxml2 +USE_LDCONFIG= yes + +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX=${PREFIX}/share +CONFIGURE_ARGS= --disable-static + +OPTIONS_DEFINE= NTFS +OPTIONS_DEFAULT= NTFS + +NTFS_DESC= Build with libntfs-3g for NTFS support (recommended) + +NTFS_CONFIGURE_WITH= ntfs-3g +NTFS_LIB_DEPENDS= libntfs-3g.so:filesystems/ntfs + +.include <bsd.port.mk> diff --git a/filesystems/wimlib/distinfo b/filesystems/wimlib/distinfo new file mode 100644 index 000000000000..7daf28637a57 --- /dev/null +++ b/filesystems/wimlib/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1543424329 +SHA256 (wimlib-1.13.0.tar.gz) = 51d92cafaae0180c7a91b50620f86ffbcec6d6aef360d38dd47e274e65d7970b +SIZE (wimlib-1.13.0.tar.gz) = 1035146 diff --git a/filesystems/wimlib/pkg-descr b/filesystems/wimlib/pkg-descr new file mode 100644 index 000000000000..e806457b59ad --- /dev/null +++ b/filesystems/wimlib/pkg-descr @@ -0,0 +1,18 @@ +Allows to read and write Windows Imaging (WIM) files and deployment +of Windows operating systems. + +General capabilities: + +- Apply (extract) a WIM image (wimapply) +- Capture (create) a WIM image (wimcapture) +- Append, delete, and export WIM images (wimappend, wimdelete, wimexport) +- Modify a WIM image (wimupdate) +- Extract files or directories from a WIM image (wimextract) +- Optimize a WIM archive, removing wasted space + and optionally recompressing (wimoptimize) +- Split or join a WIM archive (wimsplit, wimjoin) +- Mount a WIM image (wimmount, wimmountrw) + +Sample of usage: + +http://www.ultimatedeployment.org/win7pxelinux3.html diff --git a/filesystems/wimlib/pkg-plist b/filesystems/wimlib/pkg-plist new file mode 100644 index 000000000000..ebb96360f340 --- /dev/null +++ b/filesystems/wimlib/pkg-plist @@ -0,0 +1,57 @@ +bin/mkwinpeimg +bin/wimappend +bin/wimapply +bin/wimcapture +bin/wimdelete +bin/wimdir +bin/wimexport +bin/wimextract +bin/wiminfo +bin/wimjoin +bin/wimlib-imagex +bin/wimmount +bin/wimmountrw +bin/wimoptimize +bin/wimsplit +bin/wimunmount +bin/wimupdate +bin/wimverify +include/wimlib.h +lib/libwim.so +lib/libwim.so.15 +lib/libwim.so.15.15.0 +libdata/pkgconfig/wimlib.pc +share/man/man1/mkwinpeimg.1.gz +share/man/man1/wimappend.1.gz +share/man/man1/wimapply.1.gz +share/man/man1/wimcapture.1.gz +share/man/man1/wimdelete.1.gz +share/man/man1/wimdir.1.gz +share/man/man1/wimexport.1.gz +share/man/man1/wimextract.1.gz +share/man/man1/wiminfo.1.gz +share/man/man1/wimjoin.1.gz +share/man/man1/wimlib-imagex-append.1.gz +share/man/man1/wimlib-imagex-apply.1.gz +share/man/man1/wimlib-imagex-capture.1.gz +share/man/man1/wimlib-imagex-delete.1.gz +share/man/man1/wimlib-imagex-dir.1.gz +share/man/man1/wimlib-imagex-export.1.gz +share/man/man1/wimlib-imagex-extract.1.gz +share/man/man1/wimlib-imagex-info.1.gz +share/man/man1/wimlib-imagex-join.1.gz +share/man/man1/wimlib-imagex-mount.1.gz +share/man/man1/wimlib-imagex-mountrw.1.gz +share/man/man1/wimlib-imagex-optimize.1.gz +share/man/man1/wimlib-imagex-split.1.gz +share/man/man1/wimlib-imagex-unmount.1.gz +share/man/man1/wimlib-imagex-update.1.gz +share/man/man1/wimlib-imagex-verify.1.gz +share/man/man1/wimlib-imagex.1.gz +share/man/man1/wimmount.1.gz +share/man/man1/wimmountrw.1.gz +share/man/man1/wimoptimize.1.gz +share/man/man1/wimsplit.1.gz +share/man/man1/wimunmount.1.gz +share/man/man1/wimupdate.1.gz +share/man/man1/wimverify.1.gz diff --git a/filesystems/xfsm/Makefile b/filesystems/xfsm/Makefile new file mode 100644 index 000000000000..45e8a6629152 --- /dev/null +++ b/filesystems/xfsm/Makefile @@ -0,0 +1,15 @@ +PORTNAME= xfsm +PORTVERSION= 1.99 +PORTREVISION= 2 +CATEGORIES= filesystems sysutils +MASTER_SITES= SUNSITE/system/status/xstatus + +MAINTAINER= ports@FreeBSD.org +COMMENT= X File System Monitor + +USES= imake tar:tgz xorg +USE_XORG= xbitmaps x11 xext +MAKE_ARGS= CC="${CC}" CCOPTIONS="-DFreeBSD" +PLIST_FILES= bin/xfsm share/man/man1/${PORTNAME}.1.gz + +.include <bsd.port.mk> diff --git a/filesystems/xfsm/distinfo b/filesystems/xfsm/distinfo new file mode 100644 index 000000000000..084adda37eca --- /dev/null +++ b/filesystems/xfsm/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905176 +SHA256 (xfsm-1.99.tgz) = 6ba199530b282cecea0e82d636f155f73fa5cddf3cef3c66b6a57864801b22da +SIZE (xfsm-1.99.tgz) = 51872 diff --git a/filesystems/xfsm/files/patch-xfsm_util.c b/filesystems/xfsm/files/patch-xfsm_util.c new file mode 100644 index 000000000000..3cbc2489196d --- /dev/null +++ b/filesystems/xfsm/files/patch-xfsm_util.c @@ -0,0 +1,11 @@ +--- xfsm_util.c.orig Thu Feb 18 04:35:38 1999 ++++ xfsm_util.c Wed Mar 15 03:08:33 2000 +@@ -152,7 +152,7 @@ + /* *** FreeBSD has fsize which is the physical block size *** */ + /* *** and bsize which is the optimal transfer block size *** */ + /* *** and which depends on the filesystem parameter. *** */ +- calc_bsize=stats[i].f_fsize; ++ calc_bsize=stats[i].f_bsize; + #endif /* FreeBSD */ + + /* *** take the longer of the two 'problematic' strings *** */ diff --git a/filesystems/xfsm/pkg-descr b/filesystems/xfsm/pkg-descr new file mode 100644 index 000000000000..9a9c488303d7 --- /dev/null +++ b/filesystems/xfsm/pkg-descr @@ -0,0 +1,6 @@ +xfsm stands for X File System Monitor and runs under MIT's X11 +window system on several flavors of UNIX. It is a tool designed +to make monitoring your file systems' status easy by displaying +a simple bar graph for each file system greater than size 0. It +updates the file systems' statistics at regular, user definable +intervals. diff --git a/filesystems/xfsprogs/Makefile b/filesystems/xfsprogs/Makefile new file mode 100644 index 000000000000..d6322b0c38c9 --- /dev/null +++ b/filesystems/xfsprogs/Makefile @@ -0,0 +1,44 @@ +PORTNAME= xfsprogs +DISTVERSION= 3.2.4 +PORTREVISION= 4 +CATEGORIES= filesystems sysutils +MASTER_SITES= ftp://oss.sgi.com/projects/xfs/cmd_tars/ \ + ftp://oss.sgi.com/projects/xfs/previous/cmd_tars/ + +MAINTAINER= ports@FreeBSD.org +COMMENT= Utilities for managing XFS filesystems +WWW= http://oss.sgi.com/projects/xfs/ + +LICENSE= LGPL21 GPLv2 +LICENSE_COMB= multi +LICENSE_FILE= ${WRKSRC}/doc/COPYING + +USES= cpe gettext gmake libtool:build readline +CPE_VENDOR= sgi +CPE_PRODUCT= ${PORTNAME} +GNU_CONFIGURE= yes +GNU_CONFIGURE_MANPREFIX= ${PREFIX}/share +CONFIGURE_ENV= OPTIMIZER=-fcommon +CONFIGURE_ARGS= --disable-shared --enable-readline +ALL_TARGET= # empty +MAKE_ARGS= V=1 + +OPTIONS_DEFINE= DOCS + +post-patch: + @${REINPLACE_CMD} -e '/utmp/d' \ + ${WRKSRC}/quota/report.c ${WRKSRC}/quota/util.c + @${REINPLACE_CMD} \ + -e 's|/usr/local|${LOCALBASE}|g' \ + -e 's/lio_listio/timer_create/' \ + ${WRKSRC}/configure + @${REINPLACE_CMD} -e '/#!/s|bash|sh|' \ + ${WRKSRC}/include/install-sh ${WRKSRC}/install-sh + +post-install: +.for f in mkfs.xfs xfs_copy xfs_db xfs_estimate xfs_fsr xfs_growfs xfs_io \ + xfs_logprint xfs_mdrestore xfs_quota xfs_repair xfs_rtcp + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/sbin/${f} +.endfor + +.include <bsd.port.mk> diff --git a/filesystems/xfsprogs/distinfo b/filesystems/xfsprogs/distinfo new file mode 100644 index 000000000000..cbbd873ecf05 --- /dev/null +++ b/filesystems/xfsprogs/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1438219249 +SHA256 (xfsprogs-3.2.4.tar.gz) = dde65ead82d3cbfa9b4ded9796b6d22095d7d759a22d41ae6f1a4ec458bb0465 +SIZE (xfsprogs-3.2.4.tar.gz) = 1482424 diff --git a/filesystems/xfsprogs/files/patch-fsr_xfs__fsr.c b/filesystems/xfsprogs/files/patch-fsr_xfs__fsr.c new file mode 100644 index 000000000000..2ded0bf3606c --- /dev/null +++ b/filesystems/xfsprogs/files/patch-fsr_xfs__fsr.c @@ -0,0 +1,266 @@ +--- fsr/xfs_fsr.c.orig 2015-07-24 04:28:04 UTC ++++ fsr/xfs_fsr.c +@@ -26,15 +26,13 @@ + + #include <fcntl.h> + #include <errno.h> +-#include <malloc.h> +-#include <mntent.h> ++#include <sys/mount.h> + #include <syslog.h> + #include <signal.h> + #include <sys/ioctl.h> + #include <sys/wait.h> +-#include <sys/vfs.h> + #include <sys/statvfs.h> +-#include <sys/xattr.h> ++#include <sys/extattr.h> + + + #ifndef XFS_XFLAG_NODEFRAG +@@ -184,10 +182,13 @@ aborter(int unused) + static char * + find_mountpoint(char *mtab, char *argname, struct stat64 *sb) + { +- struct mntent *t; ++ struct statfs *t; + struct stat64 ms; +- FILE *mtabp; + char *mntp = NULL; ++ int nt; ++ ++#ifdef __linux__ ++ FILE *mtabp; + + mtabp = setmntent(mtab, "r"); + if (!mtabp) { +@@ -195,40 +196,43 @@ find_mountpoint(char *mtab, char *argnam + progname, mtab); + exit(1); + } ++#endif + +- while ((t = getmntent(mtabp))) { ++ for (nt = getmntinfo(&t, MNT_NOWAIT); nt--; t++) { + if (S_ISDIR(sb->st_mode)) { /* mount point */ +- if (stat64(t->mnt_dir, &ms) < 0) ++ if (stat64(t->f_mntonname, &ms) < 0) + continue; + if (sb->st_ino != ms.st_ino) + continue; + if (sb->st_dev != ms.st_dev) + continue; +- if (strcmp(t->mnt_type, MNTTYPE_XFS) != 0) ++ if (strcmp(t->f_fstypename, MNTTYPE_XFS) != 0) + continue; + } else { /* device */ + struct stat64 sb2; + +- if (stat64(t->mnt_fsname, &ms) < 0) ++ if (stat64(t->f_mntfromname, &ms) < 0) + continue; + if (sb->st_rdev != ms.st_rdev) + continue; +- if (strcmp(t->mnt_type, MNTTYPE_XFS) != 0) ++ if (strcmp(t->f_fstypename, MNTTYPE_XFS) != 0) + continue; + + /* + * Make sure the mountpoint given by mtab is accessible + * before using it. + */ +- if (stat64(t->mnt_dir, &sb2) < 0) ++ if (stat64(t->f_mntonname, &sb2) < 0) + continue; + } + +- mntp = t->mnt_dir; ++ mntp = t->f_mntonname; + break; + } + ++#ifdef __linux__ + endmntent(mtabp); ++#endif + return mntp; + } + +@@ -304,6 +308,7 @@ main(int argc, char **argv) + } + } + ++#ifdef __linux__ + /* + * If the user did not specify an explicit mount table, try to use + * /proc/mounts if it is available, else /etc/mtab. We prefer +@@ -317,6 +322,7 @@ main(int argc, char **argv) + else + mtab = _PATH_MOUNTED; + } ++#endif + + if (vflag) + setbuf(stdout, NULL); +@@ -392,7 +398,7 @@ usage(int ret) + " -t time How long to run in seconds.\n" + " -p passes Number of passes before terminating global re-org.\n" + " -f leftoff Use this instead of %s.\n" +-" -m mtab Use something other than /etc/mtab.\n" ++" -m mtab Use this instead of /etc/mtab (ignored on FreeBSD).\n" + " -d Debug, print even more.\n" + " -v Verbose, more -v's more verbose.\n" + " -V Print version number and exit.\n" +@@ -406,17 +412,20 @@ usage(int ret) + static void + initallfs(char *mtab) + { +- FILE *fp; +- struct mntent *mp; +- int mi; ++ struct statfs *mp; ++ int mi, nmp; + char *cp; + struct stat64 sb; + ++#ifdef __linux__ ++ FILE *fp; ++ + fp = setmntent(mtab, "r"); + if (fp == NULL) { + fsrprintf(_("could not open mtab file: %s\n"), mtab); + exit(1); + } ++#endif + + /* malloc a number of descriptors, increased later if needed */ + if (!(fsbase = (fsdesc_t *)malloc(fsbufsize * sizeof(fsdesc_t)))) { +@@ -428,23 +437,19 @@ initallfs(char *mtab) + /* find all rw xfs file systems */ + mi = 0; + fs = fsbase; +- while ((mp = getmntent(fp))) { ++ for (nmp = getmntinfo(&mp, MNT_NOWAIT); nmp--; mp++) { + int rw = 0; + +- if (strcmp(mp->mnt_type, MNTTYPE_XFS ) != 0 || +- stat64(mp->mnt_fsname, &sb) == -1 || ++ if (strcmp(mp->f_fstypename, MNTTYPE_XFS ) != 0 || ++ stat64(mp->f_mntfromname, &sb) == -1 || + !S_ISBLK(sb.st_mode)) + continue; + +- cp = strtok(mp->mnt_opts,","); +- do { +- if (strcmp("rw", cp) == 0) +- rw++; +- } while ((cp = strtok(NULL, ",")) != NULL); ++ rw = !(mp->f_flags & MNT_RDONLY); + if (rw == 0) { + if (dflag) + fsrprintf(_("Skipping %s: not mounted rw\n"), +- mp->mnt_fsname); ++ mp->f_mntfromname); + continue; + } + +@@ -464,15 +469,15 @@ initallfs(char *mtab) + fs = (fsbase + mi); /* Needed ? */ + } + +- fs->dev = strdup(mp->mnt_fsname); +- fs->mnt = strdup(mp->mnt_dir); ++ fs->dev = strdup(mp->f_mntfromname); ++ fs->mnt = strdup(mp->f_mntonname); + + if (fs->dev == NULL) { +- fsrprintf(_("strdup(%s) failed\n"), mp->mnt_fsname); ++ fsrprintf(_("strdup(%s) failed\n"), mp->f_mntfromname); + exit(1); + } + if (fs->mnt == NULL) { +- fsrprintf(_("strdup(%s) failed\n"), mp->mnt_dir); ++ fsrprintf(_("strdup(%s) failed\n"), mp->f_mntonname); + exit(1); + } + mi++; +@@ -480,7 +485,9 @@ initallfs(char *mtab) + } + numfs = mi; + fsend = (fsbase + numfs); ++#ifdef __linux__ + endmntent(fp); ++#endif + if (numfs == 0) { + fsrprintf(_("no rw xfs file systems in mtab: %s\n"), mtab); + exit(0); +@@ -1027,7 +1034,7 @@ fsr_setup_attr_fork( + xfs_bstat_t *bstatp) + { + struct stat64 tstatbuf; +- int i; ++ int i, ns; + int diff = 0; + int last_forkoff = 0; + int no_change_cnt = 0; +@@ -1036,6 +1043,9 @@ fsr_setup_attr_fork( + if (!(bstatp->bs_xflags & XFS_XFLAG_HASATTR)) + return 0; + ++ if (extattr_string_to_namespace("user", &ns) == -1) ++ return -1; ++ + /* + * use the old method if we have attr1 or the kernel does not yet + * support passing the fork offset in the bulkstat data. +@@ -1043,8 +1053,8 @@ fsr_setup_attr_fork( + if (!(fsgeom.flags & XFS_FSOP_GEOM_FLAGS_ATTR2) || + bstatp->bs_forkoff == 0) { + /* attr1 */ +- ret = fsetxattr(tfd, "user.X", "X", 1, XATTR_CREATE); +- if (ret) { ++ ret = extattr_set_fd(tfd, ns, "X", "X", 1); ++ if (ret == -1) { + fsrprintf(_("could not set ATTR\n")); + return -1; + } +@@ -1085,7 +1095,7 @@ fsr_setup_attr_fork( + if (!diff) + goto out; + +- snprintf(name, sizeof(name), "user.%d", i); ++ snprintf(name, sizeof(name), "%d", i); + + /* + * If there is no attribute, then we need to create one to get +@@ -1093,8 +1103,8 @@ fsr_setup_attr_fork( + */ + if (!tbstat.bs_forkoff) { + ASSERT(i == 0); +- ret = fsetxattr(tfd, name, "XX", 2, XATTR_CREATE); +- if (ret) { ++ ret = extattr_set_fd(tfd, ns, name, "XX", 2); ++ if (ret == -1) { + fsrprintf(_("could not set ATTR\n")); + return -1; + } +@@ -1141,7 +1151,8 @@ fsr_setup_attr_fork( + if (diff < 0 && fsx.fsx_nextents > 0) { + char val[2048]; + memset(val, 'X', 2048); +- if (fsetxattr(tfd, name, val, 2048, 0)) { ++ if (extattr_set_fd(tfd, ns, name, val, 2048) ++ == -1) { + fsrprintf(_("big ATTR set failed\n")); + return -1; + } +@@ -1185,8 +1196,8 @@ fsr_setup_attr_fork( + } + + /* we need to grow the attr fork, so create another attr */ +- ret = fsetxattr(tfd, name, "XX", 2, XATTR_CREATE); +- if (ret) { ++ ret = extattr_set_fd(tfd, ns, name, "XX", 2); ++ if (ret == -1) { + fsrprintf(_("could not set ATTR\n")); + return -1; + } diff --git a/filesystems/xfsprogs/files/patch-include_freebsd.h b/filesystems/xfsprogs/files/patch-include_freebsd.h new file mode 100644 index 000000000000..e6f636c3509c --- /dev/null +++ b/filesystems/xfsprogs/files/patch-include_freebsd.h @@ -0,0 +1,17 @@ +--- include/freebsd.h.orig 2015-07-24 04:28:04 UTC ++++ include/freebsd.h +@@ -37,10 +37,14 @@ + #define ftruncate64 ftruncate + #define lseek64 lseek + #define stat64 stat ++#define lstat64 lstat + #define pwrite64 pwrite + #define pread64 pread + #define fdatasync fsync + #define memalign(a,sz) valloc(sz) ++#define nftw64 nftw ++#define statvfs64 statvfs ++#define posix_fadvise64 posix_fadvise + + #define constpp char * const * + diff --git a/filesystems/xfsprogs/files/patch-include_libxfs.h b/filesystems/xfsprogs/files/patch-include_libxfs.h new file mode 100644 index 000000000000..229231935310 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-include_libxfs.h @@ -0,0 +1,10 @@ +--- include/libxfs.h.orig 2015-07-24 04:28:04 UTC ++++ include/libxfs.h +@@ -27,7 +27,6 @@ + #include <xfs/list.h> + #include <xfs/hlist.h> + #include <xfs/cache.h> +-#include <xfs/bitops.h> + #include <xfs/kmem.h> + #include <xfs/radix-tree.h> + #include <xfs/swab.h> diff --git a/filesystems/xfsprogs/files/patch-include_list.h b/filesystems/xfsprogs/files/patch-include_list.h new file mode 100644 index 000000000000..ec1874b585ca --- /dev/null +++ b/filesystems/xfsprogs/files/patch-include_list.h @@ -0,0 +1,11 @@ +--- include/list.h.orig 2014-01-20 22:47:46 UTC ++++ include/list.h +@@ -29,7 +29,7 @@ struct list_head { + + #define LIST_HEAD_INIT(name) { &(name), &(name) } + +-#define LIST_HEAD(name) \ ++#define XFS_LIST_HEAD(name) \ + struct list_head name = LIST_HEAD_INIT(name) + + #define INIT_LIST_HEAD(list) list_head_init(list) diff --git a/filesystems/xfsprogs/files/patch-include_xfs__bit.h b/filesystems/xfsprogs/files/patch-include_xfs__bit.h new file mode 100644 index 000000000000..768cb386f418 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-include_xfs__bit.h @@ -0,0 +1,11 @@ +--- include/xfs_bit.h.orig 2015-07-24 04:28:04 UTC ++++ include/xfs_bit.h +@@ -47,7 +47,7 @@ static inline int xfs_highbit32(__uint32 + /* Get high bit set out of 64-bit argument, -1 if none set */ + static inline int xfs_highbit64(__uint64_t v) + { +- return fls64(v) - 1; ++ return flsll(v) - 1; + } + + /* Get low bit set out of 32-bit argument, -1 if none set */ diff --git a/filesystems/xfsprogs/files/patch-io_mmap.c b/filesystems/xfsprogs/files/patch-io_mmap.c new file mode 100644 index 000000000000..89fdc3d72548 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-io_mmap.c @@ -0,0 +1,41 @@ +--- io/mmap.c.orig 2015-07-24 04:28:04 UTC ++++ io/mmap.c +@@ -575,6 +575,7 @@ mwrite_f( + return 0; + } + ++#ifdef __linux__ + static void + mremap_help(void) + { +@@ -634,6 +635,7 @@ mremap_f( + + return 0; + } ++#endif + + void + mmap_init(void) +@@ -689,6 +691,7 @@ mmap_init(void) + _("writes data into a region in the current memory mapping"); + mwrite_cmd.help = mwrite_help; + ++#ifdef __linux__ + mremap_cmd.name = "mremap"; + mremap_cmd.altname = "mrm"; + mremap_cmd.cfunc = mremap_f; +@@ -699,11 +702,14 @@ mmap_init(void) + mremap_cmd.oneline = + _("alters the size of the current memory mapping"); + mremap_cmd.help = mremap_help; ++#endif + + add_command(&mmap_cmd); + add_command(&mread_cmd); + add_command(&msync_cmd); + add_command(&munmap_cmd); + add_command(&mwrite_cmd); ++#ifdef __linux__ + add_command(&mremap_cmd); ++#endif + } diff --git a/filesystems/xfsprogs/files/patch-io_readdir.c b/filesystems/xfsprogs/files/patch-io_readdir.c new file mode 100644 index 000000000000..b3c1d2968f4f --- /dev/null +++ b/filesystems/xfsprogs/files/patch-io_readdir.c @@ -0,0 +1,20 @@ +--- io/readdir.c.orig 2015-07-24 04:28:04 UTC ++++ io/readdir.c +@@ -72,7 +72,7 @@ dump_dirent( + long long offset, + struct dirent *dirent) + { +- printf("%08llx: d_ino: 0x%08lx", offset, dirent->d_ino); ++ printf("%08llx: d_ino: 0x%08x", offset, dirent->d_ino); + #ifdef _DIRENT_HAVE_D_OFF + printf(" d_off: 0x%08lx", dirent->d_off); + #endif +@@ -109,7 +109,7 @@ read_directory( + + if (dump) { + dump_dirent(offset, dirent); +- offset = dirent->d_off; ++ offset = telldir(dir); + } + } + diff --git a/filesystems/xfsprogs/files/patch-libhandle_handle.c b/filesystems/xfsprogs/files/patch-libhandle_handle.c new file mode 100644 index 000000000000..0ecca06fd629 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-libhandle_handle.c @@ -0,0 +1,10 @@ +--- libhandle/handle.c.orig 2015-07-24 04:28:04 UTC ++++ libhandle/handle.c +@@ -23,6 +23,7 @@ + + /* just pick a value we know is more than big enough */ + #define MAXHANSIZ 64 ++#define XATTR_LIST_MAX 65536 + + /* + * The actual content of a handle is supposed to be opaque here. diff --git a/filesystems/xfsprogs/files/patch-libhandle_jdm.c b/filesystems/xfsprogs/files/patch-libhandle_jdm.c new file mode 100644 index 000000000000..ef504248d1cb --- /dev/null +++ b/filesystems/xfsprogs/files/patch-libhandle_jdm.c @@ -0,0 +1,11 @@ +--- libhandle/jdm.c.orig 2015-07-24 04:28:04 UTC ++++ libhandle/jdm.c +@@ -21,6 +21,8 @@ + #include <xfs/jdm.h> + #include <xfs/parent.h> + ++#define XATTR_LIST_MAX 65536 ++ + /* internal fshandle - typecast to a void for external use */ + #define FSHANDLE_SZ 8 + typedef struct fshandle { diff --git a/filesystems/xfsprogs/files/patch-libxcmd_paths.c b/filesystems/xfsprogs/files/patch-libxcmd_paths.c new file mode 100644 index 000000000000..59037da27541 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-libxcmd_paths.c @@ -0,0 +1,11 @@ +--- libxcmd/paths.c.orig 2015-07-24 04:28:04 UTC ++++ libxcmd/paths.c +@@ -364,7 +364,7 @@ fs_table_initialise_mounts( + continue; + if (!realpath(stats[i].f_mntfromname, rmntfromname)) + continue; +- if (!realpath(stats[i].f_mntonname, rmnttomname))) ++ if (!realpath(stats[i].f_mntonname, rmntonname)) + continue; + + if (path && diff --git a/filesystems/xfsprogs/files/patch-libxfs_crc32.c b/filesystems/xfsprogs/files/patch-libxfs_crc32.c new file mode 100644 index 000000000000..32f53647b5d6 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-libxfs_crc32.c @@ -0,0 +1,10 @@ +--- libxfs/crc32.c.orig 2015-07-24 04:28:04 UTC ++++ libxfs/crc32.c +@@ -33,6 +33,7 @@ + * match the hardware acceleration available on Intel CPUs. + */ + ++#include <inttypes.h> + #include <libxfs.h> + #include "crc32defs.h" + diff --git a/filesystems/xfsprogs/files/patch-libxfs_rdwr.c b/filesystems/xfsprogs/files/patch-libxfs_rdwr.c new file mode 100644 index 000000000000..d89bf99c7ee7 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-libxfs_rdwr.c @@ -0,0 +1,19 @@ +--- libxfs/rdwr.c.orig 2015-07-24 04:28:04 UTC ++++ libxfs/rdwr.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <xfs/libxfs.h> + #include "init.h" + +@@ -371,7 +372,7 @@ libxfs_bcompare(struct cache_node *node, + #ifdef IO_BCOMPARE_CHECK + if (!(libxfs_bcache->c_flags & CACHE_MISCOMPARE_PURGE)) { + fprintf(stderr, +- "%lx: Badness in key lookup (length)\n" ++ "%p: Badness in key lookup (length)\n" + "bp=(bno 0x%llx, len %u bytes) key=(bno 0x%llx, len %u bytes)\n", + pthread_self(), + (unsigned long long)bp->b_bn, (int)bp->b_bcount, diff --git a/filesystems/xfsprogs/files/patch-libxfs_util.c b/filesystems/xfsprogs/files/patch-libxfs_util.c new file mode 100644 index 000000000000..cb15c74f5518 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-libxfs_util.c @@ -0,0 +1,10 @@ +--- libxfs/util.c.orig 2015-07-24 04:28:04 UTC ++++ libxfs/util.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <xfs.h> + #include <time.h> + #include <stdio.h> diff --git a/filesystems/xfsprogs/files/patch-libxfs_xfs__attr__remote.c b/filesystems/xfsprogs/files/patch-libxfs_xfs__attr__remote.c new file mode 100644 index 000000000000..969d1bdf444a --- /dev/null +++ b/filesystems/xfsprogs/files/patch-libxfs_xfs__attr__remote.c @@ -0,0 +1,10 @@ +--- libxfs/xfs_attr_remote.c.orig 2015-07-24 04:28:04 UTC ++++ libxfs/xfs_attr_remote.c +@@ -19,6 +19,7 @@ + #include <xfs.h> + + #define ATTR_RMTVALUE_MAPSIZE 1 /* # of map entries at once */ ++#define XATTR_SIZE_MAX 65536 + + /* + * Each contiguous block has a header, so it is not just a simple attribute diff --git a/filesystems/xfsprogs/files/patch-libxlog_util.c b/filesystems/xfsprogs/files/patch-libxlog_util.c new file mode 100644 index 000000000000..3b2f23613efb --- /dev/null +++ b/filesystems/xfsprogs/files/patch-libxlog_util.c @@ -0,0 +1,10 @@ +--- libxlog/util.c.orig 2015-07-28 23:02:16 UTC ++++ libxlog/util.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <xfs/libxlog.h> + + int print_exit; diff --git a/filesystems/xfsprogs/files/patch-po_de.po b/filesystems/xfsprogs/files/patch-po_de.po new file mode 100644 index 000000000000..bf9faedd7eda --- /dev/null +++ b/filesystems/xfsprogs/files/patch-po_de.po @@ -0,0 +1,11 @@ +--- po/de.po.orig 2015-07-24 04:28:04 UTC ++++ po/de.po +@@ -3084,7 +3084,7 @@ msgid "%s will take about %.1f megabytes\n" + #: .././estimate/xfs_estimate.c:191 + #, c-format + msgid "%s will take about %.1f megabytes\n" +-msgstr "%s wird etwa %.lf Megabytes einnehmen\n" ++msgstr "%s wird etwa %.1f Megabytes einnehmen\n" + + #: .././estimate/xfs_estimate.c:198 + #, c-format diff --git a/filesystems/xfsprogs/files/patch-repair_agheader.c b/filesystems/xfsprogs/files/patch-repair_agheader.c new file mode 100644 index 000000000000..d0d0f14ea0a6 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_agheader.c @@ -0,0 +1,10 @@ +--- repair/agheader.c.orig 2015-07-24 04:28:04 UTC ++++ repair/agheader.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <libxfs.h> + #include "globals.h" + #include "agheader.h" diff --git a/filesystems/xfsprogs/files/patch-repair_attr__repair.c b/filesystems/xfsprogs/files/patch-repair_attr__repair.c new file mode 100644 index 000000000000..6ea276ef3e88 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_attr__repair.c @@ -0,0 +1,10 @@ +--- repair/attr_repair.c.orig 2015-07-24 04:28:04 UTC ++++ repair/attr_repair.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <libxfs.h> + #include "globals.h" + #include "err_protos.h" diff --git a/filesystems/xfsprogs/files/patch-repair_attr__repair.h b/filesystems/xfsprogs/files/patch-repair_attr__repair.h new file mode 100644 index 000000000000..9ae0d545ec7e --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_attr__repair.h @@ -0,0 +1,10 @@ +--- repair/attr_repair.h.orig 2015-07-24 04:28:04 UTC ++++ repair/attr_repair.h +@@ -71,6 +71,7 @@ struct xfs_acl { + * For v4 superblocks, that is limited to 25 entries. For v5 superblocks, it is + * limited only by the maximum size of the xattr that stores the information. + */ ++#define XATTR_SIZE_MAX 65536 + #define XFS_ACL_MAX_ENTRIES(mp) \ + (xfs_sb_version_hascrc(&mp->m_sb) \ + ? (XATTR_SIZE_MAX - sizeof(struct xfs_acl)) / \ diff --git a/filesystems/xfsprogs/files/patch-repair_bmap.c b/filesystems/xfsprogs/files/patch-repair_bmap.c new file mode 100644 index 000000000000..754e1d435384 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_bmap.c @@ -0,0 +1,10 @@ +--- repair/bmap.c.orig 2015-07-24 04:28:04 UTC ++++ repair/bmap.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <libxfs.h> + #include "err_protos.h" + #include "bmap.h" diff --git a/filesystems/xfsprogs/files/patch-repair_dino__chunks.c b/filesystems/xfsprogs/files/patch-repair_dino__chunks.c new file mode 100644 index 000000000000..e99a31e860bc --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_dino__chunks.c @@ -0,0 +1,10 @@ +--- repair/dino_chunks.c.orig 2015-07-24 04:28:04 UTC ++++ repair/dino_chunks.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <libxfs.h> + #include "avl.h" + #include "globals.h" diff --git a/filesystems/xfsprogs/files/patch-repair_dinode.c b/filesystems/xfsprogs/files/patch-repair_dinode.c new file mode 100644 index 000000000000..681657d22168 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_dinode.c @@ -0,0 +1,10 @@ +--- repair/dinode.c.orig 2015-07-24 04:28:04 UTC ++++ repair/dinode.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <libxfs.h> + #include "avl.h" + #include "globals.h" diff --git a/filesystems/xfsprogs/files/patch-repair_dir2.c b/filesystems/xfsprogs/files/patch-repair_dir2.c new file mode 100644 index 000000000000..9056ade2151f --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_dir2.c @@ -0,0 +1,10 @@ +--- repair/dir2.c.orig 2015-07-24 04:28:04 UTC ++++ repair/dir2.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <libxfs.h> + #include "avl.h" + #include "globals.h" diff --git a/filesystems/xfsprogs/files/patch-repair_incore.c b/filesystems/xfsprogs/files/patch-repair_incore.c new file mode 100644 index 000000000000..97637a572c82 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_incore.c @@ -0,0 +1,10 @@ +--- repair/incore.c.orig 2015-07-24 04:28:04 UTC ++++ repair/incore.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <libxfs.h> + #include "avl.h" + #include "btree.h" diff --git a/filesystems/xfsprogs/files/patch-repair_phase2.c b/filesystems/xfsprogs/files/patch-repair_phase2.c new file mode 100644 index 000000000000..6a3b7ecda94b --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_phase2.c @@ -0,0 +1,10 @@ +--- repair/phase2.c.orig 2015-07-28 23:02:16 UTC ++++ repair/phase2.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <xfs/libxlog.h> + #include "avl.h" + #include "globals.h" diff --git a/filesystems/xfsprogs/files/patch-repair_phase3.c b/filesystems/xfsprogs/files/patch-repair_phase3.c new file mode 100644 index 000000000000..3d5de760b8b7 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_phase3.c @@ -0,0 +1,10 @@ +--- repair/phase3.c.orig 2015-07-24 04:28:04 UTC ++++ repair/phase3.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <libxfs.h> + #include "threads.h" + #include "prefetch.h" diff --git a/filesystems/xfsprogs/files/patch-repair_phase4.c b/filesystems/xfsprogs/files/patch-repair_phase4.c new file mode 100644 index 000000000000..79b6ee00e029 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_phase4.c @@ -0,0 +1,10 @@ +--- repair/phase4.c.orig 2015-07-24 04:28:04 UTC ++++ repair/phase4.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <libxfs.h> + #include "threads.h" + #include "prefetch.h" diff --git a/filesystems/xfsprogs/files/patch-repair_phase6.c b/filesystems/xfsprogs/files/patch-repair_phase6.c new file mode 100644 index 000000000000..6285609ca09b --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_phase6.c @@ -0,0 +1,19 @@ +--- repair/phase6.c.orig 2015-07-24 04:28:04 UTC ++++ repair/phase6.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <libxfs.h> + #include "threads.h" + #include "prefetch.h" +@@ -49,7 +50,7 @@ typedef struct dotdot_update { + int ino_offset; + } dotdot_update_t; + +-static LIST_HEAD(dotdot_update_list); ++static XFS_LIST_HEAD(dotdot_update_list); + static int dotdot_update; + + static void diff --git a/filesystems/xfsprogs/files/patch-repair_phase7.c b/filesystems/xfsprogs/files/patch-repair_phase7.c new file mode 100644 index 000000000000..a89d928ac70e --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_phase7.c @@ -0,0 +1,10 @@ +--- repair/phase7.c.orig 2015-07-24 04:28:04 UTC ++++ repair/phase7.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <libxfs.h> + #include "avl.h" + #include "globals.h" diff --git a/filesystems/xfsprogs/files/patch-repair_progress.c b/filesystems/xfsprogs/files/patch-repair_progress.c new file mode 100644 index 000000000000..eb0d4c92c28c --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_progress.c @@ -0,0 +1,8 @@ +--- repair/progress.c.orig 2015-07-24 04:28:04 UTC ++++ repair/progress.c +@@ -1,4 +1,5 @@ + ++#include <inttypes.h> + #include <libxfs.h> + #include "globals.h" + #include "progress.h" diff --git a/filesystems/xfsprogs/files/patch-repair_sb.c b/filesystems/xfsprogs/files/patch-repair_sb.c new file mode 100644 index 000000000000..c2a88d67f7c6 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_sb.c @@ -0,0 +1,10 @@ +--- repair/sb.c.orig 2015-07-24 04:28:04 UTC ++++ repair/sb.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <libxfs.h> + #include <libxlog.h> + #include "agheader.h" diff --git a/filesystems/xfsprogs/files/patch-repair_scan.c b/filesystems/xfsprogs/files/patch-repair_scan.c new file mode 100644 index 000000000000..6d57dfd276d5 --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_scan.c @@ -0,0 +1,10 @@ +--- repair/scan.c.orig 2015-07-24 04:28:04 UTC ++++ repair/scan.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <libxfs.h> + #include "avl.h" + #include "globals.h" diff --git a/filesystems/xfsprogs/files/patch-repair_xfs__repair.c b/filesystems/xfsprogs/files/patch-repair_xfs__repair.c new file mode 100644 index 000000000000..f86768dfeb1f --- /dev/null +++ b/filesystems/xfsprogs/files/patch-repair_xfs__repair.c @@ -0,0 +1,10 @@ +--- repair/xfs_repair.c.orig 2015-07-24 04:28:04 UTC ++++ repair/xfs_repair.c +@@ -16,6 +16,7 @@ + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include <inttypes.h> + #include <xfs/libxlog.h> + #include <sys/resource.h> + #include "avl.h" diff --git a/filesystems/xfsprogs/pkg-descr b/filesystems/xfsprogs/pkg-descr new file mode 100644 index 000000000000..ec87fe1373cd --- /dev/null +++ b/filesystems/xfsprogs/pkg-descr @@ -0,0 +1,7 @@ +A set of commands to work with XFS filesystems, including mkfs.xfs(8). + +XFS is a high performance journaling filesystem which originated on the +SGI IRIX platform. It is completely multi-threaded, can support large +files and large filesystems, extended attributes, variable block sizes, +is extent based, and makes extensive use of B-trees (for directories, +extents, free space) to aid both performance and scalability. diff --git a/filesystems/xfsprogs/pkg-plist b/filesystems/xfsprogs/pkg-plist new file mode 100644 index 000000000000..7b0c0fdc61a6 --- /dev/null +++ b/filesystems/xfsprogs/pkg-plist @@ -0,0 +1,49 @@ +share/man/man5/projects.5.gz +share/man/man5/projid.5.gz +share/man/man5/xfs.5.gz +share/man/man8/fsck.xfs.8.gz +share/man/man8/mkfs.xfs.8.gz +share/man/man8/xfs_admin.8.gz +share/man/man8/xfs_bmap.8.gz +share/man/man8/xfs_copy.8.gz +share/man/man8/xfs_db.8.gz +share/man/man8/xfs_estimate.8.gz +share/man/man8/xfs_freeze.8.gz +share/man/man8/xfs_fsr.8.gz +share/man/man8/xfs_growfs.8.gz +share/man/man8/xfs_info.8.gz +share/man/man8/xfs_io.8.gz +share/man/man8/xfs_logprint.8.gz +share/man/man8/xfs_mdrestore.8.gz +share/man/man8/xfs_metadump.8.gz +share/man/man8/xfs_mkfile.8.gz +share/man/man8/xfs_ncheck.8.gz +share/man/man8/xfs_quota.8.gz +share/man/man8/xfs_repair.8.gz +share/man/man8/xfs_rtcp.8.gz +sbin/fsck.xfs +sbin/mkfs.xfs +sbin/xfs_admin +sbin/xfs_bmap +sbin/xfs_copy +sbin/xfs_db +sbin/xfs_estimate +sbin/xfs_freeze +sbin/xfs_fsr +sbin/xfs_growfs +sbin/xfs_info +sbin/xfs_io +sbin/xfs_logprint +sbin/xfs_mdrestore +sbin/xfs_metadump +sbin/xfs_mkfile +sbin/xfs_ncheck +sbin/xfs_quota +sbin/xfs_repair +sbin/xfs_rtcp +share/locale/de/LC_MESSAGES/xfsprogs.mo +share/locale/pl/LC_MESSAGES/xfsprogs.mo +%%PORTDOCS%%%%DOCSDIR%%/CHANGES.gz +%%PORTDOCS%%%%DOCSDIR%%/CREDITS +%%PORTDOCS%%%%DOCSDIR%%/COPYING +%%PORTDOCS%%%%DOCSDIR%%/README diff --git a/filesystems/xfuse/Makefile b/filesystems/xfuse/Makefile new file mode 100644 index 000000000000..335e950fc5f8 --- /dev/null +++ b/filesystems/xfuse/Makefile @@ -0,0 +1,26 @@ +PORTNAME= xfuse +DISTVERSION= 0.4.4 +PORTREVISION= 2 +CATEGORIES= filesystems +MASTER_SITES= CRATESIO +MASTER_SITE_SUBDIR= xfs-fuse/${DISTVERSION} +PKGNAMEPREFIX= fusefs- +DISTNAME= xfs-fuse-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX} +DISTFILES= ${CARGO_DIST_SUBDIR}/${DISTNAME}${CARGO_CRATE_EXT} + +MAINTAINER= asomers@FreeBSD.org +COMMENT= Read-only FUSE server implementing XFS +WWW= https://github.com/KhaledEmaraDev/xfuse + +LICENSE= BSD2CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE.md + +USES= cargo fuse:3 + +PLIST_FILES= bin/xfs-fuse \ + share/man/man1/xfs-fuse.1.gz + +post-install: + ${INSTALL_MAN} ${WRKSRC}/doc/xfs-fuse.1 ${STAGEDIR}${PREFIX}/share/man/man1 + +.include <bsd.port.mk> diff --git a/filesystems/xfuse/Makefile.crates b/filesystems/xfuse/Makefile.crates new file mode 100644 index 000000000000..0cb7306bc004 --- /dev/null +++ b/filesystems/xfuse/Makefile.crates @@ -0,0 +1,142 @@ +CARGO_CRATES= aho-corasick-1.0.5 \ + anstream-0.6.14 \ + anstyle-1.0.2 \ + anstyle-parse-0.2.4 \ + anstyle-query-1.0.3 \ + anstyle-wincon-3.0.3 \ + assert_cmd-2.0.11 \ + autocfg-1.1.0 \ + bincode-2.0.0-rc.3 \ + bincode_derive-2.0.0-rc.3 \ + bitflags-1.3.2 \ + bitflags-2.4.0 \ + bstr-1.6.2 \ + byteorder-1.4.3 \ + cc-1.0.83 \ + cfg-if-1.0.0 \ + clap-4.4.18 \ + clap_builder-4.4.18 \ + clap_derive-4.4.7 \ + clap_lex-0.6.0 \ + colorchoice-1.0.1 \ + crc-2.1.0 \ + crc-catalog-1.1.1 \ + difflib-0.4.0 \ + doc-comment-0.3.3 \ + either-1.9.0 \ + enum-as-inner-0.6.0 \ + enum_dispatch-0.3.12 \ + errno-0.3.3 \ + errno-dragonfly-0.1.2 \ + fastrand-2.0.0 \ + function_name-0.3.0 \ + function_name-proc-macro-0.3.0 \ + fuser-0.13.0 \ + futures-0.3.28 \ + futures-channel-0.3.28 \ + futures-core-0.3.28 \ + futures-executor-0.3.28 \ + futures-io-0.3.28 \ + futures-macro-0.3.28 \ + futures-sink-0.3.28 \ + futures-task-0.3.28 \ + futures-timer-3.0.2 \ + futures-util-0.3.28 \ + getrandom-0.2.10 \ + glob-0.3.1 \ + heck-0.4.1 \ + is_terminal_polyfill-1.70.0 \ + itertools-0.10.5 \ + lazy_static-1.4.0 \ + libc-0.2.155 \ + linux-raw-sys-0.4.5 \ + log-0.4.21 \ + matchers-0.1.0 \ + mdconfig-0.2.0 \ + memchr-2.6.1 \ + nix-0.27.1 \ + nu-ansi-term-0.46.0 \ + num-derive-0.4.2 \ + num-traits-0.2.14 \ + once_cell-1.18.0 \ + overload-0.1.1 \ + page_size-0.5.0 \ + pin-project-lite-0.2.13 \ + pin-utils-0.1.0 \ + pkg-config-0.3.27 \ + ppv-lite86-0.2.17 \ + predicates-3.0.3 \ + predicates-core-1.0.6 \ + predicates-tree-1.0.9 \ + proc-macro2-1.0.66 \ + quote-1.0.33 \ + rand-0.8.5 \ + rand_chacha-0.3.1 \ + rand_core-0.6.4 \ + redox_syscall-0.3.5 \ + regex-1.9.4 \ + regex-automata-0.1.10 \ + regex-automata-0.3.7 \ + regex-syntax-0.6.29 \ + regex-syntax-0.7.5 \ + relative-path-1.9.3 \ + rstest-0.19.0 \ + rstest_macros-0.19.0 \ + rstest_reuse-0.6.0 \ + rustc_version-0.4.0 \ + rustix-0.38.10 \ + same-file-1.0.6 \ + semver-1.0.18 \ + serde-1.0.188 \ + serde_derive-1.0.188 \ + sharded-slab-0.1.4 \ + slab-0.4.9 \ + smallvec-1.8.0 \ + strsim-0.10.0 \ + syn-2.0.29 \ + sysctl-0.5.5 \ + tempfile-3.8.0 \ + terminal_size-0.3.0 \ + termtree-0.4.1 \ + thiserror-1.0.48 \ + thiserror-impl-1.0.48 \ + thread_local-1.1.7 \ + tracing-0.1.37 \ + tracing-attributes-0.1.26 \ + tracing-core-0.1.31 \ + tracing-log-0.2.0 \ + tracing-subscriber-0.3.18 \ + unicode-ident-1.0.11 \ + utf8parse-0.2.1 \ + uuid-1.9.1 \ + valuable-0.1.0 \ + virtue-0.0.13 \ + wait-timeout-0.2.0 \ + walkdir-2.4.0 \ + wasi-0.11.0+wasi-snapshot-preview1 \ + winapi-0.3.9 \ + winapi-i686-pc-windows-gnu-0.4.0 \ + winapi-util-0.1.5 \ + winapi-x86_64-pc-windows-gnu-0.4.0 \ + windows-sys-0.48.0 \ + windows-sys-0.52.0 \ + windows-targets-0.48.5 \ + windows-targets-0.52.5 \ + windows_aarch64_gnullvm-0.48.5 \ + windows_aarch64_gnullvm-0.52.5 \ + windows_aarch64_msvc-0.48.5 \ + windows_aarch64_msvc-0.52.5 \ + windows_i686_gnu-0.48.5 \ + windows_i686_gnu-0.52.5 \ + windows_i686_gnullvm-0.52.5 \ + windows_i686_msvc-0.48.5 \ + windows_i686_msvc-0.52.5 \ + windows_x86_64_gnu-0.48.5 \ + windows_x86_64_gnu-0.52.5 \ + windows_x86_64_gnullvm-0.48.5 \ + windows_x86_64_gnullvm-0.52.5 \ + windows_x86_64_msvc-0.48.5 \ + windows_x86_64_msvc-0.52.5 \ + xattr-1.0.1 \ + zerocopy-0.6.6 \ + zerocopy-derive-0.6.6 diff --git a/filesystems/xfuse/distinfo b/filesystems/xfuse/distinfo new file mode 100644 index 000000000000..8f05c642335c --- /dev/null +++ b/filesystems/xfuse/distinfo @@ -0,0 +1,287 @@ +TIMESTAMP = 1724178833 +SHA256 (rust/crates/xfs-fuse-0.4.4.crate) = 4a80e87f3b435d7ced5b399c65ecc6acf531bcc175ddc8a45da97480f1e859d6 +SIZE (rust/crates/xfs-fuse-0.4.4.crate) = 49565 +SHA256 (rust/crates/aho-corasick-1.0.5.crate) = 0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783 +SIZE (rust/crates/aho-corasick-1.0.5.crate) = 172064 +SHA256 (rust/crates/anstream-0.6.14.crate) = 418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b +SIZE (rust/crates/anstream-0.6.14.crate) = 29160 +SHA256 (rust/crates/anstyle-1.0.2.crate) = 15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea +SIZE (rust/crates/anstyle-1.0.2.crate) = 13983 +SHA256 (rust/crates/anstyle-parse-0.2.4.crate) = c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4 +SIZE (rust/crates/anstyle-parse-0.2.4.crate) = 23069 +SHA256 (rust/crates/anstyle-query-1.0.3.crate) = a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5 +SIZE (rust/crates/anstyle-query-1.0.3.crate) = 9742 +SHA256 (rust/crates/anstyle-wincon-3.0.3.crate) = 61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19 +SIZE (rust/crates/anstyle-wincon-3.0.3.crate) = 12179 +SHA256 (rust/crates/assert_cmd-2.0.11.crate) = 86d6b683edf8d1119fe420a94f8a7e389239666aa72e65495d91c00462510151 +SIZE (rust/crates/assert_cmd-2.0.11.crate) = 25346 +SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa +SIZE (rust/crates/autocfg-1.1.0.crate) = 13272 +SHA256 (rust/crates/bincode-2.0.0-rc.3.crate) = f11ea1a0346b94ef188834a65c068a03aec181c94896d481d7a0a40d85b0ce95 +SIZE (rust/crates/bincode-2.0.0-rc.3.crate) = 57746 +SHA256 (rust/crates/bincode_derive-2.0.0-rc.3.crate) = 7e30759b3b99a1b802a7a3aa21c85c3ded5c28e1c83170d82d70f08bbf7f3e4c +SIZE (rust/crates/bincode_derive-2.0.0-rc.3.crate) = 6335 +SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a +SIZE (rust/crates/bitflags-1.3.2.crate) = 23021 +SHA256 (rust/crates/bitflags-2.4.0.crate) = b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635 +SIZE (rust/crates/bitflags-2.4.0.crate) = 36954 +SHA256 (rust/crates/bstr-1.6.2.crate) = 4c2f7349907b712260e64b0afe2f84692af14a454be26187d9df565c7f69266a +SIZE (rust/crates/bstr-1.6.2.crate) = 380096 +SHA256 (rust/crates/byteorder-1.4.3.crate) = 14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610 +SIZE (rust/crates/byteorder-1.4.3.crate) = 22512 +SHA256 (rust/crates/cc-1.0.83.crate) = f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0 +SIZE (rust/crates/cc-1.0.83.crate) = 68343 +SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd +SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934 +SHA256 (rust/crates/clap-4.4.18.crate) = 1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c +SIZE (rust/crates/clap-4.4.18.crate) = 55269 +SHA256 (rust/crates/clap_builder-4.4.18.crate) = 4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7 +SIZE (rust/crates/clap_builder-4.4.18.crate) = 163538 +SHA256 (rust/crates/clap_derive-4.4.7.crate) = cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442 +SIZE (rust/crates/clap_derive-4.4.7.crate) = 29046 +SHA256 (rust/crates/clap_lex-0.6.0.crate) = 702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1 +SIZE (rust/crates/clap_lex-0.6.0.crate) = 12272 +SHA256 (rust/crates/colorchoice-1.0.1.crate) = 0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422 +SIZE (rust/crates/colorchoice-1.0.1.crate) = 7895 +SHA256 (rust/crates/crc-2.1.0.crate) = 49fc9a695bca7f35f5f4c15cddc84415f66a74ea78eef08e90c5024f2b540e23 +SIZE (rust/crates/crc-2.1.0.crate) = 8683 +SHA256 (rust/crates/crc-catalog-1.1.1.crate) = ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403 +SIZE (rust/crates/crc-catalog-1.1.1.crate) = 8698 +SHA256 (rust/crates/difflib-0.4.0.crate) = 6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8 +SIZE (rust/crates/difflib-0.4.0.crate) = 7638 +SHA256 (rust/crates/doc-comment-0.3.3.crate) = fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10 +SIZE (rust/crates/doc-comment-0.3.3.crate) = 4123 +SHA256 (rust/crates/either-1.9.0.crate) = a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07 +SIZE (rust/crates/either-1.9.0.crate) = 16660 +SHA256 (rust/crates/enum-as-inner-0.6.0.crate) = 5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a +SIZE (rust/crates/enum-as-inner-0.6.0.crate) = 12079 +SHA256 (rust/crates/enum_dispatch-0.3.12.crate) = 8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e +SIZE (rust/crates/enum_dispatch-0.3.12.crate) = 22400 +SHA256 (rust/crates/errno-0.3.3.crate) = 136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd +SIZE (rust/crates/errno-0.3.3.crate) = 10543 +SHA256 (rust/crates/errno-dragonfly-0.1.2.crate) = aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf +SIZE (rust/crates/errno-dragonfly-0.1.2.crate) = 1810 +SHA256 (rust/crates/fastrand-2.0.0.crate) = 6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764 +SIZE (rust/crates/fastrand-2.0.0.crate) = 14402 +SHA256 (rust/crates/function_name-0.3.0.crate) = b1ab577a896d09940b5fe12ec5ae71f9d8211fff62c919c03a3750a9901e98a7 +SIZE (rust/crates/function_name-0.3.0.crate) = 4017 +SHA256 (rust/crates/function_name-proc-macro-0.3.0.crate) = 673464e1e314dd67a0fd9544abc99e8eb28d0c7e3b69b033bcff9b2d00b87333 +SIZE (rust/crates/function_name-proc-macro-0.3.0.crate) = 2020 +SHA256 (rust/crates/fuser-0.13.0.crate) = 21370f84640642c8ea36dfb2a6bfc4c55941f476fcf431f6fef25a5ddcf0169b +SIZE (rust/crates/fuser-0.13.0.crate) = 86991 +SHA256 (rust/crates/futures-0.3.28.crate) = 23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40 +SIZE (rust/crates/futures-0.3.28.crate) = 53229 +SHA256 (rust/crates/futures-channel-0.3.28.crate) = 955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2 +SIZE (rust/crates/futures-channel-0.3.28.crate) = 32281 +SHA256 (rust/crates/futures-core-0.3.28.crate) = 4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c +SIZE (rust/crates/futures-core-0.3.28.crate) = 14780 +SHA256 (rust/crates/futures-executor-0.3.28.crate) = ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0 +SIZE (rust/crates/futures-executor-0.3.28.crate) = 17743 +SHA256 (rust/crates/futures-io-0.3.28.crate) = 4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964 +SIZE (rust/crates/futures-io-0.3.28.crate) = 8910 +SHA256 (rust/crates/futures-macro-0.3.28.crate) = 89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72 +SIZE (rust/crates/futures-macro-0.3.28.crate) = 11272 +SHA256 (rust/crates/futures-sink-0.3.28.crate) = f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e +SIZE (rust/crates/futures-sink-0.3.28.crate) = 7852 +SHA256 (rust/crates/futures-task-0.3.28.crate) = 76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65 +SIZE (rust/crates/futures-task-0.3.28.crate) = 11848 +SHA256 (rust/crates/futures-timer-3.0.2.crate) = e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c +SIZE (rust/crates/futures-timer-3.0.2.crate) = 19879 +SHA256 (rust/crates/futures-util-0.3.28.crate) = 26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533 +SIZE (rust/crates/futures-util-0.3.28.crate) = 158510 +SHA256 (rust/crates/getrandom-0.2.10.crate) = be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427 +SIZE (rust/crates/getrandom-0.2.10.crate) = 34955 +SHA256 (rust/crates/glob-0.3.1.crate) = d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b +SIZE (rust/crates/glob-0.3.1.crate) = 18880 +SHA256 (rust/crates/heck-0.4.1.crate) = 95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8 +SIZE (rust/crates/heck-0.4.1.crate) = 11567 +SHA256 (rust/crates/is_terminal_polyfill-1.70.0.crate) = f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800 +SIZE (rust/crates/is_terminal_polyfill-1.70.0.crate) = 7451 +SHA256 (rust/crates/itertools-0.10.5.crate) = b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473 +SIZE (rust/crates/itertools-0.10.5.crate) = 115354 +SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646 +SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443 +SHA256 (rust/crates/libc-0.2.155.crate) = 97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c +SIZE (rust/crates/libc-0.2.155.crate) = 743539 +SHA256 (rust/crates/linux-raw-sys-0.4.5.crate) = 57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503 +SIZE (rust/crates/linux-raw-sys-0.4.5.crate) = 1274380 +SHA256 (rust/crates/log-0.4.21.crate) = 90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c +SIZE (rust/crates/log-0.4.21.crate) = 43442 +SHA256 (rust/crates/matchers-0.1.0.crate) = 8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558 +SIZE (rust/crates/matchers-0.1.0.crate) = 6948 +SHA256 (rust/crates/mdconfig-0.2.0.crate) = cff02ee7b2a0815081bdc7c3dc00681c30577072db35787ea392aef8857fe34b +SIZE (rust/crates/mdconfig-0.2.0.crate) = 11390 +SHA256 (rust/crates/memchr-2.6.1.crate) = f478948fd84d9f8e86967bf432640e46adfb5a4bd4f14ef7e864ab38220534ae +SIZE (rust/crates/memchr-2.6.1.crate) = 93821 +SHA256 (rust/crates/nix-0.27.1.crate) = 2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053 +SIZE (rust/crates/nix-0.27.1.crate) = 286494 +SHA256 (rust/crates/nu-ansi-term-0.46.0.crate) = 77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84 +SIZE (rust/crates/nu-ansi-term-0.46.0.crate) = 24311 +SHA256 (rust/crates/num-derive-0.4.2.crate) = ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202 +SIZE (rust/crates/num-derive-0.4.2.crate) = 14709 +SHA256 (rust/crates/num-traits-0.2.14.crate) = 9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290 +SIZE (rust/crates/num-traits-0.2.14.crate) = 45476 +SHA256 (rust/crates/once_cell-1.18.0.crate) = dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d +SIZE (rust/crates/once_cell-1.18.0.crate) = 32969 +SHA256 (rust/crates/overload-0.1.1.crate) = b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39 +SIZE (rust/crates/overload-0.1.1.crate) = 24439 +SHA256 (rust/crates/page_size-0.5.0.crate) = 1b7663cbd190cfd818d08efa8497f6cd383076688c49a391ef7c0d03cd12b561 +SIZE (rust/crates/page_size-0.5.0.crate) = 8346 +SHA256 (rust/crates/pin-project-lite-0.2.13.crate) = 8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58 +SIZE (rust/crates/pin-project-lite-0.2.13.crate) = 29141 +SHA256 (rust/crates/pin-utils-0.1.0.crate) = 8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184 +SIZE (rust/crates/pin-utils-0.1.0.crate) = 7580 +SHA256 (rust/crates/pkg-config-0.3.27.crate) = 26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964 +SIZE (rust/crates/pkg-config-0.3.27.crate) = 18838 +SHA256 (rust/crates/ppv-lite86-0.2.17.crate) = 5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de +SIZE (rust/crates/ppv-lite86-0.2.17.crate) = 22242 +SHA256 (rust/crates/predicates-3.0.3.crate) = 09963355b9f467184c04017ced4a2ba2d75cbcb4e7462690d388233253d4b1a9 +SIZE (rust/crates/predicates-3.0.3.crate) = 22743 +SHA256 (rust/crates/predicates-core-1.0.6.crate) = b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174 +SIZE (rust/crates/predicates-core-1.0.6.crate) = 8084 +SHA256 (rust/crates/predicates-tree-1.0.9.crate) = 368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf +SIZE (rust/crates/predicates-tree-1.0.9.crate) = 7960 +SHA256 (rust/crates/proc-macro2-1.0.66.crate) = 18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9 +SIZE (rust/crates/proc-macro2-1.0.66.crate) = 43575 +SHA256 (rust/crates/quote-1.0.33.crate) = 5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae +SIZE (rust/crates/quote-1.0.33.crate) = 28090 +SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404 +SIZE (rust/crates/rand-0.8.5.crate) = 87113 +SHA256 (rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88 +SIZE (rust/crates/rand_chacha-0.3.1.crate) = 15251 +SHA256 (rust/crates/rand_core-0.6.4.crate) = ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c +SIZE (rust/crates/rand_core-0.6.4.crate) = 22666 +SHA256 (rust/crates/redox_syscall-0.3.5.crate) = 567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29 +SIZE (rust/crates/redox_syscall-0.3.5.crate) = 23404 +SHA256 (rust/crates/regex-1.9.4.crate) = 12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29 +SIZE (rust/crates/regex-1.9.4.crate) = 253112 +SHA256 (rust/crates/regex-automata-0.1.10.crate) = 6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132 +SIZE (rust/crates/regex-automata-0.1.10.crate) = 114533 +SHA256 (rust/crates/regex-automata-0.3.7.crate) = 49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629 +SIZE (rust/crates/regex-automata-0.3.7.crate) = 607421 +SHA256 (rust/crates/regex-syntax-0.6.29.crate) = f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1 +SIZE (rust/crates/regex-syntax-0.6.29.crate) = 299752 +SHA256 (rust/crates/regex-syntax-0.7.5.crate) = dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da +SIZE (rust/crates/regex-syntax-0.7.5.crate) = 343366 +SHA256 (rust/crates/relative-path-1.9.3.crate) = ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2 +SIZE (rust/crates/relative-path-1.9.3.crate) = 22400 +SHA256 (rust/crates/rstest-0.19.0.crate) = 9d5316d2a1479eeef1ea21e7f9ddc67c191d497abc8fc3ba2467857abbb68330 +SIZE (rust/crates/rstest-0.19.0.crate) = 32932 +SHA256 (rust/crates/rstest_macros-0.19.0.crate) = 04a9df72cc1f67020b0d63ad9bfe4a323e459ea7eb68e03bd9824db49f9a4c25 +SIZE (rust/crates/rstest_macros-0.19.0.crate) = 61243 +SHA256 (rust/crates/rstest_reuse-0.6.0.crate) = 88530b681abe67924d42cca181d070e3ac20e0740569441a9e35a7cedd2b34a4 +SIZE (rust/crates/rstest_reuse-0.6.0.crate) = 9971 +SHA256 (rust/crates/rustc_version-0.4.0.crate) = bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366 +SIZE (rust/crates/rustc_version-0.4.0.crate) = 12175 +SHA256 (rust/crates/rustix-0.38.10.crate) = ed6248e1caa625eb708e266e06159f135e8c26f2bb7ceb72dc4b2766d0340964 +SIZE (rust/crates/rustix-0.38.10.crate) = 342427 +SHA256 (rust/crates/same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502 +SIZE (rust/crates/same-file-1.0.6.crate) = 10183 +SHA256 (rust/crates/semver-1.0.18.crate) = b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918 +SIZE (rust/crates/semver-1.0.18.crate) = 29703 +SHA256 (rust/crates/serde-1.0.188.crate) = cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e +SIZE (rust/crates/serde-1.0.188.crate) = 76230 +SHA256 (rust/crates/serde_derive-1.0.188.crate) = 4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2 +SIZE (rust/crates/serde_derive-1.0.188.crate) = 55563 +SHA256 (rust/crates/sharded-slab-0.1.4.crate) = 900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31 +SIZE (rust/crates/sharded-slab-0.1.4.crate) = 52479 +SHA256 (rust/crates/slab-0.4.9.crate) = 8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67 +SIZE (rust/crates/slab-0.4.9.crate) = 17108 +SHA256 (rust/crates/smallvec-1.8.0.crate) = f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83 +SIZE (rust/crates/smallvec-1.8.0.crate) = 27992 +SHA256 (rust/crates/strsim-0.10.0.crate) = 73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623 +SIZE (rust/crates/strsim-0.10.0.crate) = 11355 +SHA256 (rust/crates/syn-2.0.29.crate) = c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a +SIZE (rust/crates/syn-2.0.29.crate) = 241664 +SHA256 (rust/crates/sysctl-0.5.5.crate) = ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea +SIZE (rust/crates/sysctl-0.5.5.crate) = 18414 +SHA256 (rust/crates/tempfile-3.8.0.crate) = cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef +SIZE (rust/crates/tempfile-3.8.0.crate) = 31720 +SHA256 (rust/crates/terminal_size-0.3.0.crate) = 21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7 +SIZE (rust/crates/terminal_size-0.3.0.crate) = 10096 +SHA256 (rust/crates/termtree-0.4.1.crate) = 3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76 +SIZE (rust/crates/termtree-0.4.1.crate) = 4557 +SHA256 (rust/crates/thiserror-1.0.48.crate) = 9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7 +SIZE (rust/crates/thiserror-1.0.48.crate) = 18862 +SHA256 (rust/crates/thiserror-impl-1.0.48.crate) = 49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35 +SIZE (rust/crates/thiserror-impl-1.0.48.crate) = 15096 +SHA256 (rust/crates/thread_local-1.1.7.crate) = 3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152 +SIZE (rust/crates/thread_local-1.1.7.crate) = 13585 +SHA256 (rust/crates/tracing-0.1.37.crate) = 8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8 +SIZE (rust/crates/tracing-0.1.37.crate) = 73888 +SHA256 (rust/crates/tracing-attributes-0.1.26.crate) = 5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab +SIZE (rust/crates/tracing-attributes-0.1.26.crate) = 32060 +SHA256 (rust/crates/tracing-core-0.1.31.crate) = 0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a +SIZE (rust/crates/tracing-core-0.1.31.crate) = 61263 +SHA256 (rust/crates/tracing-log-0.2.0.crate) = ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3 +SIZE (rust/crates/tracing-log-0.2.0.crate) = 17561 +SHA256 (rust/crates/tracing-subscriber-0.3.18.crate) = ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b +SIZE (rust/crates/tracing-subscriber-0.3.18.crate) = 196312 +SHA256 (rust/crates/unicode-ident-1.0.11.crate) = 301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c +SIZE (rust/crates/unicode-ident-1.0.11.crate) = 42067 +SHA256 (rust/crates/utf8parse-0.2.1.crate) = 711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a +SIZE (rust/crates/utf8parse-0.2.1.crate) = 13435 +SHA256 (rust/crates/uuid-1.9.1.crate) = 5de17fd2f7da591098415cff336e12965a28061ddace43b59cb3c430179c9439 +SIZE (rust/crates/uuid-1.9.1.crate) = 47492 +SHA256 (rust/crates/valuable-0.1.0.crate) = 830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d +SIZE (rust/crates/valuable-0.1.0.crate) = 27718 +SHA256 (rust/crates/virtue-0.0.13.crate) = 9dcc60c0624df774c82a0ef104151231d37da4962957d691c011c852b2473314 +SIZE (rust/crates/virtue-0.0.13.crate) = 26483 +SHA256 (rust/crates/wait-timeout-0.2.0.crate) = 9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6 +SIZE (rust/crates/wait-timeout-0.2.0.crate) = 12441 +SHA256 (rust/crates/walkdir-2.4.0.crate) = d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee +SIZE (rust/crates/walkdir-2.4.0.crate) = 23550 +SHA256 (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423 +SIZE (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 28131 +SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419 +SIZE (rust/crates/winapi-0.3.9.crate) = 1200382 +SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6 +SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815 +SHA256 (rust/crates/winapi-util-0.1.5.crate) = 70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178 +SIZE (rust/crates/winapi-util-0.1.5.crate) = 10164 +SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f +SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998 +SHA256 (rust/crates/windows-sys-0.48.0.crate) = 677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9 +SIZE (rust/crates/windows-sys-0.48.0.crate) = 2628884 +SHA256 (rust/crates/windows-sys-0.52.0.crate) = 282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d +SIZE (rust/crates/windows-sys-0.52.0.crate) = 2576877 +SHA256 (rust/crates/windows-targets-0.48.5.crate) = 9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c +SIZE (rust/crates/windows-targets-0.48.5.crate) = 6904 +SHA256 (rust/crates/windows-targets-0.52.5.crate) = 6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb +SIZE (rust/crates/windows-targets-0.52.5.crate) = 6376 +SHA256 (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8 +SIZE (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 418492 +SHA256 (rust/crates/windows_aarch64_gnullvm-0.52.5.crate) = 7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263 +SIZE (rust/crates/windows_aarch64_gnullvm-0.52.5.crate) = 433266 +SHA256 (rust/crates/windows_aarch64_msvc-0.48.5.crate) = dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc +SIZE (rust/crates/windows_aarch64_msvc-0.48.5.crate) = 798483 +SHA256 (rust/crates/windows_aarch64_msvc-0.52.5.crate) = 9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6 +SIZE (rust/crates/windows_aarch64_msvc-0.52.5.crate) = 827944 +SHA256 (rust/crates/windows_i686_gnu-0.48.5.crate) = a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e +SIZE (rust/crates/windows_i686_gnu-0.48.5.crate) = 844891 +SHA256 (rust/crates/windows_i686_gnu-0.52.5.crate) = 88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670 +SIZE (rust/crates/windows_i686_gnu-0.52.5.crate) = 875699 +SHA256 (rust/crates/windows_i686_gnullvm-0.52.5.crate) = 87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9 +SIZE (rust/crates/windows_i686_gnullvm-0.52.5.crate) = 473064 +SHA256 (rust/crates/windows_i686_msvc-0.48.5.crate) = 8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406 +SIZE (rust/crates/windows_i686_msvc-0.48.5.crate) = 864300 +SHA256 (rust/crates/windows_i686_msvc-0.52.5.crate) = db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf +SIZE (rust/crates/windows_i686_msvc-0.52.5.crate) = 895404 +SHA256 (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e +SIZE (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 801619 +SHA256 (rust/crates/windows_x86_64_gnu-0.52.5.crate) = 4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9 +SIZE (rust/crates/windows_x86_64_gnu-0.52.5.crate) = 831539 +SHA256 (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc +SIZE (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 418486 +SHA256 (rust/crates/windows_x86_64_gnullvm-0.52.5.crate) = 852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596 +SIZE (rust/crates/windows_x86_64_gnullvm-0.52.5.crate) = 433246 +SHA256 (rust/crates/windows_x86_64_msvc-0.48.5.crate) = ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538 +SIZE (rust/crates/windows_x86_64_msvc-0.48.5.crate) = 798412 +SHA256 (rust/crates/windows_x86_64_msvc-0.52.5.crate) = bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0 +SIZE (rust/crates/windows_x86_64_msvc-0.52.5.crate) = 827905 +SHA256 (rust/crates/xattr-1.0.1.crate) = f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985 +SIZE (rust/crates/xattr-1.0.1.crate) = 12258 +SHA256 (rust/crates/zerocopy-0.6.6.crate) = 854e949ac82d619ee9a14c66a1b674ac730422372ccb759ce0c39cabcf2bf8e6 +SIZE (rust/crates/zerocopy-0.6.6.crate) = 47473 +SHA256 (rust/crates/zerocopy-derive-0.6.6.crate) = 125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91 +SIZE (rust/crates/zerocopy-derive-0.6.6.crate) = 522443 diff --git a/filesystems/xfuse/pkg-descr b/filesystems/xfuse/pkg-descr new file mode 100644 index 000000000000..cbbff2467b70 --- /dev/null +++ b/filesystems/xfuse/pkg-descr @@ -0,0 +1,11 @@ +This is read-only implementation of the XFS filesystem, a high-performance +64-bit journaling file system created by Silicon Graphics, Inc (SGI) in 1993, +and popular in various Linux distributions. + +While the implementation is in early stages, it should be useful enough for +migration purposes. + +This project runs in userland through the use of the FUSE kernel module. This is +the only run-time requirement. + +This project was done as part of Google Summer of Code 2021. diff --git a/filesystems/zap/Makefile b/filesystems/zap/Makefile new file mode 100644 index 000000000000..bb12e0484463 --- /dev/null +++ b/filesystems/zap/Makefile @@ -0,0 +1,33 @@ +PORTNAME= zap +DISTVERSION= 0.8.3 +PORTREVISION= 1 +CATEGORIES= filesystems sysutils + +MAINTAINER= jrm@FreeBSD.org +COMMENT= Maintain and replicate ZFS snapshots +WWW= https://github.com/Jehops/zap + +LICENSE= BSD2CLAUSE + +USE_GITHUB= yes +GH_ACCOUNT= Jehops + +NO_ARCH= yes +NO_BUILD= yes + +USERS= ${PORTNAME} +GROUPS= ${PORTNAME} + +PLIST_FILES= bin/${PORTNAME} \ + share/man/man1/${PORTNAME}.1.gz +PORTDOCS= README.org + +OPTIONS_DEFINE= DOCS + +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin + ${INSTALL_MAN} ${WRKSRC}/${PORTNAME}.1 ${STAGEDIR}${PREFIX}/share/man/man1 + @${MKDIR} ${STAGEDIR}${DOCSDIR} + (cd ${WRKSRC} && ${INSTALL_DATA} ${PORTDOCS} ${STAGEDIR}${DOCSDIR}) + +.include <bsd.port.mk> diff --git a/filesystems/zap/distinfo b/filesystems/zap/distinfo new file mode 100644 index 000000000000..2e0b3bc02b22 --- /dev/null +++ b/filesystems/zap/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1627519959 +SHA256 (Jehops-zap-0.8.3_GH0.tar.gz) = 59a38f1c8e820cfda7426389265b104cc1a5d2bbfd454d729f8ec18718b05937 +SIZE (Jehops-zap-0.8.3_GH0.tar.gz) = 10876 diff --git a/filesystems/zap/pkg-descr b/filesystems/zap/pkg-descr new file mode 100644 index 000000000000..eb2e26271169 --- /dev/null +++ b/filesystems/zap/pkg-descr @@ -0,0 +1,10 @@ +Maintain and replicate ZFS snapshots + +zap automates the management of zfs snapshots. With a few, simple +crontab entries, it can be used to create a comprehensive zfs backup +system. There are no configuration files. All parameters are supplied +on the command line or in zfs properties and all snapshot information +is stored in snapshot names. + +zap plays nice with manually created snapshots or snapshots from other +tools. It will only operate on snapshots it creates. diff --git a/filesystems/zap/pkg-message b/filesystems/zap/pkg-message new file mode 100644 index 000000000000..c7a25a6452ce --- /dev/null +++ b/filesystems/zap/pkg-message @@ -0,0 +1,11 @@ +[ +{ type: install + message: <<EOM +See + +http://ftfl.ca/blog/2016-12-27-zfs-replication.html + +for a description of a replication strategy. +EOM +} +] diff --git a/filesystems/zfs-periodic/Makefile b/filesystems/zfs-periodic/Makefile new file mode 100644 index 000000000000..33b3525a8c5b --- /dev/null +++ b/filesystems/zfs-periodic/Makefile @@ -0,0 +1,43 @@ +PORTNAME= zfs-periodic +PORTVERSION= 1.0.20130213 +CATEGORIES= filesystems sysutils + +MAINTAINER= peter@pean.org +COMMENT= Simple way of maintaining zfs snapshots using the periodic system +WWW= https://github.com/ross/zfs-periodic + +USE_GITHUB= yes +GH_ACCOUNT= ross +GH_TAGNAME= a481121 + +NO_ARCH= yes +NO_BUILD= yes + +PERIODIC_DIRS= etc/periodic/hourly etc/periodic/daily \ + etc/periodic/weekly etc/periodic/monthly \ + etc/periodic + +PERIODIC_FILES= etc/periodic/hourly/000.zfs-snapshot \ + etc/periodic/daily/000.zfs-snapshot \ + etc/periodic/weekly/000.zfs-snapshot \ + etc/periodic/monthly/000.zfs-snapshot + +PLIST_FILES= ${PERIODIC_FILES} bin/zfs-snapshot + +post-patch: +.for _file in ${PERIODIC_FILES} + @${REINPLACE_CMD} -e "s|/etc/periodic/zfs-snapshot|${PREFIX}/bin/zfs-snapshot|" \ + ${WRKSRC}/${_file} +.endfor + +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/etc/periodic/zfs-snapshot ${STAGEDIR}${PREFIX}/bin +.for _dir in ${PERIODIC_DIRS} + @${MKDIR} ${STAGEDIR}${PREFIX}/${_dir} +.endfor + +.for _file in ${PERIODIC_FILES} + ${INSTALL_SCRIPT} ${WRKSRC}/${_file} ${STAGEDIR}${PREFIX}/${_file} +.endfor + +.include <bsd.port.mk> diff --git a/filesystems/zfs-periodic/distinfo b/filesystems/zfs-periodic/distinfo new file mode 100644 index 000000000000..6dc4d093226b --- /dev/null +++ b/filesystems/zfs-periodic/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905184 +SHA256 (ross-zfs-periodic-1.0.20130213-a481121_GH0.tar.gz) = e0d12bb3ff466e3aaabd09c2b9685b5e5ee5f91e0d62126c05ba33c60a7b9a9b +SIZE (ross-zfs-periodic-1.0.20130213-a481121_GH0.tar.gz) = 2527 diff --git a/filesystems/zfs-periodic/pkg-descr b/filesystems/zfs-periodic/pkg-descr new file mode 100644 index 000000000000..29e40518d2ff --- /dev/null +++ b/filesystems/zfs-periodic/pkg-descr @@ -0,0 +1,2 @@ +Scripts that uses the periodic system to create and manage zfs +snapshots. Easily configured via /etc/periodic.conf diff --git a/filesystems/zfs-periodic/pkg-message b/filesystems/zfs-periodic/pkg-message new file mode 100644 index 000000000000..010d2e7d1ce1 --- /dev/null +++ b/filesystems/zfs-periodic/pkg-message @@ -0,0 +1,30 @@ +[ +{ type: install + message: <<EOM +In order to enable periodic snapshots you need +to add these lines to your /etc/periodic.conf + +hourly_output="root" +hourly_show_success="NO" +hourly_show_info="YES" +hourly_show_badconfig="NO" +hourly_zfs_snapshot_enable="YES" +hourly_zfs_snapshot_pools="tank" +hourly_zfs_snapshot_keep=6 +daily_zfs_snapshot_enable="YES" +daily_zfs_snapshot_pools="tank" +daily_zfs_snapshot_keep=7 +weekly_zfs_snapshot_enable="YES" +weekly_zfs_snapshot_pools="tank" +weekly_zfs_snapshot_keep=5 +monthly_zfs_snapshot_enable="YES" +monthly_zfs_snapshot_pools="tank" +monthly_zfs_snapshot_keep=2 + +To get hourly snapshots you also need to add +something like this to /etc/crontab: + +2 * * * * root periodic hourly +EOM +} +] diff --git a/filesystems/zfs-replicate/Makefile b/filesystems/zfs-replicate/Makefile new file mode 100644 index 000000000000..cf5805523867 --- /dev/null +++ b/filesystems/zfs-replicate/Makefile @@ -0,0 +1,43 @@ +PORTNAME= zfs-replicate +PORTVERSION= 2.0.2 +DISTVERSIONPREFIX= v +CATEGORIES= filesystems sysutils + +MAINTAINER= tschetter.victor@gmail.com +COMMENT= ZFS Snapshot Replication Script +WWW= https://github.com/aaronhurt/zfs-replicate + +USES= shebangfix + +NO_BUILD= yes +NO_ARCH= yes + +OPTIONS_DEFINE= DOCS EXAMPLES + +SHEBANG_FILES= zfs-replicate.sh + +PORTDOCS= README.md +PORTDATA= config.sample.sh + +USE_GITHUB= yes +GH_ACCOUNT= aaronhurt + +PLIST_FILES= sbin/zfs-replicate + +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/zfs-replicate.sh \ + ${STAGEDIR}${PREFIX}/sbin/zfs-replicate + +do-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} +.for file in ${PORTDOCS} + ${INSTALL_DATA} ${WRKSRC}/${file} ${STAGEDIR}${DOCSDIR} +.endfor + +do-install-EXAMPLES-on: + @${MKDIR} ${STAGEDIR}${DATADIR} +.for data in ${PORTDATA} + ${INSTALL_DATA} ${WRKSRC}/${data} ${STAGEDIR}${DATADIR} +.endfor + +.include <bsd.port.mk> diff --git a/filesystems/zfs-replicate/distinfo b/filesystems/zfs-replicate/distinfo new file mode 100644 index 000000000000..d5712e4d42a4 --- /dev/null +++ b/filesystems/zfs-replicate/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1725286224 +SHA256 (aaronhurt-zfs-replicate-v2.0.2_GH0.tar.gz) = a1db4fef430033c780d1616514ef4b8f71ed17c8a02347a565d3af67863683b6 +SIZE (aaronhurt-zfs-replicate-v2.0.2_GH0.tar.gz) = 12678 diff --git a/filesystems/zfs-replicate/pkg-descr b/filesystems/zfs-replicate/pkg-descr new file mode 100644 index 000000000000..e711cf2aa663 --- /dev/null +++ b/filesystems/zfs-replicate/pkg-descr @@ -0,0 +1,2 @@ +Advanced ZFS replication script to replicate zfs datasets/volumes between hosts +(or between pools on the same host) via incremental snapshots. diff --git a/filesystems/zfs-replicate/pkg-message b/filesystems/zfs-replicate/pkg-message new file mode 100644 index 000000000000..385ffcd0e03a --- /dev/null +++ b/filesystems/zfs-replicate/pkg-message @@ -0,0 +1,15 @@ +[ +{ type: install + message: <<EOM +To run zfs-replicate, copy /usr/local/share/zfs-replicate/config.sample.sh to +/usr/local/share/zfs-replicate/config.sh, customize to your environment, and +run using "zfs-replicate -c /usr/local/share/zfs-replicate/config.sh" + +The only option that does not have a default, and needs to be set is the REPLICATE_SETS + +To check last log, run "zfs-replicate -c /usr/local/share/zfs-replicate/config.sh -s" + +See https://github.com/aaronhurt/zfs-replicate for documentation. +EOM +} +] diff --git a/filesystems/zfs-snap-diff/Makefile b/filesystems/zfs-snap-diff/Makefile new file mode 100644 index 000000000000..f0a2268c0c79 --- /dev/null +++ b/filesystems/zfs-snap-diff/Makefile @@ -0,0 +1,27 @@ +PORTNAME= zfs-snap-diff +PORTVERSION= 1.1.3 +DISTVERSIONPREFIX= v +PORTREVISION= 22 +CATEGORIES= filesystems sysutils + +MAINTAINER= ports@FreeBSD.org +COMMENT= View ZFS snapshot differences via a web browser +WWW= https://github.com/j-keck/zfs-snap-diff + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= go:modules +USE_GITHUB= yes +GH_ACCOUNT= j-keck +GH_TUPLE= BurntSushi:toml:v0.3.1:burntsushi_toml/vendor/github.com/BurntSushi/toml \ + j-keck:go-diff:v1.0.0:j_keck_go_diff/vendor/github.com/j-keck/go-diff \ + j-keck:plog:v0.7.0:j_keck_plog/vendor/github.com/j-keck/plog + +PLIST_FILES= bin/zfs-snap-diff + +GO_BUILDFLAGS= -ldflags="-X main.version=${DISTVERSIONPREFIX}${PORTVERSION}" + +GO_TARGET= ./cmd/zfs-snap-diff + +.include <bsd.port.mk> diff --git a/filesystems/zfs-snap-diff/distinfo b/filesystems/zfs-snap-diff/distinfo new file mode 100644 index 000000000000..d8811a1f5672 --- /dev/null +++ b/filesystems/zfs-snap-diff/distinfo @@ -0,0 +1,9 @@ +TIMESTAMP = 1630838434 +SHA256 (j-keck-zfs-snap-diff-v1.1.3_GH0.tar.gz) = 06febe95bb37463435d7d33acba51f7619c32837d13df996a8f4a11b1e4274ed +SIZE (j-keck-zfs-snap-diff-v1.1.3_GH0.tar.gz) = 7179727 +SHA256 (BurntSushi-toml-v0.3.1_GH0.tar.gz) = 6593da894578ba510a470735ffbdc88ce88033094dc5a8f4d3957ab87e18803f +SIZE (BurntSushi-toml-v0.3.1_GH0.tar.gz) = 42077 +SHA256 (j-keck-go-diff-v1.0.0_GH0.tar.gz) = 5a07596dcdee6e089b49309162c8e63bc02400652897a1f529d37f0602868dea +SIZE (j-keck-go-diff-v1.0.0_GH0.tar.gz) = 41609 +SHA256 (j-keck-plog-v0.7.0_GH0.tar.gz) = 251c06cdf08dd8a9a03cab0028a64cda8893ef092474be2a49016b3a8280384f +SIZE (j-keck-plog-v0.7.0_GH0.tar.gz) = 11649 diff --git a/filesystems/zfs-snap-diff/pkg-descr b/filesystems/zfs-snap-diff/pkg-descr new file mode 100644 index 000000000000..cf148fee69aa --- /dev/null +++ b/filesystems/zfs-snap-diff/pkg-descr @@ -0,0 +1,6 @@ +With zfs-snap-diff you can explore file differences and restore changes from +older file versions in different zfs snapshots. You can restore the whole file +from an older version, or select single changes to revert in the 'diff' view. + +zfs-snap-diff has a web frontend, so it can run on your local work machine or +on your remote file / backup server (no Xserver necessary). diff --git a/filesystems/zfs-snapshot-clean/Makefile b/filesystems/zfs-snapshot-clean/Makefile new file mode 100644 index 000000000000..b275df946eb6 --- /dev/null +++ b/filesystems/zfs-snapshot-clean/Makefile @@ -0,0 +1,21 @@ +PORTNAME= zfs-snapshot-clean +PORTVERSION= 0.2.0 +DISTVERSIONPREFIX= v +CATEGORIES= filesystems sysutils + +MAINTAINER= ports@FreeBSD.org +COMMENT= Tool to sieve ZFS snapshots as per given spec a la 'pdumpfs-clean' +WWW= https://github.com/knu/zfs-snapshot-clean + +LICENSE= BSD2CLAUSE + +USE_GITHUB= yes +GH_ACCOUNT= knu + +NO_BUILD= yes +PLIST_FILES= sbin/${PORTNAME} + +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/${PORTNAME} ${STAGEDIR}${PREFIX}/sbin/ + +.include <bsd.port.mk> diff --git a/filesystems/zfs-snapshot-clean/distinfo b/filesystems/zfs-snapshot-clean/distinfo new file mode 100644 index 000000000000..b2cbb033a9fa --- /dev/null +++ b/filesystems/zfs-snapshot-clean/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905189 +SHA256 (knu-zfs-snapshot-clean-v0.2.0_GH0.tar.gz) = a6cc354df2b245309293e40d29a98a5245e07357ff918f2f75be55eb8b5d78fa +SIZE (knu-zfs-snapshot-clean-v0.2.0_GH0.tar.gz) = 2962 diff --git a/filesystems/zfs-snapshot-clean/pkg-descr b/filesystems/zfs-snapshot-clean/pkg-descr new file mode 100644 index 000000000000..b2633bdb9cff --- /dev/null +++ b/filesystems/zfs-snapshot-clean/pkg-descr @@ -0,0 +1,13 @@ +zfs-snapshot-clean +------------------ + +This is a tool to sieve ZFS snapshots as per given spec a la +`pdumpfs-clean'. + +Typical usage is as follows: + + for vol in zpool/home zpool/var; do + zfs snapshot "$vol@$(date +%Y-%m-%d)" && zfs-snapshot-clean "$vol" + done + +Run `zfs-snapshot-clean -h' for details. diff --git a/filesystems/zfs-snapshot-mgmt/Makefile b/filesystems/zfs-snapshot-mgmt/Makefile new file mode 100644 index 000000000000..b54509bfd61a --- /dev/null +++ b/filesystems/zfs-snapshot-mgmt/Makefile @@ -0,0 +1,28 @@ +PORTNAME= zfs-snapshot-mgmt +PORTVERSION= 20090201 +PORTREVISION= 4 +CATEGORIES= filesystems sysutils +MASTER_SITES= http://marcin.studio4plus.com/files/ + +MAINTAINER= johntdarrah@gmail.com +COMMENT= Automatic ZFS snapshot management tool +WWW= http://marcin.studio4plus.com/en/zfs-file-history/howto.html + +USES= ruby:run shebangfix +SHEBANG_FILES= zfs-snapshot-mgmt + +NO_BUILD= yes +NO_ARCH= yes + +SUB_FILES= pkg-message + +post-patch: .SILENT + ${FIND} ${WRKSRC} -type f -exec ${REINPLACE_CMD} \ + -e 's|/usr/local|${PREFIX}|g' {} + + +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin + ${INSTALL_MAN} ${WRKSRC}/${PORTNAME}.8 ${STAGEDIR}${PREFIX}/share/man/man8 + ${INSTALL_DATA} ${WRKSRC}/${PORTNAME}.conf.sample ${STAGEDIR}${PREFIX}/etc + +.include <bsd.port.mk> diff --git a/filesystems/zfs-snapshot-mgmt/distinfo b/filesystems/zfs-snapshot-mgmt/distinfo new file mode 100644 index 000000000000..f7206ebb56ac --- /dev/null +++ b/filesystems/zfs-snapshot-mgmt/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905184 +SHA256 (zfs-snapshot-mgmt-20090201.tar.gz) = 972f6eb51cc08dd2ab83491cb8942e310a9838f953edb7471df462446b59a8c4 +SIZE (zfs-snapshot-mgmt-20090201.tar.gz) = 4903 diff --git a/filesystems/zfs-snapshot-mgmt/files/patch-zfs-snapshot-mgmt b/filesystems/zfs-snapshot-mgmt/files/patch-zfs-snapshot-mgmt new file mode 100644 index 000000000000..382543b79b93 --- /dev/null +++ b/filesystems/zfs-snapshot-mgmt/files/patch-zfs-snapshot-mgmt @@ -0,0 +1,32 @@ +--- zfs-snapshot-mgmt~ ++++ zfs-snapshot-mgmt +@@ -154,7 +154,11 @@ class FSInfo + end + + def pool ++ if name["/"] + name[/\A.*?\//].chop ++ else ++ name ++ end + end + + private +@@ -175,7 +179,7 @@ private + + end + +-class Config ++class ZConfig + attr_reader :snapshot_prefix, :filesystems, :pools + + def initialize(value) +@@ -194,7 +198,7 @@ class Config + + config_yaml = File.open(CONFIG_FILE_NAME).read(CONFIG_SIZE_MAX) + die "Config file too long" if config_yaml.nil? +-config = Config.new(YAML::load(config_yaml)) ++config = ZConfig.new(YAML::load(config_yaml)) + + now_minutes = Time.now.to_i / 60 + diff --git a/filesystems/zfs-snapshot-mgmt/files/pkg-message.in b/filesystems/zfs-snapshot-mgmt/files/pkg-message.in new file mode 100644 index 000000000000..8b9ac6273efe --- /dev/null +++ b/filesystems/zfs-snapshot-mgmt/files/pkg-message.in @@ -0,0 +1,19 @@ +[ +{ type: install + message: <<EOM +To actually turn on the automatic snapshots you have to do the following: + +1. Add an appropriate crontab entry, e.g.: + + echo "*/5 * * * * root %%PREFIX%%/bin/zfs-snapshot-mgmt" >> /etc/crontab + +See zfs-snapshot-mgmt(8) manpage for more details. +EOM +}, +{ type: remove + message: <<EOM +Remember to remove zfs-snapshot-mgmt entry from cron configuration. +Otherwise the system will be constantly trying to call the deinstalled script. +EOM +} +] diff --git a/filesystems/zfs-snapshot-mgmt/pkg-descr b/filesystems/zfs-snapshot-mgmt/pkg-descr new file mode 100644 index 000000000000..81fff38ffbd5 --- /dev/null +++ b/filesystems/zfs-snapshot-mgmt/pkg-descr @@ -0,0 +1 @@ +A simple ruby script for automating creation and removal of ZFS snapshots. diff --git a/filesystems/zfs-snapshot-mgmt/pkg-plist b/filesystems/zfs-snapshot-mgmt/pkg-plist new file mode 100644 index 000000000000..5ce124a03a6c --- /dev/null +++ b/filesystems/zfs-snapshot-mgmt/pkg-plist @@ -0,0 +1,3 @@ +bin/zfs-snapshot-mgmt +@sample etc/zfs-snapshot-mgmt.conf.sample +share/man/man8/zfs-snapshot-mgmt.8.gz diff --git a/filesystems/zfs-stats-lite/Makefile b/filesystems/zfs-stats-lite/Makefile new file mode 100644 index 000000000000..b60914e31921 --- /dev/null +++ b/filesystems/zfs-stats-lite/Makefile @@ -0,0 +1,22 @@ +PORTNAME= zfs-stats-lite +PORTVERSION= 1.4 +CATEGORIES= filesystems sysutils +MASTER_SITES= http://druidbsd.sourceforge.net/download/ + +MAINTAINER= ports@FreeBSD.org +COMMENT= Display human-readable ZFS statistics +WWW= https://druidbsd.sourceforge.net/download.shtml #zfs-stats-lite + +LICENSE= BSD2CLAUSE + +CONFLICTS_INSTALL= zfs-stats + +NO_BUILD= yes +NO_ARCH= yes + +PLIST_FILES= bin/zfs-stats + +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/zfs-stats ${STAGEDIR}${PREFIX}/bin/zfs-stats + +.include <bsd.port.mk> diff --git a/filesystems/zfs-stats-lite/distinfo b/filesystems/zfs-stats-lite/distinfo new file mode 100644 index 000000000000..d7f18ce72cc1 --- /dev/null +++ b/filesystems/zfs-stats-lite/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905185 +SHA256 (zfs-stats-lite-1.4.tar.gz) = bb09a299fe24eb062eda4ca65b7931ce11c523a0b3aa0a72021108609a3b3b10 +SIZE (zfs-stats-lite-1.4.tar.gz) = 8241 diff --git a/filesystems/zfs-stats-lite/pkg-descr b/filesystems/zfs-stats-lite/pkg-descr new file mode 100644 index 000000000000..3407c2d67b0f --- /dev/null +++ b/filesystems/zfs-stats-lite/pkg-descr @@ -0,0 +1,5 @@ +zfs-stats displays ZFS statistics in human-readable format including +ARC, L2ARC, zfetch (DMU) and vdev cache statistics. + +This script is a fork of filesystems/zfs-stats which has no dependency on perl or +other ports. diff --git a/filesystems/zfs-stats/Makefile b/filesystems/zfs-stats/Makefile new file mode 100644 index 000000000000..41a1aff92ef0 --- /dev/null +++ b/filesystems/zfs-stats/Makefile @@ -0,0 +1,24 @@ +PORTNAME= zfs-stats +DISTVERSION= 1.3.2 +CATEGORIES= filesystems sysutils + +MAINTAINER= mm@FreeBSD.org +COMMENT= Displays general ZFS information and human-readable statistics +WWW= https://github.com/mmatuska/zfs-stats + +LICENSE= BSD2CLAUSE + +USES= perl5 +USE_GITHUB= yes +GH_ACCOUNT= mmatuska + +NO_BUILD= yes + +PLIST_FILES= bin/zfs-mon \ + bin/zfs-stats + +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/zfs-stats ${STAGEDIR}${PREFIX}/bin/zfs-stats + ${INSTALL_SCRIPT} ${WRKSRC}/zfs-mon ${STAGEDIR}${PREFIX}/bin/zfs-mon + +.include <bsd.port.mk> diff --git a/filesystems/zfs-stats/distinfo b/filesystems/zfs-stats/distinfo new file mode 100644 index 000000000000..3856c2623bc4 --- /dev/null +++ b/filesystems/zfs-stats/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1694551891 +SHA256 (mmatuska-zfs-stats-1.3.2_GH0.tar.gz) = 2c94742fcb0caeb508110031b05783557ba5b4938bacec052a1294fac3fc2afe +SIZE (mmatuska-zfs-stats-1.3.2_GH0.tar.gz) = 10950 diff --git a/filesystems/zfs-stats/pkg-descr b/filesystems/zfs-stats/pkg-descr new file mode 100644 index 000000000000..3cd64d8cc2f4 --- /dev/null +++ b/filesystems/zfs-stats/pkg-descr @@ -0,0 +1,8 @@ +ZFS statistics tool for FreeBSD. + +The zfs-stats script displays general ZFS information and +human-readable statistics for the following subsystems: + * ARC + * L2ARC + * DMU (zfetch) + * vdev cache diff --git a/filesystems/zfsnap/Makefile b/filesystems/zfsnap/Makefile new file mode 100644 index 000000000000..65385b1144fc --- /dev/null +++ b/filesystems/zfsnap/Makefile @@ -0,0 +1,37 @@ +PORTNAME= zfsnap +PORTVERSION= 1.11.1 +DISTVERSIONPREFIX= v +PORTREVISION= 1 +CATEGORIES= filesystems sysutils + +MAINTAINER= yamagi@yamagi.org +COMMENT= Simple sh script to make zfs rolling snaphosts with cron +WWW= https://github.com/zfsnap/zfsnap + +LICENSE= BSD3CLAUSE + +NO_BUILD= yes +USE_GITHUB= yes + +PERIODICDIR?= ${PREFIX}/etc/periodic +PLIST_SUB+= PERIODICDIR="${PERIODICDIR:S,^${PREFIX}/,,}" + +post-extract: +.for period in hourly daily weekly monthly reboot + @${SED} -e "s/xPERIODICx/${period}/g" -e "s#xPREFIXx#${PREFIX}/sbin#g" ${WRKSRC}/xPERIODICx_zfSnap.sh > ${WRKSRC}/${period}_zfSnap.sh +.endfor +.for period in hourly daily weekly monthly + @${SED} -e "s/xPERIODICx/${period}/g" -e "s#xPREFIXx#${PREFIX}/sbin#g" ${WRKSRC}/xPERIODICx_zfSnap_delete.sh > ${WRKSRC}/${period}_zfSnap_delete.sh +.endfor + +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/zfSnap.sh ${STAGEDIR}${PREFIX}/sbin/zfSnap +.for period in hourly daily weekly monthly + @${MKDIR} ${STAGEDIR}${PERIODICDIR}/${period} + ${INSTALL_SCRIPT} ${WRKSRC}/${period}_zfSnap.sh ${STAGEDIR}${PERIODICDIR}/${period}/402.zfSnap + ${INSTALL_SCRIPT} ${WRKSRC}/${period}_zfSnap_delete.sh ${STAGEDIR}${PERIODICDIR}/${period}/403.zfSnap_delete +.endfor + @${MKDIR} ${STAGEDIR}${PERIODICDIR}/reboot + ${INSTALL_SCRIPT} ${WRKSRC}/reboot_zfSnap.sh ${STAGEDIR}${PERIODICDIR}/reboot/402.zfSnap + +.include <bsd.port.mk> diff --git a/filesystems/zfsnap/distinfo b/filesystems/zfsnap/distinfo new file mode 100644 index 000000000000..195e29ee0742 --- /dev/null +++ b/filesystems/zfsnap/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905205 +SHA256 (zfsnap-zfsnap-v1.11.1_GH0.tar.gz) = dd533d5faff9fa98deeb9ae0909784b67b0dc43d3870f259eeb390fbc1d03bcf +SIZE (zfsnap-zfsnap-v1.11.1_GH0.tar.gz) = 4969 diff --git a/filesystems/zfsnap/files/patch-zfSnap.sh b/filesystems/zfsnap/files/patch-zfSnap.sh new file mode 100644 index 000000000000..1cdd609dd8b3 --- /dev/null +++ b/filesystems/zfsnap/files/patch-zfSnap.sh @@ -0,0 +1,11 @@ +--- zfSnap.sh.orig 2013-01-18 03:37:09.000000000 +0700 ++++ zfSnap.sh 2018-01-22 23:20:20.257104000 +0700 +@@ -199,6 +199,8 @@ rm_zfs_snapshot() { + } + + skip_pool() { ++ local i ++ + # more like skip pool??? + if is_true $scrub_skip; then + for i in $scrub_pools; do diff --git a/filesystems/zfsnap/pkg-descr b/filesystems/zfsnap/pkg-descr new file mode 100644 index 000000000000..16d0cef6da58 --- /dev/null +++ b/filesystems/zfsnap/pkg-descr @@ -0,0 +1,8 @@ +zfSnap is a simple sh script for creating ZFS snapshots. When called from +cron rolling snapshots can be created and deleted automatically. The main +advantage of zfSnap is that it is written in 100% pure /bin/sh, does not +require any additional software to run, and is simple to use. + +zfSnap keeps all information about snapshot in snapshot name. zfs snapshot +names are in form: Timestamp--TTL where timestamp is date and time of +snapshot creation and TTL is Time To Live in human readable form. diff --git a/filesystems/zfsnap/pkg-message b/filesystems/zfsnap/pkg-message new file mode 100644 index 000000000000..927cda7debfd --- /dev/null +++ b/filesystems/zfsnap/pkg-message @@ -0,0 +1,55 @@ +[ +{ type: install + message: <<EOM + To run zfSnap periodically you can add these options to your + /etc/periodic.conf + + xPERIODICx_zfsnap_enable - Enable xPERIODICx snapshots + (values: YES | NO) + xPERIODICx_zfsnap_fs - Space separated zfs filesystems + to create non-recursive snapshots + xPERIODICx_zfsnap_recursive_fs - Space separated zfs filesystems + to create recursive snapshots + xPERIODICx_zfsnap_ttl - Set Time To Live + xPERIODICx_zfsnap_verbose - Verbose output (values: YES | NO) + xPERIODICx_zfsnap_flags - zfSnap generic flags + (except -v and -d) + xPERIODICx_zfsnap_enable_prefix - Create snapshots with prefix + (Default = YES) + xPERIODICx_zfsnap_prefix - Set prefix to use for new snapshots + (Default = "xPERIODICx-") + (where xPERIODICx is any of hourly, daily, weekly, monthly, reboot) + + xPERIODICx_zfsnap_delete_enable - Delete old snapshots periodically + (values: YES | NO) + xPERIODICx_zfsnap_delete_flags - zfSnap generic flags + (except -v and -d) + xPERIODICx_zfsnap_delete_verbose - Verbose output (values: YES | NO) + xPERIODICx_zfsnap_delete_prefixes - Space separated list of prefixes + of old zfSnap snapshots to delete + 'hourly-', 'daily-', 'weekly-', + 'monthly-' and 'reboot-' prefixes + are hard-coded + (where xPERIODICx is any of daily, weekly, monthly) + + + Add these lines to your /etc/crontab + 4 * * * * root periodic hourly + @reboot root periodic reboot + + NOTE: it is not recommended to delete zfSnap snapshots every hour. + Deleting zfs snapshots takes more time than creating them. + There for it's better to delete snapshots once per day... + + + Periodic scripts provide very limited feature set. If you want to use + more advanced setup, you need to call zfSnap from crontab directly. + This way you can combine all sort of parameter combinations. + + Don't forget to check https://github.com/graudeejs/zfSnap/wiki for more + info. + + Feedback welcomed: graudeejs@gmail.com +EOM +} +] diff --git a/filesystems/zfsnap/pkg-plist b/filesystems/zfsnap/pkg-plist new file mode 100644 index 000000000000..048f85a2e8f1 --- /dev/null +++ b/filesystems/zfsnap/pkg-plist @@ -0,0 +1,10 @@ +sbin/zfSnap +%%PERIODICDIR%%/daily/402.zfSnap +%%PERIODICDIR%%/daily/403.zfSnap_delete +%%PERIODICDIR%%/hourly/402.zfSnap +%%PERIODICDIR%%/hourly/403.zfSnap_delete +%%PERIODICDIR%%/monthly/402.zfSnap +%%PERIODICDIR%%/monthly/403.zfSnap_delete +%%PERIODICDIR%%/reboot/402.zfSnap +%%PERIODICDIR%%/weekly/402.zfSnap +%%PERIODICDIR%%/weekly/403.zfSnap_delete diff --git a/filesystems/zfsnap2/Makefile b/filesystems/zfsnap2/Makefile new file mode 100644 index 000000000000..559ad86aef7b --- /dev/null +++ b/filesystems/zfsnap2/Makefile @@ -0,0 +1,56 @@ +PORTNAME= zfsnap +DISTVERSIONPREFIX= v +DISTVERSION= 2.0.0-beta3 +PORTREVISION= 4 +CATEGORIES= filesystems sysutils +PKGNAMESUFFIX= 2 + +MAINTAINER= mm@FreeBSD.org +COMMENT= Portable performant script to make rolling ZFS snapshots easy +WWW= https://github.com/zfsnap/zfsnap + +LICENSE= BSD3CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE + +NO_BUILD= yes +USE_GITHUB= yes + +OPTIONS_DEFINE= BASH ZSH DOCS +OPTIONS_DEFAULT= BASH ZSH +OPTIONS_SUB= yes + +PORTDOCS= AUTHORS NEWS PORTABILITY README.md + +PERIODICDIR?= ${PREFIX}/etc/periodic + +post-patch: + @${REINPLACE_CMD} -e "s,# ZFSNAP_LIB_DIR=.*,ZFSNAP_LIB_DIR=${PREFIX}/share/zfsnap,g" ${WRKSRC}/sbin/zfsnap.sh +.for period in daily weekly monthly + @${SED} -e "s/xPERIODICx/${period}/g" -e "s#xPREFIXx#${PREFIX}/sbin#g" ${WRKSRC}/periodic/xPERIODICx_zfsnap.sh > ${WRKSRC}/periodic/${period}_zfsnap.sh +.endfor + +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/sbin/zfsnap.sh ${STAGEDIR}${PREFIX}/sbin/zfsnap + cd ${WRKSRC}/share && ${COPYTREE_SHARE} zfsnap ${STAGEDIR}${PREFIX}/share/ + cd ${WRKSRC} && ${COPYTREE_SHARE} completion ${STAGEDIR}${PREFIX}/share/zfsnap +.for period in daily weekly monthly + @${MKDIR} ${STAGEDIR}${PERIODICDIR}/${period} + ${INSTALL_SCRIPT} ${WRKSRC}/periodic/${period}_zfsnap.sh ${STAGEDIR}${PERIODICDIR}/${period}/402.zfsnap +.endfor + ${INSTALL_MAN} ${WRKSRC}/man/man8/zfsnap.8 ${STAGEDIR}${PREFIX}/share/man/man8/zfsnap.8 + ${MKDIR} ${STAGEDIR}${DOCSDIR} +.for file in ${PORTDOCS} + ${INSTALL_DATA} ${WRKSRC}/${file} ${STAGEDIR}${DOCSDIR}/${file} +.endfor + +post-install-BASH-on: + ${MKDIR} ${STAGEDIR}${PREFIX}/etc/bash_completion.d + ${LN} -s ../../share/zfsnap/completion/zfsnap-completion.bash \ + ${STAGEDIR}${PREFIX}/etc/bash_completion.d/zfsnap.sh + +post-install-ZSH-on: + ${MKDIR} ${STAGEDIR}${PREFIX}/share/zsh/site-functions + ${LN} -s ../../zfsnap/completion/zfsnap-completion.zsh \ + ${STAGEDIR}${PREFIX}/share/zsh/site-functions/_zfsnap + +.include <bsd.port.mk> diff --git a/filesystems/zfsnap2/distinfo b/filesystems/zfsnap2/distinfo new file mode 100644 index 000000000000..944dc6c3b08e --- /dev/null +++ b/filesystems/zfsnap2/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1478466865 +SHA256 (zfsnap-zfsnap-v2.0.0-beta3_GH0.tar.gz) = d73be34b58d94b89010e2be6fc3d34bdc34b9675aaa2bebfe446dffb683e45d3 +SIZE (zfsnap-zfsnap-v2.0.0-beta3_GH0.tar.gz) = 29973 diff --git a/filesystems/zfsnap2/files/patch-periodic_xPERIODICx__zfsnap.sh b/filesystems/zfsnap2/files/patch-periodic_xPERIODICx__zfsnap.sh new file mode 100644 index 000000000000..3b8bf6daee22 --- /dev/null +++ b/filesystems/zfsnap2/files/patch-periodic_xPERIODICx__zfsnap.sh @@ -0,0 +1,48 @@ +--- periodic/xPERIODICx_zfsnap.sh.orig 2020-07-28 02:17:05 UTC ++++ periodic/xPERIODICx_zfsnap.sh +@@ -11,23 +11,29 @@ fi + + # xPERIODICx_zfsnap_enable - Enable xPERIODICx snapshots (values: YES | NO) + # xPERIODICx_zfsnap_flags - `zfsnap snapshot` flags +-# xPERIODICx_zfsnap_fs - Space-separated ZFS filesystems to create non-recursive snapshots +-# xPERIODICx_zfsnap_recursive_fs - Space-separated ZFS filesystems to create recursive snapshots ++# xPERIODICx_zfsnap_delete_flags - `zfsnap destroy` flags ++# xPERIODICx_zfsnap_fs - Space-separated ZFS filesystems to manage non-recursive snapshots ++# xPERIODICx_zfsnap_recursive_fs - Space-separated ZFS filesystems to manage recursive snapshots + # xPERIODICx_zfsnap_ttl - Explicit TTL value + # xPERIODICx_zfsnap_verbose - Verbose output (values: YES | NO) + # xPERIODICx_zfsnap_enable_prefix - Create snapshots with prefix (values: YES | NO) (Default = YES) + # xPERIODICx_zfsnap_prefix - set prefix for snapshots (Default = xPERIODICx) ++# xPERIODICx_zfsnap_delete_prefixes - Space-separated list of prefixes of expired zfsnap snapshots to delete + + case "${xPERIODICx_zfsnap_enable-"NO"}" in + [Yy][Ee][Ss]) +- OPTIONS="$xPERIODICx_zfsnap_flags" ++ CREATE_OPTIONS="$xPERIODICx_zfsnap_flags" ++ DESTROY_OPTIONS="$xPERIODICx_zfsnap_delete_flags" + + case "${xPERIODICx_zfsnap_verbose-"NO"}" in +- [Yy][Ee][Ss]) OPTIONS="$OPTIONS -v" ;; ++ [Yy][Ee][Ss]) ++ CREATE_OPTIONS="$CREATE_OPTIONS -v" ++ DESTROY_OPTIONS="$DESTROY_OPTIONS -v" ++ ;; + esac + + case "${xPERIODICx_zfsnap_enable_prefix-"YES"}" in +- [Yy][Ee][Ss]) OPTIONS="$OPTIONS -p ${xPERIODICx_zfsnap_prefix:-"xPERIODICx-"}" ;; ++ [Yy][Ee][Ss]) CREATE_OPTIONS="$CREATE_OPTIONS -p ${xPERIODICx_zfsnap_prefix:-"xPERIODICx-"}" ;; + esac + + case 'xPERIODICx' in +@@ -49,7 +55,9 @@ case "${xPERIODICx_zfsnap_enable-"NO"}" in + ;; + esac + +- xPREFIXx/zfsnap snapshot $OPTIONS -a ${xPERIODICx_zfsnap_ttl:-"$default_ttl"} $xPERIODICx_zfsnap_fs -r $xPERIODICx_zfsnap_recursive_fs ++ # Destroy before create, just in case the pool is out of space ++ xPREFIXx/zfsnap destroy $DESTROY_OPTIONS -p "hourly- daily- weekly- monthly- reboot- $xPERIODICx_zfsnap_delete_prefixes" $xPERIODICx_zfsnap_fs -r $xPERIODICx_zfsnap_recursive_fs && \ ++ xPREFIXx/zfsnap snapshot $CREATE_OPTIONS -a ${xPERIODICx_zfsnap_ttl:-"$default_ttl"} $xPERIODICx_zfsnap_fs -r $xPERIODICx_zfsnap_recursive_fs + exit $? + ;; + diff --git a/filesystems/zfsnap2/pkg-descr b/filesystems/zfsnap2/pkg-descr new file mode 100644 index 000000000000..e5aa55629cad --- /dev/null +++ b/filesystems/zfsnap2/pkg-descr @@ -0,0 +1,16 @@ +zfsnap makes rolling ZFS snapshots easy and - with cron - automatic. + +The main advantages of zfsnap are its portability, simplicity, and performance. +It is written purely in /bin/sh and does not require any additional software - +other than a few core *nix utilies. + +zfsnap stores all the information it needs about a snapshot directly in its +name; no database or special ZFS properties are needed. The information is +stored in a way that is human readable, making it much easier for a sysadmin to +manage and audit backup schedules. + +Snapshot names are in the format of pool/fs@[prefix]Timestamp--TimeToLive +(e.g. pool/fs@weekly-2014-04-07_05.30.00--6m). The prefix is optional but can +be quite useful for filtering, Timestamp is the date and time when the snapshot +was created, and TimeToLive (TTL) is the amount of time the snapshot will be +kept until it can be deleted. diff --git a/filesystems/zfsnap2/pkg-plist b/filesystems/zfsnap2/pkg-plist new file mode 100644 index 000000000000..865f12042d3e --- /dev/null +++ b/filesystems/zfsnap2/pkg-plist @@ -0,0 +1,14 @@ +%%BASH%%etc/bash_completion.d/zfsnap.sh +etc/periodic/daily/402.zfsnap +etc/periodic/monthly/402.zfsnap +etc/periodic/weekly/402.zfsnap +share/man/man8/zfsnap.8.gz +sbin/zfsnap +%%DATADIR%%/commands/destroy.sh +%%DATADIR%%/commands/recurseback.sh +%%DATADIR%%/commands/snapshot.sh +%%DATADIR%%/completion/zfsnap-completion.bash +%%DATADIR%%/completion/zfsnap-completion.tcsh +%%DATADIR%%/completion/zfsnap-completion.zsh +%%DATADIR%%/core.sh +%%ZSH%%share/zsh/site-functions/_zfsnap diff --git a/filesystems/zfstools/Makefile b/filesystems/zfstools/Makefile new file mode 100644 index 000000000000..53d733ceddb3 --- /dev/null +++ b/filesystems/zfstools/Makefile @@ -0,0 +1,36 @@ +PORTNAME= zfstools +DISTVERSIONPREFIX=v +DISTVERSION= 0.3.6 +PORTREVISION= 2 +CATEGORIES= filesystems sysutils ruby +MASTER_SITES= GH \ + http://mirror.shatow.net/freebsd/${PORTNAME}/ + +MAINTAINER= bdrewery@FreeBSD.org +COMMENT= OpenSolaris-compatible auto snapshotting for ZFS +WWW= https://github.com/bdrewery/zfstools + +LICENSE= BSD2CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE.txt + +USES= ruby shebangfix +SHEBANG_FILES= bin/* + +USE_GITHUB= yes +GH_ACCOUNT= bdrewery + +NO_BUILD= yes + +SUB_FILES= pkg-message + +OPTIONS_DEFINE= DOCS + +.include <bsd.port.options.mk> + +do-install: + @cd ${WRKSRC}/bin && ${COPYTREE_BIN} . ${STAGEDIR}${PREFIX}/sbin + @cd ${WRKSRC}/lib && ${COPYTREE_SHARE} . ${STAGEDIR}${RUBY_SITELIBDIR} + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.mk> diff --git a/filesystems/zfstools/distinfo b/filesystems/zfstools/distinfo new file mode 100644 index 000000000000..3975d23051b6 --- /dev/null +++ b/filesystems/zfstools/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905190 +SHA256 (bdrewery-zfstools-v0.3.6_GH0.tar.gz) = 060112d89f11e95415f07cdbc05fef29a6a1bc5046046c56d37f16b1232fb2cf +SIZE (bdrewery-zfstools-v0.3.6_GH0.tar.gz) = 12323 diff --git a/filesystems/zfstools/files/pkg-message.in b/filesystems/zfstools/files/pkg-message.in new file mode 100644 index 000000000000..6df0d4d832a2 --- /dev/null +++ b/filesystems/zfstools/files/pkg-message.in @@ -0,0 +1,32 @@ +[ +{ type: install + message: <<EOM +To enable automatic snapshots, place lines such as these into /etc/crontab: + + PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin + 15,30,45 * * * * root %%PREFIX%%/sbin/zfs-auto-snapshot frequent 4 + 0 * * * * root %%PREFIX%%/sbin/zfs-auto-snapshot hourly 24 + 7 0 * * * root %%PREFIX%%/sbin/zfs-auto-snapshot daily 7 + 14 0 * * 7 root %%PREFIX%%/sbin/zfs-auto-snapshot weekly 4 + 28 0 1 * * root %%PREFIX%%/sbin/zfs-auto-snapshot monthly 12 + +This will keep 4 15-minutely snapshots, 24 hourly snapshots, 7 daily snapshots, +4 weekly snapshots and 12 monthly snapshots. Any resulting zero-sized snapshots +will be automatically cleaned up. + +Enable snapshotting on a dataset or top-level pool with: + + zfs set com.sun:auto-snapshot=true DATASET + +Children datasets can be disabled for snapshot with: + + zfs set com.sun:auto-snapshot=false DATASET + +Or for specific intervals: + + zfs set com.sun:auto-snapshot:frequent=false DATASET + +See website and command usage output for further details. +EOM +} +] diff --git a/filesystems/zfstools/pkg-descr b/filesystems/zfstools/pkg-descr new file mode 100644 index 000000000000..3fbffa57a0df --- /dev/null +++ b/filesystems/zfstools/pkg-descr @@ -0,0 +1,2 @@ +ZFSTools is an OpenSolaris-like and compatible auto snapshotting +script, which also supports auto snapshotting mysql databases. diff --git a/filesystems/zfstools/pkg-plist b/filesystems/zfstools/pkg-plist new file mode 100644 index 000000000000..1dc611682ff4 --- /dev/null +++ b/filesystems/zfstools/pkg-plist @@ -0,0 +1,9 @@ +%%PORTDOCS%%%%DOCSDIR%%/README.md +%%RUBY_SITELIBDIR%%/zfstools.rb +%%RUBY_SITELIBDIR%%/zfstools/dataset.rb +%%RUBY_SITELIBDIR%%/zfstools/features.rb +%%RUBY_SITELIBDIR%%/zfstools/pool.rb +%%RUBY_SITELIBDIR%%/zfstools/snapshot.rb +sbin/zfs-auto-snapshot +sbin/zfs-cleanup-snapshots +sbin/zfs-snapshot-mysql diff --git a/filesystems/zip/Makefile b/filesystems/zip/Makefile new file mode 100644 index 000000000000..ed3d6a2bd0a4 --- /dev/null +++ b/filesystems/zip/Makefile @@ -0,0 +1,34 @@ +PORTNAME= fuse-zip +PORTVERSION= 0.4.4 +PORTREVISION= 2 +CATEGORIES= filesystems sysutils +MASTER_SITES= https://bitbucket.org/agalanin/fuse-zip/downloads/ + +MAINTAINER= ports@FreeBSD.org +COMMENT= FUSE filesystem to mount ZIP archives with write support +WWW= https://bitbucket.org/agalanin/fuse-zip/ + +LICENSE= LGPL3 + +LIB_DEPENDS= libzip.so:archivers/libzip +BUILD_DEPENDS= libzip>=0.11.1:archivers/libzip + +USES= gmake fuse pkgconfig + +PLIST_FILES= bin/${PORTNAME} share/man/man1/${PORTNAME}.1.gz +PORTDOCS= README.md changelog + +OPTIONS_DEFINE= DOCS + +post-patch: + @${REINPLACE_CMD} -e 's|make|$${MAKE}|' ${WRKSRC}/Makefile + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin + ${INSTALL_MAN} ${WRKSRC}/${PORTNAME}.1 ${STAGEDIR}${PREFIX}/share/man/man1 + +do-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.mk> diff --git a/filesystems/zip/distinfo b/filesystems/zip/distinfo new file mode 100644 index 000000000000..7d75d75162d5 --- /dev/null +++ b/filesystems/zip/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1515487547 +SHA256 (fuse-zip-0.4.4.tar.gz) = c464a63ca7cc16eef7c14036fe09823ca9d96a0ef530e274845044a5440e47d2 +SIZE (fuse-zip-0.4.4.tar.gz) = 687132 diff --git a/filesystems/zip/pkg-descr b/filesystems/zip/pkg-descr new file mode 100644 index 000000000000..d2d8b2a7d5c0 --- /dev/null +++ b/filesystems/zip/pkg-descr @@ -0,0 +1,4 @@ +fuse-zip is a FUSE file system to navigate, extract, create and modify ZIP +archives based on libzip, implemented in C++. With fuse-zip, you can work +with ZIP archives as real directories. Unlike KIO or Gnome VFS, it can be +be used in any application without modifications. diff --git a/filesystems/zisofs-tools/Makefile b/filesystems/zisofs-tools/Makefile new file mode 100644 index 000000000000..bc5292711ea7 --- /dev/null +++ b/filesystems/zisofs-tools/Makefile @@ -0,0 +1,30 @@ +PORTNAME= zisofs-tools +PORTVERSION= 1.0.8 +PORTREVISION= 2 +CATEGORIES= filesystems sysutils +MASTER_SITES= KERNEL_ORG/linux/utils/fs/zisofs + +MAINTAINER= chip-set@mail.ru +COMMENT= User utilities for zisofs + +PORTDOCS= CHANGES COPYING INSTALL MRULES README + +USES= gmake tar:bzip2 desthack +GNU_CONFIGURE= yes + +MAKE_ARGS+= CFLAGS="${CFLAGS} -I${LOCALBASE}/include" + +PLIST_FILES= bin/mkzftree \ + share/man/man1/mkzftree.1.gz + +OPTIONS_DEFINE= LFS DOCS +OPTIONS_DEFAULT= LFS +LFS_DESC= Enable Large Files Support + +LFS_CONFIGURE_ENABLE= largefile + +post-install: + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${PORTDOCS:S,^,${WRKSRC}/,} ${STAGEDIR}${DOCSDIR}/ + +.include <bsd.port.mk> diff --git a/filesystems/zisofs-tools/distinfo b/filesystems/zisofs-tools/distinfo new file mode 100644 index 000000000000..55f66cc351ea --- /dev/null +++ b/filesystems/zisofs-tools/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1730905167 +SHA256 (zisofs-tools-1.0.8.tar.bz2) = ae4e53e4914934d41660248fb59d3c8761f1f1fd180d5ec993c17ddb3afd04f3 +SIZE (zisofs-tools-1.0.8.tar.bz2) = 52968 diff --git a/filesystems/zisofs-tools/files/patch-compress.c b/filesystems/zisofs-tools/files/patch-compress.c new file mode 100644 index 000000000000..3606d9f3be0e --- /dev/null +++ b/filesystems/zisofs-tools/files/patch-compress.c @@ -0,0 +1,11 @@ +--- compress.c.old 2008-01-17 17:19:55.000000000 -0200 ++++ compress.c 2008-01-17 17:20:09.000000000 -0200 +@@ -15,7 +15,7 @@ + + #include <stdlib.h> + #include <stdio.h> +-#include <utime.h> ++#include <time.h> + #include <unistd.h> + #include <zlib.h> + diff --git a/filesystems/zisofs-tools/pkg-descr b/filesystems/zisofs-tools/pkg-descr new file mode 100644 index 000000000000..e834f8f04a46 --- /dev/null +++ b/filesystems/zisofs-tools/pkg-descr @@ -0,0 +1,6 @@ +The zisofs filesystem is an extension to the ISO9660 filesystem that allows +files, on a file-by-file basis, to be stored compressed and decompressed in +real time. The zisofs filesystem is supported by recent versions of Linux +(2.4.14 or later). + +mkzftree - creates a zisofs/RockRidge compressed file tree diff --git a/filesystems/zrepl-dsh2dsh/Makefile b/filesystems/zrepl-dsh2dsh/Makefile new file mode 100644 index 000000000000..8ce302dfd1c2 --- /dev/null +++ b/filesystems/zrepl-dsh2dsh/Makefile @@ -0,0 +1,61 @@ +PORTNAME= zrepl +DISTVERSIONPREFIX= v +DISTVERSION= 0.8.9 +CATEGORIES= filesystems sysutils +PKGNAMESUFFIX= -dsh2dsh + +MAINTAINER= dsh@bamus.cz +COMMENT= ZFS dataset replication tool (fork with more features) +WWW= https://github.com/dsh2dsh/${PORTNAME} + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= go:1.23,modules ncurses + +GO_MODULE= github.com/dsh2dsh/${PORTNAME} +GO_BUILDFLAGS= -ldflags "${STRIP} -w -X github.com/dsh2dsh/${PORTNAME}/internal/version.${PORTNAME}Version=${DISTVERSIONFULL}" + +CONFLICTS_INSTALL= ${PORTNAME} + +SUB_FILES= pkg-message + +OPTIONS_DEFINE= EXAMPLES + +post-patch: + @${REINPLACE_CMD} \ + -e 's|/usr/local/etc/${PORTNAME}|${ETCDIR}|g' \ + -e 's|/usr/local|${PREFIX}|g' \ + ${WRKSRC}/dist/freebsd/etc/periodic/daily/${PORTNAME} \ + ${WRKSRC}/dist/freebsd/etc/periodic/weekly/500.${PORTNAME} \ + ${WRKSRC}/dist/freebsd/etc/rc.d/${PORTNAME} + +post-install: + ${MKDIR} ${STAGEDIR}${ETCDIR} \ + ${STAGEDIR}${EXAMPLESDIR} \ + ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d \ + ${STAGEDIR}${PREFIX}/etc/periodic/daily \ + ${STAGEDIR}${PREFIX}/etc/periodic/weekly + ${INSTALL_SCRIPT} ${WRKSRC}/dist/freebsd/etc/rc.d/${PORTNAME} \ + ${STAGEDIR}${PREFIX}/etc/rc.d + ${INSTALL_DATA} \ + ${WRKSRC}/dist/freebsd/etc/newsyslog.conf.d/${PORTNAME}.conf \ + ${STAGEDIR}${EXAMPLESDIR}/newsyslog.conf + ${INSTALL_DATA} ${WRKSRC}/dist/freebsd/etc/${PORTNAME}/${PORTNAME}.yml \ + ${STAGEDIR}${ETCDIR}/${PORTNAME}.yml.sample + ${INSTALL_SCRIPT} \ + ${WRKSRC}/dist/freebsd/etc/periodic/daily/${PORTNAME} \ + ${STAGEDIR}${PREFIX}/etc/periodic/daily/${PORTNAME} + ${INSTALL_SCRIPT} \ + ${WRKSRC}/dist/freebsd/etc/periodic/weekly/500.${PORTNAME} \ + ${STAGEDIR}${PREFIX}/etc/periodic/weekly/500.${PORTNAME} + +post-install-EXAMPLES-on: + ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}/hooks + (cd ${WRKSRC}/internal/config/samples && \ + ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}) + ${INSTALL_DATA} \ + ${WRKSRC}/dist/grafana/grafana-prometheus-${PORTNAME}.json \ + ${STAGEDIR}${EXAMPLESDIR} + +.include <bsd.port.mk> diff --git a/filesystems/zrepl-dsh2dsh/distinfo b/filesystems/zrepl-dsh2dsh/distinfo new file mode 100644 index 000000000000..6f28a3b3592c --- /dev/null +++ b/filesystems/zrepl-dsh2dsh/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1729520199 +SHA256 (go/sysutils_zrepl-dsh2dsh/zrepl-v0.8.9/v0.8.9.mod) = b1328a874b06ec042040304ef051aed69ba12d870b69789e77f3db456cf99946 +SIZE (go/sysutils_zrepl-dsh2dsh/zrepl-v0.8.9/v0.8.9.mod) = 3490 +SHA256 (go/sysutils_zrepl-dsh2dsh/zrepl-v0.8.9/v0.8.9.zip) = f0dbf0e40feb60e811dc46505eb9df0de82afe3b354c0d0d44945fcfb0dc49c8 +SIZE (go/sysutils_zrepl-dsh2dsh/zrepl-v0.8.9/v0.8.9.zip) = 600710 diff --git a/filesystems/zrepl-dsh2dsh/files/pkg-message.in b/filesystems/zrepl-dsh2dsh/files/pkg-message.in new file mode 100644 index 000000000000..288cad6b2a1e --- /dev/null +++ b/filesystems/zrepl-dsh2dsh/files/pkg-message.in @@ -0,0 +1,43 @@ +[ +{ type: install + message: <<EOM +Messages from filesystems/zrepl-dsh2dsh: + +SETUP BEFORE FIRST USE: +- Create the log file /var/log/zrepl.log: + # service newsyslog restart +- Modify the %%PREFIX%%/etc/zrepl/zrepl.yml configuration file +- Create ZFS datasets like: + # zfs create -o mountpoint=none -o readonly=on zdisk/zrepl + # zfs create zdisk/zrepl/localhost +- Enable the zrepl daemon to start automatically at boot: + # sysrc zrepl_enable="YES" +- Start the zrepl daemon: + # service zrepl start + +Documentation: https://github.com/dsh2dsh/zrepl?tab=readme-ov-file#changes-from-upstream + https://zrepl.github.io/ +Changelog: https://zrepl.github.io/master/changelog.html + +DANGER - SNAPSHOT PRUNING REQUIRES EXPLICIT KEEP RULES: +For any ZFS snapshot that you want to keep, at least one rule must match. +This also applies to snapshots taken by means other than zrepl +(e.g. snapshots taken manually or via boot environment tools). + +For monitoring zrepl daemon health and snapshots add this line to +/etc/periodic.conf: + + daily_zrepl_enable="YES" + +In order to automatically warn the operator of impending certificate +expiration, add this line to /etc/periodic.conf: + + weekly_zrepl_enable="YES" + +More config details in the zrepl periodic script: + + %%LOCALBASE%%/etc/periodic/weekly/500.zrepl + +EOM +} +] diff --git a/filesystems/zrepl-dsh2dsh/pkg-descr b/filesystems/zrepl-dsh2dsh/pkg-descr new file mode 100644 index 000000000000..2a89cb5c62d7 --- /dev/null +++ b/filesystems/zrepl-dsh2dsh/pkg-descr @@ -0,0 +1,19 @@ +Cross-platform ZFS replication tool written in Go that supports feature +detection, bookmarks, and other new features. + +This is a fork with more features like + + * support of shell patterns for datasets definitions + * new log formatters + * ability to log into a file + * ability to configure command piplines between `zfs send` and `zfs recv` + * Icinga/Nagios checks + * fast skip "keep all" pruning + * snapshots named using local time in timestamps + * configurable RPC timeout + * configurable path to zfs binary + * faster replication + * graceful shutdown + * redesigned `zrepl status` TUI + +and so on. diff --git a/filesystems/zrepl-dsh2dsh/pkg-plist b/filesystems/zrepl-dsh2dsh/pkg-plist new file mode 100644 index 000000000000..3e2aac89ae3b --- /dev/null +++ b/filesystems/zrepl-dsh2dsh/pkg-plist @@ -0,0 +1,24 @@ +bin/zrepl +etc/periodic/daily/zrepl +etc/periodic/weekly/500.zrepl +etc/rc.d/zrepl +@sample %%ETCDIR%%/zrepl.yml.sample +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/bandwidth_limit.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/grafana-prometheus-zrepl.json +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hooks/template.sh +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/local.yml +@sample %%EXAMPLESDIR%%/newsyslog.conf etc/newsyslog.conf.d/zrepl.conf +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pull.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pull_ssh.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/push.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_backup_to_external_disk.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_continuous_server_backup_receiver.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_continuous_server_backup_sender.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_fan_out_replication_source.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_fan_out_replication_target.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/sink.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/snap.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/snap_cron.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/source.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/source_ssh.yml +@dir etc/newsyslog.conf.d diff --git a/filesystems/zrepl/Makefile b/filesystems/zrepl/Makefile new file mode 100644 index 000000000000..fccb602a1809 --- /dev/null +++ b/filesystems/zrepl/Makefile @@ -0,0 +1,61 @@ +PORTNAME= zrepl +DISTVERSIONPREFIX= v +DISTVERSION= 0.6.1 +PORTREVISION= 9 +CATEGORIES= filesystems sysutils + +MAINTAINER= driesm@FreeBSD.org +COMMENT= ZFS dataset replication tool +WWW= https://zrepl.github.io/ + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= go:modules ncurses +USE_RC_SUBR= zrepl +USE_GITHUB= nodefault +GH_TUPLE= golang:sys:v0.6.0:sys + +GO_MODULE= github.com/${PORTNAME}/${PORTNAME} +GO_BUILDFLAGS= -ldflags "\ + ${STRIP} -w\ + -X ${GO_MODULE}/version.${PORTNAME}Version=${DISTVERSIONFULL}" + +SUB_FILES= pkg-message 500.zrepl + +OPTIONS_DEFINE= EXAMPLES MANPAGES +OPTIONS_DEFAULT= MANPAGES + +MANPAGES_BUILD_DEPENDS= sphinx-multiversion:textproc/py-sphinx-multiversion-zrepl@${PY_FLAVOR} +MANPAGES_USES= gmake python:build +MANPAGES_PLIST_FILES= share/man/man1/zrepl.1.gz + +pre-patch: + ${RM} -r ${WRKSRC}/vendor/golang.org/x/sys + ${LN} -s ${WRKDIR}/sys-* ${WRKSRC}/vendor/golang.org/x/sys + +post-build-MANPAGES-on: + @${MAKE_CMD} -C ${WRKSRC}/docs SPHINXBUILD=sphinx-build-${PYTHON_VER} man + +post-install: + @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} \ + ${STAGEDIR}${ETCDIR} \ + ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d \ + ${STAGEDIR}${PREFIX}/etc/syslog.d \ + ${STAGEDIR}/var/run/zrepl + ${INSTALL_DATA} ${FILESDIR}/newsyslog.conf ${STAGEDIR}${EXAMPLESDIR}/newsyslog.conf + ${INSTALL_DATA} ${FILESDIR}/syslog.conf ${STAGEDIR}${EXAMPLESDIR}/syslog.conf + ${INSTALL_DATA} ${FILESDIR}/zrepl.yml ${STAGEDIR}${ETCDIR}/zrepl.yml.sample + ${MKDIR} ${STAGEDIR}${PREFIX}/etc/periodic/weekly + ${INSTALL_SCRIPT} ${WRKDIR}/500.zrepl \ + ${STAGEDIR}${PREFIX}/etc/periodic/weekly/500.zrepl + +post-install-EXAMPLES-on: + @${MKDIR} ${STAGEDIR}${EXAMPLESDIR}/hooks + (cd ${WRKSRC}/config/samples && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}) + ${INSTALL_DATA} ${WRKSRC}/dist/grafana/grafana-prometheus-zrepl.json ${STAGEDIR}${EXAMPLESDIR} + +post-install-MANPAGES-on: + ${INSTALL_MAN} ${WRKSRC}/docs/_build/man/zrepl.1 ${STAGEDIR}${PREFIX}/share/man/man1 + +.include <bsd.port.mk> diff --git a/filesystems/zrepl/distinfo b/filesystems/zrepl/distinfo new file mode 100644 index 000000000000..33e3320c0169 --- /dev/null +++ b/filesystems/zrepl/distinfo @@ -0,0 +1,7 @@ +TIMESTAMP = 1697090687 +SHA256 (go/sysutils_zrepl/zrepl-v0.6.1/v0.6.1.mod) = 27760d04eb9b7c3c1ca35069afde9f3855f2491f80412bd3aba6cccb557fb009 +SIZE (go/sysutils_zrepl/zrepl-v0.6.1/v0.6.1.mod) = 2186 +SHA256 (go/sysutils_zrepl/zrepl-v0.6.1/v0.6.1.zip) = 87756e2d173cb6c588ba58d05a564bab9dd1febdbb6dbab435425981f379d715 +SIZE (go/sysutils_zrepl/zrepl-v0.6.1/v0.6.1.zip) = 587381 +SHA256 (go/sysutils_zrepl/zrepl-v0.6.1/golang-sys-v0.6.0_GH0.tar.gz) = b4f6d17c7a128f76169964b437cb66b3f2dbf9a33361928ec19dfecf7b03fc54 +SIZE (go/sysutils_zrepl/zrepl-v0.6.1/golang-sys-v0.6.0_GH0.tar.gz) = 1434234 diff --git a/filesystems/zrepl/files/500.zrepl.in b/filesystems/zrepl/files/500.zrepl.in new file mode 100644 index 000000000000..b7f1b3abb4d3 --- /dev/null +++ b/filesystems/zrepl/files/500.zrepl.in @@ -0,0 +1,41 @@ +#!/bin/sh + +# Check zrepl SSL certificates for impending expiration each week +# +# Add the following lines to /etc/periodic.conf: +# +# weekly_zrepl_enable (bool): Set to "NO" by default +# weekly_zrepl_warntime (int): Set to one month's worth of seconds by default + +# If there is a global system configuration file, suck it in. +# +if [ -r /etc/defaults/periodic.conf ] +then + . /etc/defaults/periodic.conf + source_periodic_confs +fi + +# 30 days in seconds +: ${weekly_zrepl_warntime="2592000"} + +rc=0 +case "$weekly_zrepl_enable" in + [Yy][Ee][Ss]) + echo + echo "Check Zrepl certificates for upcoming expiration:" + + for cert in `/usr/bin/find %%ETCDIR%% -maxdepth 1 -name *.crt`; do + /usr/bin/openssl x509 --in "${cert}" \ + -checkend "${weekly_zrepl_warntime}" + + if [ $? -gt 0 ]; then + echo "${cert} will expire soon" + /usr/bin/openssl x509 --in "${cert}" -noout -enddate + rc=3 + fi + done + ;; + *) rc=0;; +esac + +exit $rc diff --git a/filesystems/zrepl/files/newsyslog.conf b/filesystems/zrepl/files/newsyslog.conf new file mode 100644 index 000000000000..647b87247baa --- /dev/null +++ b/filesystems/zrepl/files/newsyslog.conf @@ -0,0 +1,5 @@ +# Newsyslog configuration file for zrepl. +# See newsyslog.conf(5) for details. +# +# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] +/var/log/zrepl.log 644 7 1000 @T00 JNC diff --git a/filesystems/zrepl/files/patch-go.mod b/filesystems/zrepl/files/patch-go.mod new file mode 100644 index 000000000000..abb50a71b69c --- /dev/null +++ b/filesystems/zrepl/files/patch-go.mod @@ -0,0 +1,89 @@ +--- go.mod.orig 2023-03-24 22:49:20 UTC ++++ go.mod +@@ -1,6 +1,6 @@ + module github.com/zrepl/zrepl + +-go 1.12 ++go 1.17 + + require ( + github.com/fatih/color v1.7.0 +@@ -15,37 +15,68 @@ require ( + github.com/google/uuid v1.1.2 + github.com/jinzhu/copier v0.0.0-20170922082739-db4671f3a9b8 + github.com/juju/ratelimit v1.0.1 +- github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 // indirect + github.com/kr/pretty v0.1.0 +- github.com/leodido/go-urn v1.2.1 // indirect + github.com/lib/pq v1.2.0 +- github.com/mattn/go-colorable v0.1.4 // indirect + github.com/mattn/go-isatty v0.0.8 + github.com/montanaflynn/stats v0.5.0 +- github.com/onsi/ginkgo v1.10.2 // indirect +- github.com/onsi/gomega v1.7.0 // indirect + github.com/pkg/errors v0.8.1 + github.com/pkg/profile v1.2.1 + github.com/problame/go-netssh v0.0.0-20200601114649-26439f9f0dc5 + github.com/prometheus/client_golang v1.2.1 + github.com/prometheus/common v0.7.0 + github.com/robfig/cron/v3 v3.0.1 +- github.com/sergi/go-diff v1.0.1-0.20180205163309-da645544ed44 // indirect; go1.12 thinks it needs this + github.com/spf13/cobra v0.0.2 + github.com/spf13/pflag v1.0.5 + github.com/stretchr/testify v1.6.1 + github.com/willf/bitset v1.1.10 + github.com/yudai/gojsondiff v0.0.0-20170107030110-7b1b7adf999d +- github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect; go1.12 thinks it needs this +- github.com/yudai/pp v2.0.1+incompatible // indirect + github.com/zrepl/yaml-config v0.0.0-20191220194647-cbb6b0cf4bdd + gitlab.com/tslocum/cview v1.5.3 + golang.org/x/net v0.0.0-20210119194325-5f4716e94777 + golang.org/x/sync v0.0.0-20190423024810-112230192c58 +- golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c ++ golang.org/x/sys v0.6.0 + golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135 +- google.golang.org/genproto v0.0.0-20210122163508-8081c04a3579 // indirect + google.golang.org/grpc v1.35.0 + google.golang.org/protobuf v1.25.0 ++) ++ ++require ( ++ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect ++ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4 // indirect ++ github.com/beorn7/perks v1.0.1 // indirect ++ github.com/cespare/xxhash/v2 v2.1.0 // indirect ++ github.com/davecgh/go-spew v1.1.1 // indirect ++ github.com/ftrvxmtrx/fd v0.0.0-20150925145434-c6d800382fff // indirect ++ github.com/gdamore/encoding v1.0.0 // indirect ++ github.com/go-playground/locales v0.13.0 // indirect ++ github.com/go-playground/universal-translator v0.17.0 // indirect ++ github.com/inconshreveable/mousetrap v1.0.0 // indirect ++ github.com/konsorten/go-windows-terminal-sequences v1.0.1 // indirect ++ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 // indirect ++ github.com/kr/text v0.1.0 // indirect ++ github.com/leodido/go-urn v1.2.1 // indirect ++ github.com/lucasb-eyer/go-colorful v1.0.3 // indirect ++ github.com/mattn/go-colorable v0.1.4 // indirect ++ github.com/mattn/go-runewidth v0.0.10 // indirect ++ github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect ++ github.com/onsi/ginkgo v1.10.2 // indirect ++ github.com/onsi/gomega v1.7.0 // indirect ++ github.com/pmezard/go-difflib v1.0.0 // indirect ++ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 // indirect ++ github.com/prometheus/procfs v0.0.5 // indirect ++ github.com/rivo/uniseg v0.2.0 // indirect ++ github.com/sergi/go-diff v1.0.1-0.20180205163309-da645544ed44 // indirect; go1.12 thinks it needs this ++ github.com/sirupsen/logrus v1.4.2 // indirect ++ github.com/theckman/goconstraint v1.11.0 // indirect ++ github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect; go1.12 thinks it needs this ++ github.com/yudai/pp v2.0.1+incompatible // indirect ++ gitlab.com/tslocum/cbind v0.1.4 // indirect ++ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 // indirect ++ golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf // indirect ++ golang.org/x/text v0.3.5 // indirect ++ google.golang.org/appengine v1.4.0 // indirect ++ google.golang.org/genproto v0.0.0-20210122163508-8081c04a3579 // indirect ++ gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect + gopkg.in/go-playground/assert.v1 v1.2.1 // indirect ++ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect + ) diff --git a/filesystems/zrepl/files/patch-go.sum b/filesystems/zrepl/files/patch-go.sum new file mode 100644 index 000000000000..7a439ab0bf98 --- /dev/null +++ b/filesystems/zrepl/files/patch-go.sum @@ -0,0 +1,28 @@ +--- go.sum.orig 2023-03-24 22:49:23 UTC ++++ go.sum +@@ -25,7 +25,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.202012 + github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= + github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= + github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +-github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= + github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= + github.com/ftrvxmtrx/fd v0.0.0-20150925145434-c6d800382fff h1:zk1wwii7uXmI0znwU+lqg+wFL9G5+vm5I+9rv2let60= + github.com/ftrvxmtrx/fd v0.0.0-20150925145434-c6d800382fff/go.mod h1:yUhRXHewUVJ1k89wHKP68xfzk7kwXUx/DV1nx4EBMbw= +@@ -92,8 +91,6 @@ github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m + github.com/juju/ratelimit v1.0.1 h1:+7AIFJVQ0EQgq/K9+0Krm7m530Du7tIz0METWzN0RgY= + github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= + github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +-github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 h1:uC1QfSlInpQF+M0ao65imhwqKnz3Q2z/d8PWZRMQvDM= +-github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= + github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= + github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= + github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= +@@ -235,6 +232,8 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go + golang.org/x/sys v0.0.0-20210113181707-4bcb84eeeb78/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk= + golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= ++golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= ++golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= + golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= + golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf h1:MZ2shdL+ZM/XzY3ZGOnh4Nlpnxz5GSOhOmtHo3iPU6M= + golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= diff --git a/filesystems/zrepl/files/patch-vendor_modules.txt b/filesystems/zrepl/files/patch-vendor_modules.txt new file mode 100644 index 000000000000..90f922b88bf2 --- /dev/null +++ b/filesystems/zrepl/files/patch-vendor_modules.txt @@ -0,0 +1,277 @@ +--- vendor/modules.txt.orig 2023-03-24 22:50:20 UTC ++++ vendor/modules.txt +@@ -1,21 +1,30 @@ + # github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 ++## explicit + github.com/alecthomas/template + github.com/alecthomas/template/parse + # github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4 ++## explicit + github.com/alecthomas/units + # github.com/beorn7/perks v1.0.1 ++## explicit; go 1.11 + github.com/beorn7/perks/quantile + # github.com/cespare/xxhash/v2 v2.1.0 ++## explicit; go 1.13 + github.com/cespare/xxhash/v2 + # github.com/davecgh/go-spew v1.1.1 ++## explicit + github.com/davecgh/go-spew/spew + # github.com/fatih/color v1.7.0 ++## explicit + github.com/fatih/color + # github.com/ftrvxmtrx/fd v0.0.0-20150925145434-c6d800382fff ++## explicit + github.com/ftrvxmtrx/fd + # github.com/gdamore/encoding v1.0.0 ++## explicit; go 1.9 + github.com/gdamore/encoding + # github.com/gdamore/tcell v1.2.0 ++## explicit; go 1.12 + github.com/gdamore/tcell + github.com/gdamore/tcell/terminfo + github.com/gdamore/tcell/terminfo/a/ansi +@@ -26,6 +35,7 @@ github.com/gdamore/tcell/terminfo/v/vt102 + github.com/gdamore/tcell/terminfo/v/vt220 + github.com/gdamore/tcell/terminfo/x/xterm + # github.com/gdamore/tcell/v2 v2.2.0 ++## explicit; go 1.12 + github.com/gdamore/tcell/v2 + github.com/gdamore/tcell/v2/terminfo + github.com/gdamore/tcell/v2/terminfo/a/aixterm +@@ -65,117 +75,171 @@ github.com/gdamore/tcell/v2/terminfo/x/xterm + github.com/gdamore/tcell/v2/terminfo/x/xterm_kitty + github.com/gdamore/tcell/v2/terminfo/x/xterm_termite + # github.com/gitchander/permutation v0.0.0-20181107151852-9e56b92e9909 ++## explicit + github.com/gitchander/permutation + # github.com/go-logfmt/logfmt v0.4.0 ++## explicit + github.com/go-logfmt/logfmt + # github.com/go-playground/locales v0.13.0 ++## explicit; go 1.13 + github.com/go-playground/locales + github.com/go-playground/locales/currency + # github.com/go-playground/universal-translator v0.17.0 ++## explicit; go 1.13 + github.com/go-playground/universal-translator + # github.com/go-playground/validator v9.31.0+incompatible ++## explicit + github.com/go-playground/validator + # github.com/go-playground/validator/v10 v10.4.1 ++## explicit; go 1.13 + github.com/go-playground/validator/v10 + # github.com/go-sql-driver/mysql v1.4.1-0.20190907122137-b2c03bcae3d4 ++## explicit + github.com/go-sql-driver/mysql + # github.com/golang/protobuf v1.4.3 ++## explicit; go 1.9 + github.com/golang/protobuf/proto + github.com/golang/protobuf/ptypes + github.com/golang/protobuf/ptypes/any + github.com/golang/protobuf/ptypes/duration + github.com/golang/protobuf/ptypes/timestamp + # github.com/google/uuid v1.1.2 ++## explicit + github.com/google/uuid + # github.com/inconshreveable/mousetrap v1.0.0 ++## explicit + github.com/inconshreveable/mousetrap + # github.com/jinzhu/copier v0.0.0-20170922082739-db4671f3a9b8 ++## explicit + github.com/jinzhu/copier + # github.com/juju/ratelimit v1.0.1 ++## explicit + github.com/juju/ratelimit + # github.com/konsorten/go-windows-terminal-sequences v1.0.1 ++## explicit + github.com/konsorten/go-windows-terminal-sequences + # github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 ++## explicit + github.com/kr/logfmt + # github.com/kr/pretty v0.1.0 ++## explicit + github.com/kr/pretty + # github.com/kr/text v0.1.0 ++## explicit + github.com/kr/text + # github.com/leodido/go-urn v1.2.1 ++## explicit; go 1.13 + github.com/leodido/go-urn + # github.com/lib/pq v1.2.0 ++## explicit + github.com/lib/pq + github.com/lib/pq/oid + github.com/lib/pq/scram + # github.com/lucasb-eyer/go-colorful v1.0.3 ++## explicit; go 1.12 + github.com/lucasb-eyer/go-colorful + # github.com/mattn/go-colorable v0.1.4 ++## explicit + github.com/mattn/go-colorable + # github.com/mattn/go-isatty v0.0.8 ++## explicit + github.com/mattn/go-isatty + # github.com/mattn/go-runewidth v0.0.10 ++## explicit; go 1.9 + github.com/mattn/go-runewidth + # github.com/matttproud/golang_protobuf_extensions v1.0.1 ++## explicit + github.com/matttproud/golang_protobuf_extensions/pbutil + # github.com/montanaflynn/stats v0.5.0 ++## explicit + github.com/montanaflynn/stats ++# github.com/onsi/ginkgo v1.10.2 ++## explicit ++# github.com/onsi/gomega v1.7.0 ++## explicit + # github.com/pkg/errors v0.8.1 ++## explicit + github.com/pkg/errors + # github.com/pkg/profile v1.2.1 ++## explicit + github.com/pkg/profile + # github.com/pmezard/go-difflib v1.0.0 ++## explicit + github.com/pmezard/go-difflib/difflib + # github.com/problame/go-netssh v0.0.0-20200601114649-26439f9f0dc5 ++## explicit; go 1.11 + github.com/problame/go-netssh + github.com/problame/go-netssh/internal/circlog + # github.com/prometheus/client_golang v1.2.1 ++## explicit; go 1.11 + github.com/prometheus/client_golang/prometheus + github.com/prometheus/client_golang/prometheus/internal + github.com/prometheus/client_golang/prometheus/promhttp + # github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 ++## explicit; go 1.9 + github.com/prometheus/client_model/go + # github.com/prometheus/common v0.7.0 ++## explicit; go 1.11 + github.com/prometheus/common/expfmt + github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg + github.com/prometheus/common/log + github.com/prometheus/common/model + # github.com/prometheus/procfs v0.0.5 ++## explicit + github.com/prometheus/procfs + github.com/prometheus/procfs/internal/fs + github.com/prometheus/procfs/internal/util + # github.com/rivo/uniseg v0.2.0 ++## explicit; go 1.12 + github.com/rivo/uniseg + # github.com/robfig/cron/v3 v3.0.1 ++## explicit; go 1.12 + github.com/robfig/cron/v3 + # github.com/sergi/go-diff v1.0.1-0.20180205163309-da645544ed44 ++## explicit + github.com/sergi/go-diff/diffmatchpatch + # github.com/sirupsen/logrus v1.4.2 ++## explicit + github.com/sirupsen/logrus + # github.com/spf13/cobra v0.0.2 ++## explicit + github.com/spf13/cobra + # github.com/spf13/pflag v1.0.5 ++## explicit; go 1.12 + github.com/spf13/pflag + # github.com/stretchr/testify v1.6.1 ++## explicit; go 1.13 + github.com/stretchr/testify/assert + github.com/stretchr/testify/require + # github.com/theckman/goconstraint v1.11.0 ++## explicit + github.com/theckman/goconstraint/go1.11/gte + # github.com/willf/bitset v1.1.10 ++## explicit + github.com/willf/bitset + # github.com/yudai/gojsondiff v0.0.0-20170107030110-7b1b7adf999d ++## explicit + github.com/yudai/gojsondiff + github.com/yudai/gojsondiff/formatter + # github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 ++## explicit + github.com/yudai/golcs ++# github.com/yudai/pp v2.0.1+incompatible ++## explicit + # github.com/zrepl/yaml-config v0.0.0-20191220194647-cbb6b0cf4bdd ++## explicit + github.com/zrepl/yaml-config + # gitlab.com/tslocum/cbind v0.1.4 ++## explicit; go 1.15 + gitlab.com/tslocum/cbind + # gitlab.com/tslocum/cview v1.5.3 ++## explicit; go 1.12 + gitlab.com/tslocum/cview + # golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 ++## explicit; go 1.11 + golang.org/x/crypto/sha3 + # golang.org/x/net v0.0.0-20210119194325-5f4716e94777 ++## explicit; go 1.11 + golang.org/x/net/http/httpguts + golang.org/x/net/http2 + golang.org/x/net/http2/hpack +@@ -184,8 +248,10 @@ golang.org/x/net/internal/timeseries + golang.org/x/net/trace + golang.org/x/net/websocket + # golang.org/x/sync v0.0.0-20190423024810-112230192c58 ++## explicit + golang.org/x/sync/semaphore +-# golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c ++# golang.org/x/sys v0.6.0 ++## explicit; go 1.17 + golang.org/x/sys/cpu + golang.org/x/sys/internal/unsafeheader + golang.org/x/sys/plan9 +@@ -194,8 +260,10 @@ golang.org/x/sys/windows + golang.org/x/sys/windows/registry + golang.org/x/sys/windows/svc/eventlog + # golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf ++## explicit; go 1.11 + golang.org/x/term + # golang.org/x/text v0.3.5 ++## explicit; go 1.11 + golang.org/x/text/encoding + golang.org/x/text/encoding/internal/identifier + golang.org/x/text/secure/bidirule +@@ -203,6 +271,7 @@ golang.org/x/text/transform + golang.org/x/text/unicode/bidi + golang.org/x/text/unicode/norm + # golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135 ++## explicit + golang.org/x/tools/go/gcexportdata + golang.org/x/tools/go/internal/gcimporter + golang.org/x/tools/go/internal/packagesdriver +@@ -211,10 +280,13 @@ golang.org/x/tools/internal/fastwalk + golang.org/x/tools/internal/gopathwalk + golang.org/x/tools/internal/semver + # google.golang.org/appengine v1.4.0 ++## explicit + google.golang.org/appengine/cloudsql + # google.golang.org/genproto v0.0.0-20210122163508-8081c04a3579 ++## explicit; go 1.11 + google.golang.org/genproto/googleapis/rpc/status + # google.golang.org/grpc v1.35.0 ++## explicit; go 1.11 + google.golang.org/grpc + google.golang.org/grpc/attributes + google.golang.org/grpc/backoff +@@ -260,6 +332,7 @@ google.golang.org/grpc/stats + google.golang.org/grpc/status + google.golang.org/grpc/tap + # google.golang.org/protobuf v1.25.0 ++## explicit; go 1.9 + google.golang.org/protobuf/encoding/prototext + google.golang.org/protobuf/encoding/protowire + google.golang.org/protobuf/internal/descfmt +@@ -290,6 +363,10 @@ google.golang.org/protobuf/types/known/anypb + google.golang.org/protobuf/types/known/durationpb + google.golang.org/protobuf/types/known/timestamppb + # gopkg.in/alecthomas/kingpin.v2 v2.2.6 ++## explicit + gopkg.in/alecthomas/kingpin.v2 ++# gopkg.in/go-playground/assert.v1 v1.2.1 ++## explicit + # gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c ++## explicit + gopkg.in/yaml.v3 diff --git a/filesystems/zrepl/files/pkg-message.in b/filesystems/zrepl/files/pkg-message.in new file mode 100644 index 000000000000..b210277014d0 --- /dev/null +++ b/filesystems/zrepl/files/pkg-message.in @@ -0,0 +1,37 @@ +[ +{ type: install + message: <<EOM +Messages from filesystems/zrepl: + +SETUP BEFORE FIRST USE: +- Create the log file /var/log/zrepl.log: + # service newsyslog restart +- Teach syslogd to redirect facility local0 to the zrepl.log file: + # service syslogd reload +- Modify the %%PREFIX%%/etc/zrepl/zrepl.yml configuration file +- For remote backups, create the SSH key pair and authorized_keys file +- Enable the zrepl daemon to start automatically at boot: + # sysrc zrepl_enable="YES" +- Start the zrepl daemon: + # service zrepl start + +Documentation: https://zrepl.github.io/ +Changelog: https://zrepl.github.io/master/changelog.html + +DANGER - SNAPSHOT PRUNING REQUIRES EXPLICIT KEEP RULES: +For any ZFS snapshot that you want to keep, at least one rule must match. +This also applies to snapshots taken by means other than zrepl +(e.g. snapshots taken manually or via boot environment tools). + +In order to automatically warn the operator of impending certificate +expiration, add this line to /etc/periodic.conf: + + weekly_zrepl_enable="YES" + +More config details in the zrepl periodic script: + + %%LOCALBASE%%/etc/periodic/weekly/500.zrepl + +EOM +} +] diff --git a/filesystems/zrepl/files/syslog.conf b/filesystems/zrepl/files/syslog.conf new file mode 100644 index 000000000000..c825c409d5a6 --- /dev/null +++ b/filesystems/zrepl/files/syslog.conf @@ -0,0 +1,7 @@ +# Syslog configuration file for zrepl. +# See syslog.conf(5) for details. +# +# SELECTOR ACTION +# FACILITY.[!<=>]LEVEL +!zrepl +local0.info /var/log/zrepl.log diff --git a/filesystems/zrepl/files/zrepl.in b/filesystems/zrepl/files/zrepl.in new file mode 100644 index 000000000000..6a2510f80572 --- /dev/null +++ b/filesystems/zrepl/files/zrepl.in @@ -0,0 +1,80 @@ +#!/bin/sh + +# PROVIDE: zrepl +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf +# to enable this service: +# +# zrepl_enable (bool): Set to YES to enable the zrepl service. +# Default: NO +# zrepl_config (str): File containing zrepl configuration details. +# Default: %%PREFIX%%/etc/zrepl/zrepl.yml +# zrepl_user (str): The user account used to run the zrepl daemon. +# Do not specifically set this to an empty string as this +# will cause the daemon to run as root. +# Default: root +# zrepl_group (str): The group account used to run the zrepl daemon. +# Do not specifically set this to an empty string as this +# will cause the daemon to run with group wheel. +# Default: wheel +# zrepl_flags (str): Extra flags passed to zrepl +# Default: "" +# zrepl_facility (str): Syslog facility to use +# Default: local0 +# zrepl_priority (str): Syslog priority to use +# Default: alert + +. /etc/rc.subr +name=zrepl +rcvar=${name}_enable +load_rc_config $name + +: ${zrepl_enable:="NO"} +: ${zrepl_config:="%%PREFIX%%/etc/zrepl/zrepl.yml"} +: ${zrepl_user:="root"} +: ${zrepl_group:="wheel"} +: ${zrepl_flags:=""} +: ${zrepl_facility:="local0"} +: ${zrepl_priority:="alert"} +: ${zrepl_options:="${zrepl_flags} --config ${zrepl_config}"} + +pidfile="/var/run/zrepl.pid" +command="/usr/sbin/daemon" +procname="%%PREFIX%%/bin/zrepl" +command_args="-p ${pidfile} -S -l ${zrepl_facility} -s ${zrepl_priority} -T ${name} \ + ${procname} ${zrepl_options} daemon" + +start_precmd="zrepl_precmd" +stop_postcmd="zrepl_postcmd" +restart_precmd="zrepl_checkconfig" +configtest_cmd="zrepl_checkconfig" +extra_commands="configtest" + +zrepl_precmd() +{ + if [ ! -d "/var/run/zrepl/stdinserver" ]; then + install -d -g ${zrepl_group} -o ${zrepl_user} -m 0700 -- "/var/run/zrepl"; + install -d -g ${zrepl_group} -o ${zrepl_user} -m 0700 -- "/var/run/zrepl/stdinserver"; + fi + + if [ ! -e "${pidfile}" ]; then + install -g ${zrepl_group} -o ${zrepl_user} -- /dev/null "${pidfile}"; + fi + + zrepl_checkconfig +} + +zrepl_postcmd() +{ + rm -f -- "${pidfile}" +} + +zrepl_checkconfig() +{ + echo "Performing sanity check on zrepl configuration:" + eval ${procname} ${zrepl_options} configcheck +} + +run_rc_command "$1" diff --git a/filesystems/zrepl/files/zrepl.yml b/filesystems/zrepl/files/zrepl.yml new file mode 100644 index 000000000000..94e924c4eb7e --- /dev/null +++ b/filesystems/zrepl/files/zrepl.yml @@ -0,0 +1,13 @@ +# zrepl main configuration file. +# For documentation, refer to https://zrepl.github.io/ +# +global: + logging: + - type: "stdout" + level: "error" + format: "human" + - type: "syslog" + level: "info" + format: "logfmt" + +# Add "jobs:" section(s) here for your specific use cases. diff --git a/filesystems/zrepl/pkg-descr b/filesystems/zrepl/pkg-descr new file mode 100644 index 000000000000..4913c21f125b --- /dev/null +++ b/filesystems/zrepl/pkg-descr @@ -0,0 +1,2 @@ +Cross-platform ZFS replication tool written in Go that supports +feature detection, bookmarks, and other new features. diff --git a/filesystems/zrepl/pkg-plist b/filesystems/zrepl/pkg-plist new file mode 100644 index 000000000000..a11961d1fa43 --- /dev/null +++ b/filesystems/zrepl/pkg-plist @@ -0,0 +1,25 @@ +bin/zrepl +etc/periodic/weekly/500.zrepl +@sample %%ETCDIR%%/zrepl.yml.sample +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/bandwidth_limit.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/grafana-prometheus-zrepl.json +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hooks/template.sh +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/local.yml +@sample %%EXAMPLESDIR%%/newsyslog.conf etc/newsyslog.conf.d/zrepl.conf +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pull.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pull_ssh.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/push.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_backup_to_external_disk.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_continuous_server_backup_receiver.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_continuous_server_backup_sender.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_fan_out_replication_source.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_fan_out_replication_target.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/sink.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/snap.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/snap_cron.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/source.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/source_ssh.yml +@sample %%EXAMPLESDIR%%/syslog.conf etc/syslog.d/zrepl.conf +@dir etc/newsyslog.conf.d +@dir etc/syslog.d +@dir(root,wheel,0750) /var/run/zrepl diff --git a/filesystems/zxfer/Makefile b/filesystems/zxfer/Makefile new file mode 100644 index 000000000000..9a0ecce6db0f --- /dev/null +++ b/filesystems/zxfer/Makefile @@ -0,0 +1,30 @@ +PORTNAME= zxfer +PORTVERSION= 1.1.7 +PORTREVISION= 1 +DISTVERSIONPREFIX= v +CATEGORIES= filesystems sysutils + +MAINTAINER= ports@scaleengine.com +COMMENT= Easily and reliably transfer ZFS filesystems +WWW= https://github.com/allanjude/zxfer + +LICENSE= BSD2CLAUSE + +USE_GITHUB= yes +GH_ACCOUNT= allanjude + +NO_BUILD= yes + +OPTIONS_DEFINE= RSYNC + +RSYNC_DESC= Enable RSYNC Support +RSYNC_RUN_DEPENDS= rsync:net/rsync + +PLIST_FILES= share/man/man8/zxfer.8.gz \ + sbin/zxfer + +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/zxfer ${STAGEDIR}${PREFIX}/sbin + ${INSTALL_MAN} ${WRKSRC}/zxfer.8 ${STAGEDIR}${PREFIX}/share/man/man8 + +.include <bsd.port.mk> diff --git a/filesystems/zxfer/distinfo b/filesystems/zxfer/distinfo new file mode 100644 index 000000000000..8f43bc8feced --- /dev/null +++ b/filesystems/zxfer/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1554913055 +SHA256 (allanjude-zxfer-v1.1.7_GH0.tar.gz) = c95ed822748806e93b06902575cfbaf99b6a236d21a6bb6c0e3d4648f2d48f29 +SIZE (allanjude-zxfer-v1.1.7_GH0.tar.gz) = 52908 diff --git a/filesystems/zxfer/pkg-descr b/filesystems/zxfer/pkg-descr new file mode 100644 index 000000000000..1e7e4caee271 --- /dev/null +++ b/filesystems/zxfer/pkg-descr @@ -0,0 +1,22 @@ +Zxfer is a fork of zfs-replicate. It allows the easy and reliable backup, +restore or transfer of ZFS filesystems, either locally or remotely. + +Some of the features zxfer has: + * Written in sh with only one dependency, rsync. Rsync mode is not used + in a typical restore, hence in that situation all you need is the + zxfer script, your backup and an install CD/DVD. + * Reliability is first priority - the only methods of transfer allowed + are those that checksum/hash the transferred data. + * Transfer to or from a remote host via ssh. + * Recursive and incremental transfer of filesystems (via snapshots). + * Transfer properties and sources of those properties (e.g. local or + inherited). + * Override properties in the transfer, e.g. for archival purposes + it is useful to override "copies" and "compression". + * Create all filesystems on the destination as necessary. + * A comprehensive man page with examples. + * Can be set to beep on error or when done, useful for long transfers. + * Features an rsync mode for when two different snapshotting regimes are on + source and destination, and zfs send/receive won't work. + +LICENSE: BSD |