- updated to 0.3.24
[packages/pipewire.git] / pipewire.spec
CommitLineData
234c024c 1# TODO: evl support (BR: libevl-devel, https://evlproject.org/)
2ceddacd 2# - libcamera integration (no releases yet; ARM specific?)
2a4039e3 3# - ldacBT-enc, ldacBT-abr, libopenaptx for bluez5 codecs
911dd57a
JB
4#
5# Conditional build:
6%bcond_without apidocs # Doxygen based API documentation
96dfc521 7%bcond_without ffmpeg # ffmpeg spa plugin integration
911dd57a 8%bcond_without gstreamer # GStreamer module
96dfc521 9%bcond_without jack # pipewire-jack and jack spa plugin integration
911dd57a
JB
10#
11Summary: PipeWire - server and user space API to deal with multimedia pipelines
12Summary(pl.UTF-8): PipeWire - serwer i API przestrzeni użytkownika do obsługi potoków multimedialnych
13Name: pipewire
2a4039e3 14Version: 0.3.24
911dd57a
JB
15Release: 1
16License: LGPL v2+
17Group: Libraries
18#Source0Download: https://github.com/PipeWire/pipewire/releases
19Source0: https://github.com/PipeWire/pipewire/archive/%{version}/%{name}-%{version}.tar.gz
2a4039e3 20# Source0-md5: 887be3193a91f18c7ea63e3f5c61976b
96dfc521 21Patch0: %{name}-gcc.patch
911dd57a 22URL: https://pipewire.org/
96dfc521
JB
23%if %{with jack}
24BuildRequires: SDL2-devel >= 2
25%endif
2ceddacd 26BuildRequires: Vulkan-Loader-devel >= 1.1.69
234c024c 27BuildRequires: alsa-lib-devel >= 1.1.7
96dfc521 28BuildRequires: bluez-libs-devel >= 4.101
911dd57a
JB
29BuildRequires: dbus-devel
30%{?with_apidocs:BuildRequires: doxygen}
2a4039e3 31BuildRequires: fdk-aac-devel
911dd57a 32# libavcodec libavformat libavfilter
96dfc521 33%{?with_ffmpeg:BuildRequires: ffmpeg-devel}
911dd57a 34BuildRequires: gcc >= 5:3.2
2a4039e3 35%if %{with gstreamer}
96dfc521
JB
36BuildRequires: glib2-devel >= 1:2.32.0
37%endif
911dd57a
JB
38%{?with_apidocs:BuildRequires: graphviz}
39%if %{with gstreamer}
234c024c
JB
40BuildRequires: gstreamer-devel >= 1.10
41BuildRequires: gstreamer-plugins-base-devel >= 1.10
911dd57a 42%endif
96dfc521 43%{?with_jack:BuildRequires: jack-audio-connection-kit-devel >= 1.9.10}
2a4039e3
JB
44%ifarch i386 i486
45# possibly more 32-bit archs (where 8-byte __atomic_store_n require libatomic)
46BuildRequires: libatomic-devel
47%endif
96dfc521
JB
48BuildRequires: libsndfile-devel >= 1.0.20
49BuildRequires: meson >= 0.50.0
2a4039e3 50BuildRequires: ncurses-devel
911dd57a
JB
51BuildRequires: ninja >= 1.5
52BuildRequires: pkgconfig
2ceddacd 53BuildRequires: rpmbuild(macros) >= 1.752
911dd57a
JB
54BuildRequires: sbc-devel
55BuildRequires: systemd-devel
56BuildRequires: udev-devel
57BuildRequires: xmltoman
58Requires: %{name}-libs = %{version}-%{release}
234c024c 59Requires: libsndfile >= 1.0.20
911dd57a
JB
60BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
61
62%description
63PipeWire is a server and user space API to deal with multimedia
64pipelines. This includes:
65 - Making available sources of video (such as from a capture devices
66 or application provided streams) and multiplexing this with
67 clients.
68 - Accessing sources of video for consumption.
69 - Generating graphs for audio and video processing.
70
71Nodes in the graph can be implemented as separate processes,
72communicating with sockets and exchanging multimedia content using fd
73passing.
74
75%description -l pl.UTF-8
76PipeWire to serwer i API przestrzeni użytkownika do obsługi potoków
77multimedialnych. Obejmuje to:
78 - udostępnianie źródeł obrazu (np. z urządzeń przechwytujących obraz
79 lub strumieni udostępnianych przez aplikacje) oraz multipleksowanie
80 ich do klientów
81 - dostęp do źródeł obrazu do pobierania
82 - generowanie grafów do przetwarzania dźwięku i obrazu
83
84%package libs
85Summary: PipeWire shared library
86Summary(pl.UTF-8): Biblioteka współdzielona PipeWire
87Group: Libraries
88
89%description libs
90PipeWire shared library.
91
92%description libs -l pl.UTF-8
93Biblioteka współdzielona PipeWire.
94
95%package devel
96Summary: Header files for PipeWire library and Simple Plugin API
97Summary(pl.UTF-8): Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API
98Group: Development/Libraries
99Requires: %{name}-libs = %{version}-%{release}
100
101%description devel
102Header files for PipeWire library and Simple Plugin API.
103
104%description devel -l pl.UTF-8
105Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API.
106
107%package apidocs
108Summary: API documentation for PipeWire library
109Summary(pl.UTF-8): Dokumentacja API biblioteki PipeWire
110Group: Documentation
7fcbfe19 111BuildArch: noarch
911dd57a
JB
112
113%description apidocs
114API documentation for PipeWire library.
115
116%description apidocs -l pl.UTF-8
117Dokumentacja API biblioteki PipeWire.
118
119%package spa-module-alsa
120Summary: PipeWire SPA plugin to play and record audio with ALSA API
121Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API ALSA
122Group: Libraries
123Requires: %{name}-libs = %{version}-%{release}
234c024c 124Requires: alsa-lib >= 1.1.7
911dd57a
JB
125
126%description spa-module-alsa
127PipeWire SPA plugin to play and record audio with ALSA API.
128
129%description spa-module-alsa -l pl.UTF-8
130Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
131API ALSA.
132
133%package spa-module-bluez
134Summary: PipeWire SPA plugin to play audio with Bluetooth A2DP
135Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP
136Group: Libraries
137Requires: %{name}-libs = %{version}-%{release}
96dfc521 138Requires: bluez-libs >= 4.101
911dd57a
JB
139
140%description spa-module-bluez
141PipeWire SPA plugin to play audio with Bluetooth A2DP.
142
143%description spa-module-bluez -l pl.UTF-8
144Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP.
145
146%package spa-module-ffmpeg
147Summary: PipeWire SPA plugin to decode/encode with FFmpeg library
148Summary(pl.UTF-8): Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki FFmpeg
149Group: Libraries
150Requires: %{name}-libs = %{version}-%{release}
151
152%description spa-module-ffmpeg
153PipeWire SPA plugin to decode/encode with FFmpeg library.
154
155%description spa-module-ffmpeg -l pl.UTF-8
156Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki
157FFmpeg.
158
96dfc521
JB
159%package spa-module-jack
160Summary: PipeWire SPA plugin to play and record audio with JACK API
161Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API JACK
162Group: Libraries
163Requires: %{name}-libs = %{version}-%{release}
164Requires: jack-audio-connection-kit >= 1.9.10
165
166%description spa-module-jack
167PipeWire SPA plugin to play and record audio with JACK API.
168
169%description spa-module-jack -l pl.UTF-8
170Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
171API JACK.
172
173%package spa-module-vulkan
174Summary: PipeWire SPA plugin to generate video frames using Vulkan
175Summary(pl.UTF-8): Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana
176Group: Libraries
177Requires: %{name}-libs = %{version}-%{release}
2ceddacd 178Requires: Vulkan-Loader >= 1.1.69
96dfc521
JB
179
180%description spa-module-vulkan
181PipeWire SPA plugin to generate video frames using Vulkan.
182
183%description spa-module-vulkan -l pl.UTF-8
184Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana.
185
186%package jack
187Summary: PipeWire JACK sound system integration
188Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku JACK
189Group: Libraries
190Requires: %{name} = %{version}-%{release}
191Requires: jack-audio-connection-kit >= 1.9.10
192
193%description jack
194PipeWire JACK sound system integration.
195
196%description jack -l pl.UTF-8
197Integracja PipeWire z systemem dźwięku JACK.
198
199%package pulseaudio
200Summary: PipeWire PulseAudio sound system integration
201Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku PulseAudio
202Group: Libraries
203Requires: %{name} = %{version}-%{release}
96dfc521
JB
204
205%description pulseaudio
206PipeWire PulseAudio sound system integration.
207
208%description pulseaudio -l pl.UTF-8
209Integracja PipeWire z systemem dźwięku PulseAudio.
210
211%package -n alsa-plugin-pipewire
212Summary: PipeWire integration plugin for ALSA sound system
213Summary(pl.UTF-8): Wtyczka systemu dźwięku ALSA integrująca z PipeWire
214Group: Libraries
215Requires: %{name} = %{version}-%{release}
234c024c 216Requires: alsa-lib >= 1.1.7
96dfc521
JB
217
218%description -n alsa-plugin-pipewire
219PipeWire integration plugin for ALSA sound system.
220
221%description -n alsa-plugin-pipewire -l pl.UTF-8
222Wtyczka systemu dźwięku ALSA integrująca z PipeWire.
223
911dd57a
JB
224%package -n gstreamer-pipewire
225Summary: PipeWire video sink and source plugin for GStreamer
226Summary(pl.UTF-8): Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera
227Group: Libraries
228Requires: %{name} = %{version}-%{release}
234c024c
JB
229Requires: glib2 >= 1:2.32.0
230Requires: gstreamer >= 1.10
231Requires: gstreamer-plugins-base >= 1.10
911dd57a
JB
232
233%description -n gstreamer-pipewire
234PipeWire video sink and source plugin for GStreamer.
235
236%description -n gstreamer-pipewire -l pl.UTF-8
237Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera.
238
239%prep
240%setup -q
96dfc521 241%patch0 -p1
911dd57a
JB
242
243%build
244%meson build \
2a4039e3
JB
245 -Daudiotestsrc=enabled \
246 -Dbluez5-backend-hsphfpd=enabled \
247 %{?with_apidocs:-Ddocs=enabled} \
248 %{?with_ffmpeg:-Dffmpeg=enabled} \
249 %{!?with_gstreamer:-Dgstreamer=disabled} \
250 %{!?with_jack:-Djack=disabled} \
251 -Dman=enabled \
252 %{!?with_jack:-Dpipewire-jack=disabled} \
253 -Dvideotestsrc=enabled \
254 -Dvolume=enabled
255# TODO: -Devl=enabled
911dd57a
JB
256
257%ninja_build -C build
258
259%install
260rm -rf $RPM_BUILD_ROOT
261
262%ninja_install -C build
263
96dfc521
JB
264install -d $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
265cp -p pipewire-alsa/conf/*.conf $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
266
911dd57a
JB
267# packaged as %doc in -apidocs
268%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/pipewire/html
269
2a4039e3
JB
270%find_lang %{name}
271
911dd57a
JB
272%clean
273rm -rf $RPM_BUILD_ROOT
274
275%post libs -p /sbin/ldconfig
276%postun libs -p /sbin/ldconfig
277
2a4039e3 278%files -f %{name}.lang
911dd57a
JB
279%defattr(644,root,root,755)
280%attr(755,root,root) %{_bindir}/pipewire
96dfc521
JB
281%attr(755,root,root) %{_bindir}/pipewire-media-session
282%attr(755,root,root) %{_bindir}/pw-cat
283%attr(755,root,root) %{_bindir}/pw-cli
284%attr(755,root,root) %{_bindir}/pw-dot
2a4039e3 285%attr(755,root,root) %{_bindir}/pw-dump
234c024c
JB
286%attr(755,root,root) %{_bindir}/pw-metadata
287%attr(755,root,root) %{_bindir}/pw-mididump
288%attr(755,root,root) %{_bindir}/pw-midiplay
289%attr(755,root,root) %{_bindir}/pw-midirecord
96dfc521
JB
290%attr(755,root,root) %{_bindir}/pw-mon
291%attr(755,root,root) %{_bindir}/pw-play
96dfc521 292%attr(755,root,root) %{_bindir}/pw-profiler
2ceddacd
JB
293%attr(755,root,root) %{_bindir}/pw-record
294%attr(755,root,root) %{_bindir}/pw-reserve
2a4039e3 295%attr(755,root,root) %{_bindir}/pw-top
911dd57a 296%attr(755,root,root) %{_bindir}/spa-inspect
2a4039e3 297%attr(755,root,root) %{_bindir}/spa-json-dump
911dd57a 298%attr(755,root,root) %{_bindir}/spa-monitor
2ceddacd
JB
299# R: libsndfile
300%attr(755,root,root) %{_bindir}/spa-resample
911dd57a 301%dir %{_sysconfdir}/pipewire
2a4039e3
JB
302%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/client.conf
303%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/client-rt.conf
911dd57a 304%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/pipewire.conf
2ceddacd 305%dir %{_sysconfdir}/pipewire/media-session.d
2a4039e3
JB
306%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/media-session.conf
307%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/v4l2-monitor.conf
911dd57a
JB
308%{systemduserunitdir}/pipewire.service
309%{systemduserunitdir}/pipewire.socket
2a4039e3 310%{systemduserunitdir}/pipewire-media-session.service
96dfc521
JB
311%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-access.so
312%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-adapter.so
313%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-device.so
314%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-node.so
315%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-link-factory.so
316%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-metadata.so
234c024c 317%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-portal.so
96dfc521 318%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-profiler.so
911dd57a 319# R: systemd-libs
96dfc521 320%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-native.so
2ceddacd
JB
321# R: dbus-libs systemd-libs
322%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-pulse.so
911dd57a 323# R: dbus-libs
96dfc521
JB
324%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rtkit.so
325%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-session-manager.so
326%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device.so
327%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device-factory.so
328%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node.so
329%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node-factory.so
330%dir %{_libdir}/spa-0.2/audioconvert
331%attr(755,root,root) %{_libdir}/spa-0.2/audioconvert/libspa-audioconvert.so
332%dir %{_libdir}/spa-0.2/audiomixer
333%attr(755,root,root) %{_libdir}/spa-0.2/audiomixer/libspa-audiomixer.so
334%dir %{_libdir}/spa-0.2/audiotestsrc
335%attr(755,root,root) %{_libdir}/spa-0.2/audiotestsrc/libspa-audiotestsrc.so
336%dir %{_libdir}/spa-0.2/control
337%attr(755,root,root) %{_libdir}/spa-0.2/control/libspa-control.so
338%dir %{_libdir}/spa-0.2/support
911dd57a 339# R: dbus-libs
96dfc521 340%attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-dbus.so
2ceddacd
JB
341# R: systemd-libs
342%attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-journal.so
96dfc521
JB
343%attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-support.so
344%dir %{_libdir}/spa-0.2/v4l2
911dd57a 345# R: udev-libs
96dfc521
JB
346%attr(755,root,root) %{_libdir}/spa-0.2/v4l2/libspa-v4l2.so
347%dir %{_libdir}/spa-0.2/videoconvert
348%attr(755,root,root) %{_libdir}/spa-0.2/videoconvert/libspa-videoconvert.so
349%dir %{_libdir}/spa-0.2/videotestsrc
350%attr(755,root,root) %{_libdir}/spa-0.2/videotestsrc/libspa-videotestsrc.so
351%dir %{_libdir}/spa-0.2/volume
352%attr(755,root,root) %{_libdir}/spa-0.2/volume/libspa-volume.so
911dd57a 353%{_mandir}/man1/pipewire.1*
234c024c 354%{_mandir}/man1/pw-cat.1*
96dfc521 355%{_mandir}/man1/pw-cli.1*
234c024c
JB
356%{_mandir}/man1/pw-dot.1*
357%{_mandir}/man1/pw-metadata.1*
358%{_mandir}/man1/pw-mididump.1*
96dfc521 359%{_mandir}/man1/pw-mon.1*
234c024c 360%{_mandir}/man1/pw-profiler.1*
911dd57a
JB
361%{_mandir}/man5/pipewire.conf.5*
362
363%files libs
364%defattr(644,root,root,755)
96dfc521
JB
365%doc COPYING LICENSE NEWS README.md
366%attr(755,root,root) %{_libdir}/libpipewire-0.3.so.*.*.*
367%attr(755,root,root) %ghost %{_libdir}/libpipewire-0.3.so.0
368%dir %{_libdir}/pipewire-0.3
369%dir %{_libdir}/spa-0.2
911dd57a
JB
370
371%files devel
372%defattr(644,root,root,755)
96dfc521
JB
373%attr(755,root,root) %{_libdir}/libpipewire-0.3.so
374%{_includedir}/pipewire-0.3
375%{_includedir}/spa-0.2
376%{_pkgconfigdir}/libpipewire-0.3.pc
377%{_pkgconfigdir}/libspa-0.2.pc
911dd57a
JB
378
379%if %{with apidocs}
380%files apidocs
381%defattr(644,root,root,755)
382%doc doc/design.txt build/doc/html/*
383%endif
384
385%files spa-module-alsa
386%defattr(644,root,root,755)
2ceddacd 387%attr(755,root,root) %{_bindir}/spa-acp-tool
2a4039e3 388%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/alsa-monitor.conf
96dfc521 389%dir %{_libdir}/spa-0.2/alsa
911dd57a 390# R: alsa-lib udev-libs
96dfc521 391%attr(755,root,root) %{_libdir}/spa-0.2/alsa/libspa-alsa.so
234c024c 392%{_datadir}/alsa-card-profile
911dd57a
JB
393
394%files spa-module-bluez
395%defattr(644,root,root,755)
2a4039e3 396%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/media-session.d/bluez-monitor.conf
96dfc521 397%dir %{_libdir}/spa-0.2/bluez5
911dd57a 398# R: dbus-libs sbc
96dfc521 399%attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-bluez5.so
911dd57a
JB
400
401%files spa-module-ffmpeg
402%defattr(644,root,root,755)
96dfc521 403%dir %{_libdir}/spa-0.2/ffmpeg
911dd57a 404# R: ffmpeg-libs
96dfc521
JB
405%attr(755,root,root) %{_libdir}/spa-0.2/ffmpeg/libspa-ffmpeg.so
406
2329dfbb
JB
407%if %{with jack}
408%files spa-module-jack
409%defattr(644,root,root,755)
410%dir %{_libdir}/spa-0.2/jack
411# R: jack-audio-connection-kit-libs
412%attr(755,root,root) %{_libdir}/spa-0.2/jack/libspa-jack.so
413%endif
414
96dfc521
JB
415%files spa-module-vulkan
416%defattr(644,root,root,755)
417%dir %{_libdir}/spa-0.2/vulkan
418# R: Vulkan-Loader
419%attr(755,root,root) %{_libdir}/spa-0.2/vulkan/libspa-vulkan.so
420
421%if %{with jack}
422%files jack
423%defattr(644,root,root,755)
473830bc 424%attr(755,root,root) %{_bindir}/pw-jack
2a4039e3 425%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/jack.conf
2ceddacd 426%{_sysconfdir}/pipewire/media-session.d/with-jack
473830bc
JR
427%dir %attr(755,root,root) %{_libdir}/pipewire-0.3/jack
428%attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjack.so*
429%attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjacknet.so*
430%attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjackserver.so*
96dfc521
JB
431%endif
432
96dfc521
JB
433%files pulseaudio
434%defattr(644,root,root,755)
2ceddacd 435%attr(755,root,root) %{_bindir}/pipewire-pulse
2a4039e3 436%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pipewire/pipewire-pulse.conf
2ceddacd 437%{_sysconfdir}/pipewire/media-session.d/with-pulseaudio
2ceddacd
JB
438%{systemduserunitdir}/pipewire-pulse.service
439%{systemduserunitdir}/pipewire-pulse.socket
96dfc521
JB
440
441%files -n alsa-plugin-pipewire
442%defattr(644,root,root,755)
234c024c 443%attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so
96dfc521
JB
444%attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so
445%{_datadir}/alsa/alsa.conf.d/50-pipewire.conf
446%{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf
234c024c 447/lib/udev/rules.d/90-pipewire-alsa.rules
911dd57a
JB
448
449%if %{with gstreamer}
450%files -n gstreamer-pipewire
451%defattr(644,root,root,755)
452%attr(755,root,root) %{_libdir}/gstreamer-1.0/libgstpipewire.so
453%endif
This page took 0.19454 seconds and 4 git commands to generate.