summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 80ba265c02697f098bd845dfcfcae8aaff56c347 (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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Maintainer: tuxxx <nzb_tuxxx@proton.me>

pkgname=sparrow-wallet-git
_pkgname=sparrow-wallet
pkgver=2.5.1.r7.g0862974
pkgrel=1
_jdkver=25
pkgdesc="Desktop Bitcoin Wallet focused on security and privacy (git version)"
arch=('x86_64')
url="https://sparrowwallet.com/"
license=('Apache-2.0')
depends=(
    'alsa-lib'
    'at-spi2-core'
    'bash'
    'cairo'
    'freetype2'
    'fontconfig'
    'gdk-pixbuf2'
    'glib2'
    'glibc'
    'gtk3'
    'hicolor-icon-theme'
    'libgcc'
    'libglvnd'
    'libstdc++'
    'libusb'
    'libx11'
    'libxcrypt-compat'
    'libxext'
    'libxi'
    'libxrender'
    'libxtst'
    'libxxf86vm'
    'pango'
    'systemd-libs'
)
makedepends=(
    'git'
    'gradle'
    "java-environment=${_jdkver}"
)
optdepends=(
    'bitbox-udev: udev rules for BitBox hardware wallets'
    'bitcoin-daemon: connect to a local Bitcoin Core node'
    'keepkey-udev: udev rules for KeepKey hardware wallets'
    'ledger-udev: udev rules for Ledger hardware wallets'
    'python-ckcc-protocol: Python CLI and udev rules for Coldcard hardware wallets'
    'trezor-udev: udev rules for Trezor hardware wallets'
)
provides=('sparrow-wallet')
conflicts=('sparrow-wallet' 'sparrow-wallet-reproducible')
options=(!debug !strip)
source=(
    "sparrow::git+https://github.com/sparrowwallet/sparrow.git#branch=master"
    "drongo::git+https://github.com/sparrowwallet/drongo.git"
    "lark::git+https://github.com/sparrowwallet/lark.git"
)
sha256sums=(
    'SKIP'
    'SKIP'
    'SKIP'
)

pkgver() {
    cd "$srcdir/sparrow"
    git describe --long --tags --abbrev=7 | sed 's/\([^-]*-g\)/r\1/;s/-/./g'
}

prepare() {
    cd "$srcdir/sparrow"
    git submodule init
    git config submodule.drongo.url "$srcdir/drongo"
    git config submodule.lark.url "$srcdir/lark"
    git -c protocol.file.allow=always submodule update
}

_set_jdk() {
    local _jdk_home

    for _jdk_home in "/usr/lib/jvm/java-${_jdkver}-temurin" /usr/lib/jvm/java-"${_jdkver}"-*; do
        [[ -x "${_jdk_home}/bin/jpackage" ]] && break
    done
    if [[ ! -x "${_jdk_home}/bin/jpackage" ]]; then
        echo "ERROR: JDK ${_jdkver} with jpackage was not found under /usr/lib/jvm" >&2
        return 1
    fi

    export JAVA_HOME="${_jdk_home}"
    export PATH="${JAVA_HOME}/bin:${PATH}"
}

build() {
    _set_jdk
    cd "$srcdir/sparrow"

    echo "Building ${pkgname} with Java $(java -version 2>&1 | head -n1)"

    echo "Creating jlink runtime image..."
    gradle --no-daemon jlink

    echo "Creating jpackage application image..."
    gradle --no-daemon jpackageImage
}

check() {
    _set_jdk
    cd "$srcdir/sparrow"

    echo "Testing ${pkgname} with Java $(java -version 2>&1 | head -n1)"

    gradle --no-daemon check
}

package() {
    cd "$srcdir/sparrow"

    install -dm755 "${pkgdir}/opt/${_pkgname}"

    cp -a "build/jpackage/Sparrow"/* "${pkgdir}/opt/${_pkgname}/"

    install -dm755 "${pkgdir}/usr/bin"
    cat > "${pkgdir}/usr/bin/sparrow" << EOF
#!/bin/bash
exec /opt/${_pkgname}/bin/Sparrow "\$@"
EOF
    chmod +x "${pkgdir}/usr/bin/sparrow"

    install -dm755 "${pkgdir}/usr/share/applications"
    sed "s|/opt/sparrowwallet|/opt/${_pkgname}|g" \
        "src/main/deploy/package/linux/Sparrow.desktop" > \
        "${pkgdir}/usr/share/applications/${_pkgname}.desktop"

    install -Dm644 "src/main/deploy/package/linux/sparrowwallet-Sparrow-MimeInfo.xml" \
        "${pkgdir}/usr/share/mime/packages/${_pkgname}.xml"
}