# Copyright (C) 2003-2006 The Trustees of Princeton University
# rewritten by Thierry Parmentelat - INRIA Sophia Antipolis
#
-# see doc in Makefile
+# see doc in Makefile
#
### the madwifi drivers ship with fedora16's kernel rpm
ALL += lxc-userspace
IN_NODEIMAGE += lxc-userspace
-#
#
# transforward: root context module for transparent port forwarding
#
+# with 4.19, the jprobe api has gone entirely
+# https://github.com/torvalds/linux/commit/4de58696de076d9bd2745d1cbe0930635c3f5ac9
+#
+ifneq "$(DISTRONAME)" "$(filter $(DISTRONAME), f29)"
+#
transforward-MODULES := transforward
transforward-SPEC := transforward.spec
ALL += transforward
IN_NODEIMAGE += transforward
+endif
#
# procprotect: root context module for protecting against weaknesses in /proc
#
+### remove procprotect from the nodes on f20 and above, needs more work starting with 3.19
+ifneq "$(DISTRONAME)" "$(filter $(DISTRONAME),f20 f21 f22 f23 f24 f25 f27 f29)"
procprotect-MODULES := procprotect
procprotect-SPEC := procprotect.spec
ALL += procprotect
IN_NODEIMAGE += procprotect
+endif
#
# ipfw: root context module, and slice companion
#
+### starting August 2015, ipfw module won't build against fedora22
+# that comes with kernel 4.1.4
+ifneq "$(DISTRONAME)" "$(filter $(DISTRONAME),f21 f22 f23 f24 f25 f27 f29)"
ipfwroot-MODULES := ipfw
ipfwroot-SPEC := planetlab/ipfwroot.spec
ALL += ipfwroot
IN_NODEIMAGE += ipfwroot
+endif
ipfwslice-MODULES := ipfw
ipfwslice-SPEC := planetlab/ipfwslice.spec
#
# comgt - a companion to umts tools
-#
+#
comgt-MODULES := comgt
comgt-SPEC := comgt.spec
IN_NODEIMAGE += comgt
#
# plnode-utils
-#
+#
plnode-utils-MODULES := plnode-utils
plnode-utils-SPEC := plnode-utils-lxc.spec
ALL += plnode-utils
#
# fprobe-ulog
#
-# xxx temporarily turning this off
+# xxx temporarily turning this off on f20 and above
+ifneq "$(DISTRONAME)" "$(filter $(DISTRONAME),f20 f21 f22 f23 f24 f25 f27 f29)"
fprobe-ulog-MODULES := fprobe-ulog
fprobe-ulog-SPEC := fprobe-ulog.spec
-#ALL += fprobe-ulog
-#IN_NODEIMAGE += fprobe-ulog
+ALL += fprobe-ulog
+IN_NODEIMAGE += fprobe-ulog
+endif
#################### libvirt version selection
-# settling with using version 1.2.1 on all fedoras
-# although this does not solve the slice re-creation issue seen on f20
+# use fedora's libvirt starting with f22
+ifeq "$(DISTRONAME)" "$(filter $(DISTRONAME),f18 f20 f21)"
local_libvirt=true
-separate_libvirt_python=true
+endif
#
# libvirt
libvirt-BUILD-FROM-SRPM := yes
# The --without options are breaking spec2make : hard-wired in the specfile instead
libvirt-STOCK-DEVEL-RPMS += xhtml1-dtds
-libvirt-STOCK-DEVEL-RPMS += libattr-devel augeas libpciaccess-devel yajl-devel
-libvirt-STOCK-DEVEL-RPMS += libpcap-devel radvd ebtables device-mapper-devel
-libvirt-STOCK-DEVEL-RPMS += ceph-devel numactl-devel libcap-ng-devel scrub
+libvirt-STOCK-DEVEL-RPMS += libattr-devel augeas libpciaccess-devel yajl-devel
+libvirt-STOCK-DEVEL-RPMS += libpcap-devel radvd ebtables device-mapper-devel
+libvirt-STOCK-DEVEL-RPMS += ceph-devel numactl-devel libcap-ng-devel scrub
# for 1.2.1 - first seen on f20, not sure for the other ones
libvirt-STOCK-DEVEL-RPMS += libblkid-devel glusterfs-api-devel glusterfs-devel
# strictly speaking fuse-devel is not required anymore but we might wish to turn fuse back on again in the future
-libvirt-STOCK-DEVEL-RPMS += fuse-devel libssh2-devel dbus-devel numad
+libvirt-STOCK-DEVEL-RPMS += fuse-devel libssh2-devel dbus-devel numad
libvirt-STOCK-DEVEL-RPMS += systemd-devel libnl3-devel iptables-services netcf-devel
+# 1.2.11
+libvirt-STOCK-DEVEL-RPMS += wireshark-devel
+libvirt-STOCK-DEVEL-RPMS += ceph-devel-compat
ALL += libvirt
IN_NODEREPO += libvirt
IN_NODEIMAGE += libvirt
-endif
-
#
## libvirt-python
#
-ifeq "$(separate_libvirt_python)" "true"
-
libvirt-python-MODULES := libvirt-python
libvirt-python-SPEC := libvirt-python.spec
libvirt-python-BUILD-FROM-SRPM := yes
libvirt-python-STOCK-DEVEL-RPMS += pm-utils
+# for 1.2.11
+libvirt-python-STOCK-DEVEL-RPMS += python-nose
+# it would make sense to do something like this if we wanted to
+# build against python3 as well, but for now I turned this feature off
+# in libvirt-python
+#ifeq "$(distro)" "Fedora"
+#xxx if $(distrorelease) > 18
+#libvirt-python-STOCK-DEVEL-RPMS += python3-devel python3-nose python3-lxml
+#endif
+#endif
libvirt-python-LOCAL-DEVEL-RPMS += libvirt-devel libvirt-docs libvirt-client
libvirt-python-RPMFLAGS := --define 'packager PlanetLab'
ALL += libvirt-python
IN_NODEREPO += libvirt-python
IN_NODEIMAGE += libvirt-python
-endif
+endif # local_libvirt
#
# DistributedRateLimiting
IN_SLICEIMAGE += bind_public
ALL += bind_public
+# in fedora 29, this triggers nasty-looking compile messages
+# not trying too hard, we're mostly after the server-side of f29
+ifneq "$(DISTRONAME)" "$(filter $(DISTRONAME), f29)"
#
# sliver-openvswitch
#
sliver-openvswitch-SPEC := sliver-openvswitch.spec
IN_SLICEIMAGE += sliver-openvswitch
ALL += sliver-openvswitch
+endif
#
# plcapi
#
# drupal
-#
+#
drupal-MODULES := drupal
drupal-SPEC := drupal.spec
drupal-BUILD-FROM-SRPM := yes
#
# pcucontrol
#
+# WARNING: as of f27 I have to remove support for SSL in pcucontrol
+# see pcucontrol.spec for details
pcucontrol-MODULES := pcucontrol
pcucontrol-SPEC := pcucontrol.spec
ALL += pcucontrol
ALL += pyopenssl
endif
-#
-# pyaspects
-#
-pyaspects-MODULES := pyaspects
-pyaspects-SPEC := pyaspects.spec
-pyaspects-BUILD-FROM-SRPM := yes
-ALL += pyaspects
-
-#
# nodeconfig
#
nodeconfig-MODULES := nodeconfig
#
# pypcilib : used in bootcd
-#
+#
pypcilib-MODULES := pypcilib
pypcilib-SPEC := pypcilib.spec
ALL += pypcilib
IN_MYPLC += pyplnet
IN_BOOTCD += pyplnet
+ifneq "$(DISTRONAME)" "$(filter $(DISTRONAME),f23 f24 f25 f27 f29)"
#
# OML measurement library
#
oml-MODULES := oml
-oml-STOCK-DEVEL-RPMS += sqlite-devel
+oml-STOCK-DEVEL-RPMS += sqlite-devel
oml-SPEC := liboml.spec
ALL += oml
+endif
#
# bootcd
#
# lxc-specific sliceimage initialization
-#
+#
lxc-sliceimage-MODULES := sliceimage
lxc-sliceimage-SPEC := lxc-sliceimage.spec
lxc-sliceimage-RPMDATE := yes
ALL += myplc
# myplc-docs only contains docs for PLCAPI and NMAPI, but
-# we still need to pull MyPLC, as it is where the specfile lies,
+# we still need to pull MyPLC, as it is where the specfile lies,
# together with the utility script docbook2drupal.sh
myplc-docs-MODULES := myplc plcapi nodemanager monitor
myplc-docs-SPEC := myplc-docs.spec
#
# sfa - Slice Facility Architecture
#
+# this is python2, somehow the tests won't pass against a py3 plcapi
+# oddly enough, when the py2 sfa code issues xmlrpc calls over ssl
+# to the underlying myplc, we get SSL handshake issues
+# so, let's keep this out of the way for now
+#
+ifneq "$(DISTRONAME)" "$(filter $(DISTRONAME), f27 f29)"
sfa-MODULES := sfa
sfa-SPEC := sfa.spec
ALL += sfa
+endif