Merge branch 'master' into sanity

This commit is contained in:
Ben RUBSON 2017-08-22 07:49:03 +02:00 committed by GitHub
commit 72e21f3c09
12 changed files with 116 additions and 98 deletions

View File

@ -1,45 +1,53 @@
dist: trusty
language: cpp language: cpp
sudo: required
env:
global:
- SUDO_MOUNT=sudo
os:
- linux
- osx
compiler:
- clang
- gcc
matrix: matrix:
exclude: include:
- os: osx - os: linux
compiler: gcc compiler: gcc
dist: trusty
sudo: false
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- attr
- fuse
- libfuse-dev
- gettext
- cmake3
env:
- INTEGRATION=false
branches: - os: linux
only: compiler: clang
- master dist: trusty
- travis sudo: true
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-trusty-4.0
packages:
- attr
- fuse
- libfuse-dev
- gettext
- cmake3
- clang-4.0
- clang-tidy-4.0
env:
- CC=clang-4.0 CXX=clang++-4.0 CHECK=true INTEGRATION=true SUDO_MOUNT=sudo
- os: osx
compiler: clang
osx_image: xcode8.3
sudo: true
env:
- INTEGRATION=true SUDO_MOUNT=sudo
before_script: before_script:
- ./ci/setup.sh - ./ci/setup.sh
script: script:
- ./ci/check.sh - ./build.sh
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- attr
- clang
- fuse
- libfuse-dev
- gettext
- cmake3

View File

@ -93,6 +93,23 @@ check_cxx_source_compiles ("#include <sys/types.h>
int main() { getxattr(0,0,0,0,0,0); return 1; } int main() { getxattr(0,0,0,0,0,0); return 1; }
" XATTR_ADD_OPT) " XATTR_ADD_OPT)
# If awailable on current architecture (typically embedded 32-bit), link with it explicitly;
# GCC autodetection is faulty, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81358 and
# find_libray is no great help here since it is sometimes(!) not in standard paths.
set(CMAKE_REQUIRED_FLAGS "-latomic")
CHECK_CXX_SOURCE_COMPILES("int main() {return 0;}" COMPILER_NEEDS_LATOMIC)
if(COMPILER_NEEDS_LATOMIC)
set(ATOMIC_LIBRARY atomic)
endif()
# compensate the effect of extra linking of libatomic on platforms where intrinsics are used
set(CMAKE_REQUIRED_FLAGS "-Wl,--as-needed")
CHECK_CXX_SOURCE_COMPILES("int main() {return 0;}" LINKER_SUPPORTS_WLASNEEDED)
if(LINKER_SUPPORTS_WLASNEEDED)
list(APPEND EXTRA_LINKER_FLAGS "-Wl,--as-needed")
endif()
set(CMAKE_REQUIRED_FLAGS)
# Check if we have some standard functions. # Check if we have some standard functions.
include (CheckFuncs) include (CheckFuncs)
check_function_exists_glibc (lchmod HAVE_LCHMOD) check_function_exists_glibc (lchmod HAVE_LCHMOD)
@ -146,7 +163,7 @@ if (ENABLE_NLS)
endif (ENABLE_NLS) endif (ENABLE_NLS)
if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.5) # Need 3.6 or above. if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.5) # Need 3.6 or above.
find_program(CLANG_TIDY_EXE NAMES "clang-tidy" DOC "Path to clang-tidy executable") find_program(CLANG_TIDY_EXE NAMES "clang-tidy" "clang-tidy-4.0" DOC "Path to clang-tidy executable")
if(NOT CLANG_TIDY_EXE) if(NOT CLANG_TIDY_EXE)
message(STATUS "clang-tidy not found.") message(STATUS "clang-tidy not found.")
else() else()
@ -154,6 +171,8 @@ if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.5) # Need 3.6 or abo
set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-checks=*,-modernize-loop-convert,-cppcoreguidelines-pro-*,-readability-inconsistent-declaration-parameter-name,-google-readability-casting,-cert-err58-cpp,-google-runtime-int,-readability-named-parameter,-google-build-using-namespace,-misc-unused-parameters,-google-runtime-references") set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-checks=*,-modernize-loop-convert,-cppcoreguidelines-pro-*,-readability-inconsistent-declaration-parameter-name,-google-readability-casting,-cert-err58-cpp,-google-runtime-int,-readability-named-parameter,-google-build-using-namespace,-misc-unused-parameters,-google-runtime-references")
#set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-fix" "-checks=-*,google-readability-redundant-smartptr-get") #set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-fix" "-checks=-*,google-readability-redundant-smartptr-get")
endif() endif()
else()
message(STATUS "clang-tidy check skipped, need newer cmake")
endif() endif()
if (USE_INTERNAL_TINYXML) if (USE_INTERNAL_TINYXML)
@ -214,12 +233,14 @@ set_target_properties(encfs PROPERTIES
VERSION ${ENCFS_VERSION} VERSION ${ENCFS_VERSION}
SOVERSION ${ENCFS_SOVERSION}) SOVERSION ${ENCFS_SOVERSION})
target_link_libraries(encfs target_link_libraries(encfs
${EXTRA_LINKER_FLAGS}
${FUSE_LIBRARIES} ${FUSE_LIBRARIES}
${OPENSSL_LIBRARIES} ${OPENSSL_LIBRARIES}
${TINYXML_LIBRARIES} ${TINYXML_LIBRARIES}
${EASYLOGGING_LIBRARIES} ${EASYLOGGING_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} ${CMAKE_THREAD_LIBS_INIT}
${Intl_LIBRARIES} ${Intl_LIBRARIES}
${ATOMIC_LIBRARY}
) )
if (INSTALL_LIBENCFS) if (INSTALL_LIBENCFS)
install (TARGETS encfs DESTINATION ${LIB_INSTALL_DIR}) install (TARGETS encfs DESTINATION ${LIB_INSTALL_DIR})

