# -*- 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           github 1.0

github.setup        macfuse macfuse 5.1.3 macfuse-
revision            1
name                macfuse
conflicts           osxfuse
categories          fuse
platforms           {darwin >= 21}
supported_archs     arm64 x86_64
license             Restrictive
maintainers         {makr @mohd-akram} {ra1nb0w @ra1nb0w} openmaintainer

description         FUSE for macOS

long_description    FUSE extends macOS by adding support for user space file \
                    systems.

homepage            https://macfuse.github.io/

github.tarball_from releases
distname            ${name}-${version}
use_dmg             yes

checksums           rmd160  9c30a9246bfd37d988902eae1155770fb4ebc31a \
                    sha256  e5f80ff8c3df826e997fb786b35125a0c6a672f4bba2770b0def6ba63ca4ef81 \
                    size    13323409

set pkg             ${workpath}/pkg/Core.pkg

post-extract {
    system -W ${worksrcpath} \
        "pkgutil --expand 'Extras/macFUSE ${version}.pkg' ${workpath}/pkg"
    system -W ${pkg} "gzip -dc Payload | cpio -id"
}

use_configure       no

set fs_dir          /Library/Filesystems
set dir             ${fs_dir}/macfuse.fs

build {
    system -W ${pkg} "install_name_tool -id ${prefix}/lib/libfuse.2.dylib \
        usr/local/lib/libfuse.2.dylib"
    system -W ${pkg} "install_name_tool -id ${prefix}/lib/libfuse3.4.dylib \
        usr/local/lib/libfuse3.4.dylib"
    system -W ${pkg} "install_name_tool \
        -id ${prefix}/Library/Frameworks/macFUSE.framework/Versions/A/macFUSE \
        -change /usr/local/lib/libfuse.2.dylib ${prefix}/lib/libfuse.2.dylib \
        Library/Frameworks/macFUSE.framework/Versions/A/macFUSE"
    system -W ${pkg} "codesign -fs - \
        usr/local/lib/libfuse.2.dylib \
        usr/local/lib/libfuse3.4.dylib \
        Library/Frameworks/macFUSE.framework/Versions/A/macFUSE"
    reinplace "s|/usr/local|${prefix}|g" {*}[glob ${pkg}/usr/local/lib/pkgconfig/*]
    # remove FSKit extension on versions older than Tahoe
    if {${os.major} < 25} {
        delete ${pkg}${dir}/Contents/Resources/macfuse.app
        delete ${pkg}${dir}/Contents/_CodeSignature
    }
}

destroot {
    copy ${pkg}${fs_dir} ${destroot}${prefix}/Library
    xinstall -W ${pkg}${dir}/Contents/Resources -m 4755 load_macfuse mount_macfuse \
        ${destroot}${prefix}${dir}/Contents/Resources

    copy {*}[glob ${pkg}/Library/Frameworks/*] ${destroot}${prefix}/Library/Frameworks

    copy {*}[glob ${pkg}/usr/local/include/*] ${destroot}${prefix}/include
    copy {*}[glob -type f ${pkg}/usr/local/lib/*] ${destroot}${prefix}/lib
    copy {*}[glob ${pkg}/usr/local/lib/pkgconfig/*] ${destroot}${prefix}/lib/pkgconfig
}

variant fs_link description "Link ${name} to a .fs bundle in /Library/Filesystems" {
    post-destroot {
        xinstall -d ${destroot}${fs_dir}
        ln -sf ${prefix}${dir} ${destroot}${dir}
    }

    destroot.violate_mtree  yes
}

if {![variant_isset fs_link]} {
    notes "
    Run the following before using macFUSE:

        sudo ln -fsn ${prefix}${dir} ${dir}

    Alternatively, use the +fs_link variant to automatically create this symlink.
    "
}
