Package: libselinux
Severity: serious
Justification: no longer builds from source
This may be the fault of linux-kernel-headers more than libselinux, but as of
linux-kernel-headers 2.6.17-6-1, I can't build libselinux due to undefined
symbol errors concerning the use of PAGE_SIZE in a number of places. The
sources are #including <asm/page.h>, which on i386/amd64 actually define
something, but on powerpc contain nothing at all unless __KERNEL__ is defined.
Using getpagesize() (e.g. with the attached patch) seems to work just fine.
-- System Information:
Debian Release: testing/unstable
APT prefers testing
APT policy: (990, 'testing'), (500, 'unstable')
Architecture: powerpc (ppc)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.17.6
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)
--- libselinux-1.30.orig/src/canonicalize_context.c
+++ libselinux-1.30/src/canonicalize_context.c
@@ -5,7 +5,6 @@
#include <stdio.h>
#include <errno.h>
#include <string.h>
-#include <asm/page.h>
#include "selinux_internal.h"
#include "policy.h"
#include <limits.h>
@@ -23,7 +22,7 @@
if (fd < 0)
return -1;
- size = PAGE_SIZE;
+ size = getpagesize();
buf = malloc(size);
if (!buf) {
ret = -1;
--- libselinux-1.30.orig/src/compute_av.c
+++ libselinux-1.30/src/compute_av.c
@@ -5,7 +5,6 @@
#include <stdio.h>
#include <errno.h>
#include <string.h>
-#include <asm/page.h>
#include "selinux_internal.h"
#include "policy.h"
#include <limits.h>
@@ -26,7 +25,7 @@
if (fd < 0)
return -1;
- len = PAGE_SIZE;
+ len = getpagesize();
buf = malloc(len);
if (!buf) {
ret = -1;
--- libselinux-1.30.orig/src/compute_create.c
+++ libselinux-1.30/src/compute_create.c
@@ -5,7 +5,6 @@
#include <stdio.h>
#include <errno.h>
#include <string.h>
-#include <asm/page.h>
#include "selinux_internal.h"
#include "policy.h"
#include <limits.h>
@@ -25,7 +24,7 @@
if (fd < 0)
return -1;
- size = PAGE_SIZE;
+ size = getpagesize();
buf = malloc(size);
if (!buf) {
ret = -1;
--- libselinux-1.30.orig/src/compute_member.c
+++ libselinux-1.30/src/compute_member.c
@@ -5,7 +5,6 @@
#include <stdio.h>
#include <errno.h>
#include <string.h>
-#include <asm/page.h>
#include "selinux_internal.h"
#include "policy.h"
#include <limits.h>
@@ -25,7 +24,7 @@
if (fd < 0)
return -1;
- size = PAGE_SIZE;
+ size = getpagesize();
buf = malloc(size);
if (!buf) {
ret = -1;
--- libselinux-1.30.orig/src/compute_relabel.c
+++ libselinux-1.30/src/compute_relabel.c
@@ -5,7 +5,6 @@
#include <stdio.h>
#include <errno.h>
#include <string.h>
-#include <asm/page.h>
#include "selinux_internal.h"
#include "policy.h"
#include <limits.h>
@@ -25,7 +24,7 @@
if (fd < 0)
return -1;
- size = PAGE_SIZE;
+ size = getpagesize();
buf = malloc(size);
if (!buf) {
ret = -1;
--- libselinux-1.30.orig/src/compute_user.c
+++ libselinux-1.30/src/compute_user.c
@@ -5,7 +5,6 @@
#include <stdio.h>
#include <errno.h>
#include <string.h>
-#include <asm/page.h>
#include "selinux_internal.h"
#include "policy.h"
#include <limits.h>
@@ -26,7 +25,7 @@
if (fd < 0)
return -1;
- size = PAGE_SIZE;
+ size = getpagesize();
buf = malloc(size);
if (!buf) {
ret = -1;
--- libselinux-1.30.orig/src/enabled.c
+++ libselinux-1.30/src/enabled.c
@@ -5,7 +5,6 @@
#include <stdlib.h>
#include <errno.h>
#include <limits.h>
-#include <asm/page.h>
#include <stdio.h>
#include "policy.h"
@@ -22,7 +21,7 @@
if (fd < 0)
return -1;
- size = PAGE_SIZE;
+ size = getpagesize();
buf = malloc(size);
if (!buf) {
enabled = -1;
--- libselinux-1.30.orig/src/getcon.c
+++ libselinux-1.30/src/getcon.c
@@ -4,7 +4,6 @@
#include "selinux_internal.h"
#include <stdlib.h>
#include <errno.h>
-#include <asm/page.h>
#include "policy.h"
int getcon_raw(security_context_t *context)
@@ -18,7 +17,7 @@
if (fd < 0)
return -1;
- size = PAGE_SIZE;
+ size = getpagesize();
buf = malloc(size);
if (!buf) {
ret = -1;
--- libselinux-1.30.orig/src/getexeccon.c
+++ libselinux-1.30/src/getexeccon.c
@@ -3,7 +3,6 @@
#include <string.h>
#include <stdlib.h>
#include <errno.h>
-#include <asm/page.h>
#include "selinux_internal.h"
#include "policy.h"
@@ -18,7 +17,7 @@
if (fd < 0)
return -1;
- size = PAGE_SIZE;
+ size = getpagesize();
buf = malloc(size);
if (!buf) {
ret = -1;
--- libselinux-1.30.orig/src/getfscreatecon.c
+++ libselinux-1.30/src/getfscreatecon.c
@@ -3,7 +3,6 @@
#include <string.h>
#include <stdlib.h>
#include <errno.h>
-#include <asm/page.h>
#include "selinux_internal.h"
#include "policy.h"
@@ -18,7 +17,7 @@
if (fd < 0)
return -1;
- size = PAGE_SIZE;
+ size = getpagesize();
buf = malloc(size);
if (!buf) {
ret = -1;
--- libselinux-1.30.orig/src/getpidcon.c
+++ libselinux-1.30/src/getpidcon.c
@@ -4,7 +4,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
-#include <asm/page.h>
#include "selinux_internal.h"
#include "policy.h"
@@ -22,7 +21,7 @@
if (fd < 0)
return -1;
- size = PAGE_SIZE;
+ size = getpagesize();
buf = malloc(size);
if (!buf) {
ret = -1;
--- libselinux-1.30.orig/src/getprevcon.c
+++ libselinux-1.30/src/getprevcon.c
@@ -4,7 +4,6 @@
#include "selinux_internal.h"
#include <stdlib.h>
#include <errno.h>
-#include <asm/page.h>
#include "policy.h"
int getprevcon_raw(security_context_t *context)
@@ -18,7 +17,7 @@
if (fd < 0)
return -1;
- size = PAGE_SIZE;
+ size = getpagesize();
buf = malloc(size);
if (!buf) {
ret = -1;
--- libselinux-1.30.orig/src/init.c
+++ libselinux-1.30/src/init.c
@@ -4,7 +4,6 @@
#include <stdlib.h>
#include <errno.h>
#include <ctype.h>
-#include <asm/page.h>
#include <stdio.h>
#include <dlfcn.h>
@@ -27,7 +26,7 @@
if (!fp)
return;
- size = PAGE_SIZE;
+ size = getpagesize();
buf = malloc(size);
if (!buf)
goto out;