mirror of
https://github.com/containers/fuse-overlayfs.git
synced 2025-08-03 18:05:58 -04:00
Merge pull request #230 from mgoltzsche/fix_alpine_file_exists_at
utils.c: fix file_exists_at on musl.
This commit is contained in:
commit
b958a3062e
10
.dockerignore
Normal file
10
.dockerignore
Normal file
@ -0,0 +1,10 @@
|
||||
*
|
||||
|
||||
!lib
|
||||
!m4
|
||||
!*.sh
|
||||
!*.ac
|
||||
!*.am
|
||||
!*.md
|
||||
!*.h
|
||||
!*.c
|
@ -27,7 +27,6 @@ addons:
|
||||
- parallel
|
||||
before_install:
|
||||
- docker pull fedora &
|
||||
- docker build -t alpine-build -f Dockerfile.alpine .
|
||||
- (wget https://dl.google.com/go/go1.13.7.linux-amd64.tar.gz && tar xf go1.13.7.linux-amd64.tar.gz && sudo mv go /usr/local)
|
||||
- sudo mkdir -p /lower /upper /mnt
|
||||
- (cd /; sudo git clone https://github.com/amir73il/unionmount-testsuite.git)
|
||||
@ -45,6 +44,6 @@ script:
|
||||
- (cd /unionmount-testsuite; sudo FUSE_OVERLAYFS_DISABLE_OVL_WHITEOUT=1 unshare -m ./run --ov --fuse=fuse-overlayfs --xdev) || travis_terminate 1;
|
||||
- sudo tests/fedora-installs.sh || travis_terminate 1;
|
||||
- sudo tests/unlink.sh || travis_terminate 1;
|
||||
- sudo tests/alpine.sh || travis_terminate 1;
|
||||
- (cd $GOPATH/src/github.com/containers/storage/tests; sudo JOBS=1 STORAGE_OPTION=overlay.mount_program=/sbin/fuse-overlayfs STORAGE_DRIVER=overlay unshare -m ./test_runner.bash) || travis_terminate 1;
|
||||
- (cd $GOPATH/src/github.com/containers/storage/tests; sudo JOBS=1 FUSE_OVERLAYFS_DISABLE_OVL_WHITEOUT=1 STORAGE_OPTION=overlay.mount_program=/sbin/fuse-overlayfs STORAGE_DRIVER=overlay unshare -m ./test_runner.bash) || travis_terminate 1;
|
||||
- docker run --rm -v $(pwd):/fuse-overlayfs alpine-build sh -c 'cd /fuse-overlayfs; ./autogen.sh && ./configure && make clean && make'
|
||||
|
@ -1,2 +1,23 @@
|
||||
FROM alpine
|
||||
RUN apk add make gcc fuse3-dev libc-dev go-md2man linux-headers automake autoconf gettext
|
||||
WORKDIR /build
|
||||
RUN apk add git make gcc libc-dev musl-dev glib-static gettext eudev-dev \
|
||||
linux-headers automake autoconf cmake meson ninja clang go-md2man
|
||||
|
||||
RUN git clone https://github.com/libfuse/libfuse && \
|
||||
cd libfuse && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
LDFLAGS="-lpthread -s -w -static" meson --prefix /usr -D default_library=static .. && \
|
||||
ninja && \
|
||||
ninja install
|
||||
|
||||
COPY . /build/fuse-overlayfs
|
||||
RUN cd fuse-overlayfs && \
|
||||
./autogen.sh && \
|
||||
LIBS="-ldl" LDFLAGS="-s -w -static" ./configure --prefix /usr && \
|
||||
make clean && \
|
||||
make && \
|
||||
make install
|
||||
|
||||
USER nobody
|
||||
ENTRYPOINT ["/usr/bin/fuse-overlayfs","-f"]
|
||||
|
3
main.c
3
main.c
@ -5414,6 +5414,9 @@ main (int argc, char *argv[])
|
||||
if (path == NULL)
|
||||
goto err_out1;
|
||||
mkdir (path, 0700);
|
||||
path = realloc(path, strlen(path)+strlen("/work")+1);
|
||||
if (!path)
|
||||
error (EXIT_FAILURE, errno, "allocating workdir path");
|
||||
strcat (path, "/work");
|
||||
mkdir (path, 0700);
|
||||
free (lo.workdir);
|
||||
|
11
tests/alpine.sh
Executable file
11
tests/alpine.sh
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
set -ex
|
||||
|
||||
docker build -t fuse-overlayfs:alpine -f ../Dockerfile.alpine ..
|
||||
|
||||
docker run --privileged --rm --entrypoint /unlink.sh -w /tmp \
|
||||
-e EXPECT_UMOUNT_STATUS=1 \
|
||||
-v "$(pwd)/unlink.sh:/unlink.sh" fuse-overlayfs:alpine
|
@ -1,6 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
rm -rf lower upper workdir merged
|
||||
set -ex
|
||||
|
||||
rm -rf unlink-test
|
||||
mkdir unlink-test
|
||||
|
||||
cd unlink-test
|
||||
|
||||
mkdir lower upper workdir merged
|
||||
|
||||
@ -21,4 +26,4 @@ echo world >> merged/foo2
|
||||
grep hello merged/foo
|
||||
grep world merged/foo
|
||||
|
||||
umount merged
|
||||
umount merged || [ $? -eq "${EXPECT_UMOUNT_STATUS:-0}" ]
|
||||
|
7
utils.c
7
utils.c
@ -104,7 +104,12 @@ safe_openat (int dirfd, const char *pathname, int flags, mode_t mode)
|
||||
int
|
||||
file_exists_at (int dirfd, const char *pathname)
|
||||
{
|
||||
return faccessat (dirfd, pathname, F_OK, AT_SYMLINK_NOFOLLOW|AT_EACCESS);
|
||||
int ret = faccessat (dirfd, pathname, F_OK, AT_SYMLINK_NOFOLLOW|AT_EACCESS);
|
||||
if (ret < 0 && errno == EINVAL) {
|
||||
struct stat buf;
|
||||
return fstatat (dirfd, pathname, &buf, AT_SYMLINK_NOFOLLOW);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef HAVE_STATX
|
||||
|
Loading…
x
Reference in New Issue
Block a user