]> git.pld-linux.org Git - packages/qt5-qtbase.git/blame - qt5-qtbase.spec
cleanup superfluous deps
[packages/qt5-qtbase.git] / qt5-qtbase.spec
CommitLineData
51df396b
WF
1# TODO:
2# - use PLD ldflags
3# - cleanup
1600b17a 4# - subpackages to sql classes
51df396b
WF
5
6# Conditional build:
7%bcond_with static_libs # build static libraries
8# -- features
9%bcond_without cups # CUPS printing support
10%bcond_with nas # NAS audio support
11%bcond_without gtk # GTK+ theme integration
12%bcond_without pch # pch (pre-compiled headers) in qmake
13%bcond_without system_phonon # phonon libraries from phonon.spec intead of qt4.spec
14%bcond_with wkhtml # WKHTMLTOPDF patch (affects QtGui ABI)
15# -- databases
16%bcond_without mysql # MySQL plugin
17%bcond_without odbc # unixODBC plugin
18%bcond_without pgsql # PostgreSQL plugin
19%bcond_without sqlite3 # SQLite3 plugin
20%bcond_without sqlite # SQLite2 plugin
21%bcond_without ibase # ibase (InterBase/Firebird) plugin
22# -- SIMD CPU instructions
23%bcond_with sse # use SSE instructions in gui/painting module
24%bcond_with sse2 # use SSE2 instructions
25%bcond_with sse3 # use SSE3 instructions (since: Intel middle Pentium4, AMD Athlon64)
26%bcond_with ssse3 # use SSSE3 instructions (Intel since Core2, Via Nano)
27%bcond_with sse41 # use SSE4.1 instructions (Intel since middle Core2)
28%bcond_with sse42 # use SSE4.2 instructions (the same)
29%bcond_with avx # use AVX instructions (future Intel x86 CPUs only)
30
31%ifnarch %{ix86} %{x8664} sparc sparcv9 alpha ppc
32%undefine with_ibase
33%endif
34%ifarch athlon
35%define with_3dnow 1
36%endif
37%ifarch athlon pentium3 pentium4 %{x8664}
38%define with_mmx 1
39%endif
40%ifarch pentium3 pentium4 %{x8664}
41%define with_sse 1
42%endif
43%ifarch pentium4 %{x8664}
44%define with_sse2 1
45%endif
46# any SQL
47%define _withsql 1
48%{!?with_sqlite3:%{!?with_sqlite:%{!?with_ibase:%{!?with_mysql:%{!?with_pgsql:%{!?with_odbc:%undefine _withsql}}}}}}
49
50%define icu_abi 52
51%define next_icu_abi %(echo $((%{icu_abi} + 1)))
52
53%define orgname qtbase
1600b17a 54Summary: Qt5 - QtBase components
51df396b
WF
55Summary(es.UTF-8): Biblioteca para ejecutar aplicaciones Qt5
56Summary(pl.UTF-8): Biblioteka Qt5
57Summary(pt_BR.UTF-8): Estrutura para rodar aplicações Qt5
58Name: qt5-%{orgname}
59Version: 5.2.0
60Release: 0.1
1600b17a
ER
61# See LGPL_EXCEPTIONS.txt, LICENSE.GPL3, respectively, for exception details
62License: LGPLv2 with exceptions or GPLv3 with exceptions
51df396b
WF
63Group: X11/Libraries
64Source0: http://download.qt-project.org/official_releases/qt/5.2/%{version}/submodules/%{orgname}-opensource-src-%{version}.tar.xz
65# Source0-md5: c94bbaf1bb7f0f4a32d2caa7501416e1
66URL: http://qt-project.org/
67%{?with_ibase:BuildRequires: Firebird-devel}
68BuildRequires: Mesa-libOpenVG-devel
51df396b
WF
69BuildRequires: OpenGL-devel
70BuildRequires: alsa-lib-devel
71%{?with_cups:BuildRequires: cups-devel}
72BuildRequires: dbus-devel >= 0.93
73BuildRequires: fontconfig-devel
74BuildRequires: freetds-devel
75BuildRequires: freetype-devel >= 1:2.0.0
76%{?with_pch:BuildRequires: gcc >= 5:4.0}
5b8dc449 77BuildRequires: gdb
51df396b 78BuildRequires: glib2-devel >= 2.0.0
51df396b
WF
79%{?with_gtk:BuildRequires: gtk+2-devel >= 2:2.10}
80# see dependency on libicu version below
51df396b 81BuildRequires: libicu-devel < %{next_icu_abi}
1600b17a 82BuildRequires: libicu-devel >= %{icu_abi}
51df396b 83BuildRequires: libjpeg-devel
51df396b
WF
84BuildRequires: libpng-devel >= 2:1.0.8
85BuildRequires: libstdc++-devel
86%{?with_mysql:BuildRequires: mysql-devel}
87%{?with_nas:BuildRequires: nas-devel}
88BuildRequires: pkgconfig
89%{?with_pgsql:BuildRequires: postgresql-backend-devel}
90%{?with_pgsql:BuildRequires: postgresql-devel}
91BuildRequires: pulseaudio-devel >= 0.9.10
92BuildRequires: rpmbuild(macros) >= 1.654
51df396b
WF
93BuildRequires: sed >= 4.0
94%{?with_sqlite:BuildRequires: sqlite-devel}
95%{?with_sqlite3:BuildRequires: sqlite3-devel}
1600b17a 96BuildRequires: tar >= 1:1.22
5b8dc449 97BuildRequires: udev-devel
51df396b 98%{?with_odbc:BuildRequires: unixODBC-devel >= 2.3.0}
5b8dc449
ER
99BuildRequires: xcb-util-image-devel
100BuildRequires: xcb-util-keysyms-devel
101BuildRequires: xcb-util-renderutil-devel
102BuildRequires: xcb-util-wm-devel
51df396b
WF
103BuildRequires: xorg-lib-libSM-devel
104BuildRequires: xorg-lib-libXcursor-devel
105BuildRequires: xorg-lib-libXext-devel
106BuildRequires: xorg-lib-libXfixes-devel
107BuildRequires: xorg-lib-libXi-devel
108BuildRequires: xorg-lib-libXinerama-devel
109BuildRequires: xorg-lib-libXrandr-devel
110BuildRequires: xorg-lib-libXrender-devel
1600b17a 111BuildRequires: xz
51df396b
WF
112BuildRequires: zlib-devel
113BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
114
115%define _noautoreqdep libGL.so.1 libGLU.so.1
116%define _noautostrip '.*_debug\\.so*'
117
118%define specflags -fno-strict-aliasing
119
120%define _qtdir %{_libdir}/qt5
121
122%description
1600b17a
ER
123Qt is a software toolkit for developing applications.
124
125This package contains base tools, like string, xml, and network
126handling.
51df396b
WF
127
128%package devel
129Summary: The Qt5 application framework - development files
130Group: X11/Development/Libraries
131Requires: %{name} = %{version}-%{release}
132
133%description devel
134Qt5 - development files.
135
b18d64cc
WF
136%package doc
137Summary: The Qt5 application framework base - docs
138Group: Documentation
139Requires: %{name} = %{version}-%{release}
168d1e38
ER
140%if "%{_rpmversion}" >= "5"
141BuildArch: noarch
142%endif
b18d64cc
WF
143
144%description doc
145Qt5 base - documentation.
146
51df396b
WF
147%package examples
148Summary: Qt5 examples
149Group: X11/Development/Libraries
168d1e38
ER
150%if "%{_rpmversion}" >= "5"
151BuildArch: noarch
152%endif
51df396b
WF
153
154%description examples
b18d64cc 155Qt5 base - examples.
51df396b
WF
156
157%prep
158%setup -q -n %{orgname}-opensource-src-%{version}
159
160%{__sed} -i -e 's,usr/X11R6/,usr/g,' mkspecs/linux-g++-64/qmake.conf \
161 mkspecs/common/linux.conf
162
163# change QMAKE FLAGS to build
164%{__sed} -i -e '
165 s|QMAKE_CC.*=.*gcc|QMAKE_CC\t\t= %{__cc}|;
166 s|QMAKE_CXX.*=.*g++|QMAKE_CXX\t\t= %{__cxx}|;
167 s|QMAKE_LINK.*=.*g++|QMAKE_LINK\t\t= %{__cxx}|;
168 s|QMAKE_LINK_SHLIB.*=.*g++|QMAKE_LINK_SHLIB\t= %{__cxx}|;
169 s|QMAKE_CFLAGS_RELEASE.*|QMAKE_CFLAGS_RELEASE\t+= %{rpmcppflags} %{rpmcflags}|;
170 s|QMAKE_CXXFLAGS_RELEASE.*|QMAKE_CXXFLAGS_RELEASE\t+= %{rpmcppflags} %{rpmcxxflags}|;
171 s|QMAKE_CFLAGS_DEBUG.*|QMAKE_CFLAGS_DEBUG\t+= %{debugcflags}|;
172 s|QMAKE_CXXFLAGS_DEBUG.*|QMAKE_CXXFLAGS_DEBUG\t+= %{debugcflags}|;
173 ' mkspecs/common/g++-base.conf
174
175#%{__sed} -i -e '
176# s|QMAKE_INCDIR_QT.*|QMAKE_INCDIR_QT = %{_includedir}/qt4|;
177# ' mkspecs/common/linux.conf
178
179# No -L/usr/lib.
180%{__sed} -i -e '
181 s|^QMAKE_LIBDIR_QT.*=.*|QMAKE_LIBDIR_QT =|;
182 ' mkspecs/common/linux.conf
183
184# undefine QMAKE_STRIP, so we get useful -debuginfo pkgs
185%{__sed} -i -e '
186 s|^QMAKE_STRIP.*=.*|QMAKE_STRIP =|;
187 ' mkspecs/common/linux.conf
188
b18d64cc
WF
189# rpmldflags
190%{__sed} -i -e '
191 s|^QMAKE_LFLAGS .*=.*|QMAKE_LFLAGS\t\t+= %{rpmldflags}|;
192 ' mkspecs/common/gcc-base.conf
193
51df396b
WF
194%build
195# pass OPTFLAGS to build qmake itself with optimization
196export OPTFLAGS="%{rpmcflags}"
197export PATH=$PWD/bin:$PATH
198
199##################################
200# DEFAULT OPTIONS FOR ALL BUILDS #
201##################################
202
203COMMONOPT=" \
204 -confirm-license \
205 -opensource \
206 -verbose \
207 -prefix %{_qtdir} \
208 -bindir %{_qtdir}/bin \
209 -docdir %{_docdir}/qt5-doc \
210 -headerdir %{_includedir}/qt5 \
211 -libdir %{_libdir} \
212 -plugindir %{_qtdir}/plugins \
213 -datadir %{_datadir}/qt5 \
214 -translationdir %{_localedir}/ \
215 -sysconfdir %{_sysconfdir}/qt5 \
216 -examplesdir %{_examplesdir}/qt5 \
217 -optimized-qmake \
218 -glib \
219 %{!?with_gtk:-no-gtkstyle} \
220 -%{!?with_pch:no-}pch \
221 -no-rpath \
222 %{!?with_sse:-no-sse} \
223 %{!?with_sse2:-no-sse2} \
224 %{!?with_sse3:-no-sse3} \
225 %{!?with_ssse3:-no-ssse3} \
226 %{!?with_sse41:-no-sse4.1} \
227 %{!?with_sse42:-no-sse4.2} \
228 %{!?with_avx:-no-avx} \
229 -dbus \
230 -dbus-linked \
231 -reduce-relocations \
232 -system-freetype \
233 -system-libjpeg \
234 -system-libpng \
235 -system-pcre \
236 -system-xcb \
237 -system-xkbcommon \
238 -system-zlib \
239 -openssl-linked \
240 -largefile \
241 -I/usr/include/postgresql/server \
242 -I/usr/include/mysql \
243 %{?with_cups:-cups} \
244 %{?with_nas:-system-nas-sound} \
245 %{?debug:-debug} \
246 %{!?debug:-release} \
247 -fontconfig \
248 -largefile \
249 -iconv \
250 -icu \
251 -no-separate-debug-info \
252 -xfixes \
253 -nis \
254 -sm \
255 -xcursor \
256 -xinput2 \
257 -xinerama \
258 -xrandr \
259 -xkb \
260 -xrender \
261 -xshape \
262 -continue"
263
264%if 0
265##################################
266# STATIC MULTI-THREAD #
267##################################
268
269%if %{with static_libs}
270OPT=" \
271 -%{!?with_mysql:no}%{?with_mysql:qt}-sql-mysql \
272 -%{!?with_odbc:no}%{?with_odbc:qt}-sql-odbc \
273 -%{!?with_pgsql:no}%{?with_pgsql:qt}-sql-psql \
274 -%{!?with_sqlite3:no}%{?with_sqlite3:qt}-sql-sqlite \
275 -%{!?with_sqlite:no}%{?with_sqlite:qt}-sql-sqlite2 \
276 -%{!?with_ibase:no}%{?with_ibase:qt}-sql-ibase \
277 -static"
278
279./configure $COMMONOPT $OPT
280
281%{__make} -C src
282%{__make} -C tools/assistant/lib
283%{__make} -C tools/designer
284if [ ! -d staticlib ]; then
285 mkdir staticlib
286 cp -a lib/*.a staticlib
287fi
288%{__make} distclean
289%endif
290%endif
291
292##################################
293# SHARED MULTI-THREAD #
294##################################
295
296OPT=" \
297 -%{!?with_mysql:no}%{?with_mysql:plugin}-sql-mysql \
298 -%{!?with_odbc:no}%{?with_odbc:plugin}-sql-odbc \
299 -%{!?with_pgsql:no}%{?with_pgsql:plugin}-sql-psql \
300 -%{!?with_sqlite3:no}%{?with_sqlite3:plugin}-sql-sqlite \
301 -%{!?with_sqlite:no}%{?with_sqlite:plugin}-sql-sqlite2 \
302 -%{!?with_ibase:no}%{?with_ibase:plugin}-sql-ibase \
303 -shared"
304
305./configure $COMMONOPT $OPT
306
307%{__make}
b18d64cc
WF
308# make docs requires qt5-qttools
309%{__make} docs || :
51df396b
WF
310#%{__make} \
311# sub-tools-all-ordered \
312# sub-demos-all-ordered \
313# sub-examples-all-ordered
314
315%install
316rm -rf $RPM_BUILD_ROOT
317install -d $RPM_BUILD_ROOT{/etc/{env.d,qt5},%{_bindir},%{_desktopdir},%{_pixmapsdir},%{_pkgconfigdir}}
318#install -d $RPM_BUILD_ROOT%{_qtdir}/plugins/{crypto,network}
319
320#echo '#QT_GRAPHICSSYSTEM=raster' > $RPM_BUILD_ROOT/etc/env.d/QT_GRAPHICSSYSTEM
321
322%{__make} install \
323 INSTALL_ROOT=$RPM_BUILD_ROOT
324
b18d64cc
WF
325# not sure whether || : is needed
326%{__make} install_docs \
327 INSTALL_ROOT=$RPM_BUILD_ROOT || :
51df396b
WF
328
329# kill -L/inside/builddir from *.la and *.pc (bug #77152)
330%{__sed} -i -e "s,-L$PWD/lib,,g" $RPM_BUILD_ROOT%{_libdir}/*.{la,prl}
331%{__sed} -i -e "s,-L$PWD/lib,,g" $RPM_BUILD_ROOT%{_pkgconfigdir}/*.pc
332%{__sed} -i -e '
333 s|moc_location=.*|moc_location=%{_bindir}/moc-qt5|;
334 s|uic_location=.*|uic_location=%{_bindir}/uic-qt5|;
335 ' $RPM_BUILD_ROOT%{_pkgconfigdir}/*.pc
336
337# libQtWebKit.la contains '-ljscore' and '-lwebcore', they come
338# from src/3rdparty/webkit/{JavaScriptCore,WebCore}} but those libs aren't installed
339#%{__sed} -i -e "s,-lwebcore,,g;s,-ljscore,,g;" $RPM_BUILD_ROOT%{_libdir}/libQtWebKit.la
340
341# install tools
342install bin/findtr $RPM_BUILD_ROOT%{_qtdir}/bin
343
344cd $RPM_BUILD_ROOT%{_bindir}
345#ln -sf ../%{_lib}/qt5/bin/assistant assistant-qt5
346#ln -sf ../%{_lib}/qt5/bin/designer designer-qt5
347ln -sf ../%{_lib}/qt5/bin/findtr findtr-qt5
348#ln -sf ../%{_lib}/qt5/bin/linguist linguist-qt5
349#ln -sf ../%{_lib}/qt5/bin/lrelease lrelease-qt5
350#ln -sf ../%{_lib}/qt5/bin/lupdate lupdate-qt5
351ln -sf ../%{_lib}/qt5/bin/moc moc-qt5
352ln -sf ../%{_lib}/qt5/bin/qmake qmake-qt5
353#ln -sf ../%{_lib}/qt5/bin/qtconfig qtconfig-qt5
354ln -sf ../%{_lib}/qt5/bin/uic uic-qt5
355ln -sf ../%{_lib}/qt5/bin/rcc rcc-qt5
356#ln -sf ../%{_lib}/qt5/bin/pixeltool .
357#ln -sf ../%{_lib}/qt5/bin/qcollectiongenerator .
358ln -sf ../%{_lib}/qt5/bin/qdbuscpp2xml qdbuscpp2xml-qt5
359ln -sf ../%{_lib}/qt5/bin/qdbusxml2cpp qdbusxml2cpp-qt5
360ln -sf ../%{_lib}/qt5/bin/qdoc qdoc-qt5
361#ln -sf ../%{_lib}/qt5/bin/qhelpconverter .
362#ln -sf ../%{_lib}/qt5/bin/qhelpgenerator .
363#ln -sf ../%{_lib}/qt5/bin/qmlviewer .
364#ln -sf ../%{_lib}/qt5/bin/qmlplugindump .
365#ln -sf ../%{_lib}/qt5/bin/qttracereplay .
366#ln -sf ../%{_lib}/qt5/bin/qvfb .
367#ln -sf ../%{_lib}/qt5/bin/xmlpatternsvalidator .
368cd -
369
370# Prepare some files list
371ifecho() {
372 RESULT=`echo $RPM_BUILD_ROOT$2 2>/dev/null`
373 [ "$RESULT" == "" ] && return # XXX this is never true due $RPM_BUILD_ROOT being set
374 r=`echo $RESULT | awk '{ print $1 }'`
375
376 if [ -d "$r" ]; then
377 echo "%%dir $2" >> $1.files
378 elif [ -x "$r" ] ; then
379 echo "%%attr(755,root,root) $2" >> $1.files
380 elif [ -f "$r" ]; then
381 echo "$2" >> $1.files
382 else
383 echo "Error generation $1 files list!"
384 echo "$r: no such file or directory!"
385 return 1
386 fi
387}
388
389echo "%defattr(644,root,root,755)" > examples.files
390ifecho examples %{_examplesdir}/qt5
391for f in `find $RPM_BUILD_ROOT%{_examplesdir}/qt5 -printf "%%P "`; do
392 ifecho examples %{_examplesdir}/qt5/$f
393done
394
395%clean
396rm -rf $RPM_BUILD_ROOT
397
398%post -p /sbin/ldconfig
399%postun -p /sbin/ldconfig
400
401%files
402%defattr(644,root,root,755)
403%attr(755,root,root) %{_bindir}/*
404%attr(755,root,root) %ghost %{_libdir}/libQt5Concurrent.so.?
405%attr(755,root,root) %{_libdir}/libQt5Concurrent.so.*.*
406%attr(755,root,root) %ghost %{_libdir}/libQt5Core.so.?
407%attr(755,root,root) %{_libdir}/libQt5Core.so.*.*
408%attr(755,root,root) %ghost %{_libdir}/libQt5DBus.so.?
409%attr(755,root,root) %{_libdir}/libQt5DBus.so.*.*
410%attr(755,root,root) %ghost %{_libdir}/libQt5Gui.so.?
411%attr(755,root,root) %{_libdir}/libQt5Gui.so.*.*
412%attr(755,root,root) %ghost %{_libdir}/libQt5Network.so.?
413%attr(755,root,root) %{_libdir}/libQt5Network.so.*.*
414%attr(755,root,root) %ghost %{_libdir}/libQt5OpenGL.so.?
415%attr(755,root,root) %{_libdir}/libQt5OpenGL.so.*.*
416%attr(755,root,root) %ghost %{_libdir}/libQt5PrintSupport.so.?
417%attr(755,root,root) %{_libdir}/libQt5PrintSupport.so.*.*
418%attr(755,root,root) %ghost %{_libdir}/libQt5Sql.so.?
419%attr(755,root,root) %{_libdir}/libQt5Sql.so.*.*
420%attr(755,root,root) %ghost %{_libdir}/libQt5Test.so.?
421%attr(755,root,root) %{_libdir}/libQt5Test.so.*.*
422%attr(755,root,root) %ghost %{_libdir}/libQt5Widgets.so.?
423%attr(755,root,root) %{_libdir}/libQt5Widgets.so.*.*
424%attr(755,root,root) %ghost %{_libdir}/libQt5Xml.so.?
425%attr(755,root,root) %{_libdir}/libQt5Xml.so.*.*
426%{_libdir}/libQt5Bootstrap.a
427%{_libdir}/libQt5OpenGLExtensions.a
428%{_libdir}/libQt5PlatformSupport.a
429
430%dir /etc/qt5
431%dir %{_qtdir}
432%dir %{_qtdir}/bin
433%attr(755,root,root) %{_qtdir}/bin/*
434%attr(755,root,root) %{_qtdir}/plugins
435
436%files devel
437%defattr(644,root,root,755)
438%attr(755,root,root) %{_libdir}/libQt5Concurrent.so
439%attr(755,root,root) %{_libdir}/libQt5Core.so
440%attr(755,root,root) %{_libdir}/libQt5DBus.so
441%attr(755,root,root) %{_libdir}/libQt5Gui.so
442%attr(755,root,root) %{_libdir}/libQt5Network.so
443%attr(755,root,root) %{_libdir}/libQt5OpenGL.so
444%attr(755,root,root) %{_libdir}/libQt5PrintSupport.so
445%attr(755,root,root) %{_libdir}/libQt5Sql.so
446%attr(755,root,root) %{_libdir}/libQt5Test.so
447%attr(755,root,root) %{_libdir}/libQt5Widgets.so
448%attr(755,root,root) %{_libdir}/libQt5Xml.so
449
450%{_libdir}/libQt5Concurrent.la
451%{_libdir}/libQt5Core.la
452%{_libdir}/libQt5DBus.la
453%{_libdir}/libQt5Gui.la
454%{_libdir}/libQt5Network.la
455%{_libdir}/libQt5OpenGL.la
456%{_libdir}/libQt5PrintSupport.la
457%{_libdir}/libQt5Sql.la
458%{_libdir}/libQt5Test.la
459%{_libdir}/libQt5Widgets.la
460%{_libdir}/libQt5Xml.la
461
462%{_libdir}/libQt5Concurrent.prl
463%{_libdir}/libQt5Core.prl
464%{_libdir}/libQt5DBus.prl
465%{_libdir}/libQt5Gui.prl
466%{_libdir}/libQt5Network.prl
467%{_libdir}/libQt5OpenGL.prl
468%{_libdir}/libQt5PrintSupport.prl
469%{_libdir}/libQt5Sql.prl
470%{_libdir}/libQt5Test.prl
471%{_libdir}/libQt5Widgets.prl
472%{_libdir}/libQt5Xml.prl
473
474%{_libdir}/libQt5Bootstrap.la
475%{_libdir}/libQt5Bootstrap.prl
476%{_libdir}/libQt5OpenGLExtensions.la
477%{_libdir}/libQt5OpenGLExtensions.prl
478%{_libdir}/libQt5PlatformSupport.la
479%{_libdir}/libQt5PlatformSupport.prl
480
481%{_includedir}/qt5
482%{_libdir}/cmake/Qt5
483%{_libdir}/cmake/Qt5Concurrent
484%{_libdir}/cmake/Qt5Core
485%{_libdir}/cmake/Qt5DBus
486%{_libdir}/cmake/Qt5Gui
487%{_libdir}/cmake/Qt5Network
488%{_libdir}/cmake/Qt5OpenGL
489%{_libdir}/cmake/Qt5OpenGLExtensions
490%{_libdir}/cmake/Qt5PrintSupport
491%{_libdir}/cmake/Qt5Sql
492%{_libdir}/cmake/Qt5Test
493%{_libdir}/cmake/Qt5Widgets
494%{_libdir}/cmake/Qt5Xml
495%{_pkgconfigdir}/*.pc
51df396b
WF
496%{_qtdir}/mkspecs
497
b18d64cc
WF
498%files doc
499%defattr(644,root,root,755)
500%{_docdir}/qt5-doc
501
51df396b 502%files examples -f examples.files
This page took 0.14042 seconds and 4 git commands to generate.