aboutsummaryrefslogtreecommitdiff
path: root/docs/compile.md
blob: 33c2c5230c067d2ae993b53bb2f2904b049cdf12 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Compile gocryptfs from Source
=============================

	git clone https://github.com/rfjakob/gocryptfs.git
	cd gocryptfs
	./build.bash

build.bash needs Go 1.7+ and the OpenSSL headers installed
(Debian: `apt install golang libssl-dev`, Fedora: `dnf install golang openssl-devel`).

If successful, `build.bash` copies the `gocryptfs` binary to `~/bin`.

Alternatively, you can compile a static binary without OpenSSL using:

	./build-without-openssl.bash

This is the recommended way to compile on MacOS, and also how the official
[binary releases](https://github.com/rfjakob/gocryptfs/releases) are compiled.

Note that having OpenSSL speeds up encryption on CPUs *without* AES-NI
by a factor of 4. Run `gocryptfs -speed` to check your CPU.

Test
----

In the gocryptfs source directory, run:

	./test.bash

The tests run about 1 minute and should produce the following output:

```
gocryptfs v1.4.3-9-g9f8d0d8 without_openssl; go-fuse v20170619-28-g19acbd2; 2018-02-03 go1.9.2
gocryptfs v1.4.3-9-g9f8d0d8; go-fuse v20170619-28-g19acbd2; 2018-02-03 go1.9.2
ok  	github.com/rfjakob/gocryptfs	0.003s
?   	github.com/rfjakob/gocryptfs/gocryptfs-xray	[no test files]
ok  	github.com/rfjakob/gocryptfs/internal/configfile	0.732s
ok  	github.com/rfjakob/gocryptfs/internal/contentenc	0.003s
ok  	github.com/rfjakob/gocryptfs/internal/cryptocore	0.227s
ok  	github.com/rfjakob/gocryptfs/internal/ctlsock	0.002s
?   	github.com/rfjakob/gocryptfs/internal/exitcodes	[no test files]
?   	github.com/rfjakob/gocryptfs/internal/fusefrontend	[no test files]
?   	github.com/rfjakob/gocryptfs/internal/fusefrontend_reverse	[no test files]
ok  	github.com/rfjakob/gocryptfs/internal/nametransform	0.003s
?   	github.com/rfjakob/gocryptfs/internal/nametransform/dirivcache	[no test files]
?   	github.com/rfjakob/gocryptfs/internal/openfiletable	[no test files]
ok  	github.com/rfjakob/gocryptfs/internal/pathiv	0.003s
ok  	github.com/rfjakob/gocryptfs/internal/prefer_openssl	0.003s
ok  	github.com/rfjakob/gocryptfs/internal/readpassword	0.048s
?   	github.com/rfjakob/gocryptfs/internal/serialize_reads	[no test files]
ok  	github.com/rfjakob/gocryptfs/internal/siv_aead	0.005s
ok  	github.com/rfjakob/gocryptfs/internal/speed	0.002s [no tests to run]
ok  	github.com/rfjakob/gocryptfs/internal/stupidgcm	1.639s
ok  	github.com/rfjakob/gocryptfs/internal/syscallcompat	0.027s
?   	github.com/rfjakob/gocryptfs/internal/tlog	[no test files]
ok  	github.com/rfjakob/gocryptfs/tests/cli	1.023s
ok  	github.com/rfjakob/gocryptfs/tests/defaults	0.839s
ok  	github.com/rfjakob/gocryptfs/tests/example_filesystems	4.076s
ok  	github.com/rfjakob/gocryptfs/tests/hkdf_sanity	0.137s
ok  	github.com/rfjakob/gocryptfs/tests/matrix	10.780s
ok  	github.com/rfjakob/gocryptfs/tests/plaintextnames	0.089s
ok  	github.com/rfjakob/gocryptfs/tests/reverse	0.854s
?   	github.com/rfjakob/gocryptfs/tests/test_helpers	[no test files]
```

You can run `./test.bash -v` to see the execution of individual tests. Note that
the tests also check error cases that produce error messages, and this is not
a test failure.