Merge branch 'org.openembedded.dev' of git@git.openembedded.net:openembedded into...
[openembedded.git] / recipes / util-linux-ng / util-linux-ng.inc
1 DESCRIPTION = "Util-linux-ng is a suite of essential utilities for any Linux system."
2 SECTION = "base"
3 LICENSE = "GPL"
4 DEPENDS = "udev zlib ncurses virtual/libintl"
5
6 inherit autotools_stage
7 AUTOTOOLS_STAGE_PKGCONFIG = "1"
8
9 DEFAULT_PREFERENCE = "-1"
10
11 INC_PR = "r9"
12
13 # allows for a release candidate
14 RC ?= ""
15
16 SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/util-linux-ng/v${PV}/util-linux-ng-${PV}${RC}.tar.bz2"
17
18 SRC_URI_append_chinook-compat = " file://chinook_libtool.patch;patch=1 "
19
20 PACKAGES =+ "util-linux-ng-fdisk util-linux-ng-cfdisk util-linux-ng-sfdisk util-linux-ng-swaponoff util-linux-ng-losetup util-linux-ng-umount util-linux-ng-mount util-linux-ng-readprofile "
21 PACKAGES_DYNAMIC = "libblkid*"
22
23 # Provide old util-linux names (several recipes still use DEPENDS or RDEPENDS = "util-linux"):
24 PROVIDES = "util-linux"
25 RPROVIDES_${PN} = "util-linux"
26 RPROVIDES_util-linux-ng-fdisk = "util-linux-fdisk"
27 RPROVIDES_util-linux-ng-cfdisk = "util-linux-cfdisk"
28 RPROVIDES_util-linux-ng-sfdisk = "util-linux-sfdisk"
29 RPROVIDES_util-linux-ng-swaponoff = "util-linux-swaponoff"
30 RPROVIDES_util-linux-ng-losetup = "util-linux-losetup"
31 RPROVIDES_util-linux-ng-umount = "util-linux-umount"
32 RPROVIDES_util-linux-ng-mount = "util-linux-mount"
33 RPROVIDES_util-linux-ng-readprofile = "util-linux-readprofile"
34
35 FILES_${PN}-doc += "/usr/share/misc/getopt/getopt-*.*"
36 FILES_${PN} = "${bindir} ${sbindir} ${base_bindir} ${base_sbindir}"
37
38 FILES_util-linux-ng-fdisk = "${base_sbindir}/fdisk.${PN}"
39 FILES_util-linux-ng-cfdisk = "${base_sbindir}/cfdisk"
40 # Moved to ${sbindir} in new versions:
41 FILES_util-linux-ng-sfdisk = "${base_sbindir}/sfdisk ${sbindir}/sfdisk"
42 FILES_util-linux-ng-swaponoff = "${base_sbindir}/swapon.${PN} ${base_sbindir}/swapoff.${PN}"
43 FILES_util-linux-ng-losetup = "${base_sbindir}/losetup.${PN}"
44 FILES_util-linux-ng-mount = "${base_bindir}/mount.${PN} ${sysconfdir}/default/mountall"
45 FILES_util-linux-ng-umount = "${base_bindir}/umount.${PN}"
46 # Moved to ${base_sbindir} by do_install:
47 FILES_util-linux-ng-readprofile = "${base_sbindir}/readprofile.${PN}"
48
49 PACKAGES =+ "${PN}-mountall"
50 FILES_${PN}-mountall = "${sysconfdir}/default/mountall"
51 RREPLACES_${PN}-mountall = "busybox-mountall"
52
53 RRECOMMENDS_${PN} = "util-linux-ng-fdisk util-linux-ng-cfdisk util-linux-ng-sfdisk util-linux-ng-mount util-linux-ng-readprofile "
54 RDEPENDS_${PN} = "${PN}-mountall util-linux-ng-umount util-linux-ng-swaponoff util-linux-ng-losetup"
55
56 EXTRA_OECONF = "--disable-use-tty-group --disable-makeinstall-chown \
57 --enable-kill --enable-last --enable-mesg --enable-raw --enable-login-utils \
58 --enable-arch --enable-init --enable-partx --enable-schedutils \
59 --with-fsprobe=builtin"
60
61 S = "${WORKDIR}/util-linux-ng-${PV}${RC}"
62
63 do_configure_prepend_chinook-compat () {
64
65         for i in  lt~obsolete.m4 ltsugar.m4 libtool.m4 ltoptions.m4 ltversion.m4
66         do
67                 rm ${S}/m4/${i}
68         done
69 }
70
71 do_compile () {
72         set -e
73 #       install ${WORKDIR}/MCONFIG ${S}/MCONFIG
74 #       install ${WORKDIR}/make_include ${S}/make_include
75 #       install ${WORKDIR}/swapargs.h ${S}/mount/swapargs.h
76 #       install ${WORKDIR}/defines.h ${S}/defines.h
77         oe_runmake ARCH=${TARGET_ARCH} CPU= CPUOPT= \
78                 'OPT=${CFLAGS}' 'CC=${CC}' 'LD=${LD}' \
79                 'LDFLAGS=${LDFLAGS}'
80 }
81
82 checklink() {
83         local targ link value
84         targ="$1"
85         link="$2"
86         ext="$3"
87         if test -h "$link"
88         then
89                 value="$(readlink "$link")"
90                 if test "$value" = "$targ"
91                 then
92                         rm "$link"
93                         ln -s "$targ"."${PN}" "$link$ext"
94                         return 0
95                 else
96                         echo "$link: '$value' found '$targ' expected" >&2
97                         return 1
98                 fi
99         else
100                 echo "$link: not a symbolic link" >&2
101                 return 1
102         fi
103 }
104
105 do_install () {
106         # with ccache the timestamps on compiled files may
107         # end up earlier than on their inputs, this allows
108         # for the resultant compilation in the install step.
109         oe_runmake ARCH=${TARGET_ARCH} CPU= CPUOPT= \
110                 'OPT=${CFLAGS}' 'CC=${CC}' 'LD=${LD}' \
111                 'LDFLAGS=${LDFLAGS}' 'DESTDIR=${D}' install
112         mkdir -p ${D}${base_bindir}
113
114         sbinprogs="agetty blockdev ctrlaltdel cfdisk"
115         sbinprogs_a="pivot_root hwclock mkswap shutdown mkfs.minix fsck.minix losetup swapon fdisk readprofile"
116         usrbinprogs_a="hexdump last logger mesg renice wall"
117         binprogs_a="dmesg kill more umount mount"
118
119         if [ "${base_sbindir}" != "${sbindir}" ]; then
120                 mkdir -p ${D}${base_sbindir}
121                 for p in $sbinprogs $sbinprogs_a; do
122                         if [ -f "${D}${sbindir}/$p" ]; then
123                                 mv "${D}${sbindir}/$p" "${D}${base_sbindir}/$p"
124                         fi
125                 done
126         fi
127
128         if [ "${base_bindir}" != "${bindir}" ]; then
129                 mkdir -p ${D}${base_bindir}
130                 for p in $binprogs_a; do
131                         if [ -f "${D}${bindir}/$p" ]; then
132                                 mv "${D}${bindir}/$p" "${D}${base_bindir}/$p"
133                         fi
134                 done
135         fi
136
137         for p in $usrbinprogs_a; do
138                 if [ -f "${D}${bindir}/$p" ]; then
139                         mv "${D}${bindir}/$p" "${D}${bindir}/$p.${PN}"
140                 fi
141         done
142
143         for p in $binprogs_a; do
144                 if [ -f "${D}${base_bindir}/$p" ]; then
145                         mv "${D}${base_bindir}/$p" "${D}${base_bindir}/$p.${PN}"
146                 fi
147         done
148
149         for p in $sbinprogs_a; do
150                 if [ -f "${D}${base_sbindir}/$p" ]; then
151                         mv "${D}${base_sbindir}/$p" "${D}${base_sbindir}/$p.${PN}"
152                 fi
153         done
154
155         install -d ${D}${sysconfdir}/default/
156         echo 'MOUNTALL="-t nonfs,nosmbfs,noncpfs"' > ${D}${sysconfdir}/default/mountall
157
158         rm ${D}${sbindir}/swapoff -f
159         ln -sf ${base_sbindir}/swapon.${PN} ${D}${base_sbindir}/swapoff.${PN}
160         ln -sf ${sbindir}/shutdown ${D}${sbindir}/reboot.${PN}
161         ln -sf ${sbindir}/shutdown ${D}${sbindir}/halt.${PN}
162         ln -sf ${sbindir}/shutdown ${D}${sbindir}/fastboot
163         ln -sf ${sbindir}/shutdown ${D}${sbindir}/fasthalt
164 }
165
166 python populate_packages_prepend () {
167         ulinxng_libdir = bb.data.expand('${libdir}', d)
168         ulinxng_libdir_dbg = bb.data.expand('${libdir}/.debug', d)
169         do_split_packages(d, ulinxng_libdir, '^lib(.*)\.so$', 'lib%s-dev', 'util-linux-ng %s development package', extra_depends='${PN}-dev', allow_links=True)
170         do_split_packages(d, ulinxng_libdir, '^lib(.*)\.la$', 'lib%s-dev', 'util-linux-ng %s development package', extra_depends='${PN}-dev')
171         do_split_packages(d, ulinxng_libdir, '^lib(.*)\.a$', 'lib%s-dev', 'util-linux-ng %s development package', extra_depends='${PN}-dev')
172         do_split_packages(d, ulinxng_libdir, '^lib(.*)\.so\.*', 'lib%s', 'util-linux-ng %s library', extra_depends='', allow_links=True)
173 }
174
175
176 pkg_postinst_${PN} () {
177         update-alternatives --install ${base_bindir}/dmesg dmesg dmesg.${PN} 100
178         update-alternatives --install ${base_bindir}/kill kill kill.${PN} 100
179         update-alternatives --install ${base_bindir}/more more more.${PN} 100
180         update-alternatives --install ${base_sbindir}/mkswap mkswap mkswap.${PN} 100
181         test -x ${base_sbindir}/pivot_root.${PN} && \
182         update-alternatives --install ${base_sbindir}/pivot_root pivot_root pivot_root.${PN} 100
183         update-alternatives --install ${base_sbindir}/sln sln sln.${PN} 100
184         update-alternatives --install ${base_sbindir}/mkfs.minix mkfs.minix mkfs.minix.${PN} 100
185         update-alternatives --install ${base_sbindir}/fsck.minix fsck.minix fsck.minix.${PN} 100
186         update-alternatives --install ${bindir}/hexdump hexdump hexdump.${PN} 100
187         update-alternatives --install ${bindir}/last last last.${PN} 100
188         update-alternatives --install ${bindir}/logger logger logger.${PN} 100
189         update-alternatives --install ${bindir}/mesg mesg mesg.${PN} 100
190         update-alternatives --install ${bindir}/renice renice renice.${PN} 100
191         update-alternatives --install ${bindir}/wall wall wall.${PN} 100
192         
193         # There seems to be problem, atleast on nslu2, with these, until they are
194         # fixed the busybox ones have higher priority
195         update-alternatives --install ${base_sbindir}/hwclock hwclock hwclock.${PN} 10
196         update-alternatives --install ${base_sbindir}/shutdown shutdown shutdown.${PN} 10
197         update-alternatives --install ${base_sbindir}/reboot reboot reboot.${PN} 10
198         update-alternatives --install ${base_sbindir}/halt halt halt.${PN} 10
199 }
200
201 pkg_prerm_${PN} () {
202         test -x ${base_sbindir}/pivot_root.${PN} && \
203         update-alternatives --remove pivot_root pivot_root.${PN}
204         update-alternatives --remove dmesg dmesg.${PN}
205         update-alternatives --remove kill kill.${PN}
206         update-alternatives --remove more more.${PN}
207         update-alternatives --remove halt halt.${PN}
208         update-alternatives --remove hwclock hwclock.${PN}
209         update-alternatives --remove mkswap mkswap.${PN}
210         update-alternatives --remove reboot reboot.${PN}
211         update-alternatives --remove shutdown shutdown.${PN}
212         update-alternatives --remove sln sln.${PN}
213         update-alternatives --remove mkfs.minix mkfs.minix.${PN}
214         update-alternatives --remove fsck.minix fsck.minix.${PN}
215         update-alternatives --remove hexdump hexdump.${PN}
216         update-alternatives --remove last last.${PN}
217         update-alternatives --remove logger logger.${PN}
218         update-alternatives --remove mesg mesg.${PN}
219         update-alternatives --remove renice renice.${PN}
220         update-alternatives --remove wall wall.${PN}
221 }
222
223 pkg_postinst_util-linux-ng-fdisk () {
224         update-alternatives --install ${base_sbindir}/fdisk fdisk fdisk.${PN} 100
225 }
226
227 pkg_prerm_util-linux-ng-fdisk () {
228         update-alternatives --remove fdisk fdisk.${PN}
229 }
230
231 pkg_postinst_util-linux-ng-mount () {
232         update-alternatives --install ${base_bindir}/mount mount mount.${PN} 100
233 }
234
235 pkg_prerm_util-linux-ng-mount () {
236         update-alternatives --remove mount mount.${PN}
237 }
238
239 pkg_postinst_util-linux-ng-umount () {
240         update-alternatives --install ${base_bindir}/umount umount umount.${PN} 100
241 }
242
243 pkg_prerm_util-linux-ng-umount () {
244         update-alternatives --remove umount umount.${PN}
245 }
246
247 pkg_postinst_util-linux-ng-losetup () {
248         update-alternatives --install ${base_sbindir}/losetup losetup losetup.${PN} 100
249 }
250
251 pkg_prerm_util-linux-ng-losetup () {
252         update-alternatives --remove losetup losetup.${PN}
253 }
254
255 pkg_postinst_util-linux-ng-swaponoff () {
256         update-alternatives --install ${base_sbindir}/swapoff swapoff swapoff.${PN} 100
257         update-alternatives --install ${base_sbindir}/swapon swapon swapon.${PN} 100
258 }
259
260 pkg_prerm_util-linux-ng-swaponoff () {
261         update-alternatives --remove swapoff swapoff.${PN}
262         update-alternatives --remove swapon swapon.${PN}
263 }
264
265 pkg_postinst_util-linux-ng-readprofile() {
266     update-alternatives --install ${sbindir}/readprofile readprofile readprofile.${PN} 100
267 }
268
269 pkg_prerm_util-linux-ng-readprofile () {
270     update-alternatives --remove readprofile readprofile.${PN} 100
271 }
272