diff --git a/.libdrm.metadata b/.libdrm.metadata new file mode 100644 index 0000000..5d73de2 --- /dev/null +++ b/.libdrm.metadata @@ -0,0 +1 @@ +d9775b71c681c67a53794a72785a45846a17578c SOURCES/libdrm-2.4.47.tar.bz2 diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/0001-nouveau-prevent-undefined-behavior-in-nouveau_pushbu.patch b/SOURCES/0001-nouveau-prevent-undefined-behavior-in-nouveau_pushbu.patch new file mode 100644 index 0000000..b062783 --- /dev/null +++ b/SOURCES/0001-nouveau-prevent-undefined-behavior-in-nouveau_pushbu.patch @@ -0,0 +1,31 @@ +From 482abbfafb56cbceaf5355c026434e638cddd0f1 Mon Sep 17 00:00:00 2001 +From: Maarten Lankhorst +Date: Thu, 7 Nov 2013 13:30:19 +0100 +Subject: [PATCH] nouveau: prevent undefined behavior in nouveau_pushbuf_reloc + with gcc-4.8 + +Reported-by: ronald645@gmail.com +Bisected-by (gcc): Andreas Radke +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71116 +Signed-off-by: Maarten Lankhorst +--- + nouveau/pushbuf.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/nouveau/pushbuf.c b/nouveau/pushbuf.c +index 0fd0c47..4f77881 100644 +--- a/nouveau/pushbuf.c ++++ b/nouveau/pushbuf.c +@@ -739,7 +739,8 @@ void + nouveau_pushbuf_reloc(struct nouveau_pushbuf *push, struct nouveau_bo *bo, + uint32_t data, uint32_t flags, uint32_t vor, uint32_t tor) + { +- *push->cur++ = pushbuf_krel(push, bo, data, flags, vor, tor); ++ *push->cur = pushbuf_krel(push, bo, data, flags, vor, tor); ++ push->cur++; + } + + int +-- +1.8.3.1 + diff --git a/SOURCES/91-drm-modeset.rules b/SOURCES/91-drm-modeset.rules new file mode 100644 index 0000000..f1bb5ec --- /dev/null +++ b/SOURCES/91-drm-modeset.rules @@ -0,0 +1 @@ +KERNEL=="controlD[0-9]*", SUBSYSTEM=="drm", MODE="0600" diff --git a/SOURCES/libdrm-2.4.0-no-bc.patch b/SOURCES/libdrm-2.4.0-no-bc.patch new file mode 100644 index 0000000..ad14e21 --- /dev/null +++ b/SOURCES/libdrm-2.4.0-no-bc.patch @@ -0,0 +1,54 @@ +diff -up libdrm-20080814/xf86drm.c.no-bc libdrm-20080814/xf86drm.c +--- libdrm-20080814/xf86drm.c.no-bc 2008-08-14 15:43:09.000000000 +1000 ++++ libdrm-20080814/xf86drm.c 2008-08-14 15:45:09.000000000 +1000 +@@ -396,11 +396,6 @@ int drmAvailable(void) + int fd; + + if ((fd = drmOpenMinor(0, 1, DRM_NODE_RENDER)) < 0) { +-#ifdef __linux__ +- /* Try proc for backward Linux compatibility */ +- if (!access("/proc/dri/0", R_OK)) +- return 1; +-#endif + return 0; + } + +@@ -519,38 +514,6 @@ static int drmOpenByName(const char *nam + } + } + +-#ifdef __linux__ +- /* Backward-compatibility /proc support */ +- for (i = 0; i < 8; i++) { +- char proc_name[64], buf[512]; +- char *driver, *pt, *devstring; +- int retcode; +- +- sprintf(proc_name, "/proc/dri/%d/name", i); +- if ((fd = open(proc_name, 0, 0)) >= 0) { +- retcode = read(fd, buf, sizeof(buf)-1); +- close(fd); +- if (retcode) { +- buf[retcode-1] = '\0'; +- for (driver = pt = buf; *pt && *pt != ' '; ++pt) +- ; +- if (*pt) { /* Device is next */ +- *pt = '\0'; +- if (!strcmp(driver, name)) { /* Match */ +- for (devstring = ++pt; *pt && *pt != ' '; ++pt) +- ; +- if (*pt) { /* Found busid */ +- return drmOpenByBusid(++pt); +- } else { /* No busid */ +- return drmOpenDevice(strtol(devstring, NULL, 0),i, DRM_NODE_RENDER); +- } +- } +- } +- } +- } +- } +-#endif +- + return -1; + } + diff --git a/SOURCES/libdrm-2.4.25-check-programs.patch b/SOURCES/libdrm-2.4.25-check-programs.patch new file mode 100644 index 0000000..29949ee --- /dev/null +++ b/SOURCES/libdrm-2.4.25-check-programs.patch @@ -0,0 +1,10 @@ +diff -up libdrm-2.4.25/tests/Makefile.am.jx libdrm-2.4.25/tests/Makefile.am +--- libdrm-2.4.25/tests/Makefile.am.jx 2011-03-21 09:39:24.000000000 -0400 ++++ libdrm-2.4.25/tests/Makefile.am 2011-04-18 11:40:17.000000000 -0400 +@@ -58,3 +58,6 @@ endif + check_PROGRAMS += $(TESTS) + + endif ++ ++check-programs: ++ @echo $(check_PROGRAMS) diff --git a/SOURCES/libdrm-make-dri-perms-okay.patch b/SOURCES/libdrm-make-dri-perms-okay.patch new file mode 100644 index 0000000..0d82319 --- /dev/null +++ b/SOURCES/libdrm-make-dri-perms-okay.patch @@ -0,0 +1,12 @@ +diff -up libdrm-20080303/xf86drm.h.da libdrm-20080303/xf86drm.h +--- libdrm-20080303/xf86drm.h.da 2008-03-19 15:26:31.000000000 +1000 ++++ libdrm-20080303/xf86drm.h 2008-03-19 15:26:46.000000000 +1000 +@@ -45,7 +45,7 @@ + /* Default /dev/dri directory permissions 0755 */ + #define DRM_DEV_DIRMODE \ + (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH) +-#define DRM_DEV_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP) ++#define DRM_DEV_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) + + #define DRM_DIR_NAME "/dev/dri" + #define DRM_DEV_NAME "%s/card%d" diff --git a/SOURCES/make-git-snapshot.sh b/SOURCES/make-git-snapshot.sh new file mode 100755 index 0000000..888855e --- /dev/null +++ b/SOURCES/make-git-snapshot.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +# Usage: ./make-git-snapshot.sh [COMMIT] +# +# to make a snapshot of the given tag/branch. Defaults to HEAD. +# Point env var REF to a local mesa repo to reduce clone time. + +DIRNAME=libdrm-$( date +%Y%m%d ) + +echo REF ${REF:+--reference $REF} +echo DIRNAME $DIRNAME +echo HEAD ${1:-HEAD} + +rm -rf $DIRNAME + +git clone ${REF:+--reference $REF} \ + git://git.freedesktop.org/git/mesa/drm $DIRNAME + +GIT_DIR=$DIRNAME/.git git archive --format=tar --prefix=$DIRNAME/ ${1:-HEAD} \ + | bzip2 > $DIRNAME.tar.bz2 + +# rm -rf $DIRNAME diff --git a/SPECS/libdrm.spec b/SPECS/libdrm.spec new file mode 100644 index 0000000..53f21f5 --- /dev/null +++ b/SPECS/libdrm.spec @@ -0,0 +1,351 @@ +#define gitdate 20130117 + +Summary: Direct Rendering Manager runtime library +Name: libdrm +Version: 2.4.47 +Release: 2%{?dist} +License: MIT +Group: System Environment/Libraries +URL: http://dri.sourceforge.net +%if 0%{?gitdate} +Source0: %{name}-%{gitdate}.tar.bz2 +%else +Source0: http://dri.freedesktop.org/libdrm/%{name}-%{version}.tar.bz2 +%endif +Source1: make-git-snapshot.sh + +Requires: udev + +BuildRequires: pkgconfig automake autoconf libtool +BuildRequires: kernel-headers +BuildRequires: libxcb-devel +%if 0%{?fedora} > 17 || 0%{?rhel} > 6 +BuildRequires: systemd-devel +%else +BuildRequires: libudev-devel +%endif +BuildRequires: libatomic_ops-devel +BuildRequires: libpciaccess-devel +BuildRequires: libxslt docbook-style-xsl + +Source2: 91-drm-modeset.rules + +# hardcode the 666 instead of 660 for device nodes +Patch3: libdrm-make-dri-perms-okay.patch +# remove backwards compat not needed on Fedora +Patch4: libdrm-2.4.0-no-bc.patch +# make rule to print the list of test programs +Patch5: libdrm-2.4.25-check-programs.patch +# fix nouveau with gcc 4.8 +Patch6: 0001-nouveau-prevent-undefined-behavior-in-nouveau_pushbu.patch + +%description +Direct Rendering Manager runtime library + +%package devel +Summary: Direct Rendering Manager development package +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} +Requires: kernel-headers >= 2.6.27-0.144.rc0.git2.fc10 +Requires: pkgconfig + +%description devel +Direct Rendering Manager development package + +%package -n drm-utils +Summary: Direct Rendering Manager utilities +Group: Development/Tools + +%description -n drm-utils +Utility programs for the kernel DRM interface. Will void your warranty. +Requires: libdrm = %{version}-%{release} + +%prep +%setup -q %{?gitdate:-n %{name}-%{gitdate}} +%patch3 -p1 -b .forceperms +%patch4 -p1 -b .no-bc +%patch5 -p1 -b .check +%patch6 -p1 -b .gcc48 + +%build +autoreconf -v --install || exit 1 +%configure \ +%ifarch %{arm} + --enable-exynos-experimental-api \ + --enable-freedreno-experimental-api \ + --enable-omap-experimental-api \ +%endif + --enable-udev +make %{?_smp_mflags} +pushd tests +make %{?smp_mflags} `make check-programs` +popd + +%install +make install DESTDIR=$RPM_BUILD_ROOT +pushd tests +mkdir -p $RPM_BUILD_ROOT%{_bindir} +for foo in $(make check-programs) ; do + install -m 0755 .libs/$foo $RPM_BUILD_ROOT%{_bindir} +done +popd +# SUBDIRS=libdrm +mkdir -p $RPM_BUILD_ROOT/usr/lib/udev/rules.d/ +install -m 0644 %{SOURCE2} $RPM_BUILD_ROOT/usr/lib/udev/rules.d/ + +# NOTE: We intentionally don't ship *.la files +find $RPM_BUILD_ROOT -type f -name '*.la' | xargs rm -f -- || : +for i in r300_reg.h via_3d_reg.h +do +rm -f $RPM_BUILD_ROOT/usr/include/libdrm/$i +done + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root,-) +%doc README +%{_libdir}/libdrm.so.2 +%{_libdir}/libdrm.so.2.4.0 +%ifarch %{ix86} x86_64 ia64 +%{_libdir}/libdrm_intel.so.1 +%{_libdir}/libdrm_intel.so.1.0.0 +%endif +%ifarch %{arm} +%{_libdir}/libdrm_exynos.so.1 +%{_libdir}/libdrm_exynos.so.1.0.0 +%{_libdir}/libdrm_freedreno.so.1 +%{_libdir}/libdrm_freedreno.so.1.0.0 +%{_libdir}/libdrm_omap.so.1 +%{_libdir}/libdrm_omap.so.1.0.0 +%endif +%{_libdir}/libdrm_radeon.so.1 +%{_libdir}/libdrm_radeon.so.1.0.1 +%{_libdir}/libdrm_nouveau.so.2 +%{_libdir}/libdrm_nouveau.so.2.0.0 +%{_libdir}/libkms.so.1 +%{_libdir}/libkms.so.1.0.0 +/usr/lib/udev/rules.d/91-drm-modeset.rules + +%files -n drm-utils +%defattr(-,root,root,-) +%{_bindir}/dristat +%{_bindir}/drmstat +%ifarch %{ix86} x86_64 ia64 +%{_bindir}/gem_basic +%{_bindir}/gem_flink +%{_bindir}/gem_mmap +%{_bindir}/gem_readwrite +%endif +%{_bindir}/getclient +%{_bindir}/getstats +%{_bindir}/getversion +%{_bindir}/name_from_fd +%{_bindir}/openclose +%{_bindir}/setversion +%{_bindir}/updatedraw + +%files devel +%defattr(-,root,root,-) +# FIXME should be in drm/ too +%{_includedir}/xf86drm.h +%{_includedir}/xf86drmMode.h +%dir %{_includedir}/libdrm +%{_includedir}/libdrm/drm.h +%{_includedir}/libdrm/drm_fourcc.h +%{_includedir}/libdrm/drm_mode.h +%{_includedir}/libdrm/drm_sarea.h +%ifarch %{ix86} x86_64 ia64 +%{_includedir}/libdrm/intel_aub.h +%{_includedir}/libdrm/intel_bufmgr.h +%{_includedir}/libdrm/intel_debug.h +%endif +%ifarch %{arm} +%{_includedir}/libdrm/exynos_drmif.h +%{_includedir}/libdrm/omap_drmif.h +%{_includedir}/exynos/ +%{_includedir}/freedreno/ +%{_includedir}/omap/ +%endif +%{_includedir}/libdrm/radeon_bo.h +%{_includedir}/libdrm/radeon_bo_gem.h +%{_includedir}/libdrm/radeon_bo_int.h +%{_includedir}/libdrm/radeon_cs.h +%{_includedir}/libdrm/radeon_cs_gem.h +%{_includedir}/libdrm/radeon_cs_int.h +%{_includedir}/libdrm/radeon_surface.h +%{_includedir}/libdrm/r600_pci_ids.h +%{_includedir}/libdrm/nouveau.h +%{_includedir}/libdrm/*_drm.h +%{_includedir}/libkms +%{_libdir}/libdrm.so +%ifarch %{ix86} x86_64 ia64 +%{_libdir}/libdrm_intel.so +%endif +%ifarch %{arm} +%{_libdir}/libdrm_exynos.so +%{_libdir}/libdrm_omap.so +%{_libdir}/libdrm_freedreno.so +%endif +%{_libdir}/libdrm_radeon.so +%{_libdir}/libdrm_nouveau.so +%{_libdir}/libkms.so +%{_libdir}/pkgconfig/libdrm.pc +%ifarch %{ix86} x86_64 ia64 +%{_libdir}/pkgconfig/libdrm_intel.pc +%endif +%ifarch %{arm} +%{_libdir}/pkgconfig/libdrm_exynos.pc +%{_libdir}/pkgconfig/libdrm_freedreno.pc +%{_libdir}/pkgconfig/libdrm_omap.pc +%endif +%{_libdir}/pkgconfig/libdrm_radeon.pc +%{_libdir}/pkgconfig/libdrm_nouveau.pc +%{_libdir}/pkgconfig/libkms.pc +%{_mandir}/man3/drm*.3* +%{_mandir}/man7/drm*.7* + +%changelog +* Fri Nov 08 2013 Dave Airlie 2.4.47-2 +- fix nouveau with gcc 4.8 + +* Wed Oct 23 2013 Jerome Glisse 2.4.47-1 +- libdrm 2.4.47 + +* Thu Jul 04 2013 Dave Airlie 2.4.46-2 +- RHEL7 rpmdiff fixes + +* Wed Jul 03 2013 Dave Airlie 2.4.46-1 +- libdrm 2.4.46 + +* Tue Jun 18 2013 Adam Jackson 2.4.45-2 +- Sync some Haswell updates from git + +* Thu May 16 2013 Dave Airlie 2.4.45-1 +- libdrm 2.4.45 + +* Sun Apr 21 2013 Peter Robinson 2.4.44-2 +- enable freedreno support on ARM + +* Fri Apr 19 2013 Jerome Glisse 2.4.44-1 +- libdrm 2.4.44 + +* Fri Apr 12 2013 Adam Jackson 2.4.43-1 +- libdrm 2.4.43 + +* Tue Mar 12 2013 Dave Airlie 2.4.42-2 +- add qxl header file + +* Tue Feb 05 2013 Adam Jackson 2.4.42-1 +- libdrm 2.4.42 + +* Tue Jan 22 2013 Adam Jackson 2.4.41-2 +- Fix directory ownership in -devel (#894468) + +* Thu Jan 17 2013 Adam Jackson 2.4.41-1 +- libdrm 2.4.41 plus git. Done as a git snapshot instead of the released + 2.4.41 since the release tarball is missing man/ entirely. +- Pre-F16 changelog trim + +* Wed Jan 09 2013 Ben Skeggs 2.4.40-2 +- nouveau: fix bug causing kernel to reject certain command streams + +* Tue Nov 06 2012 Dave Airlie 2.4.40-1 +- libdrm 2.4.40 + +* Thu Oct 25 2012 Adam Jackson 2.4.39-4 +- Rebuild to appease koji and get libkms on F18 again + +* Mon Oct 08 2012 Adam Jackson 2.4.39-3 +- Add exynos to arm + +* Mon Aug 27 2012 Dave Airlie 2.4.39-1 +- upstream 2.4.39 release + +* Tue Aug 14 2012 Dave Airlie 2.4.38-2 +- add radeon prime support + +* Sun Aug 12 2012 Dave Airlie 2.4.38-1 +- upstream 2.4.38 release + +* Fri Jul 27 2012 Fedora Release Engineering - 2.4.37-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Jul 25 2012 Dave Airlie 2.4.37-3 +- add libdrm prime support for core, intel, nouveau + +* Mon Jul 23 2012 Adam Jackson 2.4.37-2 +- libdrm-2.4.37-i915-hush.patch: Silence an excessive error message + +* Fri Jul 13 2012 Dave Airlie 2.4.37-1 +- bump to libdrm 2.4.37 + +* Thu Jun 28 2012 Dave Airlie 2.4.36-1 +- bump to libdrm 2.4.36 + +* Mon Jun 25 2012 Adam Jackson 2.4.35-2 +- Drop libkms. Only used by plymouth, and even that's a mistake. + +* Fri Jun 15 2012 Dave Airlie 2.4.35-1 +- bump to libdrm 2.4.35 + +* Tue Jun 05 2012 Adam Jackson 2.4.34-2 +- Rebuild for new libudev +- Conditional BuildReqs for {libudev,systemd}-devel + +* Sat May 12 2012 Dave Airlie 2.4.34-1 +- libdrm 2.4.34 + +* Fri May 11 2012 Dennis Gilmore 2.4.34-0.3 +- enable libdrm_omap on arm arches + +* Thu May 10 2012 Adam Jackson 2.4.34-0.2 +- Drop ancient kernel Requires. + +* Tue Apr 24 2012 Richard Hughes - 2.4.34-0.1.20120424 +- Update to a newer git snapshot + +* Sat Mar 31 2012 Dave Airlie 2.4.33-1 +- libdrm 2.4.33 +- drop libdrm-2.4.32-tn-surface.patch + +* Wed Mar 21 2012 Adam Jackson 2.4.32-1 +- libdrm 2.4.32 +- libdrm-2.4.32-tn-surface.patch: Sync with git. + +* Sat Feb 25 2012 Peter Robinson 2.4.31-4 +- Add gem_ binaries to x86 only exclusion too + +* Wed Feb 22 2012 Adam Jackson 2.4.31-3 +- Fix build on non-Intel arches + +* Tue Feb 07 2012 Jerome Glisse 2.4.31-2 +- Fix missing header file + +* Tue Feb 07 2012 Jerome Glisse 2.4.31-1 +- upstream 2.4.31 release + +* Fri Jan 20 2012 Dave Airlie 2.4.30-1 +- upstream 2.4.30 release + +* Fri Jan 13 2012 Fedora Release Engineering - 2.4.27-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Fri Nov 11 2011 Adam Jackson 2.4.27-2 +- Fix typo in udev rule + +* Tue Nov 01 2011 Adam Jackson 2.4.27-1 +- libdrm 2.4.27 + +* Wed Oct 26 2011 Fedora Release Engineering - 2.4.26-4 +- Rebuilt for glibc bug#747377 + +* Tue Oct 25 2011 Adam Jackson 2.4.26-3 +- Fix udev rule matching and install location (#748205) + +* Fri Oct 21 2011 Dave Airlie 2.4.26-2 +- fix perms on control node in udev rule + +* Mon Jun 06 2011 Adam Jackson 2.4.26-1 +- libdrm 2.4.26 (#711038)