aboutsummaryrefslogtreecommitdiff
path: root/build.bash
AgeCommit message (Collapse)Author
2025-04-13Revert "Build with v2 extensions" / GOAMD64=v2Jakob Unterwurzacher
As seen in https://github.com/rfjakob/gocryptfs/issues/908, there are users still running x86-64-v1 cpus. They get This program can only be run on AMD64 processors with v2 microarchitecture support. and cannot read their encrypted files. Build for AMD64v1 again an accept the XChaCha20 performance hit for for some cpus ( https://github.com/golang/go/issues/67240 ). This reverts commit f5007b28c366d1a9671146710975679a154f30f8. Related: https://github.com/rfjakob/gocryptfs/issues/828 https://github.com/rfjakob/gocryptfs/pull/833 https://github.com/apptainer/apptainer/issues/2873 https://github.com/golang/go/issues/67240
2024-04-18Build with v2 extensionszp
Enables older CPUs (2008-2013) to take advantage of certain hardware accelerators. Closes #828
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