summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSébastien Fabbro <bicatali@gentoo.org>2015-08-11 21:37:04 +0000
committerSébastien Fabbro <bicatali@gentoo.org>2015-08-11 21:37:04 +0000
commit004c7f243f47aa1c6e5a2bd61b1ff5f7efedc5f6 (patch)
treeae642d14ffffdf422d0a3e1748cbc838fa5dc7d1 /net-fs/cvmfs
parentadded basic metadata for repo (diff)
downloadbicatali-004c7f243f47aa1c6e5a2bd61b1ff5f7efedc5f6.tar.gz
bicatali-004c7f243f47aa1c6e5a2bd61b1ff5f7efedc5f6.tar.bz2
bicatali-004c7f243f47aa1c6e5a2bd61b1ff5f7efedc5f6.zip
added net-fs/cvmfs
Diffstat (limited to 'net-fs/cvmfs')
-rw-r--r--net-fs/cvmfs/Manifest1
-rw-r--r--net-fs/cvmfs/cvmfs-2.1.20.0_p05-r1.ebuild151
-rw-r--r--net-fs/cvmfs/files/cvmfs-2.1.20.0_p05-cares-underlink.patch106
-rw-r--r--net-fs/cvmfs/files/cvmfs-2.1.20.0_p05-geoip-missing-cmake.patch151
-rw-r--r--net-fs/cvmfs/files/cvmfs-2.1.20.0_p05-overlayfs.patch50
-rw-r--r--net-fs/cvmfs/metadata.xml23
6 files changed, 482 insertions, 0 deletions
diff --git a/net-fs/cvmfs/Manifest b/net-fs/cvmfs/Manifest
new file mode 100644
index 0000000..9785eac
--- /dev/null
+++ b/net-fs/cvmfs/Manifest
@@ -0,0 +1 @@
+DIST cvmfs-2.1.20.0-fix05.tar.gz 36877322 SHA256 83d9358bebdd3987472ed602efb7b0d06b586216030e02bc100a363dc7bbfc20 SHA512 95dc6d5e433630aecd45e15d59f831b4b1ccd8a439f799ae078a61bd6fd8e4dc10ae72d760352913c1d4d9e50cd5bc71ddd82b40b8b9b59d371d62aa7e62abf6 WHIRLPOOL a9ab8500ddd31466df26c12fbcaf0403e748fc1d52c9b5eefa495bc1aaa1f1c67e5f679407d55143fe161f7de7be0d52284cb947a63ff0e0a3f63ade879bb21c
diff --git a/net-fs/cvmfs/cvmfs-2.1.20.0_p05-r1.ebuild b/net-fs/cvmfs/cvmfs-2.1.20.0_p05-r1.ebuild
new file mode 100644
index 0000000..a1fd03b
--- /dev/null
+++ b/net-fs/cvmfs/cvmfs-2.1.20.0_p05-r1.ebuild
@@ -0,0 +1,151 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-fs/cvmfs/cvmfs-2.1.20.0_p05.ebuild,v 1.2 2015/08/07 19:00:39 bicatali Exp $
+
+EAPI=5
+
+inherit cmake-utils linux-info
+
+MYP=${PN}-${PV/_p/-fix}
+
+DESCRIPTION="HTTP read-only file system for distributing software"
+HOMEPAGE="http://cernvm.cern.ch/portal/filesystem"
+SRC_URI="https://github.com/cvmfs/${PN}/archive/${MYP}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+
+KEYWORDS="~amd64 ~x86"
+IUSE="aufs +client debug doc test server"
+
+CDEPEND="
+ dev-cpp/gtest
+ dev-db/sqlite:3=
+ dev-libs/openssl:0
+ net-libs/pacparser:0=
+ net-misc/curl:0=[adns]
+ sys-apps/attr
+ sys-libs/zlib:0=
+ client? (
+ >=dev-cpp/sparsehash-1.12
+ dev-libs/leveldb:0=
+ sys-fs/fuse:0= )
+ server? (
+ >=dev-python/geoip-python-1.3.1
+ >=dev-cpp/tbb-4.3:0= )"
+
+RDEPEND="${CDEPEND}
+ client? ( net-fs/autofs )
+ aufs? (
+ || (
+ sys-fs/aufs3
+ sys-fs/aufs4
+ sys-kernel/aufs-sources
+ )
+ )"
+
+DEPEND="${CDEPEND}
+ virtual/pkgconfig
+ doc? ( app-doc/doxygen[dot] )"
+
+S="${WORKDIR}/${PN}-${MYP}"
+
+pkg_setup() {
+ if use server; then
+ if use aufs; then
+ CONFIG_CHECK="
+ ~AUFS_FS
+ ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY
+ "
+ ERROR_AUFS_FS="CONFIG_AUFS_FS: is required to be set if and only if aufs-sources are used"
+ else
+ CONFIG_CHECK="~OVERLAY_FS"
+ fi
+ linux-info_pkg_setup
+ fi
+}
+
+PATCHES=(
+ "${FILESDIR}"/${P}-geoip-missing-cmake.patch
+ "${FILESDIR}"/${P}-cares-underlink.patch
+ "${FILESDIR}"/${P}-overlayfs.patch
+)
+
+src_prepare() {
+ cmake-utils_src_prepare
+
+ # gentoo stuff
+ sed -i -e 's/COPYING//' CMakeLists.txt || die
+ rm bootstrap.sh || die
+ sed -i \
+ -e "s:cvmfs-\${CernVM-FS_VERSION_STRING}:${PF}:" \
+ CMakeLists.txt || die
+
+ # should be gone in >= 2.2
+ sed -i \
+ -e 's|/etc/auto.master|/etc/autofs/auto.master|g' \
+ -e 's|/etc/sysconfig/autofs|/etc/conf.d/autofs|g' \
+ cvmfs/cvmfs_config || die
+
+ sed -i \
+ -e 's|${res_path}/conf.d|${res_path/modules.d|' \
+ cvmfs/cvmfs_server || die
+
+ # hack for bundled vjson
+ # vjson not worth unbundling, already upstream obsolete
+ # upstream replaced by gason with a new api
+ if use server; then
+ sed -i \
+ -e 's/g++/$(CXX)/g' \
+ -e 's/-O2/$(CXXFLAGS)/g' \
+ -e 's/ar/$(AR)/' \
+ -e 's/ranlib/$(RANLIB)/' \
+ externals/vjson/src/Makefile || die
+ mkdir -p "${WORKDIR}/${P}_build"/externals/build_vjson
+ cp externals/vjson/src/* \
+ "${WORKDIR}/${P}_build"/externals/build_vjson/ || die
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DGEOIP_BUILTIN=OFF
+ -DGOOGLETEST_BUILTIN=OFF
+ -DLEVELDB_BUILTIN=OFF
+ -DLIBCURL_BUILTIN=OFF
+ -DPACPARSER_BUILTIN=OFF
+ -DSPARSEHASH_BUILTIN=OFF
+ -DSQLITE3_BUILTIN=OFF
+ -DTBB_PRIVATE_LIB=OFF
+ -DZLIB_BUILTIN=OFF
+ $(cmake-utils_use debug BUILD_SERVER_DEBUG)
+ $(cmake-utils_use server BUILD_SERVER)
+ $(cmake-utils_use client BUILD_CVMFS)
+ $(cmake-utils_use client BUILD_LIBCVMFS)
+ $(cmake-utils_use client INSTALL_MOUNT_SCRIPTS)
+ $(cmake-utils_use test BUILD_UNITTESTS)
+ )
+ cmake-utils_src_configure
+}
+
+src_compile() {
+ cmake-utils_src_compile
+ if use doc; then
+ cd doc
+ doxygen cvmfs.doxy || die
+ fi
+}
+
+src_install() {
+ cmake-utils_src_install
+ use doc && dohtml -r doc/html/*
+}
+
+pkg_config() {
+ if use client; then
+ einfo "Setting up CernVM-FS client"
+ cvmfs_config setup
+ einfo "Now edit ${EROOT%/}/etc/cvmfs/default.local"
+ einfo "and restart the autofs service"
+ fi
+}
diff --git a/net-fs/cvmfs/files/cvmfs-2.1.20.0_p05-cares-underlink.patch b/net-fs/cvmfs/files/cvmfs-2.1.20.0_p05-cares-underlink.patch
new file mode 100644
index 0000000..0e67567
--- /dev/null
+++ b/net-fs/cvmfs/files/cvmfs-2.1.20.0_p05-cares-underlink.patch
@@ -0,0 +1,106 @@
+diff -Nur cvmfs-cvmfs-2.1.20.0-fix05.orig/cmake/Modules/FindCARES.cmake cvmfs-cvmfs-2.1.20.0-fix05/cmake/Modules/FindCARES.cmake
+--- cvmfs-cvmfs-2.1.20.0-fix05.orig/cmake/Modules/FindCARES.cmake 1970-01-01 00:00:00.000000000 +0000
++++ cvmfs-cvmfs-2.1.20.0-fix05/cmake/Modules/FindCARES.cmake 2015-07-31 18:35:05.859879354 +0000
+@@ -0,0 +1,35 @@
++#
++# $Id: cvmfs-2.1.20.0_p05-cares-underlink.patch,v 1.1 2015/07/31 20:09:57 bicatali Exp $
++#
++# - Find cares
++# Find the native CARES includes and library
++#
++# CARES_INCLUDE_DIRS - where to find cares.h, etc.
++# CARES_LIBRARIES - List of libraries when using cares.
++# CARES_FOUND - True if cares found.
++
++
++IF (CARES_INCLUDE_DIRS)
++ # Already in cache, be silent
++ SET(CARES_FIND_QUIETLY TRUE)
++ENDIF (CARES_INCLUDE_DIRS)
++
++FIND_PATH(CARES_INCLUDE_DIR ares.h)
++
++SET(CARES_NAMES cares)
++FIND_LIBRARY(CARES_LIBRARY NAMES ${CARES_NAMES} )
++
++# handle the QUIETLY and REQUIRED arguments and set CARES_FOUND to TRUE if
++# all listed variables are TRUE
++INCLUDE(FindPackageHandleStandardArgs)
++FIND_PACKAGE_HANDLE_STANDARD_ARGS(CARES DEFAULT_MSG CARES_LIBRARY CARES_INCLUDE_DIR)
++
++IF(CARES_FOUND)
++ SET( CARES_LIBRARIES ${CARES_LIBRARY} )
++ SET( CARES_INCLUDE_DIRS ${CARES_INCLUDE_DIR} )
++ELSE(CARES_FOUND)
++ SET( CARES_LIBRARIES )
++ SET( CARES_INCLUDE_DIRS )
++ENDIF(CARES_FOUND)
++
++MARK_AS_ADVANCED( CARES_LIBRARIES CARES_INCLUDE_DIRS )
+diff -Nur cvmfs-cvmfs-2.1.20.0-fix05.orig/CMakeLists.txt cvmfs-cvmfs-2.1.20.0-fix05/CMakeLists.txt
+--- cvmfs-cvmfs-2.1.20.0-fix05.orig/CMakeLists.txt 2015-02-23 13:51:47.000000000 +0000
++++ cvmfs-cvmfs-2.1.20.0-fix05/CMakeLists.txt 2015-07-31 18:32:34.259882076 +0000
+@@ -252,9 +252,12 @@
+ include (${CARES_BUILTIN_LOCATION}/CVMFS-CMakeLists.txt)
+ include (${LIBCURL_BUILTIN_LOCATION}/CVMFS-CMakeLists.txt)
+ set (CURL_LIBRARIES "")
++ set (CARES_LIBRARIES "")
+ else (LIBCURL_BUILTIN)
+ find_package (CURL REQUIRED)
++ find_package (CARES REQUIRED)
+ set (INCLUDE_DIRECTORIES ${INCLUDE_DIRECTORIES} ${CURL_INCLUDE_DIRS})
++ set (INCLUDE_DIRECTORIES ${INCLUDE_DIRECTORIES} ${CARES_INCLUDE_DIRS})
+ if (CURL_INCLUDE_DIRS)
+ find_program(CURL_CONFIG_EXEC NAMES curl-config)
+ if (CURL_CONFIG_EXEC)
+diff -Nur cvmfs-cvmfs-2.1.20.0-fix05.orig/cvmfs/CMakeLists.txt cvmfs-cvmfs-2.1.20.0-fix05/cvmfs/CMakeLists.txt
+--- cvmfs-cvmfs-2.1.20.0-fix05.orig/cvmfs/CMakeLists.txt 2015-02-23 13:51:47.000000000 +0000
++++ cvmfs-cvmfs-2.1.20.0-fix05/cvmfs/CMakeLists.txt 2015-07-31 18:34:36.789879876 +0000
+@@ -271,7 +271,7 @@
+ set_target_properties (cvmfs_fuse_debug PROPERTIES VERSION ${CernVM-FS_VERSION_STRING})
+
+ # link the stuff (*_LIBRARIES are dynamic link libraries *_archive are static link libraries ... one of them will be empty for each dependency)
+- set (CVMFS_FUSE_LINK_LIBRARIES ${SQLITE3_LIBRARY} ${CURL_LIBRARIES} ${PACPARSER_LIBRARIES} ${ZLIB_LIBRARIES} ${LEVELDB_LIBRARIES} ${OPENSSL_LIBRARIES} ${FUSE_LIBRARIES} ${LIBFUSE_ARCHIVE} ${SQLITE3_ARCHIVE} ${LIBCURL_ARCHIVE} ${PACPARSER_ARCHIVE} ${LEVELDB_ARCHIVE} ${CARES_ARCHIVE} ${ZLIB_ARCHIVE} ${RT_LIBRARY} ${UUID_LIBRARIES} pthread dl)
++ set (CVMFS_FUSE_LINK_LIBRARIES ${SQLITE3_LIBRARY} ${CARES_LIBRARIES} ${CURL_LIBRARIES} ${PACPARSER_LIBRARIES} ${ZLIB_LIBRARIES} ${LEVELDB_LIBRARIES} ${OPENSSL_LIBRARIES} ${FUSE_LIBRARIES} ${LIBFUSE_ARCHIVE} ${SQLITE3_ARCHIVE} ${LIBCURL_ARCHIVE} ${PACPARSER_ARCHIVE} ${LEVELDB_ARCHIVE} ${CARES_ARCHIVE} ${ZLIB_ARCHIVE} ${RT_LIBRARY} ${UUID_LIBRARIES} pthread dl)
+
+ target_link_libraries (cvmfs2 ${CVMFS_LOADER_LIBS} ${OPENSSL_LIBRARIES} ${LIBFUSE} ${RT_LIBRARY} ${UUID_LIBRARIES} pthread dl)
+ target_link_libraries (cvmfs_fuse_debug ${CVMFS2_DEBUG_LIBS} ${CVMFS_FUSE_LINK_LIBRARIES})
+@@ -331,7 +331,7 @@
+ add_dependencies (libcvmfs cvmfs_only)
+
+ add_executable( test_libcvmfs ${TEST_LIBCVMFS_SOURCES} )
+- target_link_libraries( test_libcvmfs ${CMAKE_CURRENT_BINARY_DIR}/libcvmfs.a ${SQLITE3_LIBRARY} ${CURL_LIBRARIES} ${PACPARSER_LIBRARIES} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} ${RT_LIBRARY} ${UUID_LIBRARIES} pthread dl )
++ target_link_libraries( test_libcvmfs ${CMAKE_CURRENT_BINARY_DIR}/libcvmfs.a ${SQLITE3_LIBRARY} ${CARES_LIBRARIES} ${CURL_LIBRARIES} ${PACPARSER_LIBRARIES} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} ${RT_LIBRARY} ${UUID_LIBRARIES} pthread dl )
+ add_dependencies (test_libcvmfs libcvmfs)
+
+ endif (BUILD_LIBCVMFS)
+@@ -371,7 +371,7 @@
+ set_target_properties (cvmfs_swissknife PROPERTIES COMPILE_FLAGS "${CVMFS_SWISSKNIFE_CFLAGS}" LINK_FLAGS "${CVMFS_SWISSKNIFE_LD_FLAGS}")
+
+ # link the stuff (*_LIBRARIES are dynamic link libraries)
+- target_link_libraries (cvmfs_swissknife ${CVMFS_SWISSKNIFE_LIBS} ${SQLITE3_LIBRARY} ${CURL_LIBRARIES} ${ZLIB_LIBRARIES} ${TBB_LIBRARIES} ${OPENSSL_LIBRARIES} ${LIBCURL_ARCHIVE} ${CARES_ARCHIVE} ${SQLITE3_ARCHIVE} ${ZLIB_ARCHIVE} ${RT_LIBRARY} ${VJSON_ARCHIVE} pthread dl)
++ target_link_libraries (cvmfs_swissknife ${CVMFS_SWISSKNIFE_LIBS} ${SQLITE3_LIBRARY} ${CARES_LIBRARIES} ${CURL_LIBRARIES} ${ZLIB_LIBRARIES} ${TBB_LIBRARIES} ${OPENSSL_LIBRARIES} ${LIBCURL_ARCHIVE} ${CARES_ARCHIVE} ${SQLITE3_ARCHIVE} ${ZLIB_ARCHIVE} ${RT_LIBRARY} ${VJSON_ARCHIVE} pthread dl)
+
+ if (BUILD_SERVER_DEBUG)
+ add_executable (cvmfs_swissknife_debug ${CVMFS_SWISSKNIFE_DEBUG_SOURCES})
+@@ -399,7 +399,7 @@
+ message (WARNING "Debug libraries of TBB were not found. Using the release versions instead.")
+ set (TBB_DEBUG_LIBRARIES ${TBB_LIBRARIES})
+ endif (NOT TBB_DEBUG_LIBRARIES)
+- target_link_libraries (cvmfs_swissknife_debug ${CVMFS_SWISSKNIFE_LIBS} ${SQLITE3_LIBRARY} ${CURL_LIBRARIES} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} ${LIBCURL_ARCHIVE} ${CARES_ARCHIVE} ${SQLITE3_ARCHIVE} ${ZLIB_ARCHIVE} ${TBB_DEBUG_LIBRARIES} ${RT_LIBRARY} ${VJSON_ARCHIVE} pthread dl)
++ target_link_libraries (cvmfs_swissknife_debug ${CVMFS_SWISSKNIFE_LIBS} ${SQLITE3_LIBRARY} ${CARES_LIBRARIES} ${CURL_LIBRARIES} ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES} ${LIBCURL_ARCHIVE} ${CARES_ARCHIVE} ${SQLITE3_ARCHIVE} ${ZLIB_ARCHIVE} ${TBB_DEBUG_LIBRARIES} ${RT_LIBRARY} ${VJSON_ARCHIVE} pthread dl)
+ endif (BUILD_SERVER_DEBUG)
+ endif (BUILD_SERVER)
+
+diff -Nur cvmfs-cvmfs-2.1.20.0-fix05.orig/cvmfs/CMakeLists.txt cvmfs-cvmfs-2.1.20.0-fix05/cvmfs/CMakeLists.txt
+--- cvmfs-cvmfs-2.1.20.0-fix05.orig/test/unittests/CMakeLists.txt.orig 2015-07-31 19:03:06.829849170 +0000
++++ cvmfs-cvmfs-2.1.20.0-fix05/test/unittests/CMakeLists.txt 2015-07-31 19:03:36.459848638 +0000
+@@ -212,7 +212,7 @@
+ endif (BUILD_UNITTESTS_DEBUG)
+
+ # link the stuff (*_LIBRARIES are dynamic link libraries)
+-set (UNITTEST_LINK_LIBRARIES ${GTEST_LIBRARIES} ${GOOGLETEST_ARCHIVE} ${OPENSSL_LIBRARIES}
++set (UNITTEST_LINK_LIBRARIES ${GTEST_LIBRARIES} ${GOOGLETEST_ARCHIVE} ${OPENSSL_LIBRARIES} ${CARES_LIBRARIES}
+ ${CURL_LIBRARIES} ${LIBCURL_ARCHIVE} ${CARES_ARCHIVE}
+ ${SQLITE3_LIBRARY} ${SQLITE3_ARCHIVE} ${TBB_LIBRARIES}
+ ${ZLIB_LIBRARIES} ${ZLIB_ARCHIVE} ${RT_LIBRARY} ${UUID_LIBRARIES}
diff --git a/net-fs/cvmfs/files/cvmfs-2.1.20.0_p05-geoip-missing-cmake.patch b/net-fs/cvmfs/files/cvmfs-2.1.20.0_p05-geoip-missing-cmake.patch
new file mode 100644
index 0000000..e47f61e
--- /dev/null
+++ b/net-fs/cvmfs/files/cvmfs-2.1.20.0_p05-geoip-missing-cmake.patch
@@ -0,0 +1,151 @@
+--- /dev/null
++++ cmake/Modules/FindLibGeoIP.cmake
+@@ -0,0 +1,68 @@
++# - Try to find GeoIP headers and libraries
++#
++# Usage of this module as follows:
++#
++# find_package(LibGeoIP)
++#
++# Variables used by this module, they can change the default behaviour and need
++# to be set before calling find_package:
++#
++# LibGeoIP_ROOT_DIR Set this variable to the root installation of
++# libGeoIP if the module has problems finding the
++# proper installation path.
++#
++# Variables defined by this module:
++#
++# LIBGEOIP_FOUND System has GeoIP libraries and headers
++# LibGeoIP_LIBRARY The GeoIP library
++# LibGeoIP_INCLUDE_DIR The location of GeoIP headers
++# HAVE_GEOIP_COUNTRY_EDITION_V6 Whether the API support IPv6 country edition
++# HAVE_GEOIP_CITY_EDITION_REV0_V6 Whether the API supports IPv6 city edition
++
++find_path(LibGeoIP_ROOT_DIR
++ NAMES include/GeoIPCity.h
++)
++
++if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
++ # the static version of the library is preferred on OS X for the
++ # purposes of making packages (libGeoIP doesn't ship w/ OS X)
++ set(libgeoip_names libGeoIp.a GeoIP)
++else ()
++ set(libgeoip_names GeoIP)
++endif ()
++
++find_library(LibGeoIP_LIBRARY
++ NAMES ${libgeoip_names}
++ HINTS ${LibGeoIP_ROOT_DIR}/lib
++)
++
++find_path(LibGeoIP_INCLUDE_DIR
++ NAMES GeoIPCity.h
++ HINTS ${LibGeoIP_ROOT_DIR}/include
++)
++
++include(FindPackageHandleStandardArgs)
++find_package_handle_standard_args(LibGeoIP DEFAULT_MSG
++ LibGeoIP_LIBRARY
++ LibGeoIP_INCLUDE_DIR
++)
++
++if (LIBGEOIP_FOUND)
++ include(CheckCXXSourceCompiles)
++ set(CMAKE_REQUIRED_INCLUDES ${LibGeoIP_INCLUDE_DIR})
++ check_cxx_source_compiles("
++ #include <GeoIPCity.h>
++ int main() { GEOIP_COUNTRY_EDITION_V6; return 0; }
++ " HAVE_GEOIP_COUNTRY_EDITION_V6)
++ check_cxx_source_compiles("
++ #include <GeoIPCity.h>
++ int main() { GEOIP_CITY_EDITION_REV0_V6; return 0; }
++ " HAVE_GEOIP_CITY_EDITION_REV0_V6)
++ set(CMAKE_REQUIRED_INCLUDES)
++endif ()
++
++mark_as_advanced(
++ LibGeoIP_ROOT_DIR
++ LibGeoIP_LIBRARY
++ LibGeoIP_INCLUDE_DIR
++)
+\ No newline at end of file
+diff --git a/cmake/Modules/FindPythonModule.cmake b/cmake/Modules/FindPythonModule.cmake
+new file mode 100644
+index 0000000..1a29315
+--- /dev/null
++++ cmake/Modules/FindPythonModule.cmake
+@@ -0,0 +1,24 @@
++# Find if a Python module is installed
++# Found at http://www.cmake.org/pipermail/cmake/2011-January/041666.html
++# To use do: find_python_module(PyQt4 REQUIRED)
++function(find_python_module module)
++ string(TOUPPER ${module} module_upper)
++ if(NOT PYTHON_${module_upper})
++ include (FindPythonInterp)
++ if(ARGC GREATER 1 AND ARGV1 STREQUAL "REQUIRED")
++ set(PY_${module}_FIND_REQUIRED TRUE)
++ endif()
++ # A module's location is usually a directory, but for binary modules
++ # it's a .so file.
++ execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c"
++ "import re, ${module}; print(re.compile('/__init__.py.*').sub('',${module}.__file__))"
++ RESULT_VARIABLE _${module}_status
++ OUTPUT_VARIABLE _${module}_location
++ ERROR_QUIET
++ OUTPUT_STRIP_TRAILING_WHITESPACE)
++ if(${_${module}_status} EQUAL 0)
++ set(PYTHON_${module_upper} ${_${module}_location} CACHE STRING "Location of Python module ${module}")
++ endif(${_${module}_status} EQUAL 0)
++ endif(NOT PYTHON_${module_upper})
++ find_package_handle_standard_args(PY_${module} DEFAULT_MSG PYTHON_${module_upper})
++endfunction(find_python_module)
+\ No newline at end of file
+diff --git a/cvmfs/CMakeLists.txt b/cvmfs/CMakeLists.txt
+index cb09b94..44be85e 100644
+--- cvmfs/CMakeLists.txt
++++ cvmfs/CMakeLists.txt
+@@ -347,9 +347,9 @@ if (BUILD_SERVER)
+ # create targets with corresponding sources and static link libraries
+ add_executable (cvmfs_swissknife ${CVMFS_SWISSKNIFE_SOURCES})
+ add_executable (cvmfs_suid_helper ${CVMFS_SUID_HELPER_SOURCES})
+- add_custom_target (geoip ALL)
+
+ if (GEOIP_BUILTIN)
++ add_custom_target (geoip ALL)
+ add_dependencies (python-geoip libgeoip)
+ add_dependencies (geoip python-geoip)
+ endif (GEOIP_BUILTIN)
+--- CMakeLists.txt.orig 2015-08-04 15:33:53.383868890 +0000
++++ CMakeLists.txt 2015-08-04 15:58:03.133842858 +0000
+@@ -145,6 +145,12 @@
+ endif (EXISTS "${CMAKE_SOURCE_DIR}/bootstrap.sh")
+
+ #
++# include some common functionality
++#
++include (FindPythonModule)
++
++
++#
+ # set some default flags
+ #
+ # flags in CMAKE_C**_FLAGS are always passed to the compiler
+@@ -309,13 +315,15 @@
+ set (INCLUDE_DIRECTORIES ${INCLUDE_DIRECTORIES} ${GTEST_INCLUDE_DIRS})
+ endif (GOOGLETEST_BUILTIN)
+
++if (BUILD_SERVER OR BUILD_UNITTESTS)
+ if (GEOIP_BUILTIN)
+ include (${LIBGEOIP_BUILTIN_LOCATION}/CVMFS-CMakeLists.txt)
+ include (${PYTHON_GEOIP_BUILTIN_LOCATION}/CVMFS-CMakeLists.txt)
+ else (GEOIP_BUILTIN)
+- find_package (GeoIP REQUIRED)
+- find_package (python-GeoIP REQUIRED)
++ find_package (LibGeoIP REQUIRED)
++ find_python_module (GeoIP REQUIRED)
+ endif (GEOIP_BUILTIN)
++endif (BUILD_SERVER OR BUILD_UNITTESTS)
+
+ # required libraries for client and libcvmfs
+ if (BUILD_CVMFS OR BUILD_LIBCVMFS)
diff --git a/net-fs/cvmfs/files/cvmfs-2.1.20.0_p05-overlayfs.patch b/net-fs/cvmfs/files/cvmfs-2.1.20.0_p05-overlayfs.patch
new file mode 100644
index 0000000..1948bcf
--- /dev/null
+++ b/net-fs/cvmfs/files/cvmfs-2.1.20.0_p05-overlayfs.patch
@@ -0,0 +1,50 @@
+--- cvmfs/cvmfs_server.orig 2015-02-23 13:51:47.000000000 +0000
++++ cvmfs/cvmfs_server 2015-08-10 20:49:35.918557033 +0000
+@@ -454,6 +454,7 @@
+ #
+ # @return 0 if the overlayfs kernel module is loaded
+ check_overlayfs() {
++ [ -e /proc/config.gz ] && test x$(zgrep OVERLAY_FS /proc/config.gz | awk -F = '{print $2}') = xy && return 0
+ /sbin/modprobe -q overlayfs || test -d /sys/module/overlayfs
+ }
+
+@@ -934,7 +939,7 @@
+ local tmpdir
+ tmpdir=$(mktemp -d)
+ mkdir ${tmpdir}/a ${tmpdir}/b ${tmpdir}/c
+- mount -t overlayfs \
++ mount -t overlay \
+ -o upperdir=${tmpdir}/b,lowerdir=${tmpdir}/a,ro,context=system_u:object_r:default_t:s0 \
+ try_remount_overlayfs ${tmpdir}/c > /dev/null 2>&1 || return 1
+ mount -o remount,rw ${tmpdir}/c > /dev/null 2>&1 || { _cleanup_tmrc $tmpdir; return 2; }
+@@ -1870,8 +1875,9 @@
+ local rdonly_dir="${spool_dir}/rdonly"
+ local temp_dir="${spool_dir}/tmp"
+ local cache_dir="${spool_dir}/cache"
+-
+- mkdir -p /cvmfs/$name $scratch_dir $rdonly_dir $temp_dir $cache_dir || return 1
++ local work_dir="${spool_dir}/work"
++
++ mkdir -p /cvmfs/$name $scratch_dir $rdonly_dir $temp_dir $cache_dir $work_dir || return 1
+ chown -R $CVMFS_USER /cvmfs/$name/ $spool_dir/
+ }
+
+@@ -1937,7 +1943,8 @@
+ load_repo_config $name
+ local rdonly_dir="${CVMFS_SPOOL_DIR}/rdonly"
+ local scratch_dir="${CVMFS_SPOOL_DIR}/scratch"
+-
++ local work_dir="${CVMFS_SPOOL_DIR}/work"
++
+ local selinux_context=""
+ if [ $unionfs = "overlayfs" ]; then
+ echo -n "(overlayfs) "
+@@ -1946,7 +1953,7 @@
+ fi
+ cat >> /etc/fstab << EOF
+ cvmfs2#$name $rdonly_dir fuse allow_other,config=/etc/cvmfs/repositories.d/${name}/client.conf:${CVMFS_SPOOL_DIR}/client.local,cvmfs_suid 0 0 # added by CernVM-FS for $name
+-overlayfs_$name /cvmfs/$name overlayfs upperdir=${scratch_dir},lowerdir=${rdonly_dir},ro$selinux_context 0 0 # added by CernVM-FS for $name
++overlayfs_$name /cvmfs/$name overlay upperdir=${scratch_dir},lowerdir=${rdonly_dir},workdir=${work_dir},ro$selinux_context 0 0 # added by CernVM-FS for $name
+ EOF
+ else
+ echo -n "(aufs) "
diff --git a/net-fs/cvmfs/metadata.xml b/net-fs/cvmfs/metadata.xml
new file mode 100644
index 0000000..fa44600
--- /dev/null
+++ b/net-fs/cvmfs/metadata.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer>
+ <email>bicatali@gentoo.org</email>
+</maintainer>
+<longdescription lang='en'>
+ The CernVM File System is a client-server file system developed to
+ deliver software stacks onto virtual machines in a fast, scalable,
+ and reliable way. CernVM-FS is implemented as a FUSE module. It
+ makes a specially prepared directory tree stored on a web server
+ look like a local read-only file system on the virtual
+ machine. CernVM-FS uses outgoing HTTP connections only, thereby it
+ avoids most of the firewall issues of other network file systems. It
+ transfers data file by file on demand, verifying the content by
+ SHA-1 keys.
+</longdescription>
+<use>
+ <flag name='client'>Install the cvmfs client programs and autofs scripts</flag>
+ <flag name='server'>Install the server and init script (requires apache and OverlayFS)</flag>
+ <flag name='aufs'>Use AUFS instead of OverlayFS for older kernels</flag>
+</use>
+</pkgmetadata>