Merge pull request #376 from vgough/osx

Special case FDATASYNC check on Apple
This commit is contained in:
Valient Gough 2017-08-08 01:58:18 -04:00 committed by GitHub
commit 1eb93609ce
7 changed files with 38 additions and 8 deletions

View File

@ -4,18 +4,26 @@ language: cpp
sudo: true
os:
- linux
- osx
compiler:
- clang
- gcc
matrix:
exclude:
- os: osx
compiler: gcc
branches:
only:
- master
- travis
before_script:
- sudo modprobe fuse
- cmake --version
- ./ci/setup.sh
script:
- ./ci/check.sh

View File

@ -97,7 +97,12 @@ check_cxx_source_compiles ("#include <sys/types.h>
include (CheckFuncs)
check_function_exists_glibc (lchmod HAVE_LCHMOD)
check_function_exists_glibc (utimensat HAVE_UTIMENSAT)
check_function_exists_glibc (fdatasync HAVE_FDATASYNC)
if (APPLE)
message ("-- There is no usable FDATASYNC on Apple")
set(HAVE_FDATASYNC FALSE)
else()
check_function_exists_glibc (fdatasync HAVE_FDATASYNC)
endif (APPLE)
set (CMAKE_THREAD_PREFER_PTHREAD)
find_package (Threads REQUIRED)

View File

@ -7,7 +7,7 @@ if [[ ! -d build ]]
then
mkdir build
cd build
cmake ..
cmake .. $*
cd ..
fi

View File

@ -1,12 +1,19 @@
#!/bin/bash -eu
cmake --version
CFG=""
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
CFG="-DENABLE_NLS=OFF -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl"
fi
if [[ ! -d build ]]
then
mkdir build
mkdir build
fi
cd build
cmake ..
cmake .. ${CFG}
make -j2
make test

10
ci/setup.sh Executable file
View File

@ -0,0 +1,10 @@
#!/bin/bash -eu
if [ "$TRAVIS_OS_NAME" == "linux" ]; then
sudo modprobe fuse
fi
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
brew cask install osxfuse
fi

View File

@ -258,7 +258,7 @@ int FileNode::sync(bool datasync) {
int fh = io->open(O_RDONLY);
if (fh >= 0) {
int res = -EIO;
#ifdef linux
#if defined(HAVE_FDATASYNC)
if (datasync) {
res = fdatasync(fh);
} else {

View File

@ -1035,7 +1035,7 @@ RootPtr createV6Config(EncFS_Context *ctx,
alg = findCipherAlgorithm("AES", keySize);
// If case-insensitive system, opt for Block32 filename encoding
#if DEFAULT_CASE_INSENSITIVE
#if defined(DEFAULT_CASE_INSENSITIVE)
nameIOIface = BlockNameIO::CurrentInterface(true);
#else
nameIOIface = BlockNameIO::CurrentInterface();