Add patch to support libnl3, Use %%license, Cleanup spec

This commit is contained in:
Peter Robinson 2015-03-21 13:53:08 +00:00
parent e5f6debc74
commit 0a49d8afa2
2 changed files with 239 additions and 8 deletions

222
0001-Port-to-libnl3.patch Normal file
View File

@ -0,0 +1,222 @@
From d82ed2081cf58fb2504ba037d7a1e6444ec5019a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez@opensuse.org>
Date: Wed, 28 May 2014 00:11:37 -0400
Subject: [PATCH] Port to libnl3
---
libnetlabel/netlabel_comm.c | 35 -----------------------------
libnetlabel/netlabel_internal.h | 49 +++++++----------------------------------
libnetlabel/netlabel_msg.c | 4 ----
macros.mk | 2 +-
netlabelctl/Makefile | 2 +-
5 files changed, 10 insertions(+), 82 deletions(-)
diff --git a/libnetlabel/netlabel_comm.c b/libnetlabel/netlabel_comm.c
index 289629b..02869e8 100644
--- a/libnetlabel/netlabel_comm.c
+++ b/libnetlabel/netlabel_comm.c
@@ -102,13 +102,8 @@ struct nlbl_handle *nlbl_comm_open(void)
goto open_failure;
/* set the netlink handle properties */
-#if LIBNL_VERSION >= 1008
nl_socket_set_peer_port(hndl->nl_hndl, 0);
nl_set_passcred(hndl->nl_hndl, 1);
-#elif LIBNL_VERSION == 1006
- nl_handle_set_peer_pid(hndl->nl_hndl, 0);
- nl_set_passcred(hndl->nl_hndl, 1);
-#endif
nl_disable_sequence_check(hndl->nl_hndl);
/* connect to the generic netlink subsystem in the kernel */
@@ -177,11 +172,7 @@ int nlbl_comm_recv_raw(struct nlbl_handle *hndl, unsigned char **data)
* no data is waiting to be read from the handle */
timeout.tv_sec = nlcomm_read_timeout;
timeout.tv_usec = 0;
-#if LIBNL_VERSION >= 1008
nl_fd = nl_socket_get_fd(hndl->nl_hndl);
-#else
- nl_fd = nl_handle_get_fd(hndl->nl_hndl);
-#endif
FD_ZERO(&read_fds);
FD_SET(nl_fd, &read_fds);
ret_val = select(nl_fd + 1, &read_fds, NULL, NULL, &timeout);
@@ -192,15 +183,9 @@ int nlbl_comm_recv_raw(struct nlbl_handle *hndl, unsigned char **data)
/* perform the read operation */
*data = NULL;
-#if LIBNL_VERSION >= 1006
ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data, &creds);
if (ret_val < 0)
return ret_val;
-#else
- ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data);
- if (ret_val < 0)
- return ret_val;
-#endif
/* if we are setup to receive credentials, only accept messages from
* the kernel (ignore all others and send an -EAGAIN) */
@@ -251,11 +236,7 @@ int nlbl_comm_recv(struct nlbl_handle *hndl, nlbl_msg **msg)
* no data is waiting to be read from the handle */
timeout.tv_sec = nlcomm_read_timeout;
timeout.tv_usec = 0;
-#if LIBNL_VERSION >= 1008
nl_fd = nl_socket_get_fd(hndl->nl_hndl);
-#else
- nl_fd = nl_handle_get_fd(hndl->nl_hndl);
-#endif
FD_ZERO(&read_fds);
FD_SET(nl_fd, &read_fds);
ret_val = select(nl_fd + 1, &read_fds, NULL, NULL, &timeout);
@@ -265,19 +246,9 @@ int nlbl_comm_recv(struct nlbl_handle *hndl, nlbl_msg **msg)
return -EAGAIN;
/* perform the read operation */
-#if LIBNL_VERSION >= 1100
ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, &data, &creds);
if (ret_val < 0)
return ret_val;
-#elif LIBNL_VERSION >= 1006
- ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data, &creds);
- if (ret_val < 0)
- return ret_val;
-#else
- ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data);
- if (ret_val < 0)
- return ret_val;
-#endif
/* if we are setup to receive credentials, only accept messages from
* the kernel (ignore all others and send an -EAGAIN) */
@@ -344,9 +315,7 @@ int nlbl_comm_send(struct nlbl_handle *hndl, nlbl_msg *msg)
creds.gid = getegid();
/* set the message properties */
-#if LIBNL_VERSION >= 1006
nlmsg_set_creds(msg, &creds);
-#endif
/* request a netlink ack message */
nl_hdr = nlbl_msg_nlhdr(msg);
@@ -355,9 +324,5 @@ int nlbl_comm_send(struct nlbl_handle *hndl, nlbl_msg *msg)
nl_hdr->nlmsg_flags |= NLM_F_ACK;
/* send the message */
-#if LIBNL_VERSION == 1005
- return nl_send_auto_complete(hndl->nl_hndl, nlbl_msg_nlhdr(msg));
-#elif LIBNL_VERSION >= 1006
return nl_send_auto_complete(hndl->nl_hndl, msg);
-#endif
}
diff --git a/libnetlabel/netlabel_internal.h b/libnetlabel/netlabel_internal.h
index acc2f03..54200af 100644
--- a/libnetlabel/netlabel_internal.h
+++ b/libnetlabel/netlabel_internal.h
@@ -27,6 +27,14 @@
#include <netlink/netlink.h>
+#define nl_handle_alloc nl_socket_alloc
+#define nl_handle_destroy nl_socket_free
+#define nl_handle nl_sock
+#define nlmsg_build(ptr) nlmsg_inherit(ptr)
+#define nl_set_passcred nl_socket_set_passcred
+#define nl_disable_sequence_check nl_socket_disable_seq_check
+#define nlmsg_len nlmsg_datalen
+
/* NetLabel communication handle */
struct nlbl_handle {
struct nl_handle *nl_hndl;
@@ -37,46 +45,5 @@ struct nlbl_handle {
(((hdr)->nlmsg_flags & NLM_F_MULTI) && \
((hdr)->nlmsg_type != NLMSG_DONE)))
-/* Specify which version of libnl we are using */
-/* 1.0-pre5 => 1005 */
-/* 1.0-pre6 => 1006 */
-/* 1.0-pre8 => 1008 */
-/* 1.1 => 1100 */
-#define LIBNL_VERSION 1100
-
-/* XXX - this whole block will most likely go away once libnl supports Generic
- * Netlink */
-#if LIBNL_VERSION <= 1006 /* Generic Netlink types */
-
-/* Generic Netlink message header */
-struct genlmsghdr {
- uint8_t cmd;
- uint8_t version;
- uint16_t reserved;
-};
-
-#define GENL_ID_CTRL 0x10
-
-enum {
- CTRL_CMD_UNSPEC,
- CTRL_CMD_NEWFAMILY,
- CTRL_CMD_DELFAMILY,
- CTRL_CMD_GETFAMILY,
- CTRL_CMD_NEWOPS,
- CTRL_CMD_DELOPS,
- CTRL_CMD_GETOPS,
- __CTRL_CMD_MAX,
-};
-#define CTRL_CMD_MAX (__CTRL_CMD_MAX - 1)
-
-enum {
- CTRL_ATTR_UNSPEC,
- CTRL_ATTR_FAMILY_ID,
- CTRL_ATTR_FAMILY_NAME,
- __CTRL_ATTR_MAX,
-};
-#define CTRL_ATTR_MAX (__CTRL_ATTR_MAX - 1)
-
-#endif /* Generic Netlink types */
#endif
diff --git a/libnetlabel/netlabel_msg.c b/libnetlabel/netlabel_msg.c
index fb2fc58..af00fbe 100644
--- a/libnetlabel/netlabel_msg.c
+++ b/libnetlabel/netlabel_msg.c
@@ -63,11 +63,7 @@ nlbl_msg *nlbl_msg_new(void)
struct genlmsghdr genl_hdr;
/* create the message with a simple netlink header */
-#if LIBNL_VERSION >= 1008
msg = nlmsg_alloc();
-#else
- msg = nlmsg_build_no_hdr();
-#endif
if (msg == NULL)
goto msg_new_failure;
diff --git a/macros.mk b/macros.mk
index a9466f0..b9f8813 100644
--- a/macros.mk
+++ b/macros.mk
@@ -53,7 +53,7 @@ CPPFLAGS += -I$(TOPDIR) -I$(TOPDIR)/include
LIBFLAGS =
CFLAGS ?= -Wl,-z,relro -Wall -O0 -g
-CFLAGS += -fPIC
+CFLAGS += `pkg-config --cflags libnl-3.0` -fPIC
LDFLAGS ?= -z relro -g
#
diff --git a/netlabelctl/Makefile b/netlabelctl/Makefile
index 06af6a5..07cebbb 100644
--- a/netlabelctl/Makefile
+++ b/netlabelctl/Makefile
@@ -49,7 +49,7 @@ CONF_FILE = netlabel.rules
OBJS = main.o mgmt.o map.o unlabeled.o cipsov4.o
-LDFLAGS := ../libnetlabel/libnetlabel.a -lnl -lm
+LDFLAGS := ../libnetlabel/libnetlabel.a `pkg-config --libs libnl-3.0` -lm
DEPS = $(OBJS:%.o=%.d)
--
1.8.4.5

View File

@ -6,13 +6,15 @@ License: GPLv2
Group: System Environment/Daemons
URL: http://netlabel.sf.net/
Source0: http://downloads.sourceforge.net/netlabel/%{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}
Requires: kernel >= 2.6.19
# http://sourceforge.net/p/netlabel/bugs/1/
Patch0: 0001-Port-to-libnl3.patch
Requires: kernel
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
BuildRequires: kernel-headers >= 2.6.19
BuildRequires: libnl-devel
BuildRequires: kernel-headers
BuildRequires: libnl3-devel
BuildRequires: doxygen
BuildRequires: systemd
@ -25,13 +27,13 @@ kernel subsystem.
%prep
%setup -q
%patch0 -p1 -b .nl3
%build
./configure --prefix="%{_prefix}" --libdir="%{_libdir}" --enable-systemd
CFLAGS="%{optflags}" make V=1 %{?_smp_mflags}
%install
rm -rf "%{buildroot}"
mkdir -p "%{buildroot}/etc"
mkdir -p "%{buildroot}/%{_sbindir}"
mkdir -p "%{buildroot}/%{_unitdir}"
@ -42,14 +44,15 @@ make V=1 DESTDIR="%{buildroot}" install
%systemd_preun netlabel.service
%postun
%systemd_postun
%systemd_postun netlabel.service
%post
%systemd_post netlabel.service
%files
%defattr(-,root,root)
%doc README CHANGELOG LICENSE
%{!?_licensedir:%global license %%doc}
%license LICENSE
%doc README CHANGELOG
%attr(0644,root,root) %{_mandir}/man8/*
%attr(0755,root,root) %{_sbindir}/netlabelctl
%attr(0755,root,root) %{_sbindir}/netlabel-config
@ -57,6 +60,11 @@ make V=1 DESTDIR="%{buildroot}" install
%attr(0644,root,root) %config(noreplace) /etc/netlabel.rules
%changelog
* Sat Mar 21 2015 Peter Robinson <pbrobinson@fedoraproject.org> 0.20-5
- Add patch to support libnl3
- Use %%license
- Cleanup spec
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.20-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
@ -65,6 +73,7 @@ make V=1 DESTDIR="%{buildroot}" install
* Thu Feb 27 2014 Paul Moore <pmoore@redhat.com> - 0.20-2
- Build with CFLAGS="${optflags}"
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.20-1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild