# Maintainer: Limao Luo <luolimao+AUR@gmail.com>
# Maintainer: Solomon Choina <shlomochoina@gmail.com>
# (Added from network-manager package)
# Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Jan de Groot <jgc@archlinxu.org>
# Contributor: Wael Nasreddine <gandalf@siemens-mobiles.org>
# Contributor: Tor Krill <tor@krill.nu>
# Contributor: Will Rea <sillywilly@gmail.com>
# Contributor: Valentine Sinitsyn <e_val@inbox.ru>

pkgbase=networkmanager-git
_gitname=NetworkManager
pkgname=(networkmanager-git libnm-git nm-cloud-setup-git)
pkgver=1.45.4.r32631.gaa84b5f935
pkgrel=1
pkgdesc="Network Management daemon and user application"
arch=(i686 x86_64)
url=http://www.gnome.org/projects/$_gitname
license=(GPL2 LGPL2.1)
checkdepends=(libx11 python-dbus)
makedepends=(dnsmasq mobile-broadband-provider-info  meson ninja intltool dhclient openresolv iptables gobject-introspection gtk-doc ppp modemmanager
              iproute2 nss polkit wpa_supplicant libsoup systemd libgudev audit
             libnewt libndp libteam vala perl-yaml python-gobject git vala jansson bluez-libs
             glib2-docs)
source=(git+https://github.com/$_gitname/$_gitname
    NetworkManager.conf
    20-connectivity.conf)
sha256sums=('SKIP'
            '794915f947bb2eeb46301acff82a350aa691c187d4c43f07a13d971298b64928'
            '477d609aefd991c48aca93dc7ea5a77ebebf46e0481184530cceda4c0d8d72c6')
sha512sums=('SKIP'
            '60f3cd070ec52c8937ee2701a8397766da0a9318d98d89c2a287e6f50ca3a3c7ea07a7debe26f5ad637bb4f24391d4107669d7581d934cbc3e4a09d7d775d4af'
            'da52ba9603c279c1c865cc3bf63606e1daeeb2a22c68e4b0077e15c312e251b494c4f0c94bcb27c9f6923f8b69cd7ab9062d9b7ce499222d3d2240864ed9345f')

pkgver() {
    cd NetworkManager/
    local ver=$({ echo 'changequote([,])dnl';
     sed -rn 's/^m4_(define.*nm_.*_version.*)/\1dnl/p' configure.ac;
      echo 'nm_major_version.nm_minor_version.nm_micro_version';
                echo 'define(AC_INIT,$2)dnl'
                grep '^AC_INIT(.*)' configure.ac; } | m4)
  local rev=$(git rev-list --count HEAD)
  local git=$(git rev-parse --short HEAD)
  echo "$ver.r$rev.g$git"
}

build() {
    local meson_args=(
        -D more_logging=false \
        -D more_asserts=no \
        -D bluez5_dun=false \
        -D ebpf=true \
        -D docs=true \
        -D introspection=true \
        -D ld_gc=true \
        -D modify_system=true \
        -D polkit=true \
        -D teamdctl=true \
        -D wifi=true \
        -D libaudit=yes \
        -D config_dhcp_default=internal \
        -D config_dns_rc_manager_default=symlink \
        -D config_logging_backend_default=journal \
        -D config_plugins_default=keyfile,ibft \
        -D crypto=nss \
        -D dbus_conf_dir=/usr/share/dbus-1/system.d \
        -D dhclient=/usr/bin/dhclient \
        -D dhcpcd=/usr/bin/dhcpcd \
        -D dnsmasq=/usr/bin/dnsmasq \
        -D hostname_persist=default \
        -D iptables=/usr/bin/iptables \
        -D kernel_firmware_dir=/usr/lib/firmware \
        -D modem_manager=true \
        -D pppd_plugin_dir=/usr/lib/pppd/$_pppver \
        -D pppd=/usr/bin/pppd \
        -D resolvconf=/usr/bin/resolvconf \
        -D session_tracking=systemd \
        -D suspend_resume=systemd \
        -D system_ca_path=/etc/ssl/certs \
        -D systemd_journal=true \
        -D systemdsystemunitdir=/usr/lib/systemd/system \
        -D udev_dir=/usr/lib/udev \
        -D iwd=true \
        -D selinux=false \
        -D qt=false
      )
      arch-meson NetworkManager build "${meson_args[@]}"
}

#check() {
#  meson test -C build --print-errorlogs
#}

_pick() {
  local p="$1" f d; shift
  for f; do
    d="$srcdir/$p/${f#$pkgdir/}"
    mkdir -p "$(dirname "$d")"
    mv "$f" "$d"
    rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
  done
}

package_networkmanager-git() {
   depends=(iproute2 mobile-broadband-provider-info polkit wpa_supplicant libsoup openresolv libnewt libndp libteam curl bluez-libs libpsl audit libnm-git)
    optdepends=(
    'dnsmasq: connection sharing'
    'dhcpcd: alternative DHCP client'
    'bluez: Bluetooth support'
    'openresolv: resolvconf support'
    'ppp: dialup connection support'
    'dhclient: External DHCP client'
    'modemmanager: cellular network support'
    'firewalld: firewall support'
    'iwd: wpa_supplicant alternative'
    'polkit: let non-root users control networking'
    'nftables: connection sharing'
    'pacrunner: PAC proxy support'
)
    backup=('etc/NetworkManager/NetworkManager.conf')
    conflicts=('networkmanager')
    provides=('networkmanager')

    DESTDIR="$pkgdir" meson install -C build

  install -dm700 "$pkgdir/etc/NetworkManager/system-connections"
  install -d "$pkgdir"/etc/NetworkManager/{conf,dnsmasq}.d
  install -m644 $srcdir/NetworkManager.conf "$pkgdir/etc/NetworkManager/"
  install -Dm644 $srcdir/20-connectivity.conf \
    "$pkgdir/usr/lib/NetworkManager/conf.d/20-connectivity.conf"

  shopt -s globstar
  _pick libnm "$pkgdir"/usr/include/libnm
  _pick libnm "$pkgdir"/usr/lib/girepository-1.0/NM-*
  _pick libnm "$pkgdir"/usr/lib/libnm.*
  _pick libnm "$pkgdir"/usr/lib/pkgconfig/libnm.pc
  _pick libnm "$pkgdir"/usr/share/gir-1.0/NM-*
  _pick libnm "$pkgdir"/usr/share/gtk-doc/html/libnm
  _pick libnm "$pkgdir"/usr/share/vala/vapi/libnm.*

  _pick cloud "$pkgdir"/usr/lib/**/*nm-cloud-setup*
  _pick cloud "$pkgdir"/usr/share/man/**/nm-cloud-setup*

  # Not actually packaged (https://bugs.archlinux.org/task/69138)
  _pick ovs "$pkgdir"/usr/lib/systemd/system/NetworkManager.service.d/NetworkManager-ovs.conf

  # Restore empty dir
  install -d usr/lib/NetworkManager/dispatcher.d/no-wait.d


}

  package_libnm-git() {
  pkgdesc="NetworkManager client library"
  provides=(libnm)
  conflicts=(libnm)
  depends=(glib2 nss libutil-linux systemd-libs)
  mv libnm/* "$pkgdir"
}

package_nm-cloud-setup-git() {
  pkgdesc="Automatically configure NetworkManager in cloud"
  depends=(networkmanager-git)
  conflicts=(nm-cloud-setup)

  mv cloud/* "$pkgdir"
}