diff options
Diffstat (limited to 'pcr/ring/PKGBUILD')
-rw-r--r-- | pcr/ring/PKGBUILD | 206 |
1 files changed, 130 insertions, 76 deletions
diff --git a/pcr/ring/PKGBUILD b/pcr/ring/PKGBUILD index da0b1b885..43422a337 100644 --- a/pcr/ring/PKGBUILD +++ b/pcr/ring/PKGBUILD @@ -2,92 +2,118 @@ # Contributor: Omar Vega Ramos <ovruni@gnu.org.pe> # Contributor: Isaac David <isacdaavid@at@isacdaavid@dot@info> -# TODO: add explicit versioned dependency canary on icu to the -# appropriate package(s) -- à la iceweasel -- so as to avoid -# breakage when Arch bumps the soname -# NOTE: the same has also been seen for 'enchant' and 'jsoncpp' - -pkgbase=ring -pkgname=(ring-daemon ring-lrc ring-client-gnome) -pkgdesc="The GNU Ring VoIP system" -_pkgver=20171024.1.eadbdeb -_SOURCE_DATE_EPOCH=1508858419 - -# To figure out what the above value of _SOURCE_DATE_EPOCH should be, -# run -# -# git log -n1 --format=%ct ${_pkgver##*.} +_pkgver=20171129.2.cf5bbff +_SOURCE_DATE_EPOCH=1511972974 +# The above are thing things that you must set each new version. # -# from inside of the repository created by +# The _SOURCE_DATE_EPOCH should be +# git log -n1 --format=%ct "${_pkgver##*.}" +# from the git repo +# git clone https://gerrit-ring.savoirfairelinux.com/ring-project # -# git clone https://gerrit-ring.savoirfairelinux.com/ring-project +# But I automated that for you! +# ./upd-helper set-pkgver YYYYMMDD.N.GITVER # -# TODO: the above is really not appropriate - we are not building from git master -# the source date should be the date of the tarball -# which is actually made from git 'production' branch -# -# git clone https://gerrit-ring.savoirfairelinux.com/ring-project -# cd ring-project -# git log production -n1 --format=%ct ${_pkgver##*.} +# It will update _pkgver, _SOURCE_DATE_EPOCH, and sha256sums, and give +# you a summary of files that have changed that I think you (future +# me?), as the packager, should care about. +pkgbase=ring +pkgname=(ring-daemon ring-lrc ring-client-gnome) +# stick a bunch of keywords in the pkgdesc because "ring" is a +# terrible search term. +pkgdesc="The GNU Ring (formerly ring.cx and SFLphone) VoIP system" epoch=1 pkgver=1.0_${_pkgver} -pkgrel=2.3 +pkgrel=1 arch=("i686" "x86_64") -url="https://ring.cx/" +url="https://gnu.org/software/ring/" source=("http://dl.ring.cx/ring-release/tarballs/${pkgbase}_${_pkgver}.tar.gz" - 'kashmir.tar.gz::https://github.com/Corvusoft/kashmir-dependency/archive/master.tar.gz') -noextract=('kashmir.tar.gz') + 0001-contrib-recursive-dependency-tracking.patch) license=('GPL3') -sha256sums=('4f58183d7669b2fa06d72828f9fc8ceeec74d598bd656618cdd8cbe6a0ec55c6' - '4d2040fae7dea3306580ac5b9c3d60e64314305db1b59d2d14c802a12e45e6f9') +sha256sums=('0a23f8052a4df2a7aee40434cd59f17d0d5e97c73306ba35f99f2721b305ed48' + 'a9b308e524ea5b0b5db09fd55e6c0d96edbea6594f987e10e7b77251217f8e0c') -# Get this list by looking at `daemon/contrib/src/*/rules.mak`; look -# for packages that add themselves to both PKGS and FOUND_PKGS. +# Get this list by looking at `daemon/contrib/src/*/rules.mak`. +# +# This is the complete list (with "lib" prepended or similar as +# necessary). +# +# Entries are commented out if +# - it's something we don't need to name because it's already in the +# deps list ("DUP"). Actually, don't comment out any .so files +# that we name for DUPs. +# - we won't be using it ("IGNORE"); these are things that don't add +# themselves to PKGS, and aren't in DEPS_* for another package that +# we don't IGNORE +# - or we (*gasp*) want to use the contrib version instead of the +# system version ("CONTRIB") +# +# Also note when we forcefully override the build-system's automatic +# logic on when to use the system version vs the contrib version +# ("FORCE"). For system packages, these are things we don't IGNORE, +# but don't add themselves PKGS_FOUND. For contrib packages, these +# are things that might get added to PKG_FOUND that we don't want to. +# We'll be adding `--disable-PKG` or `--enable-PKG` flags to +# `../bootstrap` below for these. _daemon_contrib=( - boost # CONTRIB: TODO: IDK: no PKGS_FOUND logic - crypto++ - ffmpeg - #gnutls # DUP: {ffmpeg,opendht}->gnutls - #gsm # CONTRIB: TODO: IDK: no PKGS_FOUND logic - #jack # DUP: ffmpeg->jack - jsoncpp - msgpack-c - libnatpmp # NOTE: force system version; see below - #libsamplerate # DUP: ffmpeg->jack->libsamplerate - #libsndfile # DUP: ffmpeg->libsamplerate->libsndfile - libupnp - #libvorbis # DUP: ffmpeg->libvorbis - #libogg # DUP: ffmpeg->{libvorbis,speex}->libogg - #nettle # DUP: {ffmpeg,opendht}->gnutls->nettle - opendht - #opus # DUP: ffmpeg->opus - #pcre # DUP: {base,base-devel}->grep->pcre - #pjproject # CONTRIB: Added patches for gnutls - restbed - #secp256k1 # CONTRIB: extra crypto, AUR package - #speex # DUP: ffmpeg->speex - #speexdsp # DUP: ffmpeg->speex->speexdsp - yaml-cpp - #zlib # DUP: {pcre,ffmpeg,opendht,gnutls}->zlib + #argon2 # DUP: opendht->argon2 (DEPS_opendht) + #asio # CONTRIB: want commit f5c57, which isn't in a stable release yet + dbus-c++ # FORCE: no PKGS_FOUND logic because alleged gcc7 bug? + ffmpeg libavutil.so libavcodec.so libavformat.so libavdevice.so libswscale.so + #flac # DUP: libsndfile->flac + #libgcrypt # IGNORE: not in PKGS (?) + #gmp # IGNORE: not in PKGS (DEPS_nettle DEPS_secp256k1) + #gnutls # CONTRIB: ring is not yet compatible with gnutls>=3.5.11 + #libgpg-error # IGNORE: not in PKGS (DEPS_gcrypt) + #gsm # FORCE+DUP: IDK why no PKGS_FOUND; ffmpeg->gsm + #glibc # DUP: base->glibc (contribname=iconv) + #jack # IGNORE: not in PKGS: ("disabled by default for now") + jsoncpp # + msgpack-c # + libnatpmp # FORCE: package doesn't include a pkg-config file + #nettle # DUP: {gnutls,opendht}->nettle + #libogg # DUP: ffmpeg->{libvorbis,speex,flac}->libogg + opendht # + #opus # DUP: ffmpeg->opus + #pcre # DUP: {base,base-devel}->grep->pcre + #pjproject # CONTRIB+FORCE: Added patches for gnutls + portaudio # + restbed # FORCE: package doesn't include a pkg-config file + #libsamplerate # DUP: {ffmpeg,portaudio}->jack->libsamplerate + secp256k1-git libsecp256k1.so + #libsndfile # DUP: libsamplerate->libsndfile + #speex # DUP: ffmpeg->speex + #speexdsp # DUP: speex>-speexdsp + libupnp # + #util-linux # DUP: {base,base-devel}->util-linux (DEPS_prproject=uuid) + libvorbisenc.so # DUP: ffmpeg->libvorbis + #libvpx # IGNORE: not in PKGS (DEPS_ffmpeg) + #x264 # IGNORE: not in PKGS (DEPS_ffmpeg) + yaml-cpp # + #zlib # DUP: {pcre,ffmpeg,gnutls}->zlib ) -# We may pass several `--disable-X` flags to `../bootstrap` below; to -# force the system version of dependencies. -# -# Disable contrib 'natpmp' to force the system version of libnatpmp -# because the detection logic uses pkg-config, but the libnatpmp -# package doesn't include pkg-config files; so the build system thinks -# we don't have it. -_makedepends_daemon=() -_depends_daemon=("${_daemon_contrib[@]}" dbus-c++) +_makedepends_daemon=( + boost # a compile-time dep for some features in yaml-cpp +) +_depends_daemon=( + "${_daemon_contrib[@]}" + libidn2 +) _makedepends_lrc=(qt5-tools) _depends_lrc=(qt5-base) _makedepends_client_gnome=() -_depends_client_gnome=(clutter-gtk evolution-data-server libnm-glib qrencode) +_depends_client_gnome=( + clutter-gtk + evolution-data-server + gnome-icon-theme-symbolic + libnm-glib + qrencode +) makedepends=( cmake @@ -100,19 +126,47 @@ makedepends=( "${_depends_client_gnome[@]}" ) -#checkdepends=(cppunit swig) +# The above list of dependencies can be unwieldy! Running +# `./upd-helper find-dups` will suggest things that can be removed. -_makedepends_ringpy=(autoconf-archive gnome-icon-theme-symbolic libe-book) +# make-ring.py says we also need the following, but I don't agree +# (`./upd-helper diff-depends` will help you update this list): +# +# - autoconf-archive: for building from git, not release tarballs +# - cppunit: for testing +# - libe-book: They are confusing 'libebook' (which Arch & Parabola don't have) with the different 'libe-book' (which we do have) +# - swig: for ring-daemon NodeJS module +# - yasm: for building contrib vpx prepare() { - cp "$srcdir/kashmir.tar.gz" "$srcdir/ring-project/daemon/contrib/tarballs/" + cd "$srcdir/ring-project/daemon" + patch -p1 -i "$srcdir/0001-contrib-recursive-dependency-tracking.patch" + + # Remove unused contrib tarballs, to ensure that we didn't make a mistake + local file + for file in "$srcdir/ring-project/daemon/contrib/tarballs/"*; do + case "${file##*/}" in + asio-*) : skip "$file" ;; + gnutls-*) : skip "$file" ;; + pjproject-*) : skip "$file" ;; + *) rm -f -- "$file" ;; + esac + done } -build() { +build() ( + set -x + cd "$srcdir/ring-project/daemon/contrib" mkdir native cd native - ../bootstrap --disable-downloads --disable-natpmp --disable-asio + ../bootstrap \ + --disable-downloads \ + --disable-dbus-cpp \ + --disable-gsm \ + --disable-natpmp \ + --enable-pjproject \ + --disable-restbed make BATCH_MODE=1 cd "$srcdir/ring-project/daemon" @@ -137,10 +191,10 @@ build() { -DCMAKE_BUILD_TYPE=Release \ -DLibRingClient_PROJECT_DIR="$srcdir/ring-project/lrc" make -} +) package_ring-daemon() { - pkgdesc="The communication daemon of the GNU Ring VoIP system" + pkgdesc="The communication daemon of ${pkgdesc,}" depends=("${_depends_daemon[@]}") provides=("ring-daemon=2:$_pkgver") # AUR version scheme @@ -149,7 +203,7 @@ package_ring-daemon() { } package_ring-lrc() { - pkgdesc="A client library for the GNU Ring VoIP system" + pkgdesc="A client library for ${pkgdesc,}" depends=("${_depends_lrc[@]}" "ring-daemon=${epoch:+$epoch:}$pkgver") provides=("libringclient=2:$_pkgver") # AUR name replaces=("libringclient") # AUR name @@ -159,7 +213,7 @@ package_ring-lrc() { } package_ring-client-gnome() { - pkgdesc="A GTK+3 user interface for the GNU Ring VoIP system" + pkgdesc="A GTK+3 user interface for ${pkgdesc,}" depends=("${_depends_client_gnome[@]}" "ring-lrc=${epoch:+$epoch:}$pkgver") provides=("ring-gnome=3:$_pkgver") # AUR name replaces=("ring-gnome") # AUR name |