aboutsummaryrefslogtreecommitdiff
path: root/build.bash
AgeCommit message (Collapse)Author
2021-09-28build.bash: also try BSD date syntax for converting SOURCE_DATE_EPOCHJakob Unterwurzacher
GNU date syntax does not work on macos. Fixes https://github.com/rfjakob/gocryptfs/issues/570
2021-08-18Drop workarounds for Go 1.11 and Go 1.12Jakob Unterwurzacher
2021-06-04Add contrib/atomicrenameJakob Unterwurzacher
$ ./contrib/atomicrename/atomicrename -h atomicrename creates 100 "src" files in the current directory, renames them in random order over a single "dst" file while reading the "dst" file concurrently in a loop. Progress and errors are reported as they occour in addition to a summary printed at the end. cifs and fuse filesystems are known to fail, local filesystems and nfs seem ok. See https://github.com/hanwen/go-fuse/issues/398 for background info.
2021-05-26Add contrib/findholesJakob Unterwurzacher
Utility and libs to find hole/data segments using lseek.
2020-10-04build.bash: show "go mod edit -replace" in version stringJakob Unterwurzacher
If you do something like this, go mod edit -replace github.com/hanwen/go-fuse/v2=/home/jakob/go/src/github.com/hanwen/go-fuse the version string of the resulting binary should reflect that. Before: gocryptfs v1.8.0-135-g352b547-dirty.gofuse_v2api; go-fuse v2.0.4-0.20200908172753-0b6cbc515082; 2020-10-03 go1.15.2 linux/amd64 After: gocryptfs v1.8.0-135-g352b547-dirty.gofuse_v2api; go-fuse v2.0.4-0.20200908172753-0b6cbc515082 => /home/jakob/go/src/github.com/hanwen/go-fuse; 2020-10-03 go1.15.2 linux/amd64
2020-05-17Update go-fuse import path to github.com/hanwen/go-fuse/v2Jakob Unterwurzacher
We need https://github.com/hanwen/go-fuse/commit/fd7328faf9fdf75709f7ba7df7072aaf4eeb18b3 to fix a crash reported in https://github.com/rfjakob/gocryptfs/issues/430 : 2019/10/30 17:14:16 Unknown opcode 2016 panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x508d38] This patch is only in the v2.x.x branch. Upgrade to v2, as the old API is also supported there. Running git grep hanwen/go-fuse | grep -v hanwen/go-fuse/v2 to check for forgotten references comes back clean.
2020-04-18build.bash: handle missing git tagsJakob Unterwurzacher
The case of a git repo without any tags used to fail with: fatal: No names found, cannot describe anything. Now we continue, using "[no_tags_found]" as the version string.
2020-04-18build.bash: don't enable -buildmode=pie for static buildsJakob Unterwurzacher
Causes warnings: $ ./build-without-openssl.bash # github.com/rfjakob/gocryptfs loadinternal: cannot find runtime/cgo # github.com/rfjakob/gocryptfs/gocryptfs-xray loadinternal: cannot find runtime/cgo # github.com/rfjakob/gocryptfs/contrib/statfs loadinternal: cannot find runtime/cgo gocryptfs v1.7.1-48-gf6b1c68 without_openssl; go-fuse v1.0.1-0.20190319092520-161a16484456; 2020-04-18 go1.13.6 linux/amd64 https://github.com/golang/go/issues/30986
2020-04-13travis: fix Go Modules build problemsJakob Unterwurzacher
2020-04-13build.bash: use GOFLAGS -trimpath and enable PIEJakob Unterwurzacher
GOFLAGS exists since Go 1.11: https://golang.org/doc/go1.11 https://github.com/rfjakob/gocryptfs/pull/460
2020-04-13Convert build and packaging scripts to Go ModulesJakob Unterwurzacher
2020-04-13shellcheck: make top-level bash scripts warning-freeJakob Unterwurzacher
And run shellcheck in test.bash.
2020-04-13build.bash: append branch name != masterJakob Unterwurzacher
2019-09-08Expand statfs man page a little and include in build.bashJakob Unterwurzacher
2019-03-18Add missing -ldflags for gocryptfs-xrayMaxim Baz
2018-12-27build.bash: Escape LDFLAGS before passing them to 'go build'.Sebastian Lackner
This ensures that ./build.bash still works when the LDFLAGS environment variable contains multiple options, e.g., LDFLAGS="-lpthread -lm". The correct way of passing multiple options is discussed here: https://github.com/golang/go/issues/6234 For some unknown reason, the method only works when -extldflags is the last argument - is this a bug in Go?
2018-12-16build.bash: support user-set LDFLAGSJakob Unterwurzacher
As requested at https://github.com/rfjakob/gocryptfs/pull/280
2018-12-16build.bash: use -trimpath for reproducible buildsJakob Unterwurzacher
Support both Go 1.7...1.9 and Go 1.10 by checking the version and using the appropropriate syntax. We trim GOPATH/src and use both -gcflags and -asmflags like Debian does in https://salsa.debian.org/go-team/packages/dh-golang/blob/ab2bbcfc00b1229066cc3d3d1195ac901a2b9411/lib/Debian/Debhelper/Buildsystem/golang.pm#L465 .
2018-12-16build.bash: respect SOURCE_DATE_EPOCHJakob Unterwurzacher
SOURCE_DATE_EPOCH seems to be the standard env variable for faking a build date for reproducible builds.
2018-08-15build.bash: handle args containing spacesJakob Unterwurzacher
Fixes ./build.bash -tags "enable_trezor without_openssl"
2017-11-01Add source packaging scriptJakob Unterwurzacher
2017-11-01build.bash: support VERSION file and vendored go-fuseJakob Unterwurzacher
Prepares for the release of all-in-one source tarballs that include all non-stdlib dependencies.
2017-09-06build.bash: make reproduceable builds easierJakob Unterwurzacher
* Reduce the build time precision from seconds to days * Allow to specify an arbitrary build date through an env variable
2017-08-02build.bash: implement "you need Go 1.5" lockout in pure GoJakob Unterwurzacher
As noticed by @riking, the logic in the bash script will break when Go 1 version numbers reach double-digits. Instead, use a build tag "!go1.5" to cause a syntax error: $ /opt/go1.4.3/bin/go build can't load package: package github.com/rfjakob/gocryptfs: go1.4.go:5:1: expected 'package', found 'STRING' "You need Go 1.5 or higher to compile gocryptfs!" Fixes https://github.com/rfjakob/gocryptfs/issues/133
2017-06-20build.bash: use plain "git describe" for go-fuseJakob Unterwurzacher
go-fuse recently added a git tag - let's use it.
2017-03-05Drop Go 1.4 compatability code everywhereJakob Unterwurzacher
Yields a nice reduction in code size.
2017-02-20build.bash: use $(go env GOPATH)Jakob Unterwurzacher
2017-02-19build.bash: deduplicate build callJakob Unterwurzacher
2017-02-19build.bash: GOPATH may be unset since Go v1.8. Handle it.Jakob Unterwurzacher
2016-12-06build-without-openssl: compile staticallyJakob Unterwurzacher
$ ldd gocryptfs not a dynamic executable $ file gocryptfs gocryptfs: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
2016-10-30build.bash: rename "GOPATH2" to "GOPATH1"Jakob Unterwurzacher
It's the 1st component of GOPATH, so call it like that.
2016-10-30build.bash: abort if we hit a known-bad go-fuse versionJakob Unterwurzacher
Also, standardize to "if [[ ]] ; then" style.
2016-10-04without_openssl: support compiling completely without opensslJakob Unterwurzacher
Build helper script: build-without-openssl.bash
2016-09-25xray: add "gocryptfs-xray", on-disk-format exploration toolJakob Unterwurzacher
Example output for a file encrypted in reverse mode: Header: Version: 2, Id: 0b7f5e2574e4afa859a9bb156a2e7772 Block 0: IV: 0b7f5e2574e4afa859a9bb156a2e7773, Tag: bf39279ac6b1ccd852567aaf26ee386b, Len: 4128 Block 1: IV: 0b7f5e2574e4afa859a9bb156a2e7774, Tag: a4f0f9cde7f70a752254aa8fe7718699, Len: 4128 Block 2: IV: 0b7f5e2574e4afa859a9bb156a2e7775, Tag: b467b153016fc1d531818b65ab9e24f6, Len: 4128 Block 3: IV: 0b7f5e2574e4afa859a9bb156a2e7776, Tag: 1fcb7ffd8f1816fbe807df8148718a5c, Len: 4128 Block 4: IV: 0b7f5e2574e4afa859a9bb156a2e7777, Tag: a217e7933ef434c9f03ad931bb5fde9b, Len: 4128 Block 5: IV: 0b7f5e2574e4afa859a9bb156a2e7778, Tag: f3e6240d75cd66371a0b301111d6f1fc, Len: 4128 Block 6: IV: 0b7f5e2574e4afa859a9bb156a2e7779, Tag: bc85d322ebc7761ae5ef114ea3903a56, Len: 4128 Block 7: IV: 0b7f5e2574e4afa859a9bb156a2e777a, Tag: efda01c6b794690f939a12d6d49ac3af, Len: 4128 Block 8: IV: 0b7f5e2574e4afa859a9bb156a2e777b, Tag: b198329d489d1392080f710206932ff0, Len: 2907
2016-07-03main: bake build date into version stringJakob Unterwurzacher
$ gocryptfs -version gocryptfs v0.12-36-ge021b9d-dirty; go-fuse a4c968c; 2016-07-03 go1.6.2
2016-06-29build.bash: support colon-separated GOPATH variableJakob Unterwurzacher
Fixes issue #31 https://github.com/rfjakob/gocryptfs/issues/31
2016-06-19build.bash: check if the go-fuse tree is dirtyJakob Unterwurzacher
If it is, append "-dirty" to the hash.
2016-06-19main: drop "on-disk format" from -version output, add Go versionJakob Unterwurzacher
As v0.4 introduced ext4-style feature flags, the on-disk format version is unlinkely to change. Drop it from the version output to reduce clutter. Use "gocryptfs -version -debug" to see it. Add the Go version string because only Go 1.6 and newer have an optimized AES-GCM implementation. This will help users to understand the performance of their build.
2016-06-14build.bash: fail early if the go binary does not existJakob Unterwurzacher
This used to fail in an ugly way: $ ./build.bash ./build.bash: line 13: go: command not found ./build.bash: line 15: [: too many arguments ./build.bash: line 20: go: command not found
2016-04-28build.bash: replace "git -C"Jakob Unterwurzacher
"-C" is not supported on older git versions. Instead, just cd into the directory. See issue #20.
2016-04-10build.bash: bake the go-fuse commit hash into the binariesv0.9Jakob Unterwurzacher
2016-01-09build.bash: copy binary to $GOPATH/binJakob Unterwurzacher
2015-12-20Make build.bash work when called from outside the gocryptfs directoryJakob Unterwurzacher
2015-12-20Make build.bash version bake-in compatible with Go 1.3 and 1.4Jakob Unterwurzacher
2015-11-01Bake version string into binary, add "--version" switchJakob Unterwurzacher
Example: ./gocryptfs -version gocryptfs v0.2-20-gabcef9e-dirty; on-disk format 1 Note that you MUST compile using "./build.bash" for this to work.
2015-10-11Move main files to top level dirJakob Unterwurzacher
This is in preparation of getting rid of the shell wrapper
2015-10-07Add test.bashv0.1Jakob Unterwurzacher
...also adapt the cryptfs tests for 256 bit long keys