]> git.pld-linux.org Git - packages/dracut.git/blob - dracut.spec
- added fixes from upstream
[packages/dracut.git] / dracut.spec
1 Summary:        Initramfs generator using udev
2 Summary(pl.UTF-8):      Generator initramfs wykorzystujący udev
3 Name:           dracut
4 Version:        027
5 Release:        3
6 License:        GPL v2+
7 Group:          Base
8 Source0:        http://ftp.kernel.org/pub/linux/utils/boot/dracut/%{name}-%{version}.tar.xz
9 # Source0-md5:  37d791ca7e9c0fdc0bf8902f579b9e2b
10 Source1:        pld.conf
11 Patch0:         bash-sh.patch
12 Patch1:         plymouth-libexec.patch
13 Patch2:         os-release.patch
14 Patch3:         plymouth-logo.patch
15 Patch4:         arch-libdir.patch
16 Patch5:         systemd-paths.patch
17 Patch6:         plymouthd-path.patch
18 Patch100:       git.patch
19 URL:            https://dracut.wiki.kernel.org/
20 BuildRequires:  asciidoc
21 BuildRequires:  dash
22 BuildRequires:  docbook-dtd45-xml
23 BuildRequires:  docbook-style-xsl
24 BuildRequires:  libxslt-progs
25 Requires:       bash
26 Requires:       coreutils
27 Requires:       cpio
28 Requires:       filesystem
29 Requires:       findutils
30 Requires:       glibc-misc
31 Requires:       grep
32 Requires:       gzip
33 Requires:       hardlink
34 Requires:       sed
35 Requires:       systemd-units
36 Requires:       udev
37 Requires:       util-linux >= 2.22.2-3
38 Requires:       vim-rt
39 Requires:       vim-static
40 Requires:       virtual(module-tools)
41 # disabled due to angry (bug)reports, because it changes well known
42 # net device names from ethX to emX or pXpY
43 #Suggests:      biosdevname
44 Suggests:       btrfs-progs
45 Suggests:       busybox
46 Suggests:       bzip2
47 Suggests:       cryptsetup
48 Suggests:       dash
49 Suggests:       device-mapper
50 Suggests:       dmraid
51 Suggests:       e2fsprogs
52 Suggests:       gnupg
53 Suggests:       kbd
54 Suggests:       keyutils
55 Suggests:       libselinux-utils
56 Suggests:       losetup
57 Suggests:       lvm2
58 Suggests:       mdadm
59 Suggests:       multipath-tools
60 Suggests:       plymouth
61 Suggests:       suspend-utils
62 Suggests:       syslogdaemon
63 Suggests:       xfsprogs
64 Suggests:       xz
65 Conflicts:      kmod < 6
66 Conflicts:      systemd < 1:198
67 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
68
69 %define         dracutlibdir    %{_prefix}/lib/dracut
70
71 %description
72 Dracut contains tools to create a bootable initramfs for 2.6 Linux
73 kernels. Unlike existing implementations, dracut does hard-code as
74 little as possible into the initramfs. Dracut contains various modules
75 which are driven by the event-based udev. Having root on MD, DM, LVM2,
76 LUKS is supported as well as NFS, iSCSI, NBD, FCoE with the
77 dracut-network package.
78
79 %description -l pl.UTF-8
80 Dracut zawiera narzędzia do tworzenia uruchamialnych obrazów initramfs
81 dla jąder Linuksa 2.6. W przeciwieństwie do wcześniejszych
82 implementacji, dracut zaszywa możliwie najmniej stałych w initramfs.
83 Zawiera różne moduły sterowane w oparciu o zdarzenia udev. Obsługiwane
84 jest przechowywanie głównego systemu plików na urządzeniach MD, DM,
85 LVM2, LUKS, a po doinstalowaniu pakietu dracut-network także poprzez
86 NFS, iSCSI, NBD, FCoE.
87
88 %package network
89 Summary:        Dracut modules to build a dracut initramfs with network support
90 Summary(pl.UTF-8):      Moduły Dracuta do tworzenia initramfs z obsługą sieci
91 Group:          Base
92 Requires:       %{name} = %{version}-%{release}
93 Requires:       bridge-utils
94 Requires:       dhcp-client
95 Requires:       iproute2
96 Requires:       iputils-arping
97 Requires:       iputils-ping
98 Requires:       nbd
99 Requires:       net-tools
100 Requires:       nfs-utils-clients
101 Requires:       open-iscsi
102 Requires:       openssh-clients
103 Requires:       rpcbind
104 Suggests:       curl
105
106 %description network
107 This package requires everything which is needed to build a generic
108 all purpose initramfs with network support with dracut.
109
110 %description network -l pl.UTF-8
111 Ten pakiet zawiera wszystko, co potrzebne do tworzenia przy użyciu
112 dracuta zwykłych obrazów initramfs dowolnego przeznaczenia z obsługą
113 sieci.
114
115 %package fips
116 Summary:        Dracut modules to build a dracut initramfs with an integrity check
117 Summary(pl.UTF-8):      Moduły Dracuta do tworzenia initramfs z kontrolą spójności
118 Group:          Base
119 Requires:       %{name} = %{version}-%{release}
120 Requires:       hmaccalc
121 Requires:       nss-softokn-freebl
122
123 %description fips
124 This package requires everything which is needed to build an all
125 purpose initramfs with dracut, which does an integrity check.
126
127 %description fips -l pl.UTF-8
128 Ten pakiet zawiera wszystko, co potrzebne do tworzenia przy użyciu
129 dracuta obrazów initramfs dowolnego przeznaczenia, wykonujących
130 kontrolę własnej spójności.
131
132 %package fips-aesni
133 Summary:        Dracut modules to build a dracut initramfs with an integrity check with aesni-intel
134 Summary(pl.UTF-8):      Moduły Dracuta do tworzenia initramfs z kontrolą spójności przez aesni-intel
135 Group:          Base
136 Requires:       %{name}-fips = %{version}-%{release}
137
138 %description fips-aesni
139 This package requires everything which is needed to build an all
140 purpose initramfs with dracut, which does an integrity check and adds
141 the aesni-intel kernel module.
142
143 %description fips-aesni -l pl.UTF-8
144 Ten pakiet zawiera wszystko, co potrzebne do tworzenia przy użyciu
145 dracuta obrazów initramfs dowolnego przeznaczenia wykonujących
146 kontrolę własnej spójności z dodanym modułem jądra aesni-intel.
147
148 %package caps
149 Summary:        Dracut modules to build a dracut initramfs which drops capabilities
150 Summary(pl.UTF-8):      Moduły Dracuta do tworzenia initramfs zrzucającego uprawnienia
151 Group:          Base
152 Requires:       %{name} = %{version}-%{release}
153 Requires:       libcap
154
155 %description caps
156 This package requires everything which is needed to build an all
157 purpose initramfs with dracut, which drops capabilities.
158
159 %description caps -l pl
160 Ten pakiet zawiera wszystko, co potrzebne do tworzenia przy użyciu
161 dracuta obrazów initramfs dowolnego przeznaczenia zrzucających
162 uprawnienia.
163
164 %package tools
165 Summary:        Dracut tools to build the local initramfs
166 Summary(pl.UTF-8):      Narzędzia Dracuta do tworzenia lokalnych initramfs
167 Group:          Base
168 Requires:       %{name} = %{version}-%{release}
169
170 %description tools
171 This package contains tools to assemble the local initrd and host
172 configuration.
173
174 %description tools -l pl.UTF-8
175 Ten pakiet zawiera narzędzia do łączenia lokalnych initrd oraz
176 konfiguracji maszyn.
177
178 %package -n bash-completion-dracut
179 Summary:        bash-completion for dracut
180 Summary(pl.UTF-8):      Bashowe dopełnianie składni dla polecenia dracut
181 Group:          Applications/Shells
182 Requires:       %{name} = %{version}
183 Requires:       bash-completion >= 2.0
184
185 %description -n bash-completion-dracut
186 bash-completion for dracut.
187
188 %description -n bash-completion-dracut -l pl.UTF-8
189 Bashowe dopełnianie składni dla polecenia dracut.
190
191 %prep
192 %setup -q
193 %patch100 -p1
194 %patch0 -p1
195 %patch1 -p1
196 %patch2 -p1
197 %patch3 -p1
198 %patch4 -p1
199 %patch5 -p1
200 %patch6 -p1
201
202 %{__sed} -i -e 's,@lib@,%{_lib},g' modules.d/50plymouth/module-setup.sh
203 %{__sed} -i -e 's,@lib@,%{_lib},g' modules.d/95resume/module-setup.sh
204 find modules.d -name '*.orig' | xargs -r %{__rm}
205
206 %build
207 %{__make} all doc \
208         CC="%{__cc}" \
209         CFLAGS="%{rpmcflags}"
210
211 %install
212 rm -rf $RPM_BUILD_ROOT
213 install -d $RPM_BUILD_ROOT{/boot/dracut,/etc/logrotate.d,/sbin} \
214         $RPM_BUILD_ROOT/var/{log,lib/{dracut/overlay,initramfs}}
215
216 %{__make} install \
217         DESTDIR=$RPM_BUILD_ROOT \
218         libdir=%{_prefix}/lib \
219         bindir=%{_bindir} \
220         systemdsystemunitdir=%{systemdunitdir} \
221         sysconfdir=%{_sysconfdir} \
222         mandir=%{_mandir}
223
224 install -p %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/dracut.conf.d/01-dist.conf
225 install -p dracut.conf.d/fips.conf.example $RPM_BUILD_ROOT%{_sysconfdir}/dracut.conf.d/40-fips.conf
226 install -p dracut.logrotate $RPM_BUILD_ROOT/etc/logrotate.d/dracut_log
227
228 echo "DRACUT_VERSION=%{version}-%{release}" >$RPM_BUILD_ROOT/%{dracutlibdir}/dracut-version.sh
229
230 # create compat symlink
231 ln -s %{_bindir}/dracut $RPM_BUILD_ROOT/sbin/dracut
232
233 # remove gentoo specific modules
234 %{__rm} -r $RPM_BUILD_ROOT%{dracutlibdir}/modules.d/50gensplash
235
236 %clean
237 rm -rf $RPM_BUILD_ROOT
238
239 %files
240 %defattr(644,root,root,755)
241 %doc AUTHORS HACKING NEWS README* TODO dracut.html dracut.png dracut.svg
242 %dir %{_sysconfdir}/dracut.conf.d
243 %config(noreplace) %{_sysconfdir}/dracut.conf
244 %config(noreplace) %{_sysconfdir}/dracut.conf.d/01-dist.conf
245 %config(noreplace) /etc/logrotate.d/dracut_log
246 # compat symlink
247 %attr(755,root,root) /sbin/dracut
248 %attr(755,root,root) %{_bindir}/dracut
249 %attr(755,root,root) %{_bindir}/mkinitrd
250 %attr(755,root,root) %{_bindir}/lsinitrd
251 %dir %{dracutlibdir}
252 %attr(755,root,root) %{dracutlibdir}/dracut-install
253 %dir %{dracutlibdir}/modules.d
254 %attr(755,root,root) %{dracutlibdir}/dracut-functions.sh
255 %attr(755,root,root) %{dracutlibdir}/dracut-functions
256 %attr(755,root,root) %{dracutlibdir}/dracut-logger.sh
257 %attr(755,root,root) %{dracutlibdir}/dracut-initramfs-restore
258 %dir %{dracutlibdir}/modules.d/00bootchart
259 %attr(755,root,root) %{dracutlibdir}/modules.d/00bootchart/*.sh
260 %dir %{dracutlibdir}/modules.d/00dash
261 %attr(755,root,root) %{dracutlibdir}/modules.d/00dash/*.sh
262 %dir %{dracutlibdir}/modules.d/00systemd-bootchart
263 %attr(755,root,root) %{dracutlibdir}/modules.d/00systemd-bootchart/*.sh
264 %dir %{dracutlibdir}/modules.d/01bash
265 %attr(755,root,root) %{dracutlibdir}/modules.d/01bash/*.sh
266 %dir %{dracutlibdir}/modules.d/03rescue
267 %attr(755,root,root) %{dracutlibdir}/modules.d/03rescue/module-setup.sh
268 %dir %{dracutlibdir}/modules.d/04watchdog
269 %attr(755,root,root) %{dracutlibdir}/modules.d/04watchdog/*.sh
270 %dir %{dracutlibdir}/modules.d/05busybox
271 %attr(755,root,root) %{dracutlibdir}/modules.d/05busybox/*.sh
272 %dir %{dracutlibdir}/modules.d/10i18n
273 %{dracutlibdir}/modules.d/10i18n/README
274 %{dracutlibdir}/modules.d/10i18n/*.rules
275 %attr(755,root,root) %{dracutlibdir}/modules.d/10i18n/*.sh
276 %dir %{dracutlibdir}/modules.d/30convertfs
277 %attr(755,root,root) %{dracutlibdir}/modules.d/30convertfs/*.sh
278 %dir %{dracutlibdir}/modules.d/50drm
279 %attr(755,root,root) %{dracutlibdir}/modules.d/50drm/module-setup.sh
280 %dir %{dracutlibdir}/modules.d/50plymouth
281 %attr(755,root,root) %{dracutlibdir}/modules.d/50plymouth/*.sh
282 %dir %{dracutlibdir}/modules.d/80cms
283 %attr(755,root,root) %{dracutlibdir}/modules.d/80cms/*.sh
284 %dir %{dracutlibdir}/modules.d/90btrfs
285 %{dracutlibdir}/modules.d/90btrfs/*.rules
286 %attr(755,root,root) %{dracutlibdir}/modules.d/90btrfs/*.sh
287 %dir %{dracutlibdir}/modules.d/90crypt
288 %attr(755,root,root) %{dracutlibdir}/modules.d/90crypt/*.sh
289 %dir %{dracutlibdir}/modules.d/91crypt-loop
290 %attr(755,root,root) %{dracutlibdir}/modules.d/91crypt-loop/*.sh
291 %dir %{dracutlibdir}/modules.d/90dm
292 %{dracutlibdir}/modules.d/90dm/*.rules
293 %attr(755,root,root) %{dracutlibdir}/modules.d/90dm/*.sh
294 %dir %{dracutlibdir}/modules.d/90dmraid
295 %{dracutlibdir}/modules.d/90dmraid/*.rules
296 %attr(755,root,root) %{dracutlibdir}/modules.d/90dmraid/*.sh
297 %dir %{dracutlibdir}/modules.d/90dmsquash-live
298 %attr(755,root,root) %{dracutlibdir}/modules.d/90dmsquash-live/*.sh
299 %{dracutlibdir}/modules.d/90dmsquash-live/checkisomd5@.service
300 %dir %{dracutlibdir}/modules.d/90kernel-modules
301 %attr(755,root,root) %{dracutlibdir}/modules.d/90kernel-modules/*.sh
302 %dir %{dracutlibdir}/modules.d/90lvm
303 %{dracutlibdir}/modules.d/90lvm/*.rules
304 %attr(755,root,root) %{dracutlibdir}/modules.d/90lvm/*.sh
305 %dir %{dracutlibdir}/modules.d/90mdraid
306 %{dracutlibdir}/modules.d/90mdraid/*.rules
307 %attr(755,root,root) %{dracutlibdir}/modules.d/90mdraid/*.sh
308 %dir %{dracutlibdir}/modules.d/90multipath
309 %attr(755,root,root) %{dracutlibdir}/modules.d/90multipath/*.sh
310 %dir %{dracutlibdir}/modules.d/90qemu
311 %attr(755,root,root) %{dracutlibdir}/modules.d/90qemu/*.sh
312 %dir %{dracutlibdir}/modules.d/91crypt-gpg
313 %attr(755,root,root) %{dracutlibdir}/modules.d/91crypt-gpg/*.sh
314 %dir %{dracutlibdir}/modules.d/95debug
315 %attr(755,root,root) %{dracutlibdir}/modules.d/95debug/*.sh
316 %dir %{dracutlibdir}/modules.d/95resume
317 %attr(755,root,root) %{dracutlibdir}/modules.d/95resume/*.sh
318 %dir %{dracutlibdir}/modules.d/95rootfs-block
319 %attr(755,root,root) %{dracutlibdir}/modules.d/95rootfs-block/*.sh
320 %dir %{dracutlibdir}/modules.d/95dasd
321 %attr(755,root,root) %{dracutlibdir}/modules.d/95dasd/*.sh
322 %dir %{dracutlibdir}/modules.d/95dasd_mod
323 %attr(755,root,root) %{dracutlibdir}/modules.d/95dasd_mod/*.sh
324 %dir %{dracutlibdir}/modules.d/95fstab-sys
325 %attr(755,root,root) %{dracutlibdir}/modules.d/95fstab-sys/*.sh
326 %dir %{dracutlibdir}/modules.d/95zfcp
327 %{dracutlibdir}/modules.d/95zfcp/*.rules
328 %attr(755,root,root) %{dracutlibdir}/modules.d/95zfcp/*.sh
329 %dir %{dracutlibdir}/modules.d/95terminfo
330 %attr(755,root,root) %{dracutlibdir}/modules.d/95terminfo/*.sh
331 %dir %{dracutlibdir}/modules.d/95udev-rules
332 %{dracutlibdir}/modules.d/95udev-rules/*.rules
333 %attr(755,root,root) %{dracutlibdir}/modules.d/95udev-rules/*.sh
334 %dir %{dracutlibdir}/modules.d/95virtfs
335 %attr(755,root,root) %{dracutlibdir}/modules.d/95virtfs/*.sh
336 %dir %{dracutlibdir}/modules.d/96securityfs
337 %attr(755,root,root) %{dracutlibdir}/modules.d/96securityfs/*.sh
338 %dir %{dracutlibdir}/modules.d/97biosdevname
339 %attr(755,root,root) %{dracutlibdir}/modules.d/97biosdevname/*.sh
340 %dir %{dracutlibdir}/modules.d/97masterkey
341 %{dracutlibdir}/modules.d/97masterkey/README
342 %attr(755,root,root) %{dracutlibdir}/modules.d/97masterkey/*.sh
343 %dir %{dracutlibdir}/modules.d/98ecryptfs
344 %{dracutlibdir}/modules.d/98ecryptfs/README
345 %attr(755,root,root) %{dracutlibdir}/modules.d/98ecryptfs/*.sh
346 %dir %{dracutlibdir}/modules.d/98integrity
347 %{dracutlibdir}/modules.d/98integrity/README
348 %attr(755,root,root) %{dracutlibdir}/modules.d/98integrity/*.sh
349 %dir %{dracutlibdir}/modules.d/98pollcdrom
350 %attr(755,root,root) %{dracutlibdir}/modules.d/98pollcdrom/*.sh
351 %dir %{dracutlibdir}/modules.d/98selinux
352 %attr(755,root,root) %{dracutlibdir}/modules.d/98selinux/*.sh
353 %dir %{dracutlibdir}/modules.d/98syslog
354 %{dracutlibdir}/modules.d/98syslog/README
355 %{dracutlibdir}/modules.d/98syslog/rsyslog.conf
356 %attr(755,root,root) %{dracutlibdir}/modules.d/98syslog/*.sh
357 %dir %{dracutlibdir}/modules.d/98systemd
358 %{dracutlibdir}/modules.d/98systemd/*.service
359 %{dracutlibdir}/modules.d/98systemd/*.target
360 %attr(755,root,root) %{dracutlibdir}/modules.d/98systemd/*.sh
361 %doc %{dracutlibdir}/modules.d/98systemd/*.8*
362 %dir %{dracutlibdir}/modules.d/98usrmount
363 %attr(755,root,root) %{dracutlibdir}/modules.d/98usrmount/*.sh
364 %dir %{dracutlibdir}/modules.d/99base
365 %attr(755,root,root) %{dracutlibdir}/modules.d/99base/*.sh
366 %dir %{dracutlibdir}/modules.d/99fs-lib
367 %attr(755,root,root) %{dracutlibdir}/modules.d/99fs-lib/*.sh
368 %dir %{dracutlibdir}/modules.d/99img-lib
369 %attr(755,root,root) %{dracutlibdir}/modules.d/99img-lib/*.sh
370 %dir %{dracutlibdir}/modules.d/99shutdown
371 %attr(755,root,root) %{dracutlibdir}/modules.d/99shutdown/*.sh
372 %attr(755,root,root) %{dracutlibdir}/dracut-version.sh
373
374 %dir /var/lib/initramfs
375 %{systemdunitdir}/*.service
376 %{systemdunitdir}/*/*.service
377 %{_mandir}/man1/lsinitrd.1*
378 %{_mandir}/man5/dracut.conf.5*
379 %{_mandir}/man7/dracut.kernel.7*
380 %{_mandir}/man7/dracut.cmdline.7*
381 %{_mandir}/man8/dracut.8*
382 %{_mandir}/man8/dracut-cmdline.service.8*
383 %{_mandir}/man8/dracut-initqueue.service.8*
384 %{_mandir}/man8/dracut-mount.service.8*
385 %{_mandir}/man8/dracut-pre-mount.service.8*
386 %{_mandir}/man8/dracut-pre-pivot.service.8*
387 %{_mandir}/man8/dracut-pre-trigger.service.8*
388 %{_mandir}/man8/dracut-pre-udev.service.8*
389 %{_mandir}/man8/mkinitrd.8*
390 %{_mandir}/man7/dracut.bootup.7.gz
391
392 #/usr/lib/kernel/install.d/50-dracut.install
393 #/usr/lib/kernel/install.d/51-dracut-rescue.install
394
395 %files network
396 %defattr(644,root,root,755)
397 %dir %{dracutlibdir}/modules.d/40network
398 %{dracutlibdir}/modules.d/40network/dhclient.conf
399 %attr(755,root,root) %{dracutlibdir}/modules.d/40network/*.sh
400 %dir %{dracutlibdir}/modules.d/45ifcfg
401 %attr(755,root,root) %{dracutlibdir}/modules.d/45ifcfg/*.sh
402 %dir %{dracutlibdir}/modules.d/45url-lib
403 %attr(755,root,root) %{dracutlibdir}/modules.d/45url-lib/*.sh
404 %dir %{dracutlibdir}/modules.d/90livenet
405 %attr(755,root,root) %{dracutlibdir}/modules.d/90livenet/*.sh
406 %dir %{dracutlibdir}/modules.d/90qemu-net
407 %attr(755,root,root) %{dracutlibdir}/modules.d/90qemu-net/*.sh
408 %dir %{dracutlibdir}/modules.d/95cifs
409 %attr(755,root,root) %{dracutlibdir}/modules.d/95cifs/*.sh
410 %dir %{dracutlibdir}/modules.d/95fcoe
411 %attr(755,root,root) %{dracutlibdir}/modules.d/95fcoe/*.sh
412 %dir %{dracutlibdir}/modules.d/95iscsi
413 %attr(755,root,root) %{dracutlibdir}/modules.d/95iscsi/*.sh
414 %dir %{dracutlibdir}/modules.d/95nbd
415 %attr(755,root,root) %{dracutlibdir}/modules.d/95nbd/*.sh
416 %dir %{dracutlibdir}/modules.d/95nfs
417 %attr(755,root,root) %{dracutlibdir}/modules.d/95nfs/*.sh
418 %dir %{dracutlibdir}/modules.d/95ssh-client
419 %attr(755,root,root) %{dracutlibdir}/modules.d/95ssh-client/*.sh
420 %dir %{dracutlibdir}/modules.d/95znet
421 %attr(755,root,root) %{dracutlibdir}/modules.d/95znet/*.sh
422
423 %files fips
424 %defattr(644,root,root,755)
425 %dir %{dracutlibdir}/modules.d/01fips
426 %attr(755,root,root) %{dracutlibdir}/modules.d/01fips/*.sh
427 %config(noreplace) %{_sysconfdir}/dracut.conf.d/40-fips.conf
428
429 %files fips-aesni
430 %defattr(644,root,root,755)
431 %dir %{dracutlibdir}/modules.d/02fips-aesni
432 %attr(755,root,root) %{dracutlibdir}/modules.d/02fips-aesni/*.sh
433
434 %files caps
435 %defattr(644,root,root,755)
436 %{dracutlibdir}/modules.d/02caps/README
437 %dir %{dracutlibdir}/modules.d/02caps
438 %attr(755,root,root) %{dracutlibdir}/modules.d/02caps/*.sh
439
440 %files tools
441 %defattr(644,root,root,755)
442 %attr(755,root,root) %{_bindir}/dracut-catimages
443 %{_mandir}/man8/dracut-catimages.8*
444 %dir /boot/dracut
445 %dir /var/lib/dracut
446 %dir /var/lib/dracut/overlay
447
448 %files -n bash-completion-dracut
449 %defattr(644,root,root,755)
450 %{_datadir}/bash-completion/completions/dracut
This page took 0.078546 seconds and 3 git commands to generate.