Update llfuse-1.3.6 to 1.3.8 to fix borg mount, add llfuse Slackbuild and notes

This commit is contained in:
KZ 2020-11-13 13:47:57 -08:00
parent 01e2189a64
commit 345701837c
13 changed files with 164 additions and 49 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,8 +0,0 @@
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.
LLFUSE was originally part of S3QL, but has been factored out so that it can
be used by other projects as well.
The SlackBuild detects presence of Python 3.x and if found,
then also bindings for Python 3.x are built.

View File

@ -0,0 +1,94 @@
## Package Description
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.
LLFUSE was originally part of S3QL, but has been factored out so that it can
be used by other projects as well.
The SlackBuild detects presence of Python 3.x and if found,
then also bindings for Python 3.x are built.
Python-LLFUSE is no longer actively maintained. Unless you are stuck with Python 2.x or libfuse 2.x, we recommended to use the pyfuse3 module instead: https://github.com/libfuse/pyfuse3
## kubedzero notes
* I set up Slackware-current (15.0) based on a Princeton ISO http://mirror.math.princeton.edu/pub/slackware/slackware-iso/slackware-current-iso/ and then updated all the packages.
* I made sure `fuse-2.9.9` and `fuse3-3.10.0` were installed, along with `python`, `python3`, `pip`, and `setuptools`
* I copied over `slack-desc` and `llfuse.SlackBuild` from this repository, making sure the SlackBuild is executable. The other files don't seem to be used.
* I then downloaded the latest ZIP source of llfuse from https://github.com/python-llfuse/python-llfuse/archive/release-1.3.8.zip and put it in the same directory as the SlackBuild script.
* Finally, I executed the SlackBuild script. It unzips the Github source archive to a directory created in `/tmp/` and runs `setup.py build_cython` as well as `setup.py install` with both Python 2 and Python 3. It also copies some other files over, and then packages the compiled files into a Slack-installable `/tmp/llfuse-1.3.8-x86_64-1_SBo.txz` file
* NOTE: The SlackBuild script will need to be updated with a new version number to build future versions of this library
* NOTE: https://github.com/python-llfuse/python-llfuse/blob/master/developer-notes/release-process.md had some additional setup and development notes
* NOTE: If you see `gcc: error: src/llfuse.c: No such file or directory` after `gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-pro -o build/temp.linux-x86_64-2.7/src/llfuse.o -D_FILE_OFFSET_BITS=64 -I/usr/include/-Wsign-compare -DLLFUSE_VERSION="1.3.7" -Wno-unused-function -Wno-implicit-fallthroerror=unreachable-code -Werror=conversion -Werror=sign-compare -fno-strict-aliasing` it's possible that `setup.py build_cython` did not run to completion and thus did not create the compiled `.c` files
## Package versions
These are the package versions installed during the 2020/11 build of llfuse:
```
Package Version
-------------- ---------
-lxc 0.1
appdirs 1.4.4
Brotli 1.0.9
caca 0.99b19
certifi 2020.11.8
chardet 3.0.4
cupshelpers 1.0
Cython 0.29.21
distro 1.5.0
docutils 0.16
future 0.18.2
getmail6 6.9
gpg 1.14.0
gyp 0.1
idna 2.10
include-server 3.3.3
isc 2.0
libwebp 0.0
M2Crypto 0.36.0
Mako 1.1.3
mercurial 5.6
meson 0.56.0
netsnmp-python 1.0a1
notify2 0.3.1
packaging 20.4
Pillow 8.0.1
pip 20.2.4
ply 3.11
pssh 2.3.4
pwquality 1.4.4
pycairo 1.20.0
pycups 2.0.1
pycurl 7.43.0.6
Pygments 2.7.2
PyGObject 3.36.1
pyparsing 2.4.7
PyQt4-sip 4.19.23
PyQt5 5.15.1
PyQt5-sip 12.8.1
python-sane 2.8.3
pyxdg 0.27
QScintilla 2.11.5
requests 2.25.0
rpm 4.16.0
SCons 4.0.1
setuptools 50.3.2
sip 5.4.0
six 1.15.0
toml 0.10.2
undervolt 0.3.0
urllib3 1.26.2
```
```
root@slack:~# slackpkg search <packageName>
[ installed ] - fuse-2.9.9-x86_64-1
[ installed ] - fuse3-3.10.0-x86_64-1
[ installed ] - python-pip-20.2.4-x86_64-2
[ installed ] - python-setuptools-50.3.2-x86_64-2
[ installed ] - python2-2.7.18-x86_64-2
[ installed ] - python3-3.9.0-x86_64-1
```

Binary file not shown.

87
source/SlackBuild/llfuse/llfuse.SlackBuild Normal file → Executable file
View File

