# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

PortSystem          1.0
PortGroup           golang 1.0
PortGroup           fuse 1.0

go.setup            github.com/rfjakob/gocryptfs 2.3.1 v
# Delete this on next update to use golang PortGroup's default ('archive')
github.tarball_from tarball
revision            0

categories          fuse
maintainers         {bochtler.io:macports @MarcelBochtler} \
                    openmaintainer
license             MIT
platforms           darwin
description         Encrypted overlay filesystem written in Go
long_description    {*}${description}
homepage            https://nuetzlich.net/gocryptfs/

checksums           ${distname}${extract.suffix} \
                        rmd160  b3ae8b01ad4219bc027378f6475b7f417a2c9647 \
                        sha256  0e440c66abe923792d11e9890fc893096f54a32347776589b25f9edb9e3eb8c2 \
                        size    1371916

set gitversionfuse "915cf5413cde"
go.vendors          gopkg.in/yaml.v3 \
                        lock    9f266ea9e77c \
                        rmd160  06dca2ede07b2f31c515b4711fbebc1d5359b5e4 \
                        sha256  e70dd42fb30b7b2d0129c5cdf0e079caaf5602cab24081fdac830ec01204fa59 \
                        size    86890 \
                    golang.org/x/term \
                        lock    a9ba230a4035 \
                        rmd160  2011606ab7a7f34f3deffe211d32ef2c89ebb195 \
                        sha256  3f372803b6ee7e65988d483eaf3696ec479b2cc3e42873e8d8e147c9600e40e2 \
                        size    14845 \
                    golang.org/x/sys \
                        lock    bc2c85ada10a \
                        rmd160  c4b2c26618cd3f02fe04653b3a4fbe6707de5716 \
                        sha256  b2526b52942c803a1687e16f87942bd0f0701b5d260fbaa35d53231e0a520577 \
                        size    1303117 \
                    golang.org/x/net \
                        lock    1185a9018129 \
                        rmd160  06766c092ba6050f64d884ea7319c7ba9225891d \
                        sha256  157ec6672ba40db471b1e5c4b9d08c9637388bafd475c93e3acf50b6bf2d2208 \
                        size    1228139 \
                    golang.org/x/crypto \
                        lock    32db794688a5 \
                        rmd160  02ab581de5510ce94205e0fe5a58aacd2cd375b8 \
                        sha256  2276178323ee1992d2e845e78ffb8fdce625ef24602b97719428fddaf9f2192f \
                        size    1732601 \
                    github.com/stretchr/testify \
                        lock    v1.6.1 \
                        rmd160  7e5b798212a8f15cd58a63985ae0b928eede8e6b \
                        sha256  44d77d9b5c1dc08fa710eac9bb324898210660458085cdf965b78a39b1010f2a \
                        size    84248 \
                    github.com/spf13/pflag \
                        lock    v1.0.5 \
                        rmd160  2ce81608a38c6f383a35bccd24d64361df5828c9 \
                        sha256  7f41acdcba65b1fab5b9b633947a139f9915b60f94bdab486cdbe9d90c54f61e \
                        size    50815 \
                    github.com/sabhiram/go-gitignore \
                        lock    54b8a0bf510f \
                        rmd160  a857fc463477e6b9f836e792a96a4685ae2e143f \
                        sha256  8da1f8a688c9217bad55da1738e9178017f5a9bb1e5ca2210b158f73d010219e \
                        size    8081 \
                    github.com/rfjakob/eme \
                        lock    v1.1.2 \
                        rmd160  27b6194560dbcdfdad845bbad4d1ed456486f8e4 \
                        sha256  beb9d8c20398ee8bf71dfc69cd082fba1e79eac2d1ae7d031909a673ca003a45 \
                        size    23188 \
                    github.com/pmezard/go-difflib \
                        lock    v1.0.0 \
                        rmd160  fc879bfbdef9e3ff50844def58404e2b5a613ab8 \
                        sha256  7cd492737641847266115f3060489a67f63581e521a8ec51efbc280c33fc991f \
                        size    11409 \
                    github.com/pkg/xattr \
                        lock    v0.4.3 \
                        rmd160  fdba0ff090e7ef820728334392fb5667fcdefcc5 \
                        sha256  e1623ed7d3f052c532f0f97fcbbc43ae7371a4016c182e591fff37b6f2df9c82 \
                        size    9445 \
                    github.com/kylelemons/godebug \
                        lock    d65d576e9348 \
                        rmd160  929cd615eff16a0c5ba2145b809b10016587a387 \
                        sha256  9cbb2db613bd3a62e2e3f39776c690fb0d2c320d2aa5391868ad16d2de28c10c \
                        size    14796 \
                    github.com/jacobsa/reqtrace \
                        lock    245c9e0234cb \
                        rmd160  872beac620d3eebbc1a343d1d2ca65f2dc6778bd \
                        sha256  e8ca3f8de13ce0f35c1cb2bb9c9be220c82f28a0a1ca80557e2afbbdf396a0c4 \
                        size    7808 \
                    github.com/jacobsa/ogletest \
                        lock    80d50a735a11 \
                        rmd160  d839d0d084bc62e25d23d65cee882b427b537c00 \
                        sha256  8e9eef43d47e4fc12b6e614bd6c97d102eabec107eabe72493763d45325501fd \
                        size    24200 \
                    github.com/jacobsa/oglemock \
                        lock    e94d794d06ff \
                        rmd160  cee16f043ba80e59483d3bfadf783077f8239110 \
                        sha256  5474b9f5228d6eda866293feb9c07729a55195fabd2cd77cd1c30e5291830ad9 \
                        size    35506 \
                    github.com/jacobsa/oglematchers \
                        lock    141901ea67cd \
                        rmd160  5c5dd8416ee4a236632eaa4fc1a1e5ce737eee45 \
                        sha256  4a45ac5d5b5c15af45761f15e3e14f4739b1cd79cd9493ddcd4744f65edc4b52 \
                        size    43827 \
                    github.com/hanwen/go-fuse \
                        lock    ${gitversionfuse} \
                        rmd160  02f4d3a41fe763097ac9f1b88f8b0cdad1ae4c4b \
                        sha256  d466c51b50238497708f40214587a06ee539f868c7c20833128b1f92d577abd9 \
                        size    187382 \
                    github.com/davecgh/go-spew \
                        lock    v1.1.0 \
                        rmd160  0303eae19a01f38fe314921fd965e4d09b9ef3ad \
                        sha256  810a597004388d68bb92d8aa612375419ba1080dd5fc2c66dd41b58f0ba4442c \
                        size    42348 \
                    github.com/aperturerobotics/jacobsa-crypto \
                        lock    v1.0.0 \
                        rmd160  6d34d0b1b4779666f969c1df6cb8934ed6468e6b \
                        sha256  f75a386f00a96aaf95975036513c3b837a601a66eb631e2d159c7f9322f33f60 \
                        size    3654688

