udev 151: libdir symlinking logic was reversed, fix that
[openembedded.git] / recipes / udev / udev_141.bb
1 DESCRIPTION = "udev is a daemon which dynamically creates and removes device nodes from \
2 /dev/, handles hotplug events and loads drivers at boot time. It replaces \
3 the hotplug package and requires a kernel not older than 2.6.12."
4 LICENSE = "GPLv2+"
5
6 # Untested
7 DEFAULT_PREFERENCE = "-1"
8
9 PR = "r21"
10
11 # needed for init.d script
12 RDEPENDS_${PN} += "udev-utils"
13
14 SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
15            file://mount.blacklist \
16            file://run.rules \
17            "
18 SRC_URI += " \
19        file://udev.rules \
20        file://devfs-udev.rules \
21        file://links.conf \
22        file://permissions.rules \
23        file://mount.sh \
24        file://network.sh \
25        file://local.rules \
26        file://default \
27        file://init \
28        file://cache \
29 "
30
31 SRC_URI_append_h2200 = " file://50-hostap_cs.rules "
32 PACKAGE_ARCH_h2200 = "h2200"
33
34 #buglabs's bug device
35 SRC_URI_append_bug = " \
36        file://30-BUG.rules \
37        file://10-mx31.rules \
38        file://bmi_eventpipe.sh "
39
40 PACKAGE_ARCH_bug = "bug"
41
42 inherit update-rc.d autotools_stage
43
44 # Put stuff in /lib and /sbin
45 export sbindir="${base_sbindir}"
46 export exec_prefix=""
47 EXTRA_OECONF += " --with-udev-prefix= \
48                   --with-libdir-name=${base_libdir} \
49 "
50
51 INITSCRIPT_NAME = "udev"
52 INITSCRIPT_PARAMS = "start 03 S ."
53
54 PACKAGES =+ "udev-utils libvolume-id libvolume-id-dev"
55
56 FILES_libvolume-id-dev = "${includedir}/libvolume_id.h ${libdir}/libvolume_id.a ${libdir}/libvolume_id.so ${libdir}/pkgconfig/libvolume_id.pc"
57 FILES_udev-utils = "${usrbindir}/udevinfo ${sbindir}/udevadm ${usrbindir}/udevtest"
58 FILES_libvolume-id = "${base_libdir}/libvolume_id.so.*"
59
60 RPROVIDES_${PN} = "hotplug"
61 FILES_${PN} += "${usrbindir}/* ${usrsbindir}/udevd"
62 FILES_${PN}-dbg += "${usrbindir}/.debug ${usrsbindir}/.debug"
63
64 # udev installs binaries under $(udev_prefix)/lib/udev, even if ${libdir}
65 # is ${prefix}/lib64
66 FILES_${PN} += "/lib/udev/* /lib/udev/*"
67 FILES_${PN}-dbg += "/lib/udev/.debug"
68
69 do_install () {
70         install -d ${D}${usrsbindir} \
71                    ${D}${sbindir}
72         oe_runmake 'DESTDIR=${D}' INSTALL=install install
73         install -d ${D}${sysconfdir}/init.d
74         install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
75         install -m 0755 ${WORKDIR}/cache ${D}${sysconfdir}/init.d/udev-cache
76
77         install -d ${D}${sysconfdir}/default
78         install -m 0755 ${WORKDIR}/default ${D}${sysconfdir}/default/udev
79
80         # Move udev rules from $(udev_prefix)/lib to /etc.
81         # This is hardcoded to $(udev_prefix)/lib/udev/rules.d in the
82         # Makefile, even if libdir is lib64.
83         mv ${D}/lib/udev/rules.d ${D}${sysconfdir}/udev/
84
85         cp ${S}/rules/rules.d/* ${D}${sysconfdir}/udev/rules.d/
86         cp ${S}/rules/packages/* ${D}${sysconfdir}/udev/rules.d/
87
88         install -m 0644 ${WORKDIR}/mount.blacklist     ${D}${sysconfdir}/udev/
89         install -m 0644 ${WORKDIR}/local.rules         ${D}${sysconfdir}/udev/rules.d/local.rules
90         install -m 0644 ${WORKDIR}/permissions.rules   ${D}${sysconfdir}/udev/rules.d/permissions.rules
91         install -m 0644 ${WORKDIR}/run.rules          ${D}${sysconfdir}/udev/rules.d/run.rules
92         install -m 0644 ${WORKDIR}/udev.rules          ${D}${sysconfdir}/udev/rules.d/udev.rules
93         install -m 0644 ${WORKDIR}/links.conf          ${D}${sysconfdir}/udev/links.conf
94         if [ "${UDEV_DEVFS_RULES}" = "1" ]; then
95                 install -m 0644 ${WORKDIR}/devfs-udev.rules ${D}${sysconfdir}/udev/rules.d/devfs-udev.rules
96         fi
97
98         touch ${D}${sysconfdir}/udev/saved.uname
99         touch ${D}${sysconfdir}/udev/saved.cmdline
100         touch ${D}${sysconfdir}/udev/saved.atags
101
102         install -d ${D}${sysconfdir}/udev/scripts/
103
104         install -m 0755 ${WORKDIR}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
105         install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
106 }
107
108 do_install_append_h2200() {
109         install -m 0644 ${WORKDIR}/50-hostap_cs.rules         ${D}${sysconfdir}/udev/rules.d/50-hostap_cs.rules
110 }
111
112 do_install_append_bug() {
113         install -m 0644 ${WORKDIR}/30-BUG.rules ${D}${sysconfdir}/udev/rules.d/30-BUG.rules
114         install -m 0644 ${WORKDIR}/10-mx31.rules ${D}${sysconfdir}/udev/rules.d/10-mx31.rules
115         install -m 0644 ${WORKDIR}/bmi_eventpipe.sh ${D}${sysconfdir}/udev/scripts/bmi_eventpipe.sh
116 }
117
118 do_install_append_hipox() {
119         # we don't like persistent net if rules at hipox machine
120         rm -f ${D}${sysconfdir}/udev/rules.d/75-persistent-net-generator.rules
121 }
122
123 # Create the cache after checkroot has run
124 pkg_postinst_${PN}_append() {
125 update-rc.d $OPT udev-cache start 12 S .
126
127 if [ -d $D/lib/udev/rules.d ] ; then
128         echo "$D/lib/udev/rules.d is not a symlink, fixing that"
129         mv $D/lib/udev/rules.d/* $D${sysconfdir}/udev/rules.d/
130         rm -rf $D/lib/udev/rules.d
131         ln -sf ${sysconfdir}/udev/rules.d $D/lib/udev/
132 fi
133 }
134
135 do_stage_append() {
136         install -m 0644 ${S}/extras/volume_id/lib/libvolume_id.h ${STAGING_INCDIR}
137         oe_libinstall -C extras/volume_id/lib -so libvolume_id ${STAGING_LIBDIR}
138         oe_libinstall -C udev/lib -so libudev ${STAGING_LIBDIR}
139         # Since we change exec_prefix above, autotools_stage_all will not see the .pc files
140         # When we upgrade to 145 with the path bugs fixed we can drop all this (see poky)
141         install -d ${STAGING_DIR_TARGET}${prefix}${libdir}/pkgconfig/
142         install ${S}/extras/volume_id/lib/libvolume_id.pc ${STAGING_DIR_TARGET}${prefix}${libdir}/pkgconfig/
143         install ${S}/udev/lib/libudev.pc ${STAGING_DIR_TARGET}${prefix}${libdir}/pkgconfig/
144         install -d ${STAGING_DIR_TARGET}${prefix}${includedir}/
145         install ${S}/extras/volume_id/lib/libvolume_id.h ${STAGING_DIR_TARGET}${prefix}${includedir}/
146         install ${S}/udev/lib/libudev.h ${STAGING_DIR_TARGET}${prefix}${includedir}/
147 }