diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..090189d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libpciaccess-0.14.tar.bz2 diff --git a/.libpciaccess.metadata b/.libpciaccess.metadata new file mode 100644 index 0000000..2ae45e9 --- /dev/null +++ b/.libpciaccess.metadata @@ -0,0 +1 @@ +f70a958bf4e744cb4ee93be64e9bc52ac05cdaeb SOURCES/libpciaccess-0.14.tar.bz2 diff --git a/SOURCES/libpciaccess-rom-size.patch b/SOURCES/libpciaccess-rom-size.patch new file mode 100644 index 0000000..baf8026 --- /dev/null +++ b/SOURCES/libpciaccess-rom-size.patch @@ -0,0 +1,73 @@ +diff --git a/src/linux_sysfs.c b/src/linux_sysfs.c +index 8c3cf67..2ea78c1 100644 +--- a/src/linux_sysfs.c ++++ b/src/linux_sysfs.c +@@ -227,6 +227,7 @@ pci_device_linux_sysfs_probe( struct pci_device * dev ) + pciaddr_t bytes; + unsigned i; + int err; ++ struct stat st; + + + err = pci_device_linux_sysfs_read( dev, config, 0, 256, & bytes ); +@@ -293,11 +294,28 @@ pci_device_linux_sysfs_probe( struct pci_device * dev ) + flags = strtoull( next, & next, 16 ); + if ( low_addr != 0 ) { + priv->rom_base = low_addr; +- dev->rom_size = (high_addr - low_addr) + 1; + } + } + } + ++ snprintf( name, 255, "%s/%04x:%02x:%02x.%1u/rom", ++ SYS_BUS_PCI, ++ dev->domain, ++ dev->bus, ++ dev->dev, ++ dev->func ); ++ ++ fd = open( name, O_RDWR ); ++ if ( fd == -1 ) { ++ dev->rom_size = 0x10000; ++ } else if ( fstat( fd, & st ) == -1 ) { ++ close( fd ); ++ dev->rom_size = 0x10000; ++ } else { ++ close( fd ); ++ dev->rom_size = st.st_size == 0 ? 0x10000 : st.st_size; ++ } ++ + return err; + } + +@@ -309,7 +327,6 @@ pci_device_linux_sysfs_read_rom( struct pci_device * dev, void * buffer ) + int fd; + struct stat st; + int err = 0; +- size_t rom_size; + size_t total_bytes; + + +@@ -334,10 +351,6 @@ pci_device_linux_sysfs_read_rom( struct pci_device * dev, void * buffer ) + return errno; + } + +- rom_size = st.st_size; +- if ( rom_size == 0 ) +- rom_size = 0x10000; +- + /* This is a quirky thing on Linux. Even though the ROM and the file + * for the ROM in sysfs are read-only, the string "1" must be written to + * the file to enable the ROM. After the data has been read, "0" must be +@@ -346,9 +359,9 @@ pci_device_linux_sysfs_read_rom( struct pci_device * dev, void * buffer ) + write( fd, "1", 1 ); + lseek( fd, 0, SEEK_SET ); + +- for ( total_bytes = 0 ; total_bytes < rom_size ; /* empty */ ) { ++ for ( total_bytes = 0 ; total_bytes < dev->rom_size ; /* empty */ ) { + const int bytes = read( fd, (char *) buffer + total_bytes, +- rom_size - total_bytes ); ++ dev->rom_size - total_bytes ); + if ( bytes == -1 ) { + err = errno; + break; diff --git a/SOURCES/make-libpciaccess-snapshot.sh b/SOURCES/make-libpciaccess-snapshot.sh new file mode 100755 index 0000000..a265c3f --- /dev/null +++ b/SOURCES/make-libpciaccess-snapshot.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +DATE=$( date +%Y%m%d ) +DIRNAME=libpciaccess +REV=${1:-master} + +if test -e $DIRNAME.git; then + GIT_DIR=$DIRNAME.git git fetch git://git.freedesktop.org/git/xorg/lib/libpciaccess +else + git clone --bare git://git.freedesktop.org/git/xorg/lib/libpciaccess $DIRNAME.git + GIT_DIR=$DIRNAME.git git archive --prefix=$DIRNAME-$DATE/ --format=tar $REV | \ + bzip2 -c > $DIRNAME-$DATE.tar.bz2 +fi + +HASH=$(GIT_DIR=$DIRNAME.git git show-ref -s $REV) + +echo $HASH + +exit + +# the rest of this is supposed to work? i guess. + +version=$(sed -n -e "s/^Version: *\(.*\)/\1/p" < libpciaccess.spec) +release=$(sed -n -e "s/^Release: *\([^.]*\).*/\1/p" < libpciaccess.spec) +release=$(($release + 1)) + +user=$(id -un) +IFS=: info=($(grep ^$user: /etc/passwd)) + +msg="* $(date +'%a %b %d %Y') ${info[4]} <$user@redhat.com> $version-$release.$DATE\\ +- New snapshot, git revision $HASH.\\ +" + +sed -i -e "s/^%define gitdate.*/%define gitdate $DATE/" \ + -e "s/^%define gitrev.*/%define gitrev $HASH/" \ + -e "s/^Source0:.*/Source0: $DIRNAME-$DATE.tar.bz2/" \ + -e "s/^Release:.*/Release: $release.%{gitdate}%{?dist}/" \ + -e "/%changelog/ a $msg" \ + libpciaccess.spec + +make new-sources FILES=$DIRNAME-$DATE.tar.bz2 diff --git a/SPECS/libpciaccess.spec b/SPECS/libpciaccess.spec new file mode 100644 index 0000000..945b443 --- /dev/null +++ b/SPECS/libpciaccess.spec @@ -0,0 +1,229 @@ +#define gitdate 20111109 +#define gitrev a0a53a67c91c698007dcac3e7aba27c999c4f6ed + +Name: libpciaccess +Version: 0.14 +Release: 1%{?dist} +Summary: PCI access library + +Group: System Environment/Libraries +License: MIT +URL: http://gitweb.freedesktop.org/?p=xorg/lib/libpciaccess.git + +# git snapshot. To recreate, run +# % ./make-libpciaccess-snapshot.sh %{gitrev} +#Source0: libpciaccess-%{gitdate}.tar.bz2 +Source0: https://xorg.freedesktop.org/archive/individual/lib/%{name}-%{version}.tar.bz2 +Source1: make-libpciaccess-snapshot.sh + +Patch2: libpciaccess-rom-size.patch + +BuildRequires: autoconf automake libtool pkgconfig xorg-x11-util-macros +Requires: hwdata + +%description +libpciaccess is a library for portable PCI access routines across multiple +operating systems. + +%package devel +Summary: PCI access library development package +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} +Requires: pkgconfig + +%description devel +Development package for libpciaccess. + +%prep +%setup -q -n %{name}-%{?gitdate:%{gitdate}}%{!?gitdate:%{version}} +%patch2 -p1 -b .rom-size + +%build +# autoreconf -v --install +%configure --disable-static +make %{?_smp_mflags} + +%install +rm -rf $RPM_BUILD_ROOT +make install DESTDIR=$RPM_BUILD_ROOT +rm -f $RPM_BUILD_ROOT/%{_libdir}/*.la + +%clean +rm -rf $RPM_BUILD_ROOT + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root,-) +%doc COPYING AUTHORS +%{_libdir}/libpciaccess.so.0 +%{_libdir}/libpciaccess.so.0.11.* + +%files devel +%defattr(-,root,root,-) +%{_includedir}/pciaccess.h +%{_libdir}/libpciaccess.so +%{_libdir}/pkgconfig/pciaccess.pc + +%changelog +* Mon Oct 23 2017 Adam Jackson - 0.14-1 +- libpciaccess 0.14 + +* Mon Nov 14 2016 Dave Airlie - 0.13.4-3 +- add support to ignore 32-bit domains (#1380184) + +* Fri May 22 2015 Dave Airlie 0.13.4-2 +- rebuild due to ppc64le relro issue + +* Thu May 21 2015 Dave Airlie 0.13.4-1 +- rebase libpciaccess 0.13.4 + +* Wed Feb 12 2014 Adam Jackson 0.13.1-4.1 +- Mass rebuild + +* Fri Dec 27 2013 Daniel Mach - 0.13.1-4 +- Mass rebuild 2013-12-27 + +* Thu Feb 14 2013 Fedora Release Engineering - 0.13.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Jul 19 2012 Fedora Release Engineering - 0.13.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Apr 10 2012 Adam Jackson 0.13.1-1 +- libpciaccess 0.13.1 + +* Wed Mar 28 2012 Adam Jackson 0.13-2 +- libpciaccess-macros.patch: Fix out* macros again + +* Wed Mar 28 2012 Adam Jackson 0.13-1 +- libpciaccess 0.13 + +* Wed Feb 29 2012 Dan Horák - 0.12.902-6 +- fix the out[bwl] compatibility macros + +* Thu Feb 16 2012 Peter Robinson - 0.12.902-5 +- Add ARM arch to libpciaccess-lol-dev-port patch + +* Wed Feb 08 2012 Adam Jackson 0.12.902-4 +- libpciaccess-lol-dev-port.patch: Don't use /dev/port since the kernel insists + that it remain unusably broken. + +* Fri Jan 13 2012 Fedora Release Engineering - 0.12.902-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Nov 28 2011 Daniel Drake 0.12.902-2 +- Add upstream patch to fix ios deletion; fixes X crash on OLPC XO-1.5 + +* Wed Nov 09 2011 Adam Jackson 0.12.902-1 +- libpciaccess 0.12.902 + +* Wed Nov 09 2011 Peter Hutterer 0.12.901-1 +- Today's git snapshot + +* Wed Feb 09 2011 Adam Jackson 0.12.1-1 +- libpciaccess 0.12.1 + +* Tue Feb 08 2011 Fedora Release Engineering - 0.12.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Jul 21 2010 Dave Airlie 0.12.0-1 +- libpciaccess 0.12 + +* Tue Mar 16 2010 Adam Jackson 0.11.0-1 +- libpciaccess 0.11 + +* Wed Dec 09 2009 Adam Jackson 0.10.9-2.20091209 +- New git snapshot +- Drop the fd cache patch + +* Fri Sep 25 2009 Dave Airlie 0.10.9-1 +- rebase to latest upstream release - drop patches + +* Thu Aug 06 2009 Dave Airlie 0.10.6-7 +- disable rom reading fallbacks + +* Wed Aug 05 2009 Adam Jackson 0.10.6-6 +- D'oh. Fix obvious sense inversion in the previous patch. + +* Wed Aug 05 2009 Adam Jackson 0.10.6-5 +- libpciaccess-0.10.6-rom-sanity.patch: If we hit the /dev/mem path for + reading a device's ROM, verify that it looks like it at least might belong + to the device in question by checking vendor and device ID match. Fixes + vbetool post hanging forever (and thus blocking boot) on some dual-gpu + laptops. + +* Mon Aug 03 2009 Dave Airlie 0.10.6-4 +- Add support for default vga arb device selection +- Update libpciaccess VGA arb code for newer kernel API + +* Fri Jul 31 2009 Dave Airlie 0.10.6-3 +- enable autoreconf to rebuild configure properly + +* Fri Jul 31 2009 Dave Airlie 0.10.6-2 +- libpciaccess-vga-arbiter.patch: add vga arbiter support to libpciaccess + +* Mon Jul 27 2009 Dave Airlie 0.10.6-1 +- rebase to latest release (will do release with VGA bits later) +- libpciaccess-boot-vga.patch: add boot vga patch from upstream + +* Fri Jul 24 2009 Fedora Release Engineering - 0.10.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Tue Apr 21 2009 Adam Jackson 0.10.5-1 +- libpciaccess 0.10.5 + +* Wed Feb 25 2009 Fedora Release Engineering - 0.10.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sun Feb 15 2009 Kristian Høgsberg - 0.10.3-5 +- Unbreak the rom-size patch. + +* Sun Feb 15 2009 Kristian Høgsberg - 0.10.3-4 +- Don't read more than the advertised rom_size. + +* Thu Aug 28 2008 Adam Jackson 0.10.3-3 +- Rediff for --fuzz=0 + +* Wed Jul 02 2008 Adam Jackson 0.10.3-2 +- Fix file access mode in config fd cache. (#452910) + +* Tue Jul 01 2008 Adam Jackson 0.10.3-1 +- libpciaccess 0.10.3 + +* Tue May 20 2008 Adam Jackson 0.10-3 +- libpciaccess-no-pci-fix.patch: Fix init when /sys/bus/pci is empty or + nonexistent. + +* Mon Apr 21 2008 Dave Airlie 0.10-2 +- fix major problem with libpciaccess and write combining. + +* Thu Mar 06 2008 Adam Jackson 0.10-1 +- libpciaccess 0.10 + +* Mon Feb 18 2008 Fedora Release Engineering - 0.9.1-4.20071031 +- Autorebuild for GCC 4.3 + +* Wed Jan 23 2008 Adam Jackson 0.9.1-3.20071031 +- libpciaccess-fd-cache.patch: Cache sysfs PCI config space file + descriptors for great boot speed justice. + +* Wed Oct 31 2007 Kristian Høgsberg 0.9.1-2.20071031 +- New snapshot, git revision e392082abb5696c8837224da86cc0af4f21d7010. +- Pick up new .so file. + +* Mon Sep 24 2007 Adam Jackson 0.9.1-1 +- libpciaccess 0.9.1 + +* Mon Aug 27 2007 Adam Jackson 0.8-0.4.20070827git +- New snapshot. + +* Fri Aug 24 2007 Adam Jackson 0.8-0.3.20070712git +- Rebuild for PPC toolchain bug + +* Thu Jul 12 2007 Adam Jackson 0.8-0.2.20070712git +- New snapshot. Adds VGA ROM support. + +* Thu May 24 2007 Adam Jackson 0.8-0.1.20070524git +- Initial revision.