mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-16 19:50:19 +01:00
system/ciopfs: New maintainer.
Signed-off-by: B. Watson <yalhcru@gmail.com> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
parent
9b3bef6888
commit
2e438af4f8
5 changed files with 167 additions and 24 deletions
|
@ -1,3 +1,7 @@
|
|||
ciopfs is a case-insensitive FUSE filesystem. It is useful for getting
|
||||
around issues where, say, a game is ported from Linux to Windows but
|
||||
the mods for that game still expect a case-insenitive filesystem.
|
||||
ciopfs (case insensitive on purpose filesystem)
|
||||
|
||||
ciopfs is a stackable or overlay linux userspace file system (implemented
|
||||
with FUSE) which mounts a normal directory on a regular file sytem in
|
||||
case insensitive fashion. It's useful for getting around issues where,
|
||||
say, a game is ported from Linux to Windows but the mods for that game
|
||||
still expect a case-insenitive filesystem.
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
# Slackware build script for ciopfs
|
||||
|
||||
# Copyright 2015 Dugan Chen Canada
|
||||
# Copyright 2020 B. Watson
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use of this script, with or without modification, is
|
||||
|
@ -22,6 +23,11 @@
|
|||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
# 20200413 bkw:
|
||||
# - take over maintenance
|
||||
# - i486 => i586
|
||||
# - include "links -dump" of web page as ciopfs.txt
|
||||
|
||||
PRGNAM=ciopfs
|
||||
VERSION=${VERSION:-0.4}
|
||||
BUILD=${BUILD:-1}
|
||||
|
@ -29,7 +35,7 @@ TAG=${TAG:-_SBo}
|
|||
|
||||
if [ -z "$ARCH" ]; then
|
||||
case "$( uname -m )" in
|
||||
i?86) ARCH=i486 ;;
|
||||
i?86) ARCH=i586 ;;
|
||||
arm*) ARCH=arm ;;
|
||||
*) ARCH=$( uname -m ) ;;
|
||||
esac
|
||||
|
@ -40,8 +46,8 @@ TMP=${TMP:-/tmp/SBo}
|
|||
PKG=$TMP/package-$PRGNAM
|
||||
OUTPUT=${OUTPUT:-/tmp}
|
||||
|
||||
if [ "$ARCH" = "i486" ]; then
|
||||
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
|
||||
if [ "$ARCH" = "i586" ]; then
|
||||
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "i686" ]; then
|
||||
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
|
||||
|
@ -63,28 +69,23 @@ rm -rf $PRGNAM-$VERSION
|
|||
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
|
||||
cd $PRGNAM-$VERSION
|
||||
chown -R root:root .
|
||||
find -L . \
|
||||
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
|
||||
-o -perm 511 \) -exec chmod 755 {} \; -o \
|
||||
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
|
||||
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
|
||||
|
||||
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
|
||||
\! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
|
||||
|
||||
CFLAGS="$SLKCFLAGS" \
|
||||
CXXFLAGS="$SLKCFLAGS" \
|
||||
make
|
||||
install -Dm755 ciopfs $PKG/bin/ciopfs
|
||||
mkdir -p $PKG/sbin
|
||||
( cd $PKG/sbin
|
||||
ln -s ../bin/ciopfs mount.ciopfs
|
||||
)
|
||||
|
||||
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
|
||||
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
|
||||
install -s -Dm755 ciopfs $PKG/bin/ciopfs
|
||||
mkdir -p $PKG/sbin
|
||||
ln -s ../bin/ciopfs $PKG/sbin/mount.ciopfs
|
||||
|
||||
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
|
||||
|
||||
# 20200413 bkw: Upstream includes no documentation. Text file made from
|
||||
# upstream's web site.
|
||||
cat $CWD/$PRGNAM.txt > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.txt
|
||||
|
||||
mkdir -p $PKG/install
|
||||
cat $CWD/slack-desc > $PKG/install/slack-desc
|
||||
|
||||
|
|
|
@ -6,5 +6,5 @@ MD5SUM="1798fc043034f292efd887c05fc4ea1e"
|
|||
DOWNLOAD_x86_64=""
|
||||
MD5SUM_x86_64=""
|
||||
REQUIRES=""
|
||||
MAINTAINER="Dugan Chen"
|
||||
EMAIL="thedoogster [at] gmail [dot] com"
|
||||
MAINTAINER="B. Watson"
|
||||
EMAIL="yalhcru@gmail.com"
|
||||
|
|
138
system/ciopfs/ciopfs.txt
Normal file
138
system/ciopfs/ciopfs.txt
Normal file
|
@ -0,0 +1,138 @@
|
|||
ciopfs - case insensitive on purpose filesystem
|
||||
|
||||
ciopfs is a stackable or overlay linux userspace file system (implemented with
|
||||
FUSE) which mounts a normal directory on a regular file system in case
|
||||
insensitive fashion.
|
||||
|
||||
The commands below should illustrate it’s function:
|
||||
|
||||
mkdir -p ~/tmp/ciopfs/{.data,case-insensitive}
|
||||
ciopfs ~/tmp/ciopfs/.data ~/tmp/ciopfs/case-insensitive
|
||||
cd ~/tmp/ciopfs
|
||||
mkdir -p case-insensitive/DeMo/SubFolder
|
||||
echo demo >> case-insensitive/DEMO/subFolder/MyFile
|
||||
|
||||
At this point your file system should look like this:
|
||||
|
||||
case-insensitive
|
||||
`-- DeMo
|
||||
`-- SubFolder
|
||||
`-- MyFile
|
||||
.data
|
||||
`-- demo
|
||||
`-- subfolder
|
||||
`-- myfile
|
||||
|
||||
To avoid any conflicts you should not manipulate the data directory directly,
|
||||
any change should be done over the mount point. All filenames in the data
|
||||
directory which aren’t all lower case are ignored.
|
||||
|
||||
If you want to mount the file system automatically at boot time add a line like
|
||||
the one below to your /etc/fstab.
|
||||
|
||||
/ciopfs/data /ciopfs/mnt ciopfs allow_other,default_permissions,use_ino,attr_timeout=0 0 0
|
||||
|
||||
Note that ciopfs is primarily designed for single user mode. It was originally
|
||||
developed to mount the wine program folder and provide faster case insensitive
|
||||
file access. If you want to give multiple users write access to the same file
|
||||
system, then you have to mount it as root. However, in order to avoid security
|
||||
problems ciopfs will force fuse into single threaded mode and thus hurt
|
||||
performance.
|
||||
|
||||
News
|
||||
|
||||
* ciopfs-0.4 released (18.06.2011)
|
||||
* Bugfix in symlink creation
|
||||
* Better errno handling
|
||||
* ciopfs-0.3 released (25.09.2010)
|
||||
* Security improvements: ciopfs forces single threaded mode if the file
|
||||
system is mounted by root and accessible for others
|
||||
* ASCII mode should now work (an off by one error which caused a segfault
|
||||
was fixed)
|
||||
* Various bug fixes
|
||||
* ciopfs-0.2 released (30.06.2008)
|
||||
* Unicode support based on glib
|
||||
* Better error handling in out of memory situations
|
||||
* Various code cleanups
|
||||
* ciopfs-0.1 released (24.05.2008)
|
||||
|
||||
How it works
|
||||
|
||||
ciopfs works by translating every path element to lower case before further
|
||||
operations take place. On file or directory creation the original file name is
|
||||
stored in an extended attribute which is later returned upon request.
|
||||
|
||||
This is illustrated below:
|
||||
|
||||
getfattr -dR .data
|
||||
# file: .data/demo
|
||||
user.filename="DeMo"
|
||||
|
||||
# file: .data/demo/subfolder
|
||||
user.filename="SubFolder"
|
||||
|
||||
# file: .data/demo/subfolder/myfile
|
||||
user.filename="MyFile"
|
||||
|
||||
Runtime Requirements
|
||||
|
||||
If you want the file system to preserve case information you have to make sure
|
||||
that the underlying file system supports extended attributes (for example for
|
||||
ext{2,3} you need a kernel with CONFIG_EXT{2,3}_FS_XATTR enabled). You probably
|
||||
also want to mount the underlying filesystem with the user_xattr option which
|
||||
allows non root users to create extended attributes.
|
||||
|
||||
Build Requirements
|
||||
|
||||
In order to compile ciopfs you will need the fuse development files, libattr and
|
||||
if you plan to use Unicode characters within file names you will either need
|
||||
glib which is the default or alternatively libicu.
|
||||
|
||||
If you want to use neither of those the file system will fall back to libc’s
|
||||
tolower(3) function which is only defined for [a-zA-Z]. Hence, it will only work
|
||||
case insensitively for ASCII file names.
|
||||
|
||||
For ease of use the following 3 Makefile targets are supported:
|
||||
|
||||
* unicode-glib (default)
|
||||
* unicode-icu
|
||||
* ascii
|
||||
|
||||
Running one of those followed by sudo make install should do everything that is
|
||||
needed.
|
||||
|
||||
Alternatively, you can also use one of the distribution provided binary
|
||||
packages.
|
||||
|
||||
POSIX Compliance
|
||||
|
||||
ciopfs passes all test of a slightly patched POSIX file system test suite when
|
||||
mounted as root user with the following options:
|
||||
|
||||
allow_other,use_ino,attr_timeout=0,entry_timeout=0
|
||||
|
||||
and $fs set to "ciopfs" in the test suite configuration file. This was last
|
||||
tested with pjd-fstest-20090130-RC.tgz and ext3 as the underlying file system.
|
||||
|
||||
Stability and Speed
|
||||
|
||||
ciopfs just passes every requested operation to the underlying file system, so
|
||||
in theory it shouldn’t have a negative impact on stability. However, if you find
|
||||
a bug then send me an email with the instruction to reproduce it.
|
||||
|
||||
As far as speed is of concern, I didn’t really benchmark or optimize it so far.
|
||||
There is the usual overhead associated with user / kernel space context
|
||||
switches. Furthermore, ciopfs in it’s current implementation uses libc’s
|
||||
malloc/free quite extensively, maybe this could be a bottleneck.
|
||||
|
||||
Development
|
||||
|
||||
You can always fetch the current code base from the git repository located at
|
||||
Github or Sourcehut.
|
||||
|
||||
If you have comments, suggestions, ideas, a bug report, a patch or something
|
||||
else related to ciopfs then don’t hesitate to write me an email.
|
||||
|
||||
License
|
||||
|
||||
ciopfs is licensed under the GNU GPL v2.
|
|
@ -6,7 +6,7 @@
|
|||
# customary to leave one space after the ':' except on otherwise blank lines.
|
||||
|
||||
|-----handy-ruler------------------------------------------------------|
|
||||
ciopfs: ciopfs (case insensitive FUSE filesystem)
|
||||
ciopfs: ciopfs (case insensitive on purpose filesystem)
|
||||
ciopfs:
|
||||
ciopfs: ciopfs is a stackable or overlay linux userspace file system
|
||||
ciopfs: (implemented with fuse) which mounts a normal directory on a regular
|
||||
|
|
Loading…
Reference in a new issue