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
sudo: required
env:
global:
- SUDO_MOUNT=sudo
os:
- linux
- osx
compiler:
- clang
- gcc
matrix:
exclude:
- os: osx
include:
- os: linux
compiler: gcc
dist: trusty
sudo: false
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- attr
- fuse
- libfuse-dev
- gettext
- cmake3
env:
- INTEGRATION=false
branches:
only:
- master
- travis
- os: linux
compiler: clang
dist: trusty
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:
- ./ci/setup.sh
script:
- ./ci/check.sh
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- attr
- clang
- fuse
- libfuse-dev
- gettext
- cmake3
- ./build.sh

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; }
" 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.
include (CheckFuncs)
check_function_exists_glibc (lchmod HAVE_LCHMOD)
@ -146,7 +163,7 @@ if (ENABLE_NLS)
endif (ENABLE_NLS)
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)
message(STATUS "clang-tidy not found.")
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}" "-fix" "-checks=-*,google-readability-redundant-smartptr-get")
endif()
else()
message(STATUS "clang-tidy check skipped, need newer cmake")
endif()
if (USE_INTERNAL_TINYXML)
@ -214,12 +233,14 @@ set_target_properties(encfs PROPERTIES
VERSION ${ENCFS_VERSION}
SOVERSION ${ENCFS_SOVERSION})
target_link_libraries(encfs
${EXTRA_LINKER_FLAGS}
${FUSE_LIBRARIES}
${OPENSSL_LIBRARIES}
${TINYXML_LIBRARIES}
${EASYLOGGING_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${Intl_LIBRARIES}
${ATOMIC_LIBRARY}
)
if (INSTALL_LIBENCFS)
install (TARGETS encfs DESTINATION ${LIB_INSTALL_DIR})

View File

@ -10,7 +10,11 @@ Compiling EncFS
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
cd build
@ -29,11 +33,11 @@ encrypted filesystem and run tests on it:
make integration
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
. 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:
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/local

View File

@ -1,7 +1,6 @@
# EncFS - an Encrypted Filesystem
_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)
## About

View File

@ -1,15 +1,33 @@
#!/bin/bash -eu
# Make sure we are in the directory this script is in.
cd "$(dirname "$0")"
: ${CHECK:=false}
: ${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 ]]
then
mkdir build
cd build
cmake .. $*
cd ..
mkdir build
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
if [ "$TRAVIS_OS_NAME" == "linux" ]; then
sudo modprobe fuse
: ${INTEGRATION:=false}
: ${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
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
brew cask install osxfuse
if [[ "$CHECK" == "true" ]]; then
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

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"
mkdir build
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.
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