Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix reverse tests on OSX, improve install documentation #51

Merged
merged 6 commits into from
Jan 18, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ user-mode and acts as a transparent encrypted filesystem.
Usage
-----

- To see command line options, see the man page for encfs and encfsctl, or for
- To see command line options, see the man page for [encfs](encfs/encfs.pod)
and [encfsctl](encfs/encfsctl.pod), or for
brief usage message, run the programs without an argument (or '-h'):
% encfs -h
% man encfs
Expand Down
23 changes: 0 additions & 23 deletions INSTALL

This file was deleted.

54 changes: 54 additions & 0 deletions INSTALL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
This document provides generic information for compiling EncFS.

If you are looking for specific instructions for your distribution,
take a look at the page
**[Installing EncFS](https://github.com/vgough/encfs/wiki/Installing-Encfs)**
in the wiki.

Compiling EncFS
===============

EncFS uses the GNU autoconf / automake toolchain to create makefiles.
Also, the configure script is automatically generated using autoreconf.

Compiling EncFS is a three-step process:

autoreconf -if
./configure
make

Optional, but strongly recommended, is running the test suite
to verfify that the generated binaries work as expected
(runtime: 20 seconds)

make test

The compilation process creates two executables, encfs and encfsctl in
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
installed, then use the `--prefix` option to `configure` to specify the
install prefix.

Encfs and encfsctl can also be installed by hand. They need no special
permissions. You may also want the man pages encfs.1 and encfsctl.1.

Dependencies
============

EncFS depends on a number of libraries:

openssl fuse boost-serialization gettext libtool libintl

Compiling on Debian and Ubuntu
==============================

We use Travis CI to automatically build-test every commit:

[![Build Status](https://travis-ci.org/vgough/encfs.svg)](https://travis-ci.org/vgough/encfs)

The [Travis configuration file .travis.yml](.travis.yml) therefore
always contains up-to-date instructions to build EncFS on Ubuntu
(Travis uses Ubuntu build machines).
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ EncFS encrypts individual files, by translating all requests for the virtual
EncFS filesystem into the equivalent encrypted operations on the raw
filesystem.

For more technical details and a usage overview, see [DESIGN.md](DESIGN.md).
For more info, see:

- The excellent [encfs manpage](encfs/encfs.pod)
- The technical overview in [DESIGN.md](DESIGN.md)

## Status

Expand Down
6 changes: 6 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ dnl without this order in this file, automake will be confused!
dnl
AM_CONFIG_HEADER(config.h)

dnl If the string "PKG_CHECK_MODULES" appears in the output,
dnl the macro was not substituted, probably because pkg-config is
dnl not installed. Catch that right here instead of creating a
dnl broken configure script.
m4_pattern_forbid([PKG_CHECK_MODULES])

dnl This ksh/zsh feature conflicts with `cd blah ; pwd`
unset CDPATH

Expand Down
20 changes: 19 additions & 1 deletion encfs/encfs.pod
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ the encrypted data. You must also keep a copy of the file /home/me/.encfs5
which contains the filesystem information. Together, the two can be used to
reproduce the unencrypted data:

ENCFS5_CONFIG=/home/me/.encfs5 encfs /tmp/crypt-view /tmp/plain-view
ENCFS6_CONFIG=/home/me/.encfs6.xml encfs /tmp/crypt-view /tmp/plain-view

Now /tmp/plain-view contains the same data as /home/me

Expand Down Expand Up @@ -232,6 +232,24 @@ B<Warning>: Use this option at your own risk.

=back

=head1 ENVIRONMENT VARIABLES

=over 4

=item B<ENCFS6_CONFIG>

Which config file (typically named .encfs6.xml) to use.
By default, the config file is read from the encrypted directory.
Using this option allows to store the config file separated from the
encrypted files.

Warning: If you lose the config file, the encrypted file contents are
irrecoverably lost. It contains the master key encrypted with your
password. Without the master key, recovery is impossible, even if you
know the password.

=back

=head1 EXAMPLES

Create a new encrypted filesystem. Store the raw (encrypted) data in
Expand Down
8 changes: 7 additions & 1 deletion m4/ax_boost_base.m4
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
# and this notice are preserved. This file is offered as-is, without any
# warranty.

#serial 21
#serial 22

AC_DEFUN([AX_BOOST_BASE],
[
Expand Down Expand Up @@ -97,6 +97,12 @@ if test "x$want_boost" = "xyes"; then
;;
esac

dnl allow for real multi-arch paths e.g. /usr/lib/x86_64-linux-gnu. Give
dnl them priority over the other paths since, if libs are found there, they
dnl are almost assuredly the ones desired.
AC_REQUIRE([AC_CANONICAL_HOST])
libsubdirs="lib/${host_cpu}-${host_os} $libsubdirs"

dnl first we check the system location for boost libraries
dnl this location ist chosen if boost libraries are installed with the --layout=system option
dnl or if you install boost with RPM
Expand Down
13 changes: 13 additions & 0 deletions tests/common.pl
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
# Portable FUSE unmount
# works on Linux AND OSX
sub portable_unmount {
my $crypt = shift;
my $fusermount = qx(which fusermount);
chomp($fusermount);
if(-f $fusermount) {
qx($fusermount -u "$crypt");
} else {
qx(umount "$crypt");
}
}

# Helper function
# Get the MD5 sum of the file open at the filehandle
use Digest::MD5 qw(md5_hex);
Expand Down
10 changes: 1 addition & 9 deletions tests/normal.t.pl
Original file line number Diff line number Diff line change
Expand Up @@ -316,15 +316,7 @@ sub mount
# Unmount and delete mountpoint
sub cleanup
{
my $fusermount = qx(which fusermount);
chomp($fusermount);
if(-f $fusermount)
{
qx($fusermount -u "$crypt");
} else
{
qx(umount "$crypt");
}
portable_unmount($crypt);

rmdir $crypt;
ok( ! -d $crypt, "unmount ok, mount point removed");
Expand Down
4 changes: 2 additions & 2 deletions tests/reverse.t.pl
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ sub newWorkingDir
# Unmount and delete mountpoint
sub cleanup
{
system("fusermount -u $decrypted");
system("fusermount -u $ciphertext");
portable_unmount($decrypted);
portable_unmount($ciphertext);
our $workingDir;
rmtree($workingDir);
ok( ! -d $workingDir, "working dir removed");
Expand Down