diff --git a/pixman-0.11.4-altivec.patch b/pixman-0.11.4-altivec.patch new file mode 100644 index 0000000..1e941df --- /dev/null +++ b/pixman-0.11.4-altivec.patch @@ -0,0 +1,63 @@ +--- pixman-0.11.4/pixman/pixman-pict.c~ 2008-06-09 06:56:34.000000000 +0100 ++++ pixman-0.11.4/pixman/pixman-pict.c 2008-06-17 18:38:34.000000000 +0100 +@@ -1920,7 +1920,59 @@ pixman_bool_t pixman_have_vmx (void) { + return have_vmx; + } + +-#else ++#elif defined (__linux__) ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++pixman_bool_t pixman_have_vmx (void) ++{ ++ if (!initialized) { ++ char fname[64]; ++ unsigned long buf[64]; ++ ssize_t count = 0; ++ pid_t pid; ++ int fd, i; ++ ++ pid = getpid(); ++ snprintf(fname, sizeof(fname)-1, "/proc/%d/auxv", pid); ++ ++ fd = open(fname, O_RDONLY); ++ if (fd >= 0) { ++ for (i = 0; i <= (count / sizeof(unsigned long)); i += 2) { ++ /* Read more if buf is empty... */ ++ if (i == (count / sizeof(unsigned long))) { ++ count = read(fd, buf, sizeof(buf)); ++ if (count <= 0) ++ break; ++ i = 0; ++ } ++ ++ if (buf[i] == AT_HWCAP) { ++ have_vmx = !!(buf[i+1] & PPC_FEATURE_HAS_ALTIVEC); ++ initialized = 1; ++ break; ++ } else if (buf[i] == AT_NULL) { ++ break; ++ } ++ } ++ close(fd); ++ } ++ } ++ if (!initialized) { ++ /* Something went wrong. Assume 'no' rather than playing ++ fragile tricks with catching SIGILL. */ ++ have_vmx = FALSE; ++ initialized = 1; ++ } ++ ++ return have_vmx; ++} ++#else /* !__APPLE__ && !__linux__ */ + #include + + static void vmx_test(int sig, siginfo_t *si, void *unused) { diff --git a/pixman.spec b/pixman.spec index b519a76..736f575 100644 --- a/pixman.spec +++ b/pixman.spec @@ -3,7 +3,7 @@ Name: pixman Version: 0.11.4 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Pixel manipulation library Group: System Environment/Libraries @@ -17,6 +17,7 @@ Source1: make-pixman-snapshot.sh BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Patch0: leakfix.patch +Patch1: pixman-0.11.4-altivec.patch # BuildRequires: automake autoconf libtool pkgconfig @@ -35,6 +36,7 @@ Development library for pixman. %prep %setup -q %patch0 -p1 -b .leakfix +%patch1 -p1 -b .altivec %build %configure --disable-static @@ -64,6 +66,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/pkgconfig/pixman-1.pc %changelog +* Tue Jun 17 2008 David Woodhouse 0.11.4-3 +- Fix Altivec detection breakage (#451831) + * Fri Jun 13 2008 Soren Sandmann 0.11.4-2 - Plug bad leak (cherrypicked from master)