# Build date should not be set to a variable value as this would prevent reproducible builds.
# Not setting it results in defaulting to '0000-00-00' when using the --version flag.
set builddate       "build_date_not_set"
set ldflags         "-X \"main.GitVersion=${version}\" -X \"main.GitVersionFuse=${gitversionfuse}\" -X \"main.BuildDate=${builddate}\""

build.args          -ldflags="${ldflags}"

# According to [1] there is no benefit to build gocryptfs with openssl on M1 Macs.
# According to [2] on most modern CPUs openssl provides no speed benefits. I confirmed this by tests on
# my Intel i7 Macbook Pro 2019. Therefore reducing the dependencies and defaulting to build it without openssl.
# [1]: https://github.com/rfjakob/gocryptfs/issues/556#issuecomment-848185514
# [2]: https://github.com/rfjakob/gocryptfs/wiki/CPU-Benchmarks
variant openssl description {Build with openssl support} {
    depends_lib-append  path:lib/libcrypto.dylib:openssl
}

variant doc description {Build man pages} {
    if {${configure.build_arch} eq "arm64"} {
        depends_build-append port:go-md2man

        post-build {
            system -W ${worksrcpath}/Documentation "${prefix}/bin/go-md2man -in=MANPAGE.md -out=${name}.1"
            system -W ${worksrcpath}/Documentation "${prefix}/bin/go-md2man -in=MANPAGE-XRAY.md -out=${name}-xray.1"
            system -W ${worksrcpath}/Documentation "${prefix}/bin/go-md2man -in=MANPAGE-STATFS.md -out=statfs.1"
        }
    } else {
        depends_build-append port:pandoc

        post-build {
            system -W ${worksrcpath}/Documentation "sh MANPAGE-render.bash"
        }
    }
}

default_variants +doc

if {![variant_isset openssl]} {
    build.env           CGO_ENABLED=0
    build.args-append   -tags without_openssl
}

destroot {
    xinstall -m 0755 ${worksrcpath}/${name} ${destroot}${prefix}/bin/
    xinstall -m 0755 ${worksrcpath}/Documentation/gocryptfs.1 ${destroot}${prefix}/share/man/man1
    xinstall -m 0755 ${worksrcpath}/Documentation/gocryptfs-xray.1 ${destroot}${prefix}/share/man/man1
    xinstall -m 0755 ${worksrcpath}/Documentation/statfs.1 ${destroot}${prefix}/share/man/man1
}

# Exclude pre-release versions.
github.livecheck.regex \
                    {([0-9.]+)}