@ -1,32 +1,39 @@
#!/bin/sh #!/bin/sh
# Slackware build script for LLFUSE # Slackware build script for "llfuse".
# Adapted by kubedzero from https://slackbuilds.org/repository/14.2/python/llfuse/
# Copyright 2015 Andrzej Telszewski, Sabadell # Copyright 2015-2016 Andrzej Telszewski, Sabadell
# Copyright 2016 Marcel Saegebarth <marc@mos6581.de>
# All rights reserved. # All rights reserved.
# #
# Redistribution and use of this script, with or without modification, is # Redistribution and use in source and binary forms, with or without
# permitted provided that the following conditions are met: # modification, are permitted provided that the following conditions are
# met:
# #
# 1. Redistributions of this script must retain the above copyright # * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer. # notice, this list of conditions and the following disclaimer.
# #
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Set these to tell the script what input/output files to use
PRGNAM=llfuse PRGNAM=llfuse
VERSION=${VERSION:-1.3.8} VERSION=${VERSION:-1.3.8}
ARCHIVE="python-$PRGNAM-release-$VERSION"
BUILD=${BUILD:-1} BUILD=${BUILD:-1}
TAG=${TAG:-_SBo} TAG=${TAG:-_SBo}
# Determine architecture of build system
if [ -z "$ARCH" ]; then if [ -z "$ARCH" ]; then
case "$( uname -m )" in case "$( uname -m )" in
i?86) ARCH=i486 ;; i?86) ARCH=i486 ;;
@ -35,11 +42,6 @@ if [ -z "$ARCH" ]; then
esac esac
fi fi
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i486" ]; then if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686" SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX="" LIBDIRSUFFIX=""
@ -54,14 +56,27 @@ else
LIBDIRSUFFIX="" LIBDIRSUFFIX=""
fi fi
set -e # Halt on errors and print out each variable's state
set -ex
# NOTE: script checks working directory, execute from within same dir
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
# remove existing build output and recreate build directories
rm -rf $PKG rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT mkdir -p $TMP $PKG $OUTPUT
cd $TMP cd $TMP
rm -rf $PRGNAM-$VERSION rm -rf "$PRGNAM-$VERSION" "$ARCHIVE"
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION # Unzip the repository code, rename it, and move into that directory
unzip "$CWD/$ARCHIVE.zip"
mv "$ARCHIVE" "$PRGNAM-$VERSION"
cd "$PRGNAM-$VERSION"
# Set permissions on files in the unzipped repository
chown -R root:root . chown -R root:root .
find -L . \ find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@ -69,25 +84,39 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
# Assumes Cython is already installed, build the C files in the repo
python setup.py build_cython
# Run the install using GCC, outputting to the $PKG build output
python setup.py install --root=$PKG python setup.py install --root=$PKG
# Python 3 support. # Python 3 support, rebuild using Python3
if $(python3 -c 'import sys' 2>/dev/null); then if $(python3 -c 'import sys' 2>/dev/null); then
python3 setup.py build_cython
python3 setup.py install --root=$PKG python3 setup.py install --root=$PKG
fi fi
# Consecutive filtering of files and text to confirm the output is present
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ 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 | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
# Copy the documentation files into the $PKG build output
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/html cp -a examples Changes.rst LICENSE README.rst $PKG/usr/doc/$PRGNAM-$VERSION
cp -a examples LICENSE $PKG/usr/doc/$PRGNAM-$VERSION
cp -a doc/html/*.html doc/html/searchindex.js doc/html/_static \ ## Copy the HTML documentation as well. Needs a certain Python build target,
$PKG/usr/doc/$PRGNAM-$VERSION/html ## otherwise this doesn't succeed. Commented out for compatibility
# mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/html
# cp -a doc/html/*.html doc/html/searchindex.js doc/html/_static \
# $PKG/usr/doc/$PRGNAM-$VERSION/html
# Copy the build script to the $PKG build output as well
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
# Copy the Slackware slack-desc text file to the $PKG build output
mkdir -p $PKG/install mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/slack-desc > $PKG/install/slack-desc
# Go to the $PKG build output and actually build the compiled TXZ package
cd $PKG cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-txz} /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-txz}

View File

@ -1,10 +1,10 @@
PRGNAM="llfuse" PRGNAM="llfuse"
VERSION="0.40" VERSION="1.3.8"
HOMEPAGE="https://bitbucket.org/nikratio/python-llfuse/" HOMEPAGE="https://github.com/python-llfuse/python-llfuse"
DOWNLOAD="https://bitbucket.org/nikratio/python-llfuse/downloads/llfuse-0.40.tar.bz2" DOWNLOAD="https://github.com/python-llfuse/python-llfuse/archive/release-1.3.8.zip"
MD5SUM="bd8d07ddb6061ab03816e636efa37b5b" MD5SUM="ed0164e4aaa62f4f0f302180b2a0b2e6"
DOWNLOAD_x86_64="" DOWNLOAD_x86_64=""
MD5SUM_x86_64="" MD5SUM_x86_64=""
REQUIRES="pysetuptools" REQUIRES=""
MAINTAINER="Andrzej Telszewski" MAINTAINER="ThomasWaldmann"
EMAIL="atelszewski@gmail.com" EMAIL="tw@waldmann-edv.de"

View File

@ -11,9 +11,9 @@ llfuse:
llfuse: LLFUSE is a set of Python bindings for the low level FUSE API. llfuse: LLFUSE is a set of Python bindings for the low level FUSE API.
llfuse: It requires at least FUSE 2.8.0 and supports both Python 2.x and 3.x. llfuse: It requires at least FUSE 2.8.0 and supports both Python 2.x and 3.x.
llfuse: llfuse:
llfuse: Homepage: https://bitbucket.org/nikratio/python-llfuse/ llfuse: Warning - no longer maintained
llfuse: llfuse: Python-LLFUSE is no longer actively maintained. Unless you are stuck
llfuse: llfuse: with Python 2.x or libfuse 2.x, use the pyfuse3 module instead.
llfuse:
llfuse: llfuse:
llfuse: Homepage: https://github.com/python-llfuse/python-llfuse
llfuse: llfuse: