diff --git a/package/netopeer2/netopeer2.mk b/package/netopeer2/netopeer2.mk index 10a13dfda9..be5ffd2be7 100644 --- a/package/netopeer2/netopeer2.mk +++ b/package/netopeer2/netopeer2.mk @@ -13,11 +13,28 @@ NETOPEER2_DEPENDENCIES = libnetconf2 libyang sysrepo host-sysrepo NETOPEER2_CONF_OPTS = -DBUILD_CLI=$(if $(BR2_PACKAGE_NETOPEER2_CLI),ON,OFF) -NETOPEER2_MAKE_ENV = SYSREPOCTL_EXECUTABLE=$(HOST_DIR)/bin/sysrepoctl +# Set a build specific SYSREPO_SHM_PREFIX to ensure we can safely delete the +# files. This also ensures that concurrent parallel builds will not be +# affected mutualy. +NETOPEER2_SYSREPO_SHM_PREFIX = sr_buildroot$(subst /,_,$(CONFIG_DIR))_netopeer2 + +NETOPEER2_MAKE_ENV = \ + SYSREPOCTL_EXECUTABLE=$(HOST_DIR)/bin/sysrepoctl \ + SYSREPO_SHM_PREFIX=$(NETOPEER2_SYSREPO_SHM_PREFIX) define NETOPEER2_INSTALL_INIT_SYSV $(INSTALL) -m 755 -D package/netopeer2/S52netopeer2 \ $(TARGET_DIR)/etc/init.d/S52netopeer2 endef +# The host sysrepo used to install the netopeer2 modules will leave +# its shared memory files lingering about. Clean up in its stead... +# We need to clean up both before and after installation, to catch +# the case of a previous build that failed before we run that hook. +define NETOPEER2_CLEANUP + rm -f /dev/shm/$(NETOPEER2_SYSREPO_SHM_PREFIX)* +endef +NETOPEER2_PRE_INSTALL_TARGET_HOOKS += NETOPEER2_CLEANUP +NETOPEER2_POST_INSTALL_TARGET_HOOKS += NETOPEER2_CLEANUP + $(eval $(cmake-package))