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;