summaryrefslogtreecommitdiff
path: root/libre/icedove-extension-enigmail/PKGBUILD
blob: edece235d6d2de9f61b9ce26d62b746b7b94e19d (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
# Maintainer (Arch): Eli Schwartz <eschwartz@archlinux.org>
# Contributor (Arch): Daniel Landau <daniel.landau@iki.fi>
# Contributor (Arch): Einhard Leichtfuß <alguien@respiranto.de>
# Contributor (Arch): Xyne
# Contributor (Arch): David Manouchehri <d@32t.ca>
# Contributor (Arch): Alexander Fehr <pizzapunk gmail com>
# Contributor (Arch): Thomas Jost <schnouki schnouki net>
# Contributor (Arch): Hinrich Harms <arch hinrich de>
# Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>

# parabola changes and rationale:
# * allow building arch-dependent versioned packages
# * apply dependency version constraints


_pkgname=thunderbird-extension-enigmail
pkgname=icedove-extension-enigmail
_pkgver_x86_64=2.1.6
_pkgver_i686=2.1.6
_pkgver_armv7h=2.1.6
_pkgrel_x86_64=3
_pkgrel_i686=3
_pkgrel_armv7h=2
_icedove_epoch=1
eval "pkgver=\$_pkgver_${CARCH}" # this is actually an 'any' package
eval "pkgrel=\$_pkgrel_${CARCH}" # but our different arches do not always roll at the same speed
pkgdesc="OpenPGP message encryption and authentication for Icedove"
arch=('armv7h' 'i686' 'x86_64')
url="https://www.enigmail.net/"
license=('MPL' 'GPL3')
makedepends=('zip' 'python' 'perl')
replaces=($_pkgname 'icedove-enigmail')
conflicts=($_pkgname)
provides=($_pkgname)
source=("https://www.enigmail.net/download/source/enigmail-${pkgver}.tar.gz"{,.asc}
        "0001-preferences-disable-pEpAutoDownload-by-default.patch")
_sha512sums_x86_64=('72159287601ed95052fcdeb3c973714e775150ba41894ecb6474798fd5109ab18dee0e3b8874a920fd07d3b184ed2034cf75f7baff4e14307d8739a312193919'
                    'SKIP'
                    'baebd963400574db89be747a4419534f945bdc64136d4014656ff98a9615a23984bca724da3f3840670979aab08ce441eee067921e21d0cb216938a20ed785b2')
_sha512sums_i686=('72159287601ed95052fcdeb3c973714e775150ba41894ecb6474798fd5109ab18dee0e3b8874a920fd07d3b184ed2034cf75f7baff4e14307d8739a312193919'
                  'SKIP'
                  'baebd963400574db89be747a4419534f945bdc64136d4014656ff98a9615a23984bca724da3f3840670979aab08ce441eee067921e21d0cb216938a20ed785b2')
_sha512sums_armv7h=('72159287601ed95052fcdeb3c973714e775150ba41894ecb6474798fd5109ab18dee0e3b8874a920fd07d3b184ed2034cf75f7baff4e14307d8739a312193919'
                    'SKIP'
                    'baebd963400574db89be747a4419534f945bdc64136d4014656ff98a9615a23984bca724da3f3840670979aab08ce441eee067921e21d0cb216938a20ed785b2')
eval "sha512sums=(\${_sha512sums_${CARCH}[*]})"
validpgpkeys=('4F9F89F5505AC1D1A260631CDB1187B9DD5F693B') # Patrick Brunschwig <patrick@enigmail.net>


_version_constraint() # (dep_pkgname)
{
  local dep_pkgname=$1
  local full_version=$(pacman -S --print-format='%v' ${dep_pkgname} | tail -n 1)

  if   [[ -z "${full_version}" ]] || [[ "${full_version}" =~ ' ' ]]
  then echo "ERROR: _version_constraint() dep_pkgname=${dep_pkgname} full_version='${full_version}'" >&2
       exit 1
  else local version=${full_version%-*}
       local version_inc=${version%.*}.$(( ${version##*.} + 1 ))
       local constraint_string="${dep_pkgname}>=${version} ${dep_pkgname}<${version_inc}"

       echo "applied version constraint: ${constraint_string}" >&2
       echo -n "${constraint_string}"
  fi
}


prepare() {
    cd "${srcdir}"/enigmail

    # Using vendor settings via /usr/lib/thunderbird/defaults/preferences/enigmail.js
    # does not seem to work.
    patch -p1 -i ../0001-preferences-disable-pEpAutoDownload-by-default.patch
}

build() {
    cd "${srcdir}"/enigmail

    ./configure
    make -j1 # fails with -j greater than 1
}

package() {
    cd "${srcdir}"/enigmail

    # dependency version contraints
    local min_max_icedove_vers=( $(grep strict_.*_version build-tb/dist/manifest.json | sed 's|.*: "\([0-9]*\)\..*|\1|g') )
    local min_icedove_ver=${min_max_icedove_vers[0]}
    local max_icedove_ver=${min_max_icedove_vers[1]}
    local icedove_constraint_string="icedove>=${_icedove_epoch}:${min_icedove_ver} icedove<${_icedove_epoch}:$(( max_icedove_ver + 1 ))"
    local gnupg_constraint_string="$(_version_constraint 'gnupg')"
    if   (( ${min_icedove_ver} + 0 )) && (( ${max_icedove_ver} + 0 ))
    then depends+=( ${icedove_constraint_string} ${gnupg_constraint_string} )
         echo "applied version constraint: icedove>=${min_icedove_ver} icedove<$(( max_icedove_ver + 1 ))"
    else echo "ERROR: failed to parse icedove version from manifest.json min_icedove_ver='${min_icedove_ver}'" >&2
         return 1
    fi

    if ! _extension_id="$(sed -n '/.*<em:id>\(.*\)<\/em:id>.*/{s//\1/p;q}' build-tb/dist/install.rdf 2>/dev/null)" ||
            [[ -z $_extension_id ]]; then
        _extension_id="$(sed -n 's/.*"id": "\(.*\)".*/\1/p' build-tb/dist/manifest.json)"
    fi
    _extension_dest="${pkgdir}/usr/lib/icedove/extensions/${_extension_id}"
    # Should this extension be unpacked or not?
    if grep -q '<em:unpack>true</em:unpack>' build-tb/dist/install.rdf 2>/dev/null; then
        install -dm755 "${_extension_dest}"
        cp -R build-tb/dist/* "${_extension_dest}"
        chmod -R ugo+rX "${_extension_dest}"
    else
        install -Dm644 build-tb/enigmail-${pkgver}.xpi "${_extension_dest}.xpi"
    fi
}