mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2026-06-09 22:36:59 -05:00
Linux: add support for building against FUSE3
This commit is contained in:
+34
-17
@@ -10,6 +10,8 @@ elseif ( NOT DEFINED NOGUI )
|
|||||||
MESSAGE(FATAL_ERROR "NOGUI variable MUST BE set to TRUE if building 'Console' version, 'FALSE' otherwise")
|
MESSAGE(FATAL_ERROR "NOGUI variable MUST BE set to TRUE if building 'Console' version, 'FALSE' otherwise")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
option(VC_WITH_FUSE3 "Link against FUSE3 instead of FUSE2 when packaging" OFF)
|
||||||
|
|
||||||
# - Set version of the package
|
# - Set version of the package
|
||||||
set( FULL_VERSION "1.26.27" )
|
set( FULL_VERSION "1.26.27" )
|
||||||
set( VERSION "1.26.27" )
|
set( VERSION "1.26.27" )
|
||||||
@@ -268,46 +270,56 @@ if ( ( PLATFORM STREQUAL "Debian" ) OR ( PLATFORM STREQUAL "Ubuntu" ) )
|
|||||||
set( CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_PACKAGE_RELEASE} )
|
set( CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_PACKAGE_RELEASE} )
|
||||||
set( CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCHITECTURE} ) # mandatory
|
set( CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCHITECTURE} ) # mandatory
|
||||||
|
|
||||||
if (NOGUI)
|
# Determine the FUSE runtime package name that matches the selected FUSE version
|
||||||
# Link against statically built wxWidgets so that we don't depend on any GTK library
|
set(VC_DEBIAN_USE_T64 FALSE)
|
||||||
# In case of Ubuntu 24.04/ Debian 13 or newer, libfuse2 package was renamed libfuse2t64
|
|
||||||
if ( ( ( PLATFORM STREQUAL "Debian" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "13" ) )
|
if ( ( ( PLATFORM STREQUAL "Debian" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "13" ) )
|
||||||
OR ( ( PLATFORM STREQUAL "Ubuntu" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "24.04" ) ) )
|
OR ( ( PLATFORM STREQUAL "Ubuntu" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "24.04" ) ) )
|
||||||
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libfuse2t64, dmsetup, sudo" )
|
set(VC_DEBIAN_USE_T64 TRUE)
|
||||||
|
endif ()
|
||||||
|
if (VC_WITH_FUSE3)
|
||||||
|
set(VC_DEBIAN_FUSE_PACKAGE "libfuse3-3")
|
||||||
else ()
|
else ()
|
||||||
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libfuse2, dmsetup, sudo" )
|
if (VC_DEBIAN_USE_T64)
|
||||||
endif()
|
set(VC_DEBIAN_FUSE_PACKAGE "libfuse2t64")
|
||||||
|
else ()
|
||||||
|
set(VC_DEBIAN_FUSE_PACKAGE "libfuse2")
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (NOGUI)
|
||||||
|
# Link against statically built wxWidgets so that we don't depend on any GTK library
|
||||||
|
set( CPACK_DEBIAN_PACKAGE_DEPENDS "${VC_DEBIAN_FUSE_PACKAGE}, dmsetup, sudo" )
|
||||||
else ()
|
else ()
|
||||||
# Link against gtk3 version of wxWidgets if >= Debian 10 or >= Ubuntu 18.04
|
# Link against gtk3 version of wxWidgets if >= Debian 10 or >= Ubuntu 18.04
|
||||||
# Otherwise, link against gtk2 version of wxWidgets
|
# Otherwise, link against gtk2 version of wxWidgets
|
||||||
if ( ( ( PLATFORM STREQUAL "Debian" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "13" ) )
|
if ( ( ( PLATFORM STREQUAL "Debian" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "13" ) )
|
||||||
OR ( ( PLATFORM STREQUAL "Ubuntu" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "25.04" ) ) )
|
OR ( ( PLATFORM STREQUAL "Ubuntu" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "25.04" ) ) )
|
||||||
|
|
||||||
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libwxgtk3.2-1t64, libayatana-appindicator3-1, libfuse2t64, dmsetup, sudo" )
|
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libwxgtk3.2-1t64, libayatana-appindicator3-1, ${VC_DEBIAN_FUSE_PACKAGE}, dmsetup, sudo" )
|
||||||
|
|
||||||
# In case of Ubuntu 24.04, we depend on libfuse2t64 instead of libfuse2 and we link statically against wxWidgets
|
# In case of Ubuntu 24.04, we depend on the t64 variant of the FUSE package and we link statically against wxWidgets
|
||||||
# because there is a bug in wxWidgets that ships with Ubuntu 24.04 and which was fixed in wxWidgets 3.2.5
|
# because there is a bug in wxWidgets that ships with Ubuntu 24.04 and which was fixed in wxWidgets 3.2.5
|
||||||
elseif ( ( PLATFORM STREQUAL "Ubuntu" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "24.04" ) )
|
elseif ( ( PLATFORM STREQUAL "Ubuntu" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "24.04" ) )
|
||||||
|
|
||||||
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libgtk-3-0t64, libayatana-appindicator3-1, libfuse2t64, dmsetup, sudo" )
|
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libgtk-3-0t64, libayatana-appindicator3-1, ${VC_DEBIAN_FUSE_PACKAGE}, dmsetup, sudo" )
|
||||||
|
|
||||||
elseif ( ( ( PLATFORM STREQUAL "Debian" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "12" ) )
|
elseif ( ( ( PLATFORM STREQUAL "Debian" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "12" ) )
|
||||||
OR ( ( PLATFORM STREQUAL "Ubuntu" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "23.04" ) ) )
|
OR ( ( PLATFORM STREQUAL "Ubuntu" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "23.04" ) ) )
|
||||||
|
|
||||||
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libwxgtk3.2-1, libayatana-appindicator3-1, libfuse2, dmsetup, sudo" )
|
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libwxgtk3.2-1, libayatana-appindicator3-1, ${VC_DEBIAN_FUSE_PACKAGE}, dmsetup, sudo" )
|
||||||
|
|
||||||
elseif ( ( ( PLATFORM STREQUAL "Debian" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "10" ) )
|
elseif ( ( ( PLATFORM STREQUAL "Debian" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "10" ) )
|
||||||
OR ( ( PLATFORM STREQUAL "Ubuntu" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "18.04" ) ) )
|
OR ( ( PLATFORM STREQUAL "Ubuntu" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "18.04" ) ) )
|
||||||
|
|
||||||
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libwxgtk3.0-gtk3-0v5, libayatana-appindicator3-1, libfuse2, dmsetup, sudo" )
|
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libwxgtk3.0-gtk3-0v5, libayatana-appindicator3-1, ${VC_DEBIAN_FUSE_PACKAGE}, dmsetup, sudo" )
|
||||||
|
|
||||||
else ()
|
else ()
|
||||||
# Link against statically built wxWidgets on Ubuntu 14.04 and older, and Debian 8 and older
|
# Link against statically built wxWidgets on Ubuntu 14.04 and older, and Debian 8 and older
|
||||||
if ( ( ( PLATFORM STREQUAL "Debian" ) AND ( PLATFORM_VERSION VERSION_LESS_EQUAL "8" ) )
|
if ( ( ( PLATFORM STREQUAL "Debian" ) AND ( PLATFORM_VERSION VERSION_LESS_EQUAL "8" ) )
|
||||||
OR ( ( PLATFORM STREQUAL "Ubuntu" ) AND ( PLATFORM_VERSION VERSION_LESS_EQUAL "14.04" ) ) )
|
OR ( ( PLATFORM STREQUAL "Ubuntu" ) AND ( PLATFORM_VERSION VERSION_LESS_EQUAL "14.04" ) ) )
|
||||||
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libgtk2.0-0, libfuse2, dmsetup, sudo" )
|
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libgtk2.0-0, ${VC_DEBIAN_FUSE_PACKAGE}, dmsetup, sudo" )
|
||||||
else ()
|
else ()
|
||||||
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libwxgtk3.0-0v5, libfuse2, dmsetup, sudo" )
|
set( CPACK_DEBIAN_PACKAGE_DEPENDS "libwxgtk3.0-0v5, ${VC_DEBIAN_FUSE_PACKAGE}, dmsetup, sudo" )
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
@@ -330,7 +342,7 @@ elseif ( ( PLATFORM STREQUAL "CentOS" ) OR ( PLATFORM STREQUAL "openSUSE" ) OR (
|
|||||||
set( RPM_PRERM ${CMAKE_CURRENT_BINARY_DIR}/Packaging/rpm-control/prerm.sh)
|
set( RPM_PRERM ${CMAKE_CURRENT_BINARY_DIR}/Packaging/rpm-control/prerm.sh)
|
||||||
|
|
||||||
set( CPACK_GENERATOR "RPM" ) # mandatory
|
set( CPACK_GENERATOR "RPM" ) # mandatory
|
||||||
set( CPACK_RPM_PACKAGE_SUMMARY ${CPACK_PACKAGE_SUMMARY} ) # mandatory
|
set( CPACK_RPM_PACKAGE_SUMMARY ${CPACK_PACKAGE_DESCRIPTION_SUMMARY} ) # mandatory
|
||||||
set( CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION} ) # mandatory
|
set( CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION} ) # mandatory
|
||||||
set( CPACK_RPM_PACKAGE_NAME ${CPACK_PACKAGE_NAME} ) # mandatory
|
set( CPACK_RPM_PACKAGE_NAME ${CPACK_PACKAGE_NAME} ) # mandatory
|
||||||
set( CPACK_RPM_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}.rpm ) # mandatory
|
set( CPACK_RPM_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}.rpm ) # mandatory
|
||||||
@@ -341,17 +353,22 @@ elseif ( ( PLATFORM STREQUAL "CentOS" ) OR ( PLATFORM STREQUAL "openSUSE" ) OR (
|
|||||||
set( CPACK_RPM_PACKAGE_GROUP "Applications/System" ) # mandatory, https://fedoraproject.org/wiki/RPMGroups
|
set( CPACK_RPM_PACKAGE_GROUP "Applications/System" ) # mandatory, https://fedoraproject.org/wiki/RPMGroups
|
||||||
set( CPACK_RPM_PACKAGE_VENDOR ${CPACK_PACKAGE_VENDOR} ) # mandatory
|
set( CPACK_RPM_PACKAGE_VENDOR ${CPACK_PACKAGE_VENDOR} ) # mandatory
|
||||||
set( CPACK_RPM_PACKAGE_AUTOREQ "no" ) # disable automatic shared libraries dependency detection (most of the time buggy)
|
set( CPACK_RPM_PACKAGE_AUTOREQ "no" ) # disable automatic shared libraries dependency detection (most of the time buggy)
|
||||||
|
if (VC_WITH_FUSE3)
|
||||||
|
set(VC_RPM_FUSE_PACKAGE "fuse3")
|
||||||
|
else ()
|
||||||
|
set(VC_RPM_FUSE_PACKAGE "fuse")
|
||||||
|
endif ()
|
||||||
|
|
||||||
if (NOGUI)
|
if (NOGUI)
|
||||||
set( CPACK_RPM_PACKAGE_REQUIRES "fuse, device-mapper, sudo" )
|
set( CPACK_RPM_PACKAGE_REQUIRES "${VC_RPM_FUSE_PACKAGE}, device-mapper, sudo" )
|
||||||
else ()
|
else ()
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
pkg_check_modules(GTK3 gtk+-3.0)
|
pkg_check_modules(GTK3 gtk+-3.0)
|
||||||
|
|
||||||
if(GTK3_FOUND)
|
if(GTK3_FOUND)
|
||||||
set( CPACK_RPM_PACKAGE_REQUIRES "fuse, device-mapper, gtk3, sudo" )
|
set( CPACK_RPM_PACKAGE_REQUIRES "${VC_RPM_FUSE_PACKAGE}, device-mapper, gtk3, sudo" )
|
||||||
else()
|
else()
|
||||||
set( CPACK_RPM_PACKAGE_REQUIRES "fuse, device-mapper, gtk2, sudo" )
|
set( CPACK_RPM_PACKAGE_REQUIRES "${VC_RPM_FUSE_PACKAGE}, device-mapper, gtk2, sudo" )
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,52 @@ export WX_ROOT=$PARENTDIR/wxWidgets-3.2.5
|
|||||||
|
|
||||||
cd $SOURCEPATH
|
cd $SOURCEPATH
|
||||||
|
|
||||||
|
# Detect requested FUSE version (defaults to FUSE2). Can be set via WITHFUSE3=1 or by passing FUSE3/--with-fuse3.
|
||||||
|
build_with_fuse3=0
|
||||||
|
if [ -n "$WITHFUSE3" ] && [ "$WITHFUSE3" != "0" ]; then
|
||||||
|
build_with_fuse3=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
preserved_args=""
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
case "$1" in
|
||||||
|
FUSE3|WITHFUSE3|--with-fuse3)
|
||||||
|
build_with_fuse3=1
|
||||||
|
;;
|
||||||
|
FUSE2|WITHFUSE2|--with-fuse2)
|
||||||
|
build_with_fuse3=0
|
||||||
|
;;
|
||||||
|
WXSTATIC|INDICATOR)
|
||||||
|
if [ -z "$preserved_args" ]; then
|
||||||
|
preserved_args="$1"
|
||||||
|
else
|
||||||
|
preserved_args="$preserved_args $1"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Warning: Unrecognized option '$1' (ignored)" >&2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
set --
|
||||||
|
if [ -n "$preserved_args" ]; then
|
||||||
|
for arg in $preserved_args; do
|
||||||
|
set -- "$@" "$arg"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$build_with_fuse3" = "1" ]; then
|
||||||
|
FUSE3_MAKE_FLAG="WITHFUSE3=1"
|
||||||
|
FUSE3_CMAKE_FLAG="-DVC_WITH_FUSE3=TRUE"
|
||||||
|
echo "Building VeraCrypt packages against FUSE3"
|
||||||
|
else
|
||||||
|
FUSE3_MAKE_FLAG=""
|
||||||
|
FUSE3_CMAKE_FLAG="-DVC_WITH_FUSE3=FALSE"
|
||||||
|
echo "Building VeraCrypt packages against FUSE2"
|
||||||
|
fi
|
||||||
|
|
||||||
build_and_install() {
|
build_and_install() {
|
||||||
target=$1
|
target=$1
|
||||||
wxstatic=$2
|
wxstatic=$2
|
||||||
@@ -63,7 +109,7 @@ build_and_install() {
|
|||||||
echo "wx-config already exists in ${WX_BUILD_DIR}. Skipping wxbuild."
|
echo "wx-config already exists in ${WX_BUILD_DIR}. Skipping wxbuild."
|
||||||
else
|
else
|
||||||
echo "Using wxWidgets sources in $WX_ROOT"
|
echo "Using wxWidgets sources in $WX_ROOT"
|
||||||
make $wxstatic_value $nogui wxbuild || exit 1
|
make $wxstatic_value $nogui $FUSE3_MAKE_FLAG wxbuild || exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -73,9 +119,9 @@ build_and_install() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
rm -rf "$PARENTDIR/VeraCrypt_Setup/$target"
|
rm -rf "$PARENTDIR/VeraCrypt_Setup/$target"
|
||||||
make $wxstatic_value $indicator_value $nogui clean || exit 1
|
make $wxstatic_value $indicator_value $nogui $FUSE3_MAKE_FLAG clean || exit 1
|
||||||
make $wxstatic_value $indicator_value $nogui || exit 1
|
make $wxstatic_value $indicator_value $nogui $FUSE3_MAKE_FLAG || exit 1
|
||||||
make $wxstatic_value $indicator_value $nogui install DESTDIR="$PARENTDIR/VeraCrypt_Setup/$target" || exit 1
|
make $wxstatic_value $indicator_value $nogui $FUSE3_MAKE_FLAG install DESTDIR="$PARENTDIR/VeraCrypt_Setup/$target" || exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Handle arguments
|
# Handle arguments
|
||||||
@@ -112,8 +158,8 @@ rm -rf $PARENTDIR/VeraCrypt_Packaging
|
|||||||
mkdir -p $PARENTDIR/VeraCrypt_Packaging/GUI
|
mkdir -p $PARENTDIR/VeraCrypt_Packaging/GUI
|
||||||
mkdir -p $PARENTDIR/VeraCrypt_Packaging/Console
|
mkdir -p $PARENTDIR/VeraCrypt_Packaging/Console
|
||||||
|
|
||||||
cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/GUI -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/GUI" -DNOGUI=FALSE || exit 1
|
cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/GUI -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/GUI" -DNOGUI=FALSE $FUSE3_CMAKE_FLAG || exit 1
|
||||||
cpack --config $PARENTDIR/VeraCrypt_Packaging/GUI/CPackConfig.cmake || exit 1
|
cpack --config $PARENTDIR/VeraCrypt_Packaging/GUI/CPackConfig.cmake || exit 1
|
||||||
|
|
||||||
cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/Console -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/Console" -DNOGUI=TRUE || exit 1
|
cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/Console -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/Console" -DNOGUI=TRUE $FUSE3_CMAKE_FLAG || exit 1
|
||||||
cpack --config $PARENTDIR/VeraCrypt_Packaging/Console/CPackConfig.cmake || exit 1
|
cpack --config $PARENTDIR/VeraCrypt_Packaging/Console/CPackConfig.cmake || exit 1
|
||||||
|
|||||||
@@ -41,6 +41,38 @@ export WX_ROOT=$PARENTDIR/wxWidgets-3.2.5
|
|||||||
|
|
||||||
cd $SOURCEPATH
|
cd $SOURCEPATH
|
||||||
|
|
||||||
|
# Detect requested FUSE version (defaults to FUSE2). Can be set via WITHFUSE3=1 or by passing FUSE3/--with-fuse3.
|
||||||
|
build_with_fuse3=0
|
||||||
|
if [ -n "$WITHFUSE3" ] && [ "$WITHFUSE3" != "0" ]; then
|
||||||
|
build_with_fuse3=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
case "$1" in
|
||||||
|
FUSE3|WITHFUSE3|--with-fuse3)
|
||||||
|
build_with_fuse3=1
|
||||||
|
;;
|
||||||
|
FUSE2|WITHFUSE2|--with-fuse2)
|
||||||
|
build_with_fuse3=0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option: $1" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$build_with_fuse3" = "1" ]; then
|
||||||
|
FUSE3_MAKE_FLAG="WITHFUSE3=1"
|
||||||
|
FUSE3_CMAKE_FLAG="-DVC_WITH_FUSE3=TRUE"
|
||||||
|
echo "Building VeraCrypt packages against FUSE3"
|
||||||
|
else
|
||||||
|
FUSE3_MAKE_FLAG=""
|
||||||
|
FUSE3_CMAKE_FLAG="-DVC_WITH_FUSE3=FALSE"
|
||||||
|
echo "Building VeraCrypt packages against FUSE2"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Building GUI version of VeraCrypt for RPM using wxWidgets static libraries"
|
echo "Building GUI version of VeraCrypt for RPM using wxWidgets static libraries"
|
||||||
|
|
||||||
# This will be the temporary wxWidgets directory
|
# This will be the temporary wxWidgets directory
|
||||||
@@ -51,14 +83,14 @@ if [ -L "${WX_BUILD_DIR}/wx-config" ]; then
|
|||||||
echo "wx-config already exists in ${WX_BUILD_DIR}. Skipping wxbuild."
|
echo "wx-config already exists in ${WX_BUILD_DIR}. Skipping wxbuild."
|
||||||
else
|
else
|
||||||
echo "Using wxWidgets sources in $WX_ROOT"
|
echo "Using wxWidgets sources in $WX_ROOT"
|
||||||
make WXSTATIC=1 wxbuild || exit 1
|
make WXSTATIC=1 $FUSE3_MAKE_FLAG wxbuild || exit 1
|
||||||
ln -s $WX_BUILD_DIR/lib $WX_BUILD_DIR/lib64
|
ln -s $WX_BUILD_DIR/lib $WX_BUILD_DIR/lib64
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -rf "$PARENTDIR/VeraCrypt_Setup/GUI"
|
rm -rf "$PARENTDIR/VeraCrypt_Setup/GUI"
|
||||||
make WXSTATIC=1 clean || exit 1
|
make WXSTATIC=1 $FUSE3_MAKE_FLAG clean || exit 1
|
||||||
make WXSTATIC=1 || exit 1
|
make WXSTATIC=1 $FUSE3_MAKE_FLAG || exit 1
|
||||||
make WXSTATIC=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/GUI" || exit 1
|
make WXSTATIC=1 $FUSE3_MAKE_FLAG install DESTDIR="$PARENTDIR/VeraCrypt_Setup/GUI" || exit 1
|
||||||
|
|
||||||
echo "Building console version of VeraCrypt for RPM using wxWidgets static libraries"
|
echo "Building console version of VeraCrypt for RPM using wxWidgets static libraries"
|
||||||
|
|
||||||
@@ -74,14 +106,14 @@ if [ -L "${WX_BUILD_DIR}/wx-config" ]; then
|
|||||||
echo "wx-config already exists in ${WX_BUILD_DIR}. Skipping wxbuild."
|
echo "wx-config already exists in ${WX_BUILD_DIR}. Skipping wxbuild."
|
||||||
else
|
else
|
||||||
echo "Using wxWidgets sources in $WX_ROOT"
|
echo "Using wxWidgets sources in $WX_ROOT"
|
||||||
make WXSTATIC=1 NOGUI=1 wxbuild || exit 1
|
make WXSTATIC=1 NOGUI=1 $FUSE3_MAKE_FLAG wxbuild || exit 1
|
||||||
ln -s $WX_BUILD_DIR/lib $WX_BUILD_DIR/lib64
|
ln -s $WX_BUILD_DIR/lib $WX_BUILD_DIR/lib64
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -rf "$PARENTDIR/VeraCrypt_Setup/Console"
|
rm -rf "$PARENTDIR/VeraCrypt_Setup/Console"
|
||||||
make WXSTATIC=1 NOGUI=1 clean || exit 1
|
make WXSTATIC=1 NOGUI=1 $FUSE3_MAKE_FLAG clean || exit 1
|
||||||
make WXSTATIC=1 NOGUI=1 || exit 1
|
make WXSTATIC=1 NOGUI=1 $FUSE3_MAKE_FLAG || exit 1
|
||||||
make WXSTATIC=1 NOGUI=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/Console" || exit 1
|
make WXSTATIC=1 NOGUI=1 $FUSE3_MAKE_FLAG install DESTDIR="$PARENTDIR/VeraCrypt_Setup/Console" || exit 1
|
||||||
|
|
||||||
echo "Creating VeraCrypt RPM packages "
|
echo "Creating VeraCrypt RPM packages "
|
||||||
|
|
||||||
@@ -95,7 +127,7 @@ mkdir -p $PARENTDIR/VeraCrypt_Packaging/GUI
|
|||||||
mkdir -p $PARENTDIR/VeraCrypt_Packaging/Console
|
mkdir -p $PARENTDIR/VeraCrypt_Packaging/Console
|
||||||
|
|
||||||
# wxWidgets was built using native GTK version
|
# wxWidgets was built using native GTK version
|
||||||
cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/GUI -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/GUI" -DNOGUI=FALSE || exit 1
|
cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/GUI -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/GUI" -DNOGUI=FALSE $FUSE3_CMAKE_FLAG || exit 1
|
||||||
cpack --config $PARENTDIR/VeraCrypt_Packaging/GUI/CPackConfig.cmake || exit 1
|
cpack --config $PARENTDIR/VeraCrypt_Packaging/GUI/CPackConfig.cmake || exit 1
|
||||||
cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/Console -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/Console" -DNOGUI=TRUE || exit 1
|
cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/Console -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/Console" -DNOGUI=TRUE $FUSE3_CMAKE_FLAG || exit 1
|
||||||
cpack --config $PARENTDIR/VeraCrypt_Packaging/Console/CPackConfig.cmake|| exit 1
|
cpack --config $PARENTDIR/VeraCrypt_Packaging/Console/CPackConfig.cmake|| exit 1
|
||||||
|
|||||||
@@ -41,6 +41,38 @@ export WX_ROOT=$PARENTDIR/wxWidgets-3.2.5
|
|||||||
|
|
||||||
cd $SOURCEPATH
|
cd $SOURCEPATH
|
||||||
|
|
||||||
|
# Detect requested FUSE version (defaults to FUSE2). Can be set via WITHFUSE3=1 or by passing FUSE3/--with-fuse3.
|
||||||
|
build_with_fuse3=0
|
||||||
|
if [ -n "$WITHFUSE3" ] && [ "$WITHFUSE3" != "0" ]; then
|
||||||
|
build_with_fuse3=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
case "$1" in
|
||||||
|
FUSE3|WITHFUSE3|--with-fuse3)
|
||||||
|
build_with_fuse3=1
|
||||||
|
;;
|
||||||
|
FUSE2|WITHFUSE2|--with-fuse2)
|
||||||
|
build_with_fuse3=0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option: $1" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$build_with_fuse3" = "1" ]; then
|
||||||
|
FUSE3_MAKE_FLAG="WITHFUSE3=1"
|
||||||
|
FUSE3_CMAKE_FLAG="-DVC_WITH_FUSE3=TRUE"
|
||||||
|
echo "Building VeraCrypt packages against FUSE3"
|
||||||
|
else
|
||||||
|
FUSE3_MAKE_FLAG=""
|
||||||
|
FUSE3_CMAKE_FLAG="-DVC_WITH_FUSE3=FALSE"
|
||||||
|
echo "Building VeraCrypt packages against FUSE2"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Building GUI version of VeraCrypt for RPM using wxWidgets static libraries"
|
echo "Building GUI version of VeraCrypt for RPM using wxWidgets static libraries"
|
||||||
|
|
||||||
# This will be the temporary wxWidgets directory
|
# This will be the temporary wxWidgets directory
|
||||||
@@ -51,13 +83,16 @@ if [ -L "${WX_BUILD_DIR}/wx-config" ]; then
|
|||||||
echo "wx-config already exists in ${WX_BUILD_DIR}. Skipping wxbuild."
|
echo "wx-config already exists in ${WX_BUILD_DIR}. Skipping wxbuild."
|
||||||
else
|
else
|
||||||
echo "Using wxWidgets sources in $WX_ROOT"
|
echo "Using wxWidgets sources in $WX_ROOT"
|
||||||
make WXSTATIC=1 wxbuild || exit 1
|
make WXSTATIC=1 $FUSE3_MAKE_FLAG wxbuild || exit 1
|
||||||
|
if [ -d "$WX_BUILD_DIR/lib" ] && [ ! -e "$WX_BUILD_DIR/lib64" ]; then
|
||||||
|
ln -s "$WX_BUILD_DIR/lib" "$WX_BUILD_DIR/lib64"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -rf "$PARENTDIR/VeraCrypt_Setup/GUI"
|
rm -rf "$PARENTDIR/VeraCrypt_Setup/GUI"
|
||||||
make WXSTATIC=1 clean || exit 1
|
make WXSTATIC=1 $FUSE3_MAKE_FLAG clean || exit 1
|
||||||
make WXSTATIC=1 || exit 1
|
make WXSTATIC=1 $FUSE3_MAKE_FLAG || exit 1
|
||||||
make WXSTATIC=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/GUI" || exit 1
|
make WXSTATIC=1 $FUSE3_MAKE_FLAG install DESTDIR="$PARENTDIR/VeraCrypt_Setup/GUI" || exit 1
|
||||||
|
|
||||||
echo "Building console version of VeraCrypt for RPM using wxWidgets static libraries"
|
echo "Building console version of VeraCrypt for RPM using wxWidgets static libraries"
|
||||||
|
|
||||||
@@ -73,13 +108,13 @@ if [ -L "${WX_BUILD_DIR}/wx-config" ]; then
|
|||||||
echo "wx-config already exists in ${WX_BUILD_DIR}. Skipping wxbuild."
|
echo "wx-config already exists in ${WX_BUILD_DIR}. Skipping wxbuild."
|
||||||
else
|
else
|
||||||
echo "Using wxWidgets sources in $WX_ROOT"
|
echo "Using wxWidgets sources in $WX_ROOT"
|
||||||
make WXSTATIC=1 NOGUI=1 wxbuild || exit 1
|
make WXSTATIC=1 NOGUI=1 $FUSE3_MAKE_FLAG wxbuild || exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -rf "$PARENTDIR/VeraCrypt_Setup/Console"
|
rm -rf "$PARENTDIR/VeraCrypt_Setup/Console"
|
||||||
make WXSTATIC=1 NOGUI=1 clean || exit 1
|
make WXSTATIC=1 NOGUI=1 $FUSE3_MAKE_FLAG clean || exit 1
|
||||||
make WXSTATIC=1 NOGUI=1 || exit 1
|
make WXSTATIC=1 NOGUI=1 $FUSE3_MAKE_FLAG || exit 1
|
||||||
make WXSTATIC=1 NOGUI=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/Console" || exit 1
|
make WXSTATIC=1 NOGUI=1 $FUSE3_MAKE_FLAG install DESTDIR="$PARENTDIR/VeraCrypt_Setup/Console" || exit 1
|
||||||
|
|
||||||
echo "Creating VeraCrypt RPM packages "
|
echo "Creating VeraCrypt RPM packages "
|
||||||
|
|
||||||
@@ -93,7 +128,7 @@ mkdir -p $PARENTDIR/VeraCrypt_Packaging/GUI
|
|||||||
mkdir -p $PARENTDIR/VeraCrypt_Packaging/Console
|
mkdir -p $PARENTDIR/VeraCrypt_Packaging/Console
|
||||||
|
|
||||||
# wxWidgets was built using native GTK version
|
# wxWidgets was built using native GTK version
|
||||||
cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/GUI -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/GUI" -DNOGUI=FALSE || exit 1
|
cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/GUI -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/GUI" -DNOGUI=FALSE $FUSE3_CMAKE_FLAG || exit 1
|
||||||
cpack --config $PARENTDIR/VeraCrypt_Packaging/GUI/CPackConfig.cmake || exit 1
|
cpack --config $PARENTDIR/VeraCrypt_Packaging/GUI/CPackConfig.cmake || exit 1
|
||||||
cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/Console -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/Console" -DNOGUI=TRUE || exit 1
|
cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/Console -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/Console" -DNOGUI=TRUE $FUSE3_CMAKE_FLAG || exit 1
|
||||||
cpack --config $PARENTDIR/VeraCrypt_Packaging/Console/CPackConfig.cmake || exit 1
|
cpack --config $PARENTDIR/VeraCrypt_Packaging/Console/CPackConfig.cmake || exit 1
|
||||||
|
|||||||
@@ -16,5 +16,6 @@ OBJS :=
|
|||||||
OBJS += FuseService.o
|
OBJS += FuseService.o
|
||||||
|
|
||||||
CXXFLAGS += $(shell $(PKG_CONFIG) $(VC_FUSE_PACKAGE) --cflags)
|
CXXFLAGS += $(shell $(PKG_CONFIG) $(VC_FUSE_PACKAGE) --cflags)
|
||||||
|
CXXFLAGS += -DVC_FUSE_VERSION=$(VC_FUSE_VERSION)
|
||||||
|
|
||||||
include $(BUILD_INC)/Makefile.inc
|
include $(BUILD_INC)/Makefile.inc
|
||||||
|
|||||||
+111
-16
@@ -11,9 +11,24 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef TC_OPENBSD
|
#ifdef TC_OPENBSD
|
||||||
#define FUSE_USE_VERSION 26
|
# define FUSE_USE_VERSION 26
|
||||||
#else
|
#else
|
||||||
#define FUSE_USE_VERSION 25
|
# ifndef VC_FUSE_VERSION
|
||||||
|
# define VC_FUSE_VERSION 2
|
||||||
|
# endif
|
||||||
|
# if VC_FUSE_VERSION < 3
|
||||||
|
# define FUSE_USE_VERSION 25
|
||||||
|
# else
|
||||||
|
# define FUSE_USE_VERSION 301
|
||||||
|
# define VC_FUSE3 1
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef VC_FUSE3
|
||||||
|
#define VC_FUSE_FILL_DIR(filler, buf, name, st, off) filler(buf, name, st, off, (enum fuse_fill_dir_flags)0)
|
||||||
|
#else
|
||||||
|
#define VC_FUSE_FILL_DIR(filler, buf, name, st, off) filler(buf, name, st, off)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
@@ -41,6 +56,23 @@
|
|||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
|
static const ino_t VC_FUSE_INODE_ROOT = 1;
|
||||||
|
static const ino_t VC_FUSE_INODE_VOLUME = 2;
|
||||||
|
static const ino_t VC_FUSE_INODE_CONTROL = 3;
|
||||||
|
|
||||||
|
static int fuse_service_fill_dir_entry (void *buf, fuse_fill_dir_t filler, const char *name, mode_t mode, ino_t ino, off_t nextOff)
|
||||||
|
{
|
||||||
|
struct stat st;
|
||||||
|
Memory::Zero (&st, sizeof (st));
|
||||||
|
st.st_mode = mode;
|
||||||
|
st.st_nlink = S_ISDIR (mode) ? 2 : 1;
|
||||||
|
st.st_uid = FuseService::GetUserId();
|
||||||
|
st.st_gid = FuseService::GetGroupId();
|
||||||
|
st.st_ino = ino;
|
||||||
|
|
||||||
|
return VC_FUSE_FILL_DIR (filler, buf, name, &st, nextOff);
|
||||||
|
}
|
||||||
|
|
||||||
static int fuse_service_access (const char *path, int mask)
|
static int fuse_service_access (const char *path, int mask)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -56,11 +88,7 @@ namespace VeraCrypt
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TC_OPENBSD
|
static void *fuse_service_init_common ()
|
||||||
static void *fuse_service_init (struct fuse_conn_info *)
|
|
||||||
#else
|
|
||||||
static void *fuse_service_init ()
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -88,6 +116,32 @@ namespace VeraCrypt
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(VC_FUSE3)
|
||||||
|
static void *fuse_service_init (struct fuse_conn_info *conn, struct fuse_config *cfg)
|
||||||
|
{
|
||||||
|
if (cfg)
|
||||||
|
{
|
||||||
|
cfg->set_uid = 1;
|
||||||
|
cfg->set_gid = 1;
|
||||||
|
cfg->uid = FuseService::GetUserId();
|
||||||
|
cfg->gid = FuseService::GetGroupId();
|
||||||
|
}
|
||||||
|
|
||||||
|
return fuse_service_init_common ();
|
||||||
|
}
|
||||||
|
#elif defined(TC_OPENBSD) || (FUSE_USE_VERSION >= 26)
|
||||||
|
static void *fuse_service_init (struct fuse_conn_info *conn)
|
||||||
|
{
|
||||||
|
(void) conn;
|
||||||
|
return fuse_service_init_common ();
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static void *fuse_service_init ()
|
||||||
|
{
|
||||||
|
return fuse_service_init_common ();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void fuse_service_destroy (void *userdata)
|
static void fuse_service_destroy (void *userdata)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -104,7 +158,7 @@ namespace VeraCrypt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fuse_service_getattr (const char *path, struct stat *statData)
|
static int fuse_service_getattr_impl (const char *path, struct stat *statData)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -120,6 +174,7 @@ namespace VeraCrypt
|
|||||||
{
|
{
|
||||||
statData->st_mode = S_IFDIR | 0500;
|
statData->st_mode = S_IFDIR | 0500;
|
||||||
statData->st_nlink = 2;
|
statData->st_nlink = 2;
|
||||||
|
statData->st_ino = VC_FUSE_INODE_ROOT;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -131,12 +186,14 @@ namespace VeraCrypt
|
|||||||
statData->st_mode = S_IFREG | 0600;
|
statData->st_mode = S_IFREG | 0600;
|
||||||
statData->st_nlink = 1;
|
statData->st_nlink = 1;
|
||||||
statData->st_size = FuseService::GetVolumeSize();
|
statData->st_size = FuseService::GetVolumeSize();
|
||||||
|
statData->st_ino = VC_FUSE_INODE_VOLUME;
|
||||||
}
|
}
|
||||||
else if (strcmp (path, FuseService::GetControlPath()) == 0)
|
else if (strcmp (path, FuseService::GetControlPath()) == 0)
|
||||||
{
|
{
|
||||||
statData->st_mode = S_IFREG | 0600;
|
statData->st_mode = S_IFREG | 0600;
|
||||||
statData->st_nlink = 1;
|
statData->st_nlink = 1;
|
||||||
statData->st_size = FuseService::GetVolumeInfo()->Size();
|
statData->st_size = FuseService::GetVolumeInfo()->Size();
|
||||||
|
statData->st_ino = VC_FUSE_INODE_CONTROL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -152,6 +209,19 @@ namespace VeraCrypt
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(VC_FUSE3)
|
||||||
|
static int fuse_service_getattr (const char *path, struct stat *statData, struct fuse_file_info *fi)
|
||||||
|
{
|
||||||
|
(void) fi;
|
||||||
|
return fuse_service_getattr_impl (path, statData);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static int fuse_service_getattr (const char *path, struct stat *statData)
|
||||||
|
{
|
||||||
|
return fuse_service_getattr_impl (path, statData);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static int fuse_service_opendir (const char *path, struct fuse_file_info *fi)
|
static int fuse_service_opendir (const char *path, struct fuse_file_info *fi)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -261,8 +331,10 @@ namespace VeraCrypt
|
|||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fuse_service_readdir (const char *path, void *buf, fuse_fill_dir_t filler, off_t offset, struct fuse_file_info *fi)
|
static int fuse_service_readdir_impl (const char *path, void *buf, fuse_fill_dir_t filler, struct fuse_file_info *fi)
|
||||||
{
|
{
|
||||||
|
(void) fi;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (!FuseService::CheckAccessRights())
|
if (!FuseService::CheckAccessRights())
|
||||||
@@ -271,10 +343,14 @@ namespace VeraCrypt
|
|||||||
if (strcmp (path, "/") != 0)
|
if (strcmp (path, "/") != 0)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
filler (buf, ".", NULL, 0);
|
if (fuse_service_fill_dir_entry (buf, filler, ".", S_IFDIR | 0500, VC_FUSE_INODE_ROOT, 0) != 0)
|
||||||
filler (buf, "..", NULL, 0);
|
return 0;
|
||||||
filler (buf, FuseService::GetVolumeImagePath() + 1, NULL, 0);
|
if (fuse_service_fill_dir_entry (buf, filler, "..", S_IFDIR | 0500, VC_FUSE_INODE_ROOT, 0) != 0)
|
||||||
filler (buf, FuseService::GetControlPath() + 1, NULL, 0);
|
return 0;
|
||||||
|
if (fuse_service_fill_dir_entry (buf, filler, FuseService::GetVolumeImagePath() + 1, S_IFREG | 0600, VC_FUSE_INODE_VOLUME, 0) != 0)
|
||||||
|
return 0;
|
||||||
|
if (fuse_service_fill_dir_entry (buf, filler, FuseService::GetControlPath() + 1, S_IFREG | 0600, VC_FUSE_INODE_CONTROL, 0) != 0)
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
@@ -284,6 +360,21 @@ namespace VeraCrypt
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(VC_FUSE3)
|
||||||
|
static int fuse_service_readdir (const char *path, void *buf, fuse_fill_dir_t filler, off_t offset, struct fuse_file_info *fi, enum fuse_readdir_flags flags)
|
||||||
|
{
|
||||||
|
(void) offset;
|
||||||
|
(void) flags;
|
||||||
|
return fuse_service_readdir_impl (path, buf, filler, fi);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static int fuse_service_readdir (const char *path, void *buf, fuse_fill_dir_t filler, off_t offset, struct fuse_file_info *fi)
|
||||||
|
{
|
||||||
|
(void) offset;
|
||||||
|
return fuse_service_readdir_impl (path, buf, filler, fi);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static int fuse_service_write (const char *path, const char *buf, size_t size, off_t offset, struct fuse_file_info *fi)
|
static int fuse_service_write (const char *path, const char *buf, size_t size, off_t offset, struct fuse_file_info *fi)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -461,13 +552,15 @@ namespace VeraCrypt
|
|||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
|
// Ignore exceptions since we will retry
|
||||||
|
}
|
||||||
|
|
||||||
if (t > 50)
|
if (t > 50)
|
||||||
throw;
|
throw TimeOut (SRC_POS);
|
||||||
|
|
||||||
Thread::Sleep (100);
|
Thread::Sleep (100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void FuseService::ReadVolumeSectors (const BufferPtr &buffer, uint64 byteOffset)
|
void FuseService::ReadVolumeSectors (const BufferPtr &buffer, uint64 byteOffset)
|
||||||
{
|
{
|
||||||
@@ -592,7 +685,9 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
SignalHandlerPipe->GetWriteFD();
|
SignalHandlerPipe->GetWriteFD();
|
||||||
|
|
||||||
#ifdef TC_OPENBSD
|
#ifdef VC_FUSE3
|
||||||
|
_exit (fuse_main (argc, argv, &fuse_service_oper, nullptr));
|
||||||
|
#elif defined(TC_OPENBSD)
|
||||||
_exit (fuse_main (argc, argv, &fuse_service_oper, NULL));
|
_exit (fuse_main (argc, argv, &fuse_service_oper, NULL));
|
||||||
#else
|
#else
|
||||||
_exit (fuse_main (argc, argv, &fuse_service_oper));
|
_exit (fuse_main (argc, argv, &fuse_service_oper));
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ namespace VeraCrypt
|
|||||||
static const char *GetControlPath () { return "/control"; }
|
static const char *GetControlPath () { return "/control"; }
|
||||||
static const char *GetVolumeImagePath ();
|
static const char *GetVolumeImagePath ();
|
||||||
static string GetDeviceType () { return "veracrypt"; }
|
static string GetDeviceType () { return "veracrypt"; }
|
||||||
static uid_t GetGroupId () { return GroupId; }
|
static gid_t GetGroupId () { return GroupId; }
|
||||||
static uid_t GetUserId () { return UserId; }
|
static uid_t GetUserId () { return UserId; }
|
||||||
static shared_ptr <Buffer> GetVolumeInfo ();
|
static shared_ptr <Buffer> GetVolumeInfo ();
|
||||||
static uint64 GetVolumeSize ();
|
static uint64 GetVolumeSize ();
|
||||||
|
|||||||
+31
-2
@@ -52,7 +52,7 @@ export LFLAGS :=
|
|||||||
|
|
||||||
export PKG_CONFIG ?= pkg-config
|
export PKG_CONFIG ?= pkg-config
|
||||||
export PKG_CONFIG_PATH ?= /usr/local/lib/pkgconfig
|
export PKG_CONFIG_PATH ?= /usr/local/lib/pkgconfig
|
||||||
export VC_FUSE_PACKAGE := fuse
|
|
||||||
export VC_OSX_FUSET ?= 0
|
export VC_OSX_FUSET ?= 0
|
||||||
|
|
||||||
export WX_CONFIG ?= wx-config
|
export WX_CONFIG ?= wx-config
|
||||||
@@ -342,7 +342,6 @@ $(error Specified SDK version was not found, ensure your active developer direct
|
|||||||
|
|
||||||
ifneq "$(VC_OSX_FUSET)" "0"
|
ifneq "$(VC_OSX_FUSET)" "0"
|
||||||
C_CXX_FLAGS += -DVC_MACOSX_FUSET
|
C_CXX_FLAGS += -DVC_MACOSX_FUSET
|
||||||
VC_FUSE_PACKAGE := fuse-t
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
export CFLAGS_ARM64 := $(CFLAGS) $(C_CXX_FLAGS) -arch arm64 -march=armv8-a+crypto
|
export CFLAGS_ARM64 := $(CFLAGS) $(C_CXX_FLAGS) -arch arm64 -march=armv8-a+crypto
|
||||||
@@ -547,6 +546,36 @@ ifneq (,$(filter Linux FreeBSD OpenBSD,$(PLATFORM)))
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
#------ FUSE selection ------
|
||||||
|
# User must specify WITHFUSE3 (non-zero) to request fuse3. Otherwise fuse (FUSE2) is used.
|
||||||
|
# macOS FUSE-T builds select the fuse-t pkg-config package through WITHFUSET.
|
||||||
|
# In all cases, existence is validated and build stops if the selected package is not found.
|
||||||
|
ifeq "$(PLATFORM)" "MacOSX"
|
||||||
|
ifneq "$(VC_OSX_FUSET)" "0"
|
||||||
|
VC_FUSE_PACKAGE := fuse-t
|
||||||
|
else
|
||||||
|
VC_FUSE_PACKAGE := fuse
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
ifeq ($(origin WITHFUSE3),command line)
|
||||||
|
ifneq ($(WITHFUSE3),0)
|
||||||
|
VC_FUSE_PACKAGE := fuse3
|
||||||
|
else
|
||||||
|
VC_FUSE_PACKAGE := fuse
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
VC_FUSE_PACKAGE := fuse
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
FUSE_FOUND := $(shell $(PKG_CONFIG) --exists $(VC_FUSE_PACKAGE) >/dev/null 2>&1 && echo 1 || echo 0)
|
||||||
|
ifeq ($(FUSE_FOUND),0)
|
||||||
|
$(error Requested FUSE package '$(VC_FUSE_PACKAGE)' not found. Install it (or set WITHFUSE3/WITHFUSET appropriately).)
|
||||||
|
endif
|
||||||
|
|
||||||
|
export VC_FUSE_PACKAGE
|
||||||
|
export VC_FUSE_VERSION := $(shell $(PKG_CONFIG) --modversion $(VC_FUSE_PACKAGE) 2>/dev/null | cut -d. -f1)
|
||||||
|
|
||||||
#------ Common configuration ------
|
#------ Common configuration ------
|
||||||
|
|
||||||
CFLAGS := $(C_CXX_FLAGS) $(CFLAGS) $(TC_EXTRA_CFLAGS)
|
CFLAGS := $(C_CXX_FLAGS) $(CFLAGS) $(TC_EXTRA_CFLAGS)
|
||||||
|
|||||||
Reference in New Issue
Block a user