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