1 -include dracut-version.sh
3 DRACUT_MAIN_VERSION
:= $(shell env GIT_CEILING_DIRECTORIES
=$(CURDIR
)/.. git describe
--abbrev
=0 --tags --always
2>/dev
/null ||
:)
4 ifeq ($(DRACUT_MAIN_VERSION
),)
5 DRACUT_MAIN_VERSION
= $(DRACUT_VERSION
)
7 DRACUT_FULL_VERSION
:= $(shell env GIT_CEILING_DIRECTORIES
=$(CURDIR
)/.. git describe
--tags --always
2>/dev
/null ||
:)
8 ifeq ($(DRACUT_FULL_VERSION
),)
9 DRACUT_FULL_VERSION
= $(DRACUT_VERSION
)
12 HAVE_SHELLCHECK ?
= $(shell command
-v shellcheck
>/dev
/null
2>&1 && echo yes
)
13 HAVE_SHFMT ?
= $(shell command
-v shfmt
>/dev
/null
2>&1 && echo yes
)
17 KVERSION ?
= $(shell uname
-r
)
20 libdir ?
= ${prefix}/lib
21 datadir ?
= ${prefix}/share
22 pkglibdir ?
= ${libdir}/dracut
23 sysconfdir ?
= ${prefix}/etc
24 bindir ?
= ${prefix}/bin
25 mandir ?
= ${prefix}/share
/man
26 CFLAGS ?
= -O2
-g
-Wall
-std
=gnu99
-D_FILE_OFFSET_BITS
=64 -Wformat
-Werror
=format-security
-Wp
,-D_FORTIFY_SOURCE
=2
27 bashcompletiondir ?
= ${datadir}/bash-completion
/completions
28 pkgconfigdatadir ?
= $(datadir)/pkgconfig
30 man1pages
= man
/lsinitrd
.1
32 man5pages
= man
/dracut.conf
.5
34 man7pages
= man
/dracut.cmdline
.7 \
38 man8pages
= man
/dracut
.8 \
39 man
/dracut-catimages
.8 \
40 modules.d
/98dracut-systemd
/dracut-cmdline.service
.8 \
41 modules.d
/98dracut-systemd
/dracut-initqueue.service
.8 \
42 modules.d
/98dracut-systemd
/dracut-mount.service
.8 \
43 modules.d
/98dracut-systemd
/dracut-shutdown.service
.8 \
44 modules.d
/98dracut-systemd
/dracut-pre-mount.service
.8 \
45 modules.d
/98dracut-systemd
/dracut-pre-pivot.service
.8 \
46 modules.d
/98dracut-systemd
/dracut-pre-trigger.service
.8 \
47 modules.d
/98dracut-systemd
/dracut-pre-udev.service
.8
49 manpages
= $(man1pages
) $(man5pages
) $(man7pages
) $(man8pages
)
51 .PHONY
: install clean archive testimage
test all check AUTHORS CONTRIBUTORS doc dracut-version.sh
53 all: dracut-version.sh dracut.
pc dracut-install src
/skipcpio
/skipcpio dracut-util
56 $(CC
) -c
$(CFLAGS
) $(CPPFLAGS
) $(KMOD_CFLAGS
) $< -o
$@
58 DRACUT_INSTALL_OBJECTS
= \
59 src
/install/dracut-install.o \
60 src
/install/hashmap.o\
65 # deps generated with gcc -MM
66 src
/install/dracut-install.o
: src
/install/dracut-install.c src
/install/log.h src
/install/macro.h \
67 src
/install/hashmap.h src
/install/util.h
68 src
/install/hashmap.o
: src
/install/hashmap.c src
/install/util.h src
/install/macro.h src
/install/log.h \
70 src
/install/log.o
: src
/install/log.c src
/install/log.h src
/install/macro.h src
/install/util.h
71 src
/install/util.o
: src
/install/util.c src
/install/util.h src
/install/macro.h src
/install/log.h
72 src
/install/strv.o
: src
/install/strv.c src
/install/strv.h src
/install/util.h src
/install/macro.h src
/install/log.h
74 src
/install/dracut-install
: $(DRACUT_INSTALL_OBJECTS
)
75 $(CC
) $(LDFLAGS
) -o
$@
$(DRACUT_INSTALL_OBJECTS
) $(LDLIBS
) $(FTS_LIBS
) $(KMOD_LIBS
)
77 logtee
: src
/logtee
/logtee.c
78 $(CC
) $(LDFLAGS
) -o
$@
$<
80 dracut-install
: src
/install/dracut-install
83 SKIPCPIO_OBJECTS
= src
/skipcpio
/skipcpio.o
84 skipcpio
/skipcpio.o
: src
/skipcpio
/skipcpio.c
85 skipcpio
/skipcpio
: $(SKIPCPIO_OBJECTS
)
87 UTIL_OBJECTS
= src
/util
/util.o
88 util
/util.o
: src
/util
/util.c
89 util
/util
: $(UTIL_OBJECTS
)
91 dracut-util
: src
/util
/util
96 astyle
-n
--quiet
--options
=.astylerc
$(wildcard *.
[ch
] */*.
[ch
] src
/*/*.
[ch
])
100 ifeq ($(HAVE_SHFMT
),yes
)
104 src
/dracut-cpio
/target
/release
/dracut-cpio
: src
/dracut-cpio
/src
/main.rs
105 cargo
--offline build
--release
--manifest-path src
/dracut-cpio
/Cargo.toml
107 dracut-cpio
: src
/dracut-cpio
/target
/release
/dracut-cpio
110 ifeq ($(enable_dracut_cpio
),yes
)
114 doc
: $(manpages
) dracut.html
116 ifneq ($(enable_documentation
),no
)
122 xsltproc
-o
"$@" -nonet http
://docbook.sourceforge.net
/release
/xsl
/current
/manpages
/docbook.xsl
$<
126 asciidoc
-a
"version=$(DRACUT_FULL_VERSION)" -d manpage
-b docbook
-o
"$@" $<
128 dracut
.8: man
/dracut
.8.asc \
131 dracut.html
: man
/dracut.asc
$(manpages
) docs
/dracut.css man
/dracut.usage.asc
133 asciidoc
-a
"mainversion=$(DRACUT_MAIN_VERSION)" \
134 -a
"version=$(DRACUT_FULL_VERSION)" \
136 -d book
-b docbook
-o dracut.xml man
/dracut.asc
137 @
rm -f
-- dracut.html
138 xsltproc
-o dracut.html
--xinclude
-nonet \
139 --stringparam custom.css.source docs
/dracut.css \
140 --stringparam generate.css.header
1 \
141 http
://docbook.sourceforge.net
/release
/xsl
/current
/xhtml
/docbook.xsl dracut.xml
144 dracut.
pc: Makefile.inc Makefile
145 @echo
"Name: dracut" > dracut.
pc
146 @echo
"Description: dracut" >> dracut.
pc
147 @echo
"Version: $(DRACUT_FULL_VERSION)" >> dracut.
pc
148 @echo
"dracutdir=$(pkglibdir)" >> dracut.
pc
149 @echo
"dracutmodulesdir=$(pkglibdir)/modules.d" >> dracut.
pc
150 @echo
"dracutconfdir=$(pkglibdir)/dracut.conf.d" >> dracut.
pc
153 mkdir
-p
$(DESTDIR
)$(pkglibdir
)
154 mkdir
-p
$(DESTDIR
)$(bindir)
155 mkdir
-p
$(DESTDIR
)$(sysconfdir
)
156 mkdir
-p
$(DESTDIR
)$(pkglibdir
)/modules.d
157 mkdir
-p
$(DESTDIR
)$(mandir)/man1
$(DESTDIR
)$(mandir)/man5
$(DESTDIR
)$(mandir)/man7
$(DESTDIR
)$(mandir)/man8
158 install -m
0755 dracut.sh
$(DESTDIR
)$(bindir)/dracut
159 install -m
0755 dracut-catimages.sh
$(DESTDIR
)$(bindir)/dracut-catimages
160 install -m
0755 lsinitrd.sh
$(DESTDIR
)$(bindir)/lsinitrd
161 install -m
0644 dracut.conf
$(DESTDIR
)$(sysconfdir
)/dracut.conf
162 mkdir
-p
$(DESTDIR
)$(sysconfdir
)/dracut.conf.d
163 mkdir
-p
$(DESTDIR
)$(pkglibdir
)/dracut.conf.d
164 install -m
0755 dracut-init.sh
$(DESTDIR
)$(pkglibdir
)/dracut-init.sh
165 install -m
0755 dracut-functions.sh
$(DESTDIR
)$(pkglibdir
)/dracut-functions.sh
166 install -m
0755 dracut-version.sh
$(DESTDIR
)$(pkglibdir
)/dracut-version.sh
167 ln
-fs dracut-functions.sh
$(DESTDIR
)$(pkglibdir
)/dracut-functions
168 install -m
0755 dracut-logger.sh
$(DESTDIR
)$(pkglibdir
)/dracut-logger.sh
169 install -m
0755 dracut-initramfs-restore.sh
$(DESTDIR
)$(pkglibdir
)/dracut-initramfs-restore
170 cp
-arx modules.d
$(DESTDIR
)$(pkglibdir
)
171 ifneq ($(enable_documentation
),no
)
172 for i in
$(man1pages
); do
install -m
0644 $$i $(DESTDIR
)$(mandir)/man1
/$${i
##*/}; done
173 for i in
$(man5pages
); do
install -m
0644 $$i $(DESTDIR
)$(mandir)/man5
/$${i
##*/}; done
174 for i in
$(man7pages
); do
install -m
0644 $$i $(DESTDIR
)$(mandir)/man7
/$${i
##*/}; done
175 for i in
$(man8pages
); do
install -m
0644 $$i $(DESTDIR
)$(mandir)/man8
/$${i
##*/}; done
176 ln
-fs dracut.cmdline
.7 $(DESTDIR
)$(mandir)/man7
/dracut.kernel
.7
178 if
[ -n
"$(systemdsystemunitdir)" ]; then \
179 mkdir
-p
$(DESTDIR
)$(systemdsystemunitdir
); \
180 ln
-srf
$(DESTDIR
)$(pkglibdir
)/modules.d
/98dracut-systemd
/dracut-shutdown-onfailure.service
$(DESTDIR
)$(systemdsystemunitdir
)/dracut-shutdown-onfailure.service
; \
181 ln
-srf
$(DESTDIR
)$(pkglibdir
)/modules.d
/98dracut-systemd
/dracut-shutdown.service
$(DESTDIR
)$(systemdsystemunitdir
)/dracut-shutdown.service
; \
182 mkdir
-p
$(DESTDIR
)$(systemdsystemunitdir
)/sysinit.target.wants
; \
183 ln
-s ..
/dracut-shutdown.service \
184 $(DESTDIR
)$(systemdsystemunitdir
)/sysinit.target.wants
/dracut-shutdown.service
; \
185 mkdir
-p
$(DESTDIR
)$(systemdsystemunitdir
)/initrd.target.wants
; \
187 dracut-cmdline.service \
188 dracut-initqueue.service \
189 dracut-mount.service \
190 dracut-pre-mount.service \
191 dracut-pre-pivot.service \
192 dracut-pre-trigger.service \
193 dracut-pre-udev.service \
195 ln
-srf
$(DESTDIR
)$(pkglibdir
)/modules.d
/98dracut-systemd
/$$i $(DESTDIR
)$(systemdsystemunitdir
); \
197 $(DESTDIR
)$(systemdsystemunitdir
)/initrd.target.wants
/$$i; \
200 if
[ -f src
/install/dracut-install
]; then \
201 install -m
0755 src
/install/dracut-install
$(DESTDIR
)$(pkglibdir
)/dracut-install
; \
203 if
[ -f src
/skipcpio
/skipcpio
]; then \
204 install -m
0755 src
/skipcpio
/skipcpio
$(DESTDIR
)$(pkglibdir
)/skipcpio
; \
206 if
[ -f dracut-util
]; then \
207 install -m
0755 dracut-util
$(DESTDIR
)$(pkglibdir
)/dracut-util
; \
209 ifeq ($(enable_dracut_cpio
),yes
)
210 install -m
0755 dracut-cpio
$(DESTDIR
)$(pkglibdir
)/dracut-cpio
212 mkdir
-p
$(DESTDIR
)${prefix}/lib
/kernel
/install.d
213 install -m
0755 install.d
/50-dracut.
install $(DESTDIR
)${prefix}/lib
/kernel
/install.d
/50-dracut.
install
214 install -m
0755 install.d
/51-dracut-rescue.
install $(DESTDIR
)${prefix}/lib
/kernel
/install.d
/51-dracut-rescue.
install
215 mkdir
-p
$(DESTDIR
)${bashcompletiondir}
216 install -m
0644 shell-completion
/bash
/dracut
$(DESTDIR
)${bashcompletiondir}/dracut
217 install -m
0644 shell-completion
/bash
/lsinitrd
$(DESTDIR
)${bashcompletiondir}/lsinitrd
218 mkdir
-p
$(DESTDIR
)${pkgconfigdatadir}
219 install -m
0644 dracut.
pc $(DESTDIR
)${pkgconfigdatadir}/dracut.
pc
222 @
rm -f dracut-version.sh
223 @printf
"#!/bin/sh\n# shellcheck disable=SC2034\nDRACUT_VERSION=%s\n" "$(DRACUT_FULL_VERSION)" > dracut-version.sh
229 $(RM
) $(manpages
:%=%.xml
) dracut.xml
231 $(RM
) dracut-
*.
tar.bz2 dracut-
*.
tar.xz
232 $(RM
) dracut-version.sh
233 $(RM
) dracut-install src
/install/dracut-install
$(DRACUT_INSTALL_OBJECTS
)
234 $(RM
) skipcpio
/skipcpio
$(SKIPCPIO_OBJECTS
)
235 $(RM
) dracut-util util
/util
$(UTIL_OBJECTS
)
236 $(RM
) $(manpages
) dracut.html
238 $(RM
) dracut-cpio src
/dracut-cpio
/target
/release
/dracut-cpio
*
239 $(MAKE
) -C
test clean
241 dist: dracut-
$(DRACUT_MAIN_VERSION
).
tar.xz
243 dracut-
$(DRACUT_MAIN_VERSION
).
tar.xz
: doc syncheck
244 @echo
"DRACUT_VERSION=$(DRACUT_MAIN_VERSION)" > dracut-version.sh
245 git archive
--format
=tar $(DRACUT_MAIN_VERSION
) --prefix=dracut-
$(DRACUT_MAIN_VERSION
)/ > dracut-
$(DRACUT_MAIN_VERSION
).
tar
246 mkdir
-p dracut-
$(DRACUT_MAIN_VERSION
)
247 for i in
$(manpages
) dracut.html dracut-version.sh
; do
[ "$${i%/*}" != "$$i" ] && mkdir
-p
"dracut-$(DRACUT_MAIN_VERSION)/$${i%/*}"; cp
"$$i" "dracut-$(DRACUT_MAIN_VERSION)/$$i"; done
248 tar --owner
=root
--group
=root
-rf dracut-
$(DRACUT_MAIN_VERSION
).
tar $$(find dracut-
$(DRACUT_MAIN_VERSION
) -type f
)
249 rm -fr
-- dracut-
$(DRACUT_MAIN_VERSION
).
tar.xz dracut-
$(DRACUT_MAIN_VERSION
)
250 xz
-9 dracut-
$(DRACUT_MAIN_VERSION
).
tar
251 rm -f
-- dracut-
$(DRACUT_MAIN_VERSION
).
tar
254 @ret
=0;for i in dracut-initramfs-restore.sh modules.d
/*/*.sh
; do \
255 [ "$${i##*/}" = "module-setup.sh" ] && continue
; \
256 read line
< "$$i"; [ "$${line#*bash*}" != "$$line" ] && continue
; \
257 [ $$V ] && echo
"posix syntax check: $$i"; bash
--posix
-n
"$$i" ; ret
=$$(($$ret+$$?
)); \
258 [ $$V ] && echo
"checking for [[: $$i"; if grep
-Fq
'[[ ' "$$i" ; then ret
=$$(($$ret+1)); echo
"$$i contains [["; fi
; \
259 [ $$V ] && echo
"checking for echo -n: $$i"; if grep
-Fq
'echo -n ' "$$i" ; then ret
=$$(($$ret+1)); echo
"$$i contains echo -n"; fi \
261 @ret
=0;for i in
*.sh modules.d
/*/*.sh modules.d
/*/module-setup.sh
; do \
262 [ $$V ] && echo
"bash syntax check: $$i"; bash
-n
"$$i" ; ret
=$$(($$ret+$$?
)); \
264 ifeq ($(HAVE_SHELLCHECK
),yes
)
265 ifeq ($(HAVE_SHFMT
),yes
)
266 shellcheck
$$(shfmt
-f .
)
268 find .
-name
'*.sh' -print0 | xargs
-0 shellcheck
273 @
[ "$$EUID" == "0" ] ||
{ echo
"'check' must be run as root! Please use 'sudo'."; exit
1; }
274 @
$(MAKE
) -C
test check
277 .
/dracut.sh
-N
-l
-a debug
-f test-
$(KVERSION
).img
$(KVERSION
)
278 @echo wrote test-
$(KVERSION
).img
281 .
/dracut.sh
--debug
-l
-a debug
-f test-
$(KVERSION
).img
$(KVERSION
)
282 @echo wrote test-
$(KVERSION
).img
285 .
/dracut.sh
-l
-a debug
--kernel-only
-f test-kernel-
$(KVERSION
).img
$(KVERSION
)
286 @echo wrote test-
$(KVERSION
).img
287 .
/dracut.sh
-l
-a debug
--no-kernel
-f test-dracut.img
$(KVERSION
)
288 @echo wrote test-dracut.img
291 .
/dracut.sh
--debug
-H
-l
-f test-
$(KVERSION
).img
$(KVERSION
)
292 @echo wrote test-
$(KVERSION
).img
295 .
/dracut.sh
-H
-l
-f test-
$(KVERSION
).img
$(KVERSION
)
296 @echo wrote test-
$(KVERSION
).img
299 .
/dracut.sh
--uefi
-H
-l
-f linux-
$(KVERSION
).efi
$(KVERSION
)
300 @echo wrote linux-
$(KVERSION
).efi
303 @git log | git shortlog
--numbered
--summary
-e | while read
-r a rest ||
[ -n
"$$rest" ]; do echo
"$$rest"; done
> AUTHORS
306 @git log | git shortlog
$(DRACUT_MAIN_VERSION
)..
--numbered
--summary
-e | while read
-r a rest ||
[ -n
"$$rest" ]; do echo
"- $$rest"; done