/[packages]/cauldron/fglrx/current/SPECS/fglrx.spec
ViewVC logotype

Annotation of /cauldron/fglrx/current/SPECS/fglrx.spec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 247581 - (hide annotations) (download)
Sun May 27 21:02:30 2012 UTC (11 years, 10 months ago) by tmb
File size: 33424 byte(s)
fix build with 3.4 series kernels (P13)
1 ahmad 58193
2     ##############################################################################
3     # This .spec file is dual licensed. It can be distributed either with the #
4     # terms of GPL version 2 or newer, or with the MIT license included below. #
5     # Removing either GPL or MIT license when distributing this file is allowed. #
6     ##############################################################################
7     # - start of MIT license -
8     # Copyright (c) 2007-2009 Anssi Hannula, Luiz Fernando Capitulino, Colin Guthrie, Thomas Backlund
9     #
10     # Permission is hereby granted, free of charge, to any person
11     # obtaining a copy of this software and associated documentation
12     # files (the "Software"), to deal in the Software without
13     # restriction, including without limitation the rights to use,
14     # copy, modify, merge, publish, distribute, sublicense, and/or sell
15     # copies of the Software, and to permit persons to whom the
16     # Software is furnished to do so, subject to the following
17     # conditions:
18     #
19     # The above copyright notice and this permission notice shall be
20     # included in all copies or substantial portions of the Software.
21     #
22     # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23     # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
24     # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25     # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
26     # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
27     # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28     # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
29     # OTHER DEALINGS IN THE SOFTWARE.
30     # - end of MIT license -
31    
32     %define name fglrx
33    
34 anssi 174609 # %amdbuild is used to enable the AMD installer --buildpkg mode.
35     # The macros version, rel, amd_dir, distsuffix need to be manually defined.
36 ahmad 58193 # The macro mdkversion can also be overridden.
37 anssi 174609 %define amdbuild 0
38     %{?_without_amd: %global amdbuild 0}
39     %{?_with_amd: %global amdbuild 1}
40 ahmad 58193
41 anssi 174609 %if !%{amdbuild}
42 ahmad 58193 # NOTE: These version definitions are overridden by ati-packager.sh when
43     # building with the --buildpkg method of the installer.
44    
45     # When updating, please add new ids to ldetect-lst (merge2pcitable.pl).
46    
47     # version in installer filename:
48 tmb 233865 %define oversion 12-4
49 ahmad 58193 # Advertised version, for description:
50 tmb 233865 %define mversion 12.4
51 ahmad 58193 # driver version from ati-packager-helper.sh:
52 tmb 233865 %define iversion 8.961
53 ahmad 58193 # release:
54 tmb 247581 %define rel 2
55 ahmad 58193 # rpm version (adds 0 in order to not go backwards if iversion is two-decimal)
56     %define version %{iversion}%([ $(echo %iversion | wc -c) -le 5 ] && echo 0)
57     %else
58 anssi 174609 # Best-effort if AMD has made late changes (in amdbuild mode)
59 ahmad 58193 %define _default_patch_fuzz 2
60     %endif
61    
62     %define priority 1000
63     %define release %mkrel %{rel}
64    
65     # set to 1 for a prerelease driver with an ubuntu tarball as source
66 anssi 93515 %define ubuntu_prerelease 0
67 ahmad 58193
68     %define driverpkgname x11-driver-video-fglrx
69     %define drivername fglrx
70     %define xorg_version pic
71     # highest supported videodrv abi
72 ahmad 79744 %define videodrv_abi 10
73 ahmad 58193 %define xorg_libdir %{_libdir}/xorg
74     %define xorg_dridir %{_libdir}/dri
75     %define xorg_dridir32 %{_prefix}/lib/dri
76     %define ld_so_conf_file ati.conf
77     %define ati_extdir %{_libdir}/%{drivername}/xorg
78     %define xorg_extra_modules %{_libdir}/xorg/extra-modules
79     %define bundle_qt 0
80     # The entry in Cards+ this driver should be associated with, if there is
81     # no entry in ldetect-lst default pcitable:
82     # cooker ldetect-lst should be up-to-date
83     %define ldetect_cards_name %nil
84    
85 anssi 174609 %if %{amdbuild}
86     # AMD/ATI cards not listed in main ldetect-lst pcitable are not likely
87 ahmad 58193 # to be supported by radeon which is from the same time period.
88     # radeonhd has greater chance of working due to it not using ID lists.
89     # (main pcitable entries override our entries)
90 anssi 228613 %define ldetect_cards_name ATI Radeon HD 2000 and later without free driver (vesa/fglrx)
91     %endif
92    
93     %if %{mgaversion} <= 1
94 ahmad 58193 %define ldetect_cards_name ATI Radeon HD 2000 and later (vesa/fglrx)
95     %endif
96    
97     %ifarch %ix86
98     %define xverdir x%{xorg_version}
99     %define archdir arch/x86
100     %endif
101     %ifarch x86_64
102     %define xverdir x%{xorg_version}_64a
103     %define archdir arch/x86_64
104     %endif
105    
106 anssi 174609 # Other packages should not require any AMD specific proprietary libraries
107 ahmad 58193 # (if that is really necessary, we may want to split that specific lib out),
108     # and this package should not be pulled in when libGL.so.1 is required.
109     %define _provides_exceptions \\.so
110    
111     %define qt_requires_exceptions %nil
112     %if %{bundle_qt}
113     # do not require Qt if it is bundled
114     %define qt_requires_exceptions \\|libQtCore\\.so\\|libQtGui\\.so
115     %endif
116    
117     # do not require fglrx stuff, they are all included
118 anssi 174610 %define common_requires_exceptions libfglrx.\\+\\.so\\|libati.\\+\\.so\\|libOpenCL\\.so%{qt_requires_exceptions}
119 ahmad 58193
120     %ifarch x86_64
121     # (anssi) Allow installing of 64-bit package if the runtime dependencies
122     # of 32-bit libraries are not satisfied. If a 32-bit package that requires
123     # libGL.so.1 is installed, the 32-bit mesa libs are pulled in and that will
124     # pull the dependencies of 32-bit fglrx libraries in as well.
125     %define _requires_exceptions %common_requires_exceptions\\|lib.*so\\.[^(]\\+\\(([^)]\\+)\\)\\?$
126     %else
127     %define _requires_exceptions %common_requires_exceptions
128     %endif
129    
130     # (anssi) Do not require qt for amdnotifyui (used as event notifier, as
131     # of 04/2010 only for DisplayPort failures). installing
132     # fglrx-control-center will satisfy the dependency.
133     # It is not moved to fglrx-control-center as due to its small size it may
134     # be wanted on e.g. KDE Ones, which can't have the full fglrx-control-center,
135     # and due to it having nothing to do with fglrx-control-center.
136     %define _exclude_files_from_autoreq ^%{_sbindir}/amdnotifyui$
137    
138 anssi 174609 Summary: AMD proprietary X.org driver and libraries
139 ahmad 58193 Name: %{name}
140     Version: %{version}
141     Release: %{release}
142 anssi 174609 %if !%{amdbuild}
143 ahmad 58193 %if !%{ubuntu_prerelease}
144 tmb 216519 Source0: https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/amd-driver-installer-%{oversion}-x86.x86_64.run
145 ahmad 58193 %else
146     Source0: fglrx-installer_%{iversion}.orig.tar.gz
147     %endif
148     %endif
149     Source1: ati-packager.sh
150     Source2: atieventsd.init
151 anssi 174609 %if !%{amdbuild}
152 ahmad 58193 # Generates fglrx.spec from Mandriva SVN for use in AMD installer
153     # archive. Requires kenobi access for fetching names for changelog.
154     # (for manual use)
155     Source10: generate-fglrx-spec-from-svn.sh
156     %endif
157     Patch3: fglrx-authfile-locations.patch
158     Patch9: fglrx-make_sh-custom-kernel-dir.patch
159     # do not probe /proc for kernel info as we may be building for a
160     # different kernel
161     Patch10: fglrx-make_sh-no-proc-probe.patch
162 tmb 216537 # fix build with 3.2.8+ series kernels
163 tmb 233865 Patch11: amd-3.2.9-no-constant-TS_USEDFPU.patch
164     Patch12: amd-3.3.0-new_thread_structure.patch
165 tmb 247581 # fix build with 3.4 serie kernels
166     Patch13: fglrx-needs-cpu_possible_map.patch
167 ahmad 58193
168     License: Freeware
169     URL: http://ati.amd.com/support/driver.html
170     Group: System/Kernel and hardware
171     ExclusiveArch: %{ix86} x86_64
172 anssi 174609 %if !%{amdbuild}
173 ahmad 58193 BuildRequires: mesagl-devel
174     BuildRequires: libxmu-devel
175     BuildRequires: libxaw-devel
176     BuildRequires: libxp-devel
177     BuildRequires: libxtst-devel
178     BuildRequires: imake
179     # Used by atieventsd:
180     Suggests: acpid
181     BuildRequires: ImageMagick
182     %endif
183    
184     %description
185 anssi 174609 Source package of the AMD proprietary driver. Binary packages are
186 ahmad 58195 named x11-driver-video-fglrx on %{_vendor}.
187 anssi 174609 %if !%{amdbuild}
188     This package corresponds to AMD Catalyst version %mversion.
189 ahmad 58193 %endif
190    
191     %package -n %{driverpkgname}
192 anssi 174609 Summary: AMD proprietary X.org driver and libraries
193 ahmad 58193 Group: System/Kernel and hardware
194     Requires(post): update-alternatives >= 1.9.0
195     Requires(postun): update-alternatives
196     Obsoletes: ati_igp
197     Suggests: %{drivername}-control-center = %{version}
198     Obsoletes: ati < %{version}-%{release}
199     Provides: ati = %{version}-%{release}
200     Requires: kmod(fglrx) = %{version}
201     Requires: x11-server-common >= 1.9
202 anssi 174609 %if !%{amdbuild}
203 ahmad 58193 # Conflict with the next videodrv ABI break.
204     # The driver may support multiple ABI versions and therefore
205     # a strict version-specific requirement would not be enough.
206 ahmad 66360 # (ahmad) since X Server 1.10 ABI is now 10 (upstream jumped from 8 to 10)
207     # make it +2 for now
208 anssi 87413 ### This is problematic as it can cause removal of xserver instead (Anssi 04/2011)
209     ### Conflicts: xserver-abi(videodrv-%(echo $((%{videodrv_abi} + 1))))
210 ahmad 58193 %endif
211     Provides: atieventsd = %{version}-%{release}
212     Obsoletes: atieventsd < %{version}-%{release}
213    
214     %description -n %{driverpkgname}
215 anssi 174609 AMD proprietary X.org graphics driver, related libraries and
216 ahmad 58193 configuration tools.
217    
218 anssi 174609 NOTE: You should use XFdrake to configure your AMD card. The
219 ahmad 58193 correct packages will be automatically installed and configured.
220    
221     If you do not want to use XFdrake, see README.manual-setup.
222    
223     The graphical configuration utility, AMD Catalyst Control Center
224     Linux Edition, is contained in the package
225     %{drivername}-control-center.
226 anssi 174609 %if !%{amdbuild}
227     This package corresponds to AMD Catalyst version %mversion.
228 ahmad 58193 %endif
229    
230     %package -n %{drivername}-control-center
231     Summary: AMD Catalyst Control Center Linux Edition
232     Group: System/Kernel and hardware
233     Requires: %{driverpkgname} = %{version}
234     Obsoletes: ati-utils < %{version}-%{release}
235     Provides: ati-utils = %{version}-%{release}
236     Provides: amdcccle = %{version}-%{release}
237     Obsoletes: ati-ccc < %{version}-%{release}
238     Obsoletes: ati-control-center < %{version}-%{release}
239     Provides: ati-control-center = %{version}-%{release}
240     %if !%{bundle_qt}
241     # 2009.0 and 2009.1 have this one in updates only
242     Requires: %{_lib}qtcore4 >= 3:4.5.2
243     %endif
244    
245     %description -n %{drivername}-control-center
246     AMD Catalyst Control Center Linux Edition, a graphical configuration
247 anssi 174609 utility for the AMD proprietary X.org driver.
248     %if !%{amdbuild}
249     This package corresponds to AMD Catalyst version %mversion.
250 ahmad 58193 %endif
251    
252     %package -n dkms-%{drivername}
253 anssi 174609 Summary: AMD proprietary kernel module
254 ahmad 58193 Group: System/Kernel and hardware
255     Requires: dkms
256     Requires(post): dkms
257     Requires(preun): dkms
258     Obsoletes: dkms-ati < %{version}-%{release}
259     Provides: dkms-ati = %{version}-%{release}
260    
261     %description -n dkms-%{drivername}
262 anssi 174609 AMD proprietary kernel module. This is to be used with the
263 ahmad 58193 %{driverpkgname} package.
264 anssi 174609 %if !%{amdbuild}
265     This package corresponds to AMD Catalyst version %mversion.
266 ahmad 58193 %endif
267    
268     %package -n %{drivername}-devel
269 anssi 174609 Summary: AMD proprietary development libraries and headers
270 ahmad 58193 Group: Development/C
271     Requires: %{driverpkgname} = %{version}-%{release}
272     Obsoletes: ati-devel < %{version}-%{release}
273     Provides: ati-devel = %{version}-%{release}
274    
275     %description -n %{drivername}-devel
276 anssi 174609 AMD proprietary development libraries and headers. This package is
277 ahmad 58193 not required for normal use.
278    
279     The main driver package name is %{driverpkgname}.
280    
281 anssi 174610 %package -n %{drivername}-opencl
282     Summary: OpenCL libraries for the AMD proprietary driver
283     Group: System/Kernel and hardware
284     Requires: kmod(fglrx) = %{version}
285     Conflicts: x11-driver-video-fglrx < 8.911-2
286    
287     %description -n %{drivername}-opencl
288     OpenCL libraries for the AMD proprietary driver. This package is not
289     required for normal use, it provides libraries to use AMD cards for High
290     Performance Computing (HPC).
291    
292 ahmad 58193 %prep
293     %setup -T -c
294 anssi 174609 %if %{amdbuild}
295     ln -s %{amd_dir}/%{xverdir} %{amd_dir}/arch .
296 ahmad 58193 # patches affects common, so we cannot symlink it:
297 anssi 174609 cp -a %{amd_dir}/common .
298 ahmad 58193 %else
299     %if %ubuntu_prerelease
300     %setup -q -T -D -a 0
301     ln -s . common
302     %else
303     sh %{SOURCE0} --extract .
304     %endif
305    
306     mkdir fglrx_tools
307     tar -xzf common/usr/src/ati/fglrx_sample_source.tgz -C fglrx_tools
308     %if %ubuntu_prerelease
309 anssi 174609 [ -d "%xverdir" ] || (echo This driver version does not support your X.org server. Please wait for a new release from AMD. >&2; false)
310 ahmad 58193 %else
311     [ "%iversion" = "$(./ati-packager-helper.sh --version)" ]
312     %endif
313     %endif
314    
315     cd common # ensure patches do not touch outside
316     %patch3 -p2
317     %patch9 -p2
318     %patch10 -p2
319 tmb 216537 %patch11 -p2
320 tmb 233865 %patch12 -p2
321 tmb 247581 %patch13 -p2
322 ahmad 58193 cd ..
323    
324     cat > README.install.urpmi <<EOF
325     This driver is for ATI Radeon HD 2000 and newer cards.
326 anssi 174609 Reconfiguring is not necessary when upgrading from a previous %{_vendor} AMD
327 ahmad 58193 driver package.
328    
329 anssi 174609 Use XFdrake to configure X to use the correct AMD driver. Any needed
330 ahmad 58193 packages will be automatically installed if not already present.
331     1. Run XFdrake as root.
332     2. Go to the Graphics Card list.
333     3. Select your card (it is usually already autoselected).
334     4. Answer any questions asked and then quit.
335    
336     If you do not want to use XFdrake or it does not work correctly for
337     you, see README.manual-setup for manual installation instructions.
338     EOF
339    
340     cat > README.manual-setup <<EOF
341 anssi 174609 This file describes the procedure for the manual installation of this AMD
342 ahmad 58193 driver package. You can find the instructions for the recommended automatic
343     installation in the file 'README.install.urpmi' in this directory.
344    
345     - Open %{_sysconfdir}/X11/xorg.conf and make the following changes:
346     o Change the Driver to "fglrx" in the Device section
347     o Make the line below the only 'glx' related line in the Module section:
348     Load "glx"
349     o Remove any 'ModulePath' lines from the Files section
350     - Run "update-alternatives --set gl_conf %{_sysconfdir}/ld.so.conf.d/GL/%{ld_so_conf_file}" as root.
351     - Run "ldconfig" as root.
352     EOF
353    
354     cat > README.8.600.upgrade.urpmi <<EOF
355     REMOVED GRAPHICS DRIVER SUPPORT NOTIFICATION:
356 anssi 174609 Versions 8.600 and later of AMD Proprietary Graphics driver (fglrx) only
357 ahmad 58193 support Radeon HD 2000 (r600) or newer cards.
358    
359     If you have an older Radeon card or are unsure, please reconfigure your
360     driver:
361     1. Run XFdrake as root or select Graphical server configuration in
362 ahmad 58195 %{_vendor} Control Center.
363 ahmad 58193 2. Go to the Graphics Card list.
364     3. Select your card (it is usually already autoselected).
365     4. Answer any questions asked and then quit.
366     EOF
367    
368     %build
369 anssi 174609 %if !%{amdbuild}
370     # %amdbuild is done with minimal buildrequires
371 ahmad 58193 cd fglrx_tools/fgl_glxgears
372     xmkmf
373     %make RMAN=/bin/true CC="%__cc %optflags -I../../common/usr/include" EXTRA_LDOPTIONS="%{?ldflags}"
374     cd -
375     %endif
376    
377     %install
378     rm -rf %{buildroot}
379    
380     # dkms
381     install -d -m755 %{buildroot}%{_usrsrc}/%{drivername}-%{version}-%{release}
382     cp -a common/lib/modules/fglrx/build_mod/* %{buildroot}%{_usrsrc}/%{drivername}-%{version}-%{release}
383     cp -a %{archdir}/lib/modules/fglrx/build_mod/* %{buildroot}%{_usrsrc}/%{drivername}-%{version}-%{release}
384    
385     #install -d -m755 %{buildroot}%{_usrsrc}/%{drivername}-%{version}-%{release}/patches
386     #install -m644 %{SOURCE3} %{buildroot}%{_usrsrc}/%{drivername}-%{version}-%{release}/patches
387    
388     cat > %{buildroot}%{_usrsrc}/%{drivername}-%{version}-%{release}/dkms.conf <<EOF
389     PACKAGE_NAME="%{drivername}"
390     PACKAGE_VERSION="%{version}-%{release}"
391     BUILT_MODULE_NAME[0]="fglrx"
392     DEST_MODULE_LOCATION[0]="/kernel/drivers/char/drm"
393     # uname_v set to none so that make.sh doesn't try to use "uname -v" to see
394     # if the target kernel is SMP (we may be compiling for a different kernel)
395     MAKE[0]="sh make.sh --uname_r=\${kernelver} --uname_v=none --kernel-dir=\${kernel_source_dir} --no-proc-probe --norootcheck"
396     CLEAN="rm -rf 2.6.x/.tmp_versions; make -C2.6.x clean"
397     AUTOINSTALL="yes"
398     EOF
399    
400     # headers
401     install -d -m755 %{buildroot}%{_includedir}
402     cp -a common/usr/include/* %{buildroot}%{_includedir}
403     chmod 0644 %{buildroot}%{_includedir}/*/*.h
404    
405     # install binaries
406     install -d -m755 %{buildroot}%{_sbindir}
407     install -m755 %{archdir}/usr/sbin/* %{buildroot}%{_sbindir}
408     install -m755 common/usr/sbin/* %{buildroot}%{_sbindir}
409     install -d -m755 %{buildroot}%{_bindir}
410 anssi 174610 install -m755 %{archdir}/usr/bin/* %{buildroot}%{_bindir}
411 ahmad 58193 install -m755 %{archdir}/usr/X11R6/bin/* %{buildroot}%{_bindir}
412     install -m755 common/usr/X11R6/bin/* %{buildroot}%{_bindir}
413 anssi 174609 %if !%{amdbuild}
414 ahmad 58193 # install self-built binaries
415     install -m755 fglrx_tools/fgl_glxgears/fgl_glxgears %{buildroot}%{_bindir}
416     %endif
417 anssi 174608 # compatibility symlink
418     ln -s aticonfig %{buildroot}%{_bindir}/amdconfig
419 ahmad 58193
420     # atieventsd initscript
421     install -d -m755 %{buildroot}%{_initrddir}
422     install -m755 %{SOURCE2} %{buildroot}%{_initrddir}/atieventsd
423    
424     # amdcccle data files
425     install -d -m755 %{buildroot}%{_datadir}/ati/amdcccle
426     rm -f amdcccle.langs
427 anssi 97724 for fullname in common/usr/share/ati/amdcccle/*.qm; do
428     file=$(basename $fullname)
429     lang=${file#*_}
430 ahmad 58193 lang=${lang%%.qm}
431 anssi 97724 %if !%{bundle_qt}
432     # qt localization not necessary with non-bundled qt
433     [ "$file" = "${file#qt}" ] || continue
434     %endif
435     install -m644 $fullname %{buildroot}%{_datadir}/ati/amdcccle
436 ahmad 58193 echo "%%lang($lang) %{_datadir}/ati/amdcccle/$file" >> amdcccle.langs
437     done
438    
439     # amdcccle super-user mode
440     install -d -m755 %{buildroot}%{_sysconfdir}/security/console.apps
441     install -d -m755 %{buildroot}%{_sysconfdir}/pam.d
442     install -m644 common/etc/security/console.apps/* %{buildroot}%{_sysconfdir}/security/console.apps
443     ln -s su %{buildroot}%{_sysconfdir}/pam.d/amdcccle-su
444    
445     # man pages
446     install -d -m755 %{buildroot}%{_mandir}/man1 %{buildroot}%{_mandir}/man8
447     install -m644 common/usr/share/man/man8/* %{buildroot}%{_mandir}/man8
448    
449     # menu entry
450     install -d -m755 %{buildroot}%{_datadir}/applications
451     install -m644 common/usr/share/applications/* %{buildroot}%{_datadir}/applications
452     sed -i 's,^Icon=.*$,Icon=%{drivername}-amdcccle,' %{buildroot}%{_datadir}/applications/*.desktop
453     # control center doesn't really use GNOME/KDE libraries:
454     sed -i 's,GNOME;KDE;,,' %{buildroot}%{_datadir}/applications/*.desktop
455    
456     # icons
457     install -d -m755 %{buildroot}%{_miconsdir} %{buildroot}%{_iconsdir} %{buildroot}%{_liconsdir}
458 anssi 174609 %if !%{amdbuild}
459 ahmad 58193 convert common/usr/share/icons/ccc_large.xpm -resize 16x16 %{buildroot}%{_miconsdir}/%{drivername}-amdcccle.png
460     convert common/usr/share/icons/ccc_large.xpm -resize 32x32 %{buildroot}%{_iconsdir}/%{drivername}-amdcccle.png
461     convert common/usr/share/icons/ccc_large.xpm -resize 48x48 %{buildroot}%{_liconsdir}/%{drivername}-amdcccle.png
462     %else
463     install -m644 common/usr/share/icons/ccc_large.xpm %{buildroot}%{_iconsdir}/%{drivername}-amdcccle.xpm
464     %endif
465    
466     # install libraries
467     install -d -m755 %{buildroot}%{_libdir}/%{drivername}
468     install -m755 %{archdir}/usr/X11R6/%{_lib}/*.* %{buildroot}%{_libdir}/%{drivername}
469 anssi 93515 install -m755 %{archdir}/usr/X11R6/%{_lib}/fglrx/* %{buildroot}%{_libdir}/%{drivername}
470 anssi 97724 install -m755 %{archdir}/usr/%{_lib}/*.* %{buildroot}%{_libdir}/%{drivername}
471 anssi 93515 mv %{buildroot}%{_libdir}/%{drivername}/{fglrx-,}libGL.so.1.2
472     chmod 0644 %{buildroot}%{_libdir}/%{drivername}/*.a
473 ahmad 58193 /sbin/ldconfig -n %{buildroot}%{_libdir}/%{drivername}
474     # create devel symlinks
475     for file in %{buildroot}%{_libdir}/%{drivername}/*.so.*.*; do
476     ln -s $(basename $file) ${file%%.so*}.so;
477     done
478     %ifarch x86_64
479     install -d -m755 %{buildroot}%{_prefix}/lib/%{drivername}
480 anssi 93515 install -m755 arch/x86/usr/X11R6/lib/fglrx/* %{buildroot}%{_prefix}/lib/%{drivername}
481 anssi 97724 install -m755 arch/x86/usr/lib/*.* %{buildroot}%{_prefix}/lib/%{drivername}
482 anssi 93515 mv %{buildroot}%{_prefix}/lib/%{drivername}/{fglrx-,}libGL.so.1.2
483 ahmad 58193 /sbin/ldconfig -n %{buildroot}%{_prefix}/lib/%{drivername}
484     # create devel symlinks
485     for file in %{buildroot}%{_prefix}/lib/%{drivername}/*.so.*.*; do
486     ln -s $(basename $file) ${file%%.so*}.so;
487     done
488     %endif
489    
490     %if %{bundle_qt}
491     # install the bundled Qt4 libs on distros with qt4 < 4.4.2
492     install -d -m755 %{buildroot}%{_libdir}/%{drivername}-qt4
493     install -m755 %{archdir}/usr/share/ati/%{_lib}/* %{buildroot}%{_libdir}/%{drivername}-qt4
494     # RPATH of amdcccle points to datadir, we create a symlink there:
495     install -d -m755 %{buildroot}/usr/share/ati
496     ln -s %{_libdir}/%{drivername}-qt4 %{buildroot}/usr/share/ati/%{_lib}
497     %endif
498    
499     # install X.org files
500     install -d -m755 %{buildroot}%{xorg_libdir}/modules/drivers
501     install -m755 %{xverdir}/usr/X11R6/%{_lib}/modules/drivers/*.so* %{buildroot}%{xorg_libdir}/modules/drivers
502     install -d -m755 %{buildroot}%{xorg_libdir}/modules/linux
503     install -m755 %{xverdir}/usr/X11R6/%{_lib}/modules/linux/*.so* %{buildroot}%{xorg_libdir}/modules/linux
504     install -m644 %{xverdir}/usr/X11R6/%{_lib}/modules/*.*o %{buildroot}%{xorg_libdir}/modules
505     install -d -m755 %{buildroot}%{ati_extdir}
506 anssi 93515 install -m755 %{xverdir}/usr/X11R6/%{_lib}/modules/extensions/fglrx/*.so* %{buildroot}%{ati_extdir}
507     mv %{buildroot}%{ati_extdir}/{fglrx-,}libglx.so
508 ahmad 58193
509     # etc files
510     install -d -m755 %{buildroot}%{_sysconfdir}/ati
511     install -m644 common/etc/ati/* %{buildroot}%{_sysconfdir}/ati
512     chmod 0755 %{buildroot}%{_sysconfdir}/ati/*.sh
513    
514     # dri libraries
515     install -d -m755 %{buildroot}%{xorg_dridir}
516     install -m755 %{archdir}/usr/X11R6/%{_lib}/modules/dri/* %{buildroot}%{xorg_dridir}
517     %ifarch x86_64
518     install -d -m755 %{buildroot}%{xorg_dridir32}
519     install -m755 arch/x86/usr/X11R6/lib/modules/dri/* %{buildroot}%{xorg_dridir32}
520     %endif
521    
522     # ld.so.conf
523     install -d -m755 %{buildroot}%{_sysconfdir}/ld.so.conf.d/GL
524     echo "%{_libdir}/%{drivername}" > %{buildroot}%{_sysconfdir}/ld.so.conf.d/GL/%{ld_so_conf_file}
525     %ifarch x86_64
526     echo "%{_prefix}/lib/%{drivername}" >> %{buildroot}%{_sysconfdir}/ld.so.conf.d/GL/%{ld_so_conf_file}
527     %endif
528     touch %{buildroot}%{_sysconfdir}/ld.so.conf.d/GL.conf
529    
530     # XvMCConfig
531 anssi 87413 install -d -m755 %{buildroot}%{_sysconfdir}/%{drivername}
532 ahmad 58193 echo "libAMDXvBA.so.1" > %{buildroot}%{_sysconfdir}/%{drivername}/XvMCConfig
533    
534 anssi 174610 # OpenCL icd
535     install -d -m755 %{buildroot}%{_sysconfdir}/OpenCL/vendors
536     install -m644 %{archdir}/etc/OpenCL/vendors/* %{buildroot}%{_sysconfdir}/OpenCL/vendors
537     %ifarch x86_64
538     install -m644 arch/x86/etc/OpenCL/vendors/* %{buildroot}%{_sysconfdir}/OpenCL/vendors
539     %endif
540    
541 anssi 174609 # PowerXpress intel - use Mesa libGL but still keep AMD specific libs in search path
542 anssi 100286 echo "%{_libdir}/mesa" > %{buildroot}%{_sysconfdir}/%{drivername}/pxpress-free.ld.so.conf
543     %ifarch x86_64
544     echo "%{_prefix}/lib/mesa" >> %{buildroot}%{_sysconfdir}/%{drivername}/pxpress-free.ld.so.conf
545     %endif
546     cat %{buildroot}%{_sysconfdir}/ld.so.conf.d/GL/%{ld_so_conf_file} >> %{buildroot}%{_sysconfdir}/%{drivername}/pxpress-free.ld.so.conf
547 anssi 97724
548 ahmad 58193 # install ldetect-lst pcitable files for backports
549     sed -ne 's|^\s*FGL_ASIC_ID(\(0x....\)).*|\1|gp' common/lib/modules/fglrx/build_mod/fglrxko_pci_ids.h | tr '[:upper:]' '[:lower:]' | sort -u | sed 's,^.*$,0x1002\t\0\t"%{ldetect_cards_name}",' > pcitable.fglrx.lst
550     [ $(stat -c%s pcitable.fglrx.lst) -gt 500 ]
551     %if "%{ldetect_cards_name}" != ""
552     install -d -m755 %{buildroot}%{_datadir}/ldetect-lst/pcitable.d
553     gzip -c pcitable.fglrx.lst > %{buildroot}%{_datadir}/ldetect-lst/pcitable.d/40%{drivername}.lst.gz
554     %endif
555    
556 anssi 87413 install -d -m755 %{buildroot}%{_datadir}/ati
557     cat > %{buildroot}%{_datadir}/ati/amd-uninstall.sh <<EOF
558     #!/bin/bash
559     # parameters as per AMD: [--force | --dry-run]
560     dryrun=
561     while [ -n "\$*" ]; do
562     case "\$1" in
563     --dryrun) dryrun="--test" ;;
564     --force) ;;
565 anssi 100285 --preserve) ;;
566     --quick) ;;
567     --getUninstallVersion) exit 2 ;;
568 anssi 87413 *) echo "Unknown option for \$0." >&2 ;;
569     esac
570     shift
571     done
572    
573     # AMD documentation suggests doing rpm -V and use --force to override it,
574     # but it doesn't make sense with the update-alternatives setup, so we just
575     # check package presence.
576     pkgs=
577     rpm -q --quiet %{driverpkgname} && pkgs="\$pkgs %{driverpkgname}"
578     rpm -q --quiet dkms-%{drivername} && pkgs="\$pkgs dkms-%{drivername}"
579     rpm -q --quiet %{drivername}-control-center && pkgs="\$pkgs %{drivername}-control-center"
580     rpm -q --quiet %{drivername}-devel && pkgs="\$pkgs %{drivername}-devel"
581     [ -n "\$pkgs" ] || { echo "The AMD proprietary driver is not installed." >&2; exit 1; }
582     urpme --auto \$dryrun \$pkgs || { echo "Failed to uninstall the AMD proprietary driver." >&2; exit 1; }
583     [ -n "\$dryrun" ] || echo "The AMD proprietary driver has been uninstalled."
584     EOF
585     chmod 0755 %{buildroot}%{_datadir}/ati/amd-uninstall.sh
586    
587 anssi 97724 # PowerXpress (switchable graphics)
588     # - path hardcoded into driver
589     install -d -m755 %{buildroot}%{_libdir}/fglrx
590     cat > %{buildroot}%{_libdir}/fglrx/switchlibGL <<EOF
591     #!/bin/sh
592    
593     amd_target="%{_sysconfdir}/ld.so.conf.d/GL/%{ld_so_conf_file}"
594     intel_target="%{_sysconfdir}/%{drivername}/pxpress-free.ld.so.conf"
595    
596     case \$1 in
597     amd)
598     update-alternatives --set gl_conf "\$amd_target" >/dev/null
599 anssi 100206 ldconfig -X
600 anssi 97724 ;;
601     intel)
602     update-alternatives --set gl_conf "\$intel_target" >/dev/null
603 anssi 100206 ldconfig -X
604 anssi 97724 ;;
605     query)
606     case \$(readlink -f "%{_sysconfdir}/ld.so.conf.d/GL.conf") in
607     \$amd_target)
608     echo "amd"
609     ;;
610     \$intel_target)
611     echo "intel"
612     ;;
613     *)
614     echo "unknown"
615     ;;
616     esac
617     ;;
618     esac
619     EOF
620     chmod 0755 %{buildroot}%{_libdir}/fglrx/switchlibGL
621    
622     # It is not feasible to configure these separately with the alternatives
623     # system, so use the same script for both.
624 anssi 100286 # Note: using a symlink here fails as the driver checks go+w without
625     # dereferencing the symlink.
626     cp -a %{buildroot}%{_libdir}/fglrx/switchlibGL %{buildroot}%{_libdir}/fglrx/switchlibglx
627 anssi 97724
628 ahmad 58193 %pre -n %{driverpkgname}
629     # Handle alternatives-era /etc/ati directory
630     # It may confuse rpm due to it containing %config files
631     if [ -L %{_sysconfdir}/ati ]; then
632     rm %{_sysconfdir}/ati
633     fi
634    
635     %post -n %{driverpkgname}
636     # Migrate from pre-alternatives files
637     if [ ! -L %{_datadir}/applications/mandriva-amdcccle.desktop -a -e %{_datadir}/applications/mandriva-amdcccle.desktop ]; then
638     rm -f %{_datadir}/applications/mandriva-amdcccle.desktop
639     fi
640    
641     %{_sbindir}/update-alternatives \
642     --install %{_sysconfdir}/ld.so.conf.d/GL.conf gl_conf %{_sysconfdir}/ld.so.conf.d/GL/%{ld_so_conf_file} %{priority} \
643     --slave %{_sysconfdir}/X11/XvMCConfig xvmcconfig %{_sysconfdir}/%{drivername}/XvMCConfig \
644     --slave %{_libdir}/libAMDXvBA.cap %{_lib}AMDXvBA_cap %{_libdir}/%{drivername}/libAMDXvBA.cap \
645     %ifarch x86_64
646     --slave %{_prefix}/lib/libAMDXvBA.cap libAMDXvBA_cap %{_libdir}/%{drivername}/libAMDXvBA.cap \
647     %endif
648 anssi 87276 --slave %{xorg_extra_modules} xorg_extra_modules %{ati_extdir}
649 anssi 97724
650     # Alternative for PowerXpress intel (switchable graphics)
651     # This is a separate alternative so that this situation can be differentiated
652     # from standard intel configuration by tools (e.g. so that radeon driver won't
653     # be loaded despite fglrx not being configured anymore).
654     %{_sbindir}/update-alternatives \
655     --install %{_sysconfdir}/ld.so.conf.d/GL.conf gl_conf %{_sysconfdir}/%{drivername}/pxpress-free.ld.so.conf 50
656    
657 ahmad 58193 if [ "$(readlink -e %{_sysconfdir}/ld.so.conf.d/GL.conf)" = "%{_sysconfdir}/ld.so.conf.d/GL/ati-hd2000.conf" ]; then
658     # Switch from the obsolete hd2000 branch:
659     %{_sbindir}/update-alternatives --set gl_conf %{_sysconfdir}/ld.so.conf.d/GL/%{ld_so_conf_file}
660     fi
661     # When upgrading from alternatives setup, rpm may consider /etc/ati/atiogl.xml
662     # to exist due to the symlink, even when we remove it in %pre:
663     if [ -e %{_sysconfdir}/ati/atiogl.xml.rpmnew -a ! -e %{_sysconfdir}/ati/atiogl.xml ]; then
664     mv %{_sysconfdir}/ati/atiogl.xml.rpmnew %{_sysconfdir}/ati/atiogl.xml
665     echo "Moved %{_sysconfdir}/ati/atiogl.xml.rpmnew back to %{_sysconfdir}/ati/atiogl.xml."
666     fi
667 ahmad 58195
668 ahmad 58193 # Call /sbin/ldconfig explicitely due to alternatives
669     /sbin/ldconfig -X
670     %_post_service atieventsd
671     %if "%{ldetect_cards_name}" != ""
672     [ -x %{_sbindir}/update-ldetect-lst ] && %{_sbindir}/update-ldetect-lst || :
673     %endif
674    
675 anssi 100286 # Clear driver version numbers from amdpcsdb as suggested by AMD.
676     # (fixes version display in amdcccle after upgrade)
677 anssi 174609 amdconfig --del-pcs-key=LDC,ReleaseVersion &>/dev/null || :
678     amdconfig --del-pcs-key=LDC,Catalyst_Version &>/dev/null || :
679 anssi 100286
680 ahmad 58193 %posttrans -n %{driverpkgname}
681     # RPM seems to leave out the active /etc/fglrx* directory, likely due to
682     # it being confused with the /etc/ati symlink. We have to clean up ourself:
683     for dir in %{_sysconfdir}/fglrx %{_sysconfdir}/fglrx-hd2000; do
684     if [ -d $dir ]; then
685     for file in $dir/*; do
686     case "$(basename $file)" in
687     control | signature | logo_mask.xbm.example | logo.xbm.example)
688     # non-config files, rpm would normally remove
689     rm $file;;
690     authatieventsd.sh | fglrxprofiles.csv | fglrxrc | atiogl.xml)
691     # config files, check for modifications
692     case "$(stat -c%s $file)" in
693     545 | 838 | 2769 | 10224 | 11018)
694     rm $file;;
695     *)
696     echo "Saving $file as %{_sysconfdir}/ati/$(basename $file).rpmsave."
697     mv $file %{_sysconfdir}/ati/$(basename $file).rpmsave;;
698     esac
699     ;;
700     esac
701     done
702     [ $(ls -c $dir | wc -l) -eq 0 ] && rm -r $dir
703     fi
704     done
705     true
706    
707     %preun -n %{driverpkgname}
708     %_preun_service atieventsd
709    
710     %postun -n %{driverpkgname}
711     if [ ! -f %{_sysconfdir}/ld.so.conf.d/GL/%{ld_so_conf_file} ]; then
712     %{_sbindir}/update-alternatives --remove gl_conf %{_sysconfdir}/ld.so.conf.d/GL/%{ld_so_conf_file}
713     fi
714 anssi 97724 if [ ! -f %{_sysconfdir}/%{drivername}/pxpress-free.ld.so.conf ]; then
715     %{_sbindir}/update-alternatives --remove gl_conf %{_sysconfdir}/%{drivername}/pxpress-free.ld.so.conf
716     fi
717 ahmad 58193 # Call /sbin/ldconfig explicitely due to alternatives
718 anssi 100286 /sbin/ldconfig -X
719 ahmad 58193 %if "%{ldetect_cards_name}" != ""
720     [ -x %{_sbindir}/update-ldetect-lst ] && %{_sbindir}/update-ldetect-lst || :
721     %endif
722    
723     %pre -n %{drivername}-control-center
724     # Handle alternatives-era directory,
725     # it may confuse rpm.
726     if [ -L %{_datadir}/ati ]; then
727     rm %{_datadir}/ati
728     fi
729    
730     %post -n %{drivername}-control-center
731     [ -d %{_datadir}/fglrx ] && rm -r %{_datadir}/fglrx
732     [ -d %{_datadir}/fglrx-hd2000 ] && rm -r %{_datadir}/fglrx-hd2000
733     true
734    
735 anssi 174610 %post -n %{drivername}-opencl
736     # explicit /sbin/ldconfig due to a non-standard library directory
737     /sbin/ldconfig -X
738    
739 ahmad 58193 %post -n dkms-%{drivername}
740     /usr/sbin/dkms --rpm_safe_upgrade add -m %{drivername} -v %{version}-%{release} &&
741     /usr/sbin/dkms --rpm_safe_upgrade build -m %{drivername} -v %{version}-%{release} &&
742     /usr/sbin/dkms --rpm_safe_upgrade install -m %{drivername} -v %{version}-%{release} --force
743    
744     # rmmod any old driver if present and not in use (e.g. by X)
745     rmmod fglrx > /dev/null 2>&1 || true
746    
747     %preun -n dkms-%{drivername}
748     /usr/sbin/dkms --rpm_safe_upgrade remove -m %{drivername} -v %{version}-%{release} --all
749    
750     # rmmod any old driver if present and not in use (e.g. by X)
751     rmmod fglrx > /dev/null 2>&1 || true
752    
753     %clean
754     rm -rf %{buildroot}
755    
756     %files -n %{driverpkgname}
757     %defattr(-,root,root)
758     %doc README.install.urpmi README.manual-setup
759     %doc README.8.600.upgrade.urpmi
760     # the documentation files are grossly out of date; the configuration options
761     # described in configure.html seem to be used by the driver, though, so it is
762     # packaged, while the other html files are not:
763     %doc common/usr/share/doc/fglrx/configure.html
764 fwang 134335 %doc common/usr/share/doc/fglrx/LICENSE.TXT
765 ahmad 58193
766     %if "%{ldetect_cards_name}" != ""
767     %{_datadir}/ldetect-lst/pcitable.d/40%{drivername}.lst.gz
768     %endif
769    
770     %ghost %{_sysconfdir}/ld.so.conf.d/GL.conf
771     %dir %{_sysconfdir}/ld.so.conf.d/GL
772     %{_sysconfdir}/ld.so.conf.d/GL/ati.conf
773    
774     %dir %{_sysconfdir}/%{drivername}
775     %{_sysconfdir}/%{drivername}/XvMCConfig
776 anssi 97724 %{_sysconfdir}/%{drivername}/pxpress-free.ld.so.conf
777 ahmad 58193
778     %dir %{_sysconfdir}/ati
779     %{_sysconfdir}/ati/control
780     %{_sysconfdir}/ati/signature
781     %config(noreplace) %{_sysconfdir}/ati/atiogl.xml
782     %{_sysconfdir}/ati/logo.xbm.example
783     %{_sysconfdir}/ati/logo_mask.xbm.example
784     %config %{_sysconfdir}/ati/authatieventsd.sh
785     %{_sysconfdir}/ati/amdpcsdb.default
786    
787     %{_initrddir}/atieventsd
788    
789     %{_sbindir}/atieventsd
790     %{_sbindir}/amdnotifyui
791     %{_sbindir}/atigetsysteminfo.sh
792    
793 anssi 174608 %{_bindir}/amdconfig
794 ahmad 58193 %{_bindir}/amdupdaterandrconfig
795     %{_bindir}/amdxdg-su
796     %{_bindir}/aticonfig
797     %{_bindir}/atiodcli
798     %{_bindir}/atiode
799     %{_bindir}/fgl_glxgears
800     %{_bindir}/fglrxinfo
801    
802     %{xorg_libdir}/modules/drivers/fglrx_drv.so
803     %{xorg_libdir}/modules/linux/libfglrxdrm.so
804     %{xorg_libdir}/modules/amdxmm.*o
805     %{xorg_libdir}/modules/glesx.*o
806    
807     %dir %{ati_extdir}
808     %{ati_extdir}/libglx.so
809    
810     %{xorg_dridir}/fglrx_dri.so
811     %ifarch x86_64
812     %{xorg_dridir32}/fglrx_dri.so
813     %endif
814    
815     %dir %{_libdir}/%{drivername}
816     %{_libdir}/%{drivername}/libGL.so.1
817     %{_libdir}/%{drivername}/libGL.so.1.*
818     %{_libdir}/%{drivername}/libaticalcl.so
819     %{_libdir}/%{drivername}/libaticaldd.so
820     %{_libdir}/%{drivername}/libaticalrt.so
821     %{_libdir}/%{drivername}/libatiuki.so.1*
822 tmb 216518 %{_libdir}/%{drivername}/libSlotMaximizer*.so
823 ahmad 58193 %ifarch x86_64
824     %dir %{_prefix}/lib/%{drivername}
825     %{_prefix}/lib/%{drivername}/libGL.so.1
826     %{_prefix}/lib/%{drivername}/libGL.so.1.*
827     %{_prefix}/lib/%{drivername}/libaticalcl.so
828     %{_prefix}/lib/%{drivername}/libaticaldd.so
829     %{_prefix}/lib/%{drivername}/libaticalrt.so
830     %{_prefix}/lib/%{drivername}/libatiuki.so.1*
831 tmb 216518 %{_prefix}/lib/%{drivername}/libSlotMaximizer*.so
832 ahmad 58193 %endif
833    
834     %{_libdir}/%{drivername}/libfglrx_dm.so.1*
835     %{_libdir}/%{drivername}/libatiadlxx.so
836     %{_libdir}/%{drivername}/libAMDXvBA.cap
837     %{_libdir}/%{drivername}/libAMDXvBA.so.1*
838     %{_libdir}/%{drivername}/libXvBAW.so.1*
839    
840 anssi 97724 # PowerXpress
841     %{_libdir}/fglrx/switchlibGL
842     %{_libdir}/fglrx/switchlibglx
843    
844 anssi 87413 %dir %{_datadir}/ati
845     %{_datadir}/ati/amd-uninstall.sh
846    
847 ahmad 58193 %{_mandir}/man8/atieventsd.8*
848    
849     %files -n %{drivername}-control-center -f amdcccle.langs
850     %defattr(-,root,root)
851     %doc common/usr/share/doc/amdcccle/*
852     %{_sysconfdir}/security/console.apps/amdcccle-su
853     %{_sysconfdir}/pam.d/amdcccle-su
854     %{_bindir}/amdcccle
855     %dir %{_datadir}/ati
856     %dir %{_datadir}/ati/amdcccle
857 anssi 174609 %if %{amdbuild}
858 ahmad 58193 %{_iconsdir}/%{drivername}-amdcccle.xpm
859     %else
860     %{_miconsdir}/%{drivername}-amdcccle.png
861     %{_iconsdir}/%{drivername}-amdcccle.png
862     %{_liconsdir}/%{drivername}-amdcccle.png
863     %endif
864     %{_datadir}/applications/amdcccle.desktop
865     %{_datadir}/applications/amdccclesu.desktop
866     %if %{bundle_qt}
867     %dir %{_libdir}/%{drivername}-qt4
868     %{_libdir}/%{drivername}-qt4/libQtCore.so.4
869     %{_libdir}/%{drivername}-qt4/libQtGui.so.4
870     %{_datadir}/ati/%{_lib}
871     %endif
872    
873     %files -n %{drivername}-devel
874     %defattr(-,root,root)
875     %{_libdir}/%{drivername}/libfglrx_dm.a
876     %{_libdir}/%{drivername}/libfglrx_dm.so
877     %{_libdir}/%{drivername}/libAMDXvBA.so
878     %{_libdir}/%{drivername}/libXvBAW.so
879     %dir %{_includedir}/GL
880     %{_includedir}/GL/*ATI.h
881     %dir %{_includedir}/ATI
882     %dir %{_includedir}/ATI/GL
883     %{_includedir}/ATI/GL/*.h
884     %{_libdir}/%{drivername}/libGL.so
885     %{_libdir}/%{drivername}/libatiuki.so
886     %ifarch x86_64
887     %{_prefix}/lib/%{drivername}/libGL.so
888     %{_prefix}/lib/%{drivername}/libatiuki.so
889     %endif
890    
891 anssi 174610 %files -n %{drivername}-opencl
892     %defattr(-,root,root)
893     %dir %{_sysconfdir}/OpenCL
894     %dir %{_sysconfdir}/OpenCL/vendors
895     %{_sysconfdir}/OpenCL/vendors/amdocl*.icd
896     %{_bindir}/clinfo
897     %{_libdir}/%{drivername}/libamdocl*.so
898     %{_libdir}/%{drivername}/libOpenCL.so.1
899     %ifarch x86_64
900     %{_prefix}/lib/%{drivername}/libamdocl*.so
901     %{_prefix}/lib/%{drivername}/libOpenCL.so.1
902     %endif
903    
904 ahmad 58193 %files -n dkms-%{drivername}
905     %defattr(-,root,root)
906     %{_usrsrc}/%{drivername}-%{version}-%{release}

  ViewVC Help
Powered by ViewVC 1.1.30