Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 307837 Details for
Bug 376047
sys-process/systemd-* released, please bump (as soon as udev is bumped)
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
Proposed first shot at udev/systemd post merge ebuild
udev-9999-r1.ebuild (text/plain), 14.07 KB, created by
Steven Newbury
on 2012-04-04 21:39:03 UTC
(
hide
)
Description:
Proposed first shot at udev/systemd post merge ebuild
Filename:
MIME Type:
Creator:
Steven Newbury
Created:
2012-04-04 21:39:03 UTC
Size:
14.07 KB
patch
obsolete
># Copyright 1999-2012 Gentoo Foundation ># Distributed under the terms of the GNU General Public License v2 ># $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/udev-9999.ebuild,v 1.70 2012/02/08 04:29:38 williamh Exp $ > >EAPI=4 > ># A little higher than upstream requires ># but I had real trouble with 2.6.37 and systemd. >KV_min=2.6.38 ># patchversion=1 >udev_rules_md5=ebc2cf422aa9e46cf7d9a555670412ba > >EGIT_REPO_URI="git://anongit.freedesktop.org/systemd/systemd" > >[[ ${PV} == "9999" ]] && vcs="git-2" >inherit ${vcs} eutils flag-o-matic multilib toolchain-funcs autotools-utils bash-completion-r1 linux-info pam systemd > >if [[ ${PV} != "9999" ]] >then > KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86" > SRC_URI="http://www.freedesktop.org/software/systemd/systemd-${PV}.tar.xz" > if [[ -n "${patchversion}" ]] > then > patchset=${P}-patchset-${patchversion} > SRC_URI="${SRC_URI} mirror://gentoo/${patchset}.tar.bz2" > fi >fi > >DESCRIPTION="Linux dynamic and persistent device naming support (aka userspace devfs) and systemd service manager" >#HOMEPAGE="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html" >HOMEPAGE="http://www.freedesktop.org/wiki/Software/systemd" > >LICENSE="GPL-2" >SLOT="0" >IUSE="build selinux debug +rule_generator hwdb acl gudev introspection > keymap floppy edd doc static-libs audit cryptsetup gtk lzma pam > plymouth tcpd systemd" > ># Vala-0.10 doesn't work with libnotify 0.7.1 >VALASLOT="0.16" > > > ># Due to vala being broken. >AUTOTOOLS_IN_SOURCE_BUILD=1 > >AUTOTOOLS_AUTORECONF=1 > ># dbus version because of systemd units ># sysvinit for sulogin >COMMON_DEPEND="selinux? ( sys-libs/libselinux ) > acl? ( sys-apps/acl dev-libs/glib:2 ) > gudev? ( dev-libs/glib:2 ) > introspection? ( dev-libs/gobject-introspection ) > >=sys-apps/kmod-9999 > >=sys-apps/util-linux-2.20 > >=sys-libs/glibc-2.10 > systemd? ( > >=sys-apps/dbus-1.4.10 > >=sys-apps/kmod-5 > sys-apps/sysvinit > sys-libs/libcap > audit? ( >=sys-process/audit-2 ) > cryptsetup? ( sys-fs/cryptsetup ) > gtk? ( > dev-libs/dbus-glib > >=dev-libs/glib-2.26 > dev-libs/libgee:0 > x11-libs/gtk+:2 > >=x11-libs/libnotify-0.7 > !sys-apps/systemd-ui ) > lzma? ( app-arch/xz-utils ) > pam? ( virtual/pam ) > plymouth? ( sys-boot/plymouth ) > tcpd? ( sys-apps/tcp-wrappers ) )" > > >DEPEND="${COMMON_DEPEND} > dev-util/gperf > dev-util/pkgconfig > virtual/os-headers > dev-util/intltool > !<sys-kernel/linux-headers-${KV_min} > systemd? ( > app-arch/xz-utils > gtk? ( dev-lang/vala:${VALASLOT} ) )" > >if [[ $PV == "9999" ]] >then > RESTRICT="test? ( userpriv )" > IUSE="${IUSE} test" > DEPEND="${DEPEND} > dev-util/gtk-doc > test? ( app-text/tree )" >else > DEPEND="${DEPEND} > doc? ( dev-util/gtk-doc )" >fi > >RDEPEND="${COMMON_DEPEND} > hwdb? ( >=sys-apps/usbutils-0.82 sys-apps/pciutils[-zlib] ) > acl? ( sys-apps/coreutils[acl] ) > sys-fs/udev-init-scripts > !sys-apps/coldplug > !<sys-fs/lvm2-2.02.45 > !sys-fs/device-mapper > >=sys-apps/baselayout-1.12.5" > ># required kernel options >CONFIG_CHECK="~BLK_DEV_BSG ~DEVTMPFS ~HOTPLUG ~INOTIFY_USER ~NET ~PROC_FS > ~SIGNALFD ~SYSFS ~TMPFS_POSIX_ACL > ~!IDE ~!SYSFS_DEPRECATED ~!SYSFS_DEPRECATED_V2" > >udev_check_KV() >{ > > local CONFIG_CHECK="~AUTOFS4_FS ~CGROUPS ~DEVTMPFS ~FANOTIFY ~IPV6" > if kernel_is lt ${KV_min//./ } > then > return 1 > fi > check_extra_config > return 0 >} > >pkg_setup() >{ > linux-info_pkg_setup > > # always print kernel version requirements > ewarn > ewarn "${P} does not support Linux kernel before version ${KV_min}!" > > if ! udev_check_KV > then > eerror "Your kernel version (${KV_FULL}) is too old to run ${P}" > fi > > KV_FULL_SRC=${KV_FULL} > get_running_version > if ! udev_check_KV > then > eerror > eerror "udev cannot be restarted after emerging," > eerror "as your running kernel version (${KV_FULL}) is too old." > eerror "You really need to use a newer kernel after a reboot!" > NO_RESTART=1 > fi > > if use systemd > then > enewgroup lock # used by var-lock.mount > enewgroup tty 5 # used by mount-setup for /dev/pts > fi >} > >src_prepare() >{ > # backport some patches > if [[ -n "${patchset}" ]] > then > EPATCH_SOURCE="${WORKDIR}/${patchset}" EPATCH_SUFFIX="patch" \ > EPATCH_FORCE="yes" epatch > fi > > # change rules back to group uucp instead of dialout for now > sed -e 's/GROUP="dialout"/GROUP="uucp"/' \ > -i rules/*.rules \ > || die "failed to change group dialout to uucp" > > if [ ! -e configure ] > then ># gtkdocize --copy || die "gtkdocize failed" ># eautoreconf > # Force the rebuild of .vala sources > touch src/*.vala || die > > # Fix hardcoded path in .vala. > sed -i -e 's:/lib/systemd:/usr/lib/systemd:g' src/*.vala || die > > autotools-utils_src_prepare > else > # Make sure there are no sudden changes to upstream rules file > # (more for my own needs than anything else ...) > MD5=$(md5sum < "${S}/rules/50-udev-default.rules") > MD5=${MD5/ -/} > if [[ ${MD5} != ${udev_rules_md5} ]] > then > eerror "50-udev-default.rules has been updated, please validate!" > eerror "md5sum: ${MD5}" > die "50-udev-default.rules has been updated, please validate!" > fi > elibtoolize > fi >} > >src_configure() >{ > filter-flags -fprefetch-loop-arrays > local myeconfargs=( > --with-distro=gentoo > # install everything to /usr > --with-rootprefix=/usr > --with-rootlibdir=/usr/$(get_libdir) > # but pam modules have to lie in /lib* > --with-pamlibdir=/$(get_libdir)/security > --localstatedir=/var > # make sure we get /bin:/sbin in $PATH > --enable-split-usr > $(use_enable static-libs static) \ > $(use_with selinux) \ > $(use_enable debug) \ > $(use_enable rule_generator) \ > $(use_enable hwdb) \ > --with-pci-ids-path=/usr/share/misc/pci.ids \ > --with-usb-ids-path=/usr/share/misc/usb.ids \ > $(use_enable gudev) \ > $(use_enable introspection) \ > $(use_enable keymap) \ > $(use_enable floppy) \ > $(use_enable edd) \ > $(use_enable doc gtk-doc) \ > $(use_enable acl) > ) > > if use systemd > then > myeconfargs+=( > $(use_enable audit) > $(use_enable cryptsetup libcryptsetup) > $(use_enable gtk) > $(use_enable lzma xz) > $(use_enable pam) > $(use_enable plymouth) > $(use_enable tcpd tcpwrap) > $(systemd_with_unitdir) > ) > fi > > if use gtk > then > export VALAC="$(type -p valac-${VALASLOT})" > fi > > autotools-utils_src_configure >} > >src_install() >{ > autotools-utils_src_install \ > bashcompletiondir=/tmp \ > docdir="/usr/share/doc/${P}" > > # documentation > dodoc ChangeLog README TODO > > if use keymap > then > dodoc src/keymap/README.keymap.txt > fi > > # udevadm is now in /usr/bin. > dosym /usr/bin/udevadm /sbin/udevadm > > # create symlinks for these utilities to /sbin > # where multipath-tools expect them to be (Bug #168588) > dosym "/lib/udevd/scsi_id" /sbin/scsi_id > > # Now install rules > insinto /lib/udev/rules.d/ > > # support older kernels > # doins rules/misc/30-kernel-compat.rules > > # add arch specific rules > if [[ -f rules/arch/40-${ARCH}.rules ]] > then > doins "rules/arch/40-${ARCH}.rules" > fi > > if use systemd > then > # compat for init= use > dosym ../usr/lib/systemd/systemd /bin/systemd > dosym ../lib/systemd/systemd /usr/bin/systemd > # rsyslog.service depends on it... > dosym ../usr/bin/systemctl /bin/systemctl > > # move files as necessary > newbashcomp "${D}"/tmp/systemd-bash-completion.sh ${PN} > rm -r "${D}"/tmp || die > > # we just keep sysvinit tools, so no need for the mans > rm "${D}"/usr/share/man/man8/{halt,poweroff,reboot,runlevel,shutdown,telinit}.8 \ > || die > rm "${D}"/usr/share/man/man1/init.1 || die > > # Create /run/lock as required by new baselay/OpenRC compat. > insinto /usr/lib/tmpfiles.d > doins "${FILESDIR}"/gentoo-run.conf > > # Migration helpers. > exeinto /usr/libexec/systemd > doexe "${FILESDIR}"/update-etc-systemd-symlinks.sh > systemd_dounit "${FILESDIR}"/update-etc-systemd-symlinks.{service,path} > systemd_enable_service sysinit.target update-etc-systemd-symlinks.path > fi >} > >optfeature() { > elog " [\e[1m$(has_version ${1} && echo I || echo ' ')\e[0m] ${1} (${2})" >} > ># 19 Nov 2008 >fix_old_persistent_net_rules() >{ > local rules="${ROOT}"/etc/udev/rules.d/70-persistent-net.rules > [[ -f ${rules} ]] || return > > elog > elog "Updating persistent-net rules file" > > # Change ATTRS to ATTR matches, Bug #246927 > sed -i -e 's/ATTRS{/ATTR{/g' "${rules}" > > # Add KERNEL matches if missing, Bug #246849 > sed -ri \ > -e '/KERNEL/ ! { s/NAME="(eth|wlan|ath)([0-9]+)"/KERNEL=="\1*", NAME="\1\2"/}' \ > "${rules}" >} > ># See Bug #129204 for a discussion about restarting udevd >restart_udevd() >{ > if [[ ${NO_RESTART} = "1" ]] > then > ewarn "Not restarting udevd, as your kernel is too old!" > return > fi > > # need to merge to our system > [[ ${ROOT} = / ]] || return > > # check if root of init-process is identical to ours (not in chroot) > [[ -r /proc/1/root && /proc/1/root/ -ef /proc/self/root/ ]] || return > > # abort if there is no udevd running > [[ -n $(pidof udevd) ]] || return > > # abort if no /run/udev exists > [[ -e /run/udev ]] || return > > elog > elog "restarting udevd now." > > killall -15 udevd &>/dev/null > sleep 1 > killall -9 udevd &>/dev/null > > /lib/udev/udevd --daemon > sleep 3 > if [[ ! -n $(pidof udevd) ]] > then > eerror "FATAL: udev died, please check your kernel is" > eerror "new enough and configured correctly for ${P}." > eerror > eerror "Please have a look at this before rebooting." > eerror "If in doubt, please downgrade udev back to your old version" > fi >} > ># This function determines if a directory is a mount point. ># It was lifted from dracut. >ismounted() >{ > while read a m a; do > [ "$m" = "$1" ] && return 0 > done < "${ROOT}"/proc/mounts > return 1 >} > >pkg_postinst() >{ > mkdir -p "${ROOT}"/run > fix_old_persistent_net_rules > > # "losetup -f" is confused if there is an empty /dev/loop/, Bug #338766 > # So try to remove it here (will only work if empty). > rmdir "${ROOT}"/dev/loop 2>/dev/null > if [[ -d "${ROOT}"/dev/loop ]] > then > ewarn "Please make sure your remove /dev/loop," > ewarn "else losetup may be confused when looking for unused devices." > fi > > restart_udevd > > # people want reminders, I'll give them reminders. Odds are they will > # just ignore them anyway... > > # Removing some device-nodes we thought we need some time ago, 25 Jan 2007 > if [[ -d ${ROOT}/lib/udev/devices ]] > then > rm -f "${ROOT}"/lib/udev/devices/{null,zero,console,urandom} > fi > > # Try to remove /etc/dev.d as that is obsolete, 23 Apr 2007 > if [[ -d ${ROOT}/etc/dev.d ]] > then > rmdir --ignore-fail-on-non-empty "${ROOT}"/etc/dev.d/default "${ROOT}"/etc/dev.d 2>/dev/null > if [[ -d ${ROOT}/etc/dev.d ]] > then > ewarn "You still have the directory /etc/dev.d on your system." > ewarn "This is no longer used by udev and can be removed." > fi > fi > > # 64-device-mapper.rules now gets installed by sys-fs/device-mapper > # remove it if user don't has sys-fs/device-mapper installed, 27 Jun 2007 > if [[ -f ${ROOT}/etc/udev/rules.d/64-device-mapper.rules ]] && > ! has_version sys-fs/device-mapper > then > rm -f "${ROOT}"/etc/udev/rules.d/64-device-mapper.rules > einfo "Removed unneeded file 64-device-mapper.rules" > fi > > # requested in Bug #225033: > elog > elog "persistent-net assigns fixed names to network devices." > elog "If you have problems with the persistent-net rules," > elog "just delete the rules file" > elog "\trm ${ROOT}etc/udev/rules.d/70-persistent-net.rules" > elog "then reboot." > elog > elog "This may however number your devices in a different way than they are now." > > ewarn > ewarn "If you build an initramfs including udev, then please" > ewarn "make sure that the /usr/bin/udevadm binary gets included," > ewarn "and your scripts changed to use it,as it replaces the" > ewarn "old helper apps udevinfo, udevtrigger, ..." > > ewarn > ewarn "mount options for directory /dev are no longer" > ewarn "set in /etc/udev/udev.conf, but in /etc/fstab" > ewarn "as for other directories." > > ewarn > ewarn "If you use /dev/md/*, /dev/loop/* or /dev/rd/*," > ewarn "then please migrate over to using the device names" > ewarn "/dev/md*, /dev/loop* and /dev/ram*." > ewarn "The devfs-compat rules have been removed." > ewarn "For reference see Bug #269359." > > ewarn > ewarn "Rules for /dev/hd* devices have been removed" > ewarn "Please migrate to libata." > > ewarn > ewarn "action_modeswitch has been removed by upstream." > ewarn "Please use sys-apps/usb_modeswitch." > > if ismounted /usr > then > ewarn > ewarn "Your system has /usr on a separate partition. This means" > ewarn "you will need to use an initramfs to pre-mount /usr before" > ewarn "udev runs." > ewarn "This must be set up before your next reboot, or you may" > ewarn "experience failures which are very difficult to troubleshoot." > ewarn "For a more detailed explanation, see the following URL:" > ewarn "http://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken" > fi > > elog > elog "For more information on udev on Gentoo, writing udev rules, and" > elog " fixing known issues visit:" > elog " http://www.gentoo.org/doc/en/udev-guide.xml" > > if use systemd > then > mkdir -p "${ROOT}"/run || ewarn "Unable to mkdir /run, this could mean trouble." > if [[ ! -L "${ROOT}"/etc/mtab ]]; then > ewarn "Upstream suggests that the /etc/mtab file should be a symlink to /proc/mounts." > ewarn "It is known to cause users being unable to unmount user mounts. If you don't" > ewarn "require that specific feature, please call:" > ewarn " $ ln -sf '${ROOT}proc/self/mounts' '${ROOT}etc/mtab'" > ewarn > fi > > elog "You may need to perform some additional configuration for some programs" > elog "to work, see the systemd manpages for loading modules and handling tmpfiles:" > elog " $ man modules-load.d" > elog " $ man tmpfiles.d" > elog > > elog "To get additional features, a number of optional runtime dependencies may" > elog "be installed:" > optfeature 'dev-python/dbus-python' 'for systemd-analyze' > optfeature 'dev-python/pycairo[svg]' 'for systemd-analyze plotting ability' > elog > > ewarn "Please note this is a work-in-progress and many packages in Gentoo" > ewarn "do not supply systemd unit files yet. You are testing it on your own" > ewarn "responsibility. Please remember than you can pass:" > ewarn " init=/sbin/init" > ewarn "to your kernel to boot using sysvinit / OpenRC." > > # Don't run it if we're outta / > if [[ ! ${ROOT%/} ]]; then > # Update symlinks to moved units. > sh "${FILESDIR}"/update-etc-systemd-symlinks.sh > > # Try to start migration unit. > ebegin "Trying to start migration helper path monitoring." > systemctl --system start update-etc-systemd-symlinks.path 2>/dev/null > eend ${?} > fi > fi >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 376047
:
281559
|
281561
| 307837