View File

@ -10,7 +10,11 @@ Compiling EncFS
EncFS uses the CMake toolchain to create makefiles. EncFS uses the CMake toolchain to create makefiles.
Steps to build EncFS: Quickest way to build and test EncFS :
./build.sh
Or following are the detailed steps to build EncFS:
mkdir build mkdir build
cd build cd build
@ -29,11 +33,11 @@ encrypted filesystem and run tests on it:
make integration make integration
The compilation process creates two executables, encfs and encfsctl in The compilation process creates two executables, encfs and encfsctl in
the encfs directory. You can install to in a system directory via the encfs directory. You can install to in a system directory via:
make install make install
. If the default path (`/usr/local`) is not where you want things If the default path (`/usr/local`) is not where you want things
installed, then set the CMAKE_INSTALL_PREFIX option when running cmake. Eg: installed, then set the CMAKE_INSTALL_PREFIX option when running cmake. Eg:
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/local cmake .. -DCMAKE_INSTALL_PREFIX=/opt/local

View File

@ -1,7 +1,6 @@
# EncFS - an Encrypted Filesystem # EncFS - an Encrypted Filesystem
_Build Status_ _Build Status_
- Circle: [![Circle CI](https://circleci.com/gh/vgough/encfs.svg?style=svg)](https://circleci.com/gh/vgough/encfs)
- Travis: [![Travis CI](https://travis-ci.org/vgough/encfs.svg?branch=master)](https://travis-ci.org/vgough/encfs) - Travis: [![Travis CI](https://travis-ci.org/vgough/encfs.svg?branch=master)](https://travis-ci.org/vgough/encfs)
## About ## About

View File

@ -1,15 +1,33 @@
#!/bin/bash -eu #!/bin/bash -eu
# Make sure we are in the directory this script is in. : ${CHECK:=false}
cd "$(dirname "$0")" : ${INTEGRATION:=true}
cmake --version
CFG=$*
if [[ "$CHECK" == "true" ]]; then
CFG="-DLINT=ON $CFG"
fi
if uname -s | grep -q Darwin; then
CFG="-DENABLE_NLS=OFF -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl $CFG"
fi
if [[ ! -d build ]] if [[ ! -d build ]]
then then
mkdir build mkdir build
cd build
cmake .. $*
cd ..
fi fi
make -j2 -C build cd build
cmake .. ${CFG}
make -j2
make test
if [[ "$INTEGRATION" == "true" ]]; then
make integration
fi
cd ..
echo
echo 'Everything looks good, you can install via "make install -C build".'

View File

@ -1,21 +0,0 @@
#!/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
fi
cd build
cmake .. ${CFG}
make -j2
make test
cd ..

View File

@ -1,5 +0,0 @@
set -x
set -e
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/tmp/encfs -DCMAKE_BUILD_TYPE=Debug ..

View File

@ -1,5 +0,0 @@
set -x
set -e
sudo apt-get install -y gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 100

View File

@ -1,10 +1,23 @@
#!/bin/bash -eu #!/bin/bash -eu
if [ "$TRAVIS_OS_NAME" == "linux" ]; then : ${INTEGRATION:=false}
sudo modprobe fuse : ${CHECK:=false}
if [[ "$INTEGRATION" == "true" ]]; then
if uname -s | grep -q Linux; then
sudo modprobe fuse
elif uname -s | grep -q Darwin; then
brew cask install osxfuse
fi
fi fi
if [ "$TRAVIS_OS_NAME" == "osx" ]; then if [[ "$CHECK" == "true" ]]; then
brew cask install osxfuse if uname -s | grep -q Linux; then
wget https://cmake.org/files/v3.9/cmake-3.9.1-Linux-x86_64.tar.gz -O /tmp/cmake.tar.gz
tar -C /tmp/ -xf /tmp/cmake.tar.gz
sudo rm -f $(which cmake)
sudo ln -s $(ls -1 /tmp/cmake*/bin/cmake) /bin/
fi
fi fi

View File

@ -1,14 +0,0 @@
machine:
timezone:
America/Los_Angeles
dependencies:
pre:
- sudo apt-get install cmake libfuse-dev libgettextpo-dev
- bash ./ci/install-gcc.sh
test:
override:
- bash ./ci/config.sh
- cd build && make && make test && make install
- /tmp/encfs/bin/encfsctl --version

View File

@ -2,4 +2,4 @@
# After running, chdir to the build subdir ane run "make" # After running, chdir to the build subdir ane run "make"
mkdir build mkdir build
cd build && cmake .. -DCMAKE_BUILD_TYPE=Debug -DLINT=ON \ cd build && cmake .. -DCMAKE_BUILD_TYPE=Debug -DLINT=ON \
-DCMAKE_CXX_FLAGS="-O1 -fsanitize=address -fno-omit-frame-pointer" $@ -DCMAKE_CXX_FLAGS="-O0 -g -fsanitize=address -fno-omit-frame-pointer" $@

View File

@ -3,4 +3,4 @@
# Make sure we are in the directory this script is in. # Make sure we are in the directory this script is in.
cd "$(dirname "$0")" cd "$(dirname "$0")"
perl -MTest::Harness -e '$$Test::Harness::debug=1; runtests @ARGV;' integration/*.t.pl perl -I. -MTest::Harness -e '$$Test::Harness::debug=1; runtests @ARGV;' integration/*.t.pl