Gentoo Archives: gentoo-commits

From: "Matthias Schwarzott (zzam)" <zzam@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in sys-fs/udev: ChangeLog udev-158.ebuild
Date: Thu, 24 Jun 2010 18:40:56
Message-Id: 20100624184053.99AA12CF4D@corvid.gentoo.org
1 zzam 10/06/24 18:40:53
2
3 Modified: ChangeLog
4 Added: udev-158.ebuild
5 Log:
6 Version bumped.
7 (Portage version: 2.2_rc67/cvs/Linux x86_64)
8
9 Revision Changes Path
10 1.541 sys-fs/udev/ChangeLog
11
12 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-fs/udev/ChangeLog?rev=1.541&view=markup
13 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-fs/udev/ChangeLog?rev=1.541&content-type=text/plain
14 diff : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-fs/udev/ChangeLog?r1=1.540&r2=1.541
15
16 Index: ChangeLog
17 ===================================================================
18 RCS file: /var/cvsroot/gentoo-x86/sys-fs/udev/ChangeLog,v
19 retrieving revision 1.540
20 retrieving revision 1.541
21 diff -u -r1.540 -r1.541
22 --- ChangeLog 20 Jun 2010 19:27:54 -0000 1.540
23 +++ ChangeLog 24 Jun 2010 18:40:53 -0000 1.541
24 @@ -1,6 +1,11 @@
25 # ChangeLog for sys-fs/udev
26 # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
27 -# $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/ChangeLog,v 1.540 2010/06/20 19:27:54 zzam Exp $
28 +# $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/ChangeLog,v 1.541 2010/06/24 18:40:53 zzam Exp $
29 +
30 +*udev-158 (24 Jun 2010)
31 +
32 + 24 Jun 2010; Matthias Schwarzott <zzam@g.o> +udev-158.ebuild:
33 + Version bumped.
34
35 *udev-157 (20 Jun 2010)
36 *udev-156 (20 Jun 2010)
37
38
39
40 1.1 sys-fs/udev/udev-158.ebuild
41
42 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-fs/udev/udev-158.ebuild?rev=1.1&view=markup
43 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-fs/udev/udev-158.ebuild?rev=1.1&content-type=text/plain
44
45 Index: udev-158.ebuild
46 ===================================================================
47 # Copyright 1999-2010 Gentoo Foundation
48 # Distributed under the terms of the GNU General Public License v2
49 # $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/udev-158.ebuild,v 1.1 2010/06/24 18:40:53 zzam Exp $
50
51 EAPI="1"
52
53 inherit eutils flag-o-matic multilib toolchain-funcs linux-info
54
55 #PATCHSET=${P}-gentoo-patchset-v1
56
57 if [[ ${PV} == "9999" ]]; then
58 EGIT_REPO_URI="git://git.kernel.org/pub/scm/linux/hotplug/udev.git"
59 EGIT_BRANCH="master"
60 inherit git autotools
61 else
62 # please update testsys-tarball whenever udev-xxx/test/sys/ is changed
63 SRC_URI="mirror://kernel/linux/utils/kernel/hotplug/${P}.tar.bz2
64 test? ( mirror://gentoo/${PN}-151-testsys.tar.bz2 )"
65 [[ -n "${PATCHSET}" ]] && SRC_URI="${SRC_URI} mirror://gentoo/${PATCHSET}.tar.bz2"
66 fi
67 DESCRIPTION="Linux dynamic and persistent device naming support (aka userspace devfs)"
68 HOMEPAGE="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html"
69
70 LICENSE="GPL-2"
71 SLOT="0"
72 KEYWORDS="-alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 -sh ~sparc ~x86"
73 IUSE="selinux extras test"
74
75 COMMON_DEPEND="selinux? ( sys-libs/libselinux )
76 extras? (
77 sys-apps/acl
78 >=sys-apps/usbutils-0.82
79 virtual/libusb:0
80 sys-apps/pciutils
81 dev-libs/glib:2
82 )
83 >=sys-apps/util-linux-2.16
84 >=sys-libs/glibc-2.9"
85
86 DEPEND="${COMMON_DEPEND}
87 extras? ( dev-util/gperf )
88 >=sys-kernel/linux-headers-2.6.29
89 test? ( app-text/tree )"
90
91 RDEPEND="${COMMON_DEPEND}
92 !sys-apps/coldplug
93 !<sys-fs/lvm2-2.02.45
94 !sys-fs/device-mapper
95 >=sys-apps/baselayout-1.12.5"
96
97 if [[ ${PV} == "9999" ]]; then
98 # for documentation processing with xsltproc
99 DEPEND="${DEPEND}
100 app-text/docbook-xsl-stylesheets
101 app-text/docbook-xml-dtd
102 dev-util/gtk-doc"
103 fi
104
105 # required kernel options
106 CONFIG_CHECK="~INOTIFY_USER ~SIGNALFD ~!SYSFS_DEPRECATED ~!SYSFS_DEPRECATED_V2
107 ~!IDE"
108
109 # We need the lib/rcscripts/addon support
110 PROVIDE="virtual/dev-manager"
111
112 udev_check_KV() {
113 local ok=0
114 if [[ ${KV_MAJOR} == 2 && ${KV_MINOR} == 6 ]]
115 then
116 if kernel_is -ge 2 6 ${KV_PATCH_reliable} ; then
117 ok=2
118 elif kernel_is -ge 2 6 ${KV_PATCH_min} ; then
119 ok=1
120 fi
121 fi
122 return $ok
123 }
124
125 pkg_setup() {
126 linux-info_pkg_setup
127
128 udev_libexec_dir="/$(get_libdir)/udev"
129
130 # udev requires signalfd introduced in kernel 2.6.25,
131 # but a glibc compiled against >=linux-headers-2.6.27 uses the
132 # new signalfd syscall introduced in kernel 2.6.27 without falling back
133 # to the old one. So we just depend on 2.6.27 here, see Bug #281312.
134 KV_PATCH_min=25
135 KV_PATCH_reliable=27
136 KV_min=2.6.${KV_PATCH_min}
137 KV_reliable=2.6.${KV_PATCH_reliable}
138
139 # always print kernel version requirements
140 ewarn
141 ewarn "${P} does not support Linux kernel before version ${KV_min}!"
142 if [[ ${KV_PATCH_min} != ${KV_PATCH_reliable} ]]; then
143 ewarn "For a reliable udev, use at least kernel ${KV_reliable}"
144 fi
145
146 echo
147 # We don't care about the secondary revision of the kernel.
148 # 2.6.30.4 -> 2.6.30 is all we check
149 udev_check_KV
150 case "$?" in
151 2) einfo "Your kernel version (${KV_FULL}) is new enough to run ${P} reliably." ;;
152 1) ewarn "Your kernel version (${KV_FULL}) is new enough to run ${P},"
153 ewarn "but it may be unreliable in some cases."
154 ebeep ;;
155 0) eerror "Your kernel version (${KV_FULL}) is too old to run ${P}"
156 ebeep ;;
157 esac
158 echo
159
160 KV_FULL_SRC=${KV_FULL}
161 get_running_version
162 udev_check_KV
163 if [[ "$?" = "0" ]]; then
164 eerror
165 eerror "udev cannot be restarted after emerging,"
166 eerror "as your running kernel version (${KV_FULL}) is too old."
167 eerror "You really need to use a newer kernel after a reboot!"
168 NO_RESTART=1
169 ebeep
170 fi
171 }
172
173 sed_libexec_dir() {
174 sed -e "s#/lib/udev#${udev_libexec_dir}#" -i "$@"
175 }
176
177 src_unpack() {
178 if [[ ${PV} == "9999" ]] ; then
179 git_src_unpack
180 else
181 unpack ${A}
182
183 if use test; then
184 mv "${WORKDIR}"/test/sys "${S}"/test/
185 fi
186 fi
187
188 cd "${S}"
189
190 # patches go here...
191
192 # backport some patches
193 if [[ -n "${PATCHSET}" ]]; then
194 EPATCH_SOURCE="${WORKDIR}/${PATCHSET}" EPATCH_SUFFIX="patch" \
195 EPATCH_FORCE="yes" epatch
196 fi
197
198 # change rules back to group uucp instead of dialout for now
199 sed -e 's/GROUP="dialout"/GROUP="uucp"/' \
200 -i rules/{rules.d,arch}/*.rules \
201 || die "failed to change group dialout to uucp"
202
203 if [[ ${PV} != 9999 ]]; then
204 # Make sure there is no sudden changes to upstream rules file
205 # (more for my own needs than anything else ...)
206 MD5=$(md5sum < "${S}/rules/rules.d/50-udev-default.rules")
207 MD5=${MD5/ -/}
208 if [[ ${MD5} != 61eda71c840620ff70386715d8010438 ]]
209 then
210 echo
211 eerror "50-udev-default.rules has been updated, please validate!"
212 eerror "md5sum: ${MD5}"
213 die "50-udev-default.rules has been updated, please validate!"
214 fi
215 fi
216
217 sed_libexec_dir \
218 rules/rules.d/50-udev-default.rules \
219 rules/rules.d/78-sound-card.rules \
220 extras/rule_generator/write_*_rules \
221 || die "sed failed"
222
223 if [[ ${PV} == 9999 ]]; then
224 gtkdocize --copy
225 eautoreconf
226 fi
227 }
228
229 src_compile() {
230 filter-flags -fprefetch-loop-arrays
231
232 econf \
233 --prefix=/usr \
234 --sysconfdir=/etc \
235 --sbindir=/sbin \
236 --libdir=/usr/$(get_libdir) \
237 --with-rootlibdir=/$(get_libdir) \
238 --libexecdir="${udev_libexec_dir}" \
239 --enable-logging \
240 --enable-static \
241 $(use_with selinux) \
242 $(use_enable extras) \
243 --disable-introspection
244 # we don't have gobject-introspection in portage tree
245
246 emake || die "compiling udev failed"
247 }
248
249 src_install() {
250 local scriptdir="${FILESDIR}/156"
251
252 into /
253 emake DESTDIR="${D}" install || die "make install failed"
254
255 exeinto "${udev_libexec_dir}"
256 newexe "${FILESDIR}"/net-130-r1.sh net.sh || die "net.sh not installed properly"
257 newexe "${FILESDIR}"/move_tmp_persistent_rules-112-r1.sh move_tmp_persistent_rules.sh \
258 || die "move_tmp_persistent_rules.sh not installed properly"
259 newexe "${FILESDIR}"/write_root_link_rule-125 write_root_link_rule \
260 || die "write_root_link_rule not installed properly"
261
262 doexe "${scriptdir}"/shell-compat-KV.sh \
263 || die "shell-compat.sh not installed properly"
264 doexe "${scriptdir}"/shell-compat-addon.sh \
265 || die "shell-compat.sh not installed properly"
266
267 keepdir "${udev_libexec_dir}"/state
268 keepdir "${udev_libexec_dir}"/devices
269
270 # create symlinks for these utilities to /sbin
271 # where multipath-tools expect them to be (Bug #168588)
272 dosym "..${udev_libexec_dir}/scsi_id" /sbin/scsi_id
273
274 # Add gentoo stuff to udev.conf
275 echo "# If you need to change mount-options, do it in /etc/fstab" \
276 >> "${D}"/etc/udev/udev.conf
277
278 # let the dir exist at least
279 keepdir /etc/udev/rules.d
280
281 # Now installing rules
282 cd "${S}"/rules
283 insinto "${udev_libexec_dir}"/rules.d/
284
285 # Our rules files
286 doins "${scriptdir}"/??-*.rules
287
288 # support older kernels
289 doins misc/30-kernel-compat.rules
290
291 # Adding arch specific rules
292 if [[ -f arch/40-${ARCH}.rules ]]
293 then
294 doins "arch/40-${ARCH}.rules"
295 fi
296 cd "${S}"
297
298 # our udev hooks into the rc system
299 insinto /$(get_libdir)/rcscripts/addons
300 doins "${scriptdir}"/udev-start.sh \
301 || die "udev-start.sh not installed properly"
302 doins "${scriptdir}"/udev-stop.sh \
303 || die "udev-stop.sh not installed properly"
304
305 local init
306 # udev-postmount and init-scripts for >=openrc-0.3.1, Bug #240984
307 for init in udev udev-mount udev-dev-tarball udev-postmount; do
308 newinitd "${scriptdir}/${init}.initd" "${init}" \
309 || die "initscript ${init} not installed properly"
310 done
311
312 # insert minimum kernel versions
313 sed -e "s/%KV_MIN%/${KV_min}/" \
314 -e "s/%KV_MIN_RELIABLE%/${KV_reliable}/" \
315 -i "${D}"/etc/init.d/udev-mount
316
317 # config file for init-script and start-addon
318 newconfd "${scriptdir}/udev.confd" udev \
319 || die "config file not installed properly"
320
321 insinto /etc/modprobe.d
322 newins "${FILESDIR}"/blacklist-146 blacklist.conf
323 newins "${FILESDIR}"/pnp-aliases pnp-aliases.conf
324
325 # convert /lib/udev to real used dir
326 sed_libexec_dir \
327 "${D}/$(get_libdir)"/rcscripts/addons/*.sh \
328 "${D}/${udev_libexec_dir}"/write_root_link_rule \
329 "${D}"/etc/conf.d/udev \
330 "${D}"/etc/init.d/udev* \
331 "${D}"/etc/modprobe.d/*
332
333 # documentation
334 dodoc ChangeLog README TODO || die "failed installing docs"
335
336 # keep doc in just one directory, Bug #281137
337 rm -rf "${D}/usr/share/doc/${PN}"
338 if use extras; then
339 dodoc extras/keymap/README.keymap.txt || die "failed installing docs"
340 fi
341 }
342
343 pkg_preinst() {
344 # moving old files to support newer modprobe, 12 May 2009
345 local f dir=${ROOT}/etc/modprobe.d/
346 for f in pnp-aliases blacklist; do
347 if [[ -f $dir/$f && ! -f $dir/$f.conf ]]
348 then
349 elog "Moving $dir/$f to $f.conf"
350 mv -f "$dir/$f" "$dir/$f.conf"
351 fi
352 done
353
354 if [[ -d ${ROOT}/lib/udev-state ]]
355 then
356 mv -f "${ROOT}"/lib/udev-state/* "${D}"/lib/udev/state/
357 rm -r "${ROOT}"/lib/udev-state
358 fi
359
360 if [[ -f ${ROOT}/etc/udev/udev.config &&
361 ! -f ${ROOT}/etc/udev/udev.rules ]]
362 then
363 mv -f "${ROOT}"/etc/udev/udev.config "${ROOT}"/etc/udev/udev.rules
364 fi
365
366 # delete the old udev.hotplug symlink if it is present
367 if [[ -h ${ROOT}/etc/hotplug.d/default/udev.hotplug ]]
368 then
369 rm -f "${ROOT}"/etc/hotplug.d/default/udev.hotplug
370 fi
371
372 # delete the old wait_for_sysfs.hotplug symlink if it is present
373 if [[ -h ${ROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug ]]
374 then
375 rm -f "${ROOT}"/etc/hotplug.d/default/05-wait_for_sysfs.hotplug
376 fi
377
378 # delete the old wait_for_sysfs.hotplug symlink if it is present
379 if [[ -h ${ROOT}/etc/hotplug.d/default/10-udev.hotplug ]]
380 then
381 rm -f "${ROOT}"/etc/hotplug.d/default/10-udev.hotplug
382 fi
383
384 has_version "=${CATEGORY}/${PN}-103-r3"
385 previous_equal_to_103_r3=$?
386
387 has_version "<${CATEGORY}/${PN}-104-r5"
388 previous_less_than_104_r5=$?
389
390 has_version "<${CATEGORY}/${PN}-106-r5"
391 previous_less_than_106_r5=$?
392
393 has_version "<${CATEGORY}/${PN}-113"
394 previous_less_than_113=$?
395 }
396
397 # 19 Nov 2008
398 fix_old_persistent_net_rules() {
399 local rules=${ROOT}/etc/udev/rules.d/70-persistent-net.rules
400 [[ -f ${rules} ]] || return
401
402 elog
403 elog "Updating persistent-net rules file"
404
405 # Change ATTRS to ATTR matches, Bug #246927
406 sed -i -e 's/ATTRS{/ATTR{/g' "${rules}"
407
408 # Add KERNEL matches if missing, Bug #246849
409 sed -ri \
410 -e '/KERNEL/ ! { s/NAME="(eth|wlan|ath)([0-9]+)"/KERNEL=="\1*", NAME="\1\2"/}' \
411 "${rules}"
412 }
413
414 # See Bug #129204 for a discussion about restarting udevd
415 restart_udevd() {
416 if [[ ${NO_RESTART} = "1" ]]; then
417 ewarn "Not restarting udevd, as your kernel is too old!"
418 return
419 fi
420
421 # need to merge to our system
422 [[ ${ROOT} = / ]] || return
423
424 # check if root of init-process is identical to ours (not in chroot)
425 [[ -r /proc/1/root && /proc/1/root/ -ef /proc/self/root/ ]] || return
426
427 # abort if there is no udevd running
428 [[ -n $(pidof udevd) ]] || return
429
430 # abort if no /dev/.udev exists
431 [[ -e /dev/.udev ]] || return
432
433 elog
434 elog "restarting udevd now."
435
436 killall -15 udevd &>/dev/null
437 sleep 1
438 killall -9 udevd &>/dev/null
439
440 /sbin/udevd --daemon
441 sleep 3
442 if [[ ! -n $(pidof udevd) ]]; then
443 eerror "FATAL: udev died, please check your kernel is"
444 eerror "new enough and configured correctly for ${P}."
445 eerror
446 eerror "Please have a look at this before rebooting."
447 eerror "If in doubt, please downgrade udev back to your old version"
448 ebeep
449 fi
450 }
451
452 postinst_init_scripts() {
453 # FIXME: we may need some code that detects if this is a system bootstrap
454 # and auto-enables udev then
455 #
456 # FIXME: inconsistent handling of init-scripts here
457 # * udev is added to sysinit in openrc-ebuild
458 # * we add udev-postmount to default in here
459 #
460
461 # migration to >=openrc-0.4
462 if [[ -e "${ROOT}"/etc/runlevels/sysinit && ! -e "${ROOT}"/etc/runlevels/sysinit/udev ]]
463 then
464 ewarn
465 ewarn "You need to add the udev init script to the runlevel sysinit,"
466 ewarn "else your system will not be able to boot"
467 ewarn "after updating to >=openrc-0.4.0"
468 ewarn "Run this to enable udev for >=openrc-0.4.0:"
469 ewarn "\trc-update add udev sysinit"
470 ewarn
471 fi
472
473 # add udev-postmount to default runlevel instead of that ugly injecting
474 # like a hotplug event, 2009/10/15
475
476 # already enabled?
477 [[ -e "${ROOT}"/etc/runlevels/default/udev-postmount ]] && return
478
479 local enable_postmount=0
480 [[ -e "${ROOT}"/etc/runlevels/sysinit/udev ]] && enable_postmount=1
481 [[ "${ROOT}" = "/" && -d /dev/.udev/ ]] && enable_postmount=1
482
483 if [[ ${enable_postmount} = 1 ]]
484 then
485 local initd=udev-postmount
486
487 if [[ -e ${ROOT}/etc/init.d/${initd} ]] && \
488 [[ ! -e ${ROOT}/etc/runlevels/default/${initd} ]]
489 then
490 ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/default/${initd}
491 elog "Auto-adding '${initd}' service to your default runlevel"
492 fi
493 else
494 elog "You should add the udev-postmount service to default runlevel."
495 elog "Run this to add it:"
496 elog "\trc-update add udev-postmount default"
497 fi
498 }
499
500 pkg_postinst() {
501 fix_old_persistent_net_rules
502
503 restart_udevd
504
505 postinst_init_scripts
506
507 # people want reminders, I'll give them reminders. Odds are they will
508 # just ignore them anyway...
509
510 # delete 40-scsi-hotplug.rules, it is integrated in 50-udev.rules, 19 Jan 2007
511 if [[ $previous_equal_to_103_r3 = 0 ]] &&
512 [[ -e ${ROOT}/etc/udev/rules.d/40-scsi-hotplug.rules ]]
513 then
514 ewarn "Deleting stray 40-scsi-hotplug.rules"
515 ewarn "installed by sys-fs/udev-103-r3"
516 rm -f "${ROOT}"/etc/udev/rules.d/40-scsi-hotplug.rules
517 fi
518
519 # Removing some device-nodes we thought we need some time ago, 25 Jan 2007
520 if [[ -d ${ROOT}/lib/udev/devices ]]
521 then
522 rm -f "${ROOT}"/lib/udev/devices/{null,zero,console,urandom}
523 fi
524
525 # Removing some old file, 29 Jan 2007
526 if [[ $previous_less_than_104_r5 = 0 ]]
527 then
528 rm -f "${ROOT}"/etc/dev.d/net/hotplug.dev
529 rmdir --ignore-fail-on-non-empty "${ROOT}"/etc/dev.d/net 2>/dev/null
530 fi
531
532 # 19 Mar 2007
533 if [[ $previous_less_than_106_r5 = 0 ]] &&
534 [[ -e ${ROOT}/etc/udev/rules.d/95-net.rules ]]
535 then
536 rm -f "${ROOT}"/etc/udev/rules.d/95-net.rules
537 fi
538
539 # Try to remove /etc/dev.d as that is obsolete, 23 Apr 2007
540 if [[ -d ${ROOT}/etc/dev.d ]]
541 then
542 rmdir --ignore-fail-on-non-empty "${ROOT}"/etc/dev.d/default "${ROOT}"/etc/dev.d 2>/dev/null
543 if [[ -d ${ROOT}/etc/dev.d ]]
544 then
545 ewarn "You still have the directory /etc/dev.d on your system."
546 ewarn "This is no longer used by udev and can be removed."
547 fi
548 fi
549
550 # 64-device-mapper.rules now gets installed by sys-fs/device-mapper
551 # remove it if user don't has sys-fs/device-mapper installed, 27 Jun 2007
552 if [[ $previous_less_than_113 = 0 ]] &&
553 [[ -f ${ROOT}/etc/udev/rules.d/64-device-mapper.rules ]] &&
554 ! has_version sys-fs/device-mapper
555 then
556 rm -f "${ROOT}"/etc/udev/rules.d/64-device-mapper.rules
557 einfo "Removed unneeded file 64-device-mapper.rules"
558 fi
559
560 # requested in bug #275974, added 2009/09/05
561 ewarn
562 ewarn "If after the udev update removable devices or CD/DVD drives"
563 ewarn "stop working, try re-emerging HAL before filling a bug report"
564
565 # requested in Bug #225033:
566 elog
567 elog "persistent-net does assigning fixed names to network devices."
568 elog "If you have problems with the persistent-net rules,"
569 elog "just delete the rules file"
570 elog "\trm ${ROOT}etc/udev/rules.d/70-persistent-net.rules"
571 elog "and then reboot."
572 elog
573 elog "This may however number your devices in a different way than they are now."
574
575 ewarn
576 ewarn "If you build an initramfs including udev, then please"
577 ewarn "make sure that the /sbin/udevadm binary gets included,"
578 ewarn "and your scripts changed to use it,as it replaces the"
579 ewarn "old helper apps udevinfo, udevtrigger, ..."
580
581 ewarn
582 ewarn "mount options for directory /dev are no longer"
583 ewarn "set in /etc/udev/udev.conf, but in /etc/fstab"
584 ewarn "as for other directories."
585
586 ewarn
587 ewarn "If you use /dev/md/*, /dev/loop/* or /dev/rd/*,"
588 ewarn "then please migrate over to using the device names"
589 ewarn "/dev/md*, /dev/loop* and /dev/ram*."
590 ewarn "The devfs-compat rules have been removed."
591 ewarn "For reference see Bug #269359."
592
593 ewarn
594 ewarn "Rules for /dev/hd* devices have been removed"
595 ewarn "Please migrate to libata."
596
597 elog
598 elog "For more information on udev on Gentoo, writing udev rules, and"
599 elog " fixing known issues visit:"
600 elog " http://www.gentoo.org/doc/en/udev-guide.xml"
601 }