Skip to contentSkip to conversation

support udev or hotplug based on the system [3/3]

PATCH In review Jeremy Katz 2 participants 4 messages Oct 6, 2005 Kbuild

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 support udev or hotplug based on the system [3/3]

Add installation of the udev rules if appropriate. With a normal 'make install', the udev rules will be installed if udev version is >= 059; otherwise, the hotplug rules get installed.

When 'make dist' is done, we set a variable so that both hotplug and udev rules are installed into the dist tarball. install.sh then takes care of picking the proper rules.

Also changes the hotplug check to look for a proper udev version

Jeremy

#1 lore raw
Quoted 3 lines · Jeremy Katz

Add installation of the udev rules if appropriate. With a normal 'make install', the udev rules will be installed if udev version is >= 059; otherwise, the hotplug rules get installed.

And Hollis tells me I forgot the patch... where's my psychic email program? :)

Jeremy

unchanged:

Makefile +14 -5
@@ -36,16 +36,25 @@
 	$(MAKE) -C tools build
 	$(MAKE) -C docs build
 
-# build and install everything into local dist directory
-dist: DESTDIR=$(DISTDIR)/install
-dist: dist-xen dist-kernels dist-tools dist-docs
+# build and install everything into local dist directory.  
+dist:
+	@make XEN_BUILD_DIST=1 realdist
+dist-%:
+	@make XEN_BUILD_DIST=1 realdist-`echo -n $@ | sed -e 's/dist-//'`
+
+# these are the real targets, but we need to set a variable so that
+# everything will be installed to the distdir (making the tarball complete 
+# for any distribution)
+realdist: DESTDIR=$(DISTDIR)/install 
+realdist: dist-xen dist-kernels dist-tools dist-docs
 	$(INSTALL_DIR) $(DISTDIR)/check
 	$(INSTALL_DATA) ./COPYING $(DISTDIR)
 	$(INSTALL_DATA) ./README $(DISTDIR)
 	$(INSTALL_PROG) ./install.sh $(DISTDIR)
 	$(INSTALL_PROG) tools/check/chk tools/check/check_* $(DISTDIR)/check
-dist-%: DESTDIR=$(DISTDIR)/install
-dist-%: install-%
+realdist-%: DESTDIR=$(DISTDIR)/install
+realdist-%: install-%
+	export XEN_BUILD_DIST=1
 	@: # do nothing
 
 # Legacy dist targets
install.sh +7 -1
diff -u b/install.sh b/install.sh
@@ -24,8 +24,14 @@
 
 echo "Installing Xen from '$src' to '$dst'..."
-(cd $src; tar -cf - --exclude etc/init.d * ) | tar -C $dst -xf -
+(cd $src; tar -cf - --exclude etc/init.d --exclude etc/hotplug --exclude etc/udev * ) | tar -C $dst -xf -
 cp -fdRL $src/etc/init.d/* $dst/etc/init.d/
 echo "All done."
 
+if [ -x /sbin/udev ] && [ `/sbin/udev -V` -ge 059 ]; then
+    cp -f $src/etc/udev/rules.d/xen-backend.rules $dst/etc/udev/rules.d/xen-backend.rules
+else
+    cp -f $src/etc/hotplug/xen-backend.agent $dst/etc/hotplug/xen-backend.agent
+fi
+
 echo "Checking to see whether prerequisite tools are installed..."
 cd $src/../check

unchanged:

tools/check/check_hotplug +3 -0
@@ -7,4 +7,7 @@
    exit 1
 }
 
+if [ -x /sbin/udev ] && [ `udev -V` -ge 059 ]; then
+  exit 0
+fi
 which hotplug 1>/dev/null 2>&1 || error
tools/examples/Makefile +23 -1
diff -u b/tools/examples/Makefile b/tools/examples/Makefile
@@ -28,10 +28,23 @@
 XEN_HOTPLUG_DIR = /etc/hotplug
 XEN_HOTPLUG_SCRIPTS = xen-backend.agent
 
+UDEV_RULES_DIR = /etc/udev/rules.d
+UDEV_RULES = xen-backend.rules
+
+ifeq (1, $(XEN_BUILD_DIST))
+HOTPLUGS=install-hotplug install-udev
+else
+ifeq (1,$(shell if [ -x /sbin/udev ] && [ `/sbin/udev -V` -ge 059 ]; then echo 1; fi))
+HOTPLUGS=install-udev
+else
+HOTPLUGS=install-hotplug
+endif
+endif
+
 all:
 build:
 
-install: all install-initd install-configs install-scripts install-hotplug
+install: all install-initd install-configs install-scripts $(HOTPLUGS)
 
 install-initd:
 	[ -d $(DESTDIR)/etc/init.d ] || $(INSTALL_DIR) $(DESTDIR)/etc/init.d
@@ -66,2 +79,11 @@
 
+install-udev:
+	[ -d $(DESTDIR)$(UDEV_RULES_DIR) ] || \
+		$(INSTALL_DIR) $(DESTDIR)$(UDEV_RULES_DIR)
+	for i in $(UDEV_RULES); \
+	    do \
+	    $(INSTALL_PROG) $$i $(DESTDIR)$(UDEV_RULES_DIR); \
+	done
+
+
 clean:

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

#2 lore raw

Hi Jeremy,

i applied your three patches to the latest changeset b/c i am having xen_blk timeout issues. i attached my output from make tools, the interesting part being:

install: cannot stat `xen-backend.rules': No such file or directory make[3]: *** [install-udev] Error 1
makeB[2]: *** [install] Error 2
make[1]: *** [install-tools] Error 2
make: *** [dist-tools] Error 2

might i have missed something along the way?

Ryan

Quoted 10 lines · Jeremy Katz
Quoted 3 lines · Jeremy Katz

Add installation of the udev rules if appropriate. With a normal 'make install', the udev rules will be installed if udev version is >= 059; otherwise, the hotplug rules get installed.

And Hollis tells me I forgot the patch... where's my psychic email program? :)

Jeremy

make[1]: Entering directory `/home/rpg/xen-unstable.hg' make -C tools install
make[2]: Entering directory `/home/rpg/xen-unstable.hg/tools' make -C check
make[3]: Entering directory `/home/rpg/xen-unstable.hg/tools/check' ./chk build
Xen CHECK-BUILD Thu Oct 6 13:50:49 CDT 2005
Checking check_python: OK
Checking check_zlib_devel: OK
Checking check_zlib_lib: OK
make[3]: Leaving directory /home/rpg/xen-unstable.hg/tools/check' make[3]: Entering directory /home/rpg/xen-unstable.hg/tools/libxc'

[ -e xen/linux ] || mkdir -p xen/linux
[ -e xen/io ]    || mkdir -p xen/io

( cd xen >/dev/null ; \
ln -sf ../../../xen/include/public/*.h . )
( cd xen/io >/dev/null ; \
ln -sf ../../../../xen/include/public/io/*.h . )
( cd xen/linux >/dev/null ; \
ln -sf ../../../../linux-2.6-xen-sparse/include/asm-xen/linux-public/*.h . )
make libxenctrl.a libxenctrl.so libxenctrl.so.3.0 libxenctrl.so.3.0.0 libxenguest.a libxenguest.so libxenguest.so.3.0 libxenguest.so.3.0.0 make[4]: Entering directory `/home/rpg/xen-unstable.hg/tools/libxc'
make[4]: `libxenctrl.a' is up to date.
make[4]: `libxenctrl.so' is up to date.
make[4]: `libxenctrl.so.3.0' is up to date.
make[4]: `libxenctrl.so.3.0.0' is up to date.
make[4]: `libxenguest.a' is up to date.
make[4]: `libxenguest.so' is up to date.
make[4]: `libxenguest.so.3.0' is up to date.
make[4]: `libxenguest.so.3.0.0' is up to date.
make[4]: Leaving directory `/home/rpg/xen-unstable.hg/tools/libxc'
[ -d /home/rpg/xen-unstable.hg/dist/install/usr/lib ] || install -d -m0755 /home/rpg/xen-unstable.hg/dist/install/usr/lib [ -d /home/rpg/xen-unstable.hg/dist/install/usr/include ] || install -d -m0755 /home/rpg/xen-unstable.hg/dist/install/usr/include install -m0755 libxenctrl.so.3.0.0 /home/rpg/xen-unstable.hg/dist/install/usr/lib
install -m0644 libxenctrl.a /home/rpg/xen-unstable.hg/dist/install/usr/lib
ln -sf libxenctrl.so.3.0.0 /home/rpg/xen-unstable.hg/dist/install/usr/lib/libxenctrl.so.3.0
ln -sf libxenctrl.so.3.0 /home/rpg/xen-unstable.hg/dist/install/usr/lib/libxenctrl.so
install -m0644 xenctrl.h /home/rpg/xen-unstable.hg/dist/install/usr/include
install -m0755 libxenguest.so.3.0.0 /home/rpg/xen-unstable.hg/dist/install/usr/lib
install -m0644 libxenguest.a /home/rpg/xen-unstable.hg/dist/install/usr/lib
ln -sf libxenguest.so.3.0.0 /home/rpg/xen-unstable.hg/dist/install/usr/lib/libxenguest.so.3.0
ln -sf libxenguest.so.3.0 /home/rpg/xen-unstable.hg/dist/install/usr/lib/libxenguest.so
make[3]: Leaving directory `/home/rpg/xen-unstable.hg/tools/libxc'
make[3]: Entering directory `/home/rpg/xen-unstable.hg/tools/xenstore'
install -d -m0755 -p /home/rpg/xen-unstable.hg/dist/install/var/run/xenstored
install -d -m0755 -p /home/rpg/xen-unstable.hg/dist/install/var/lib/xenstored
install -d -m0755 -p /home/rpg/xen-unstable.hg/dist/install/usr/bin
install -d -m0755 -p /home/rpg/xen-unstable.hg/dist/install/usr/sbin
install -d -m0755 -p /home/rpg/xen-unstable.hg/dist/install/usr/include
install -m0755 xenstored /home/rpg/xen-unstable.hg/dist/install/usr/sbin
install -m0755 xenstore-exists xenstore-list xenstore-read xenstore-rm xenstore-write /home/rpg/xen-unstable.hg/dist/install/usr/bin install -d -m0755 -p /home/rpg/xen-unstable.hg/dist/install/usr/lib
install -m0644 libxenstore.so /home/rpg/xen-unstable.hg/dist/install/usr/lib
install -m0644 xs.h /home/rpg/xen-unstable.hg/dist/install/usr/include
install -m0644 xs_lib.h /home/rpg/xen-unstable.hg/dist/install/usr/include
make[3]: Leaving directory `/home/rpg/xen-unstable.hg/tools/xenstore'
make[3]: Entering directory `/home/rpg/xen-unstable.hg/tools/misc'
make -C miniterm
make[4]: Entering directory `/home/rpg/xen-unstable.hg/tools/misc/miniterm'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/home/rpg/xen-unstable.hg/tools/misc/miniterm'
make -C cpuperf
make[4]: Entering directory `/home/rpg/xen-unstable.hg/tools/misc/cpuperf'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/home/rpg/xen-unstable.hg/tools/misc/cpuperf'
make -C mbootpack
make[4]: Entering directory `/home/rpg/xen-unstable.hg/tools/misc/mbootpack'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/home/rpg/xen-unstable.hg/tools/misc/mbootpack'
make -C lomount
make[4]: Entering directory `/home/rpg/xen-unstable.hg/tools/misc/lomount'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/home/rpg/xen-unstable.hg/tools/misc/lomount'
[ -d /home/rpg/xen-unstable.hg/dist/install/usr/bin ] || install -d -m0755 /home/rpg/xen-unstable.hg/dist/install/usr/bin [ -d /home/rpg/xen-unstable.hg/dist/install/usr/sbin ] || install -d -m0755 /home/rpg/xen-unstable.hg/dist/install/usr/sbin install -m0755 xenperf xc_shadow xencons /home/rpg/xen-unstable.hg/dist/install/usr/bin
install -m0755 netfix xm xend xenperf /home/rpg/xen-unstable.hg/dist/install/usr/sbin
make -C cpuperf install
make[4]: Entering directory `/home/rpg/xen-unstable.hg/tools/misc/cpuperf'
install -m0755 cpuperf-xen cpuperf-perfcntr /home/rpg/xen-unstable.hg/dist/install/usr/bin
make[4]: Leaving directory `/home/rpg/xen-unstable.hg/tools/misc/cpuperf'
make -C lomount install
make[4]: Entering directory `/home/rpg/xen-unstable.hg/tools/misc/lomount'
install -m0755 lomount /home/rpg/xen-unstable.hg/dist/install/usr/bin
make[4]: Leaving directory `/home/rpg/xen-unstable.hg/tools/misc/lomount'
make[3]: Leaving directory `/home/rpg/xen-unstable.hg/tools/misc'
make[3]: Entering directory `/home/rpg/xen-unstable.hg/tools/examples'
[ -d /home/rpg/xen-unstable.hg/dist/install/etc/init.d ] || install -d -m0755 /home/rpg/xen-unstable.hg/dist/install/etc/init.d install -m0755 init.d/xend /home/rpg/xen-unstable.hg/dist/install/etc/init.d
install -m0755 init.d/xendomains /home/rpg/xen-unstable.hg/dist/install/etc/init.d
[ -d /home/rpg/xen-unstable.hg/dist/install/etc/xen ] || \
install -d -m0755 /home/rpg/xen-unstable.hg/dist/install/etc/xen
[ -d /home/rpg/xen-unstable.hg/dist/install/etc/xen/auto ] || \
install -d -m0755 /home/rpg/xen-unstable.hg/dist/install/etc/xen/auto

for i in xend-config.sxp xmexample1  xmexample2 xmexample3 xmexample.vmx; \
    do [ -e /home/rpg/xen-unstable.hg/dist/install/etc/xen/$i ] || \
    install -m0644 $i /home/rpg/xen-unstable.hg/dist/install/etc/xen; \
done
[ -d /home/rpg/xen-unstable.hg/dist/install/etc/xen/scripts ] || \
	install -d -m0755 /home/rpg/xen-unstable.hg/dist/install/etc/xen/scripts
for i in network-bridge vif-bridge network-route vif-route block block-enbd; \
    do \
    install -m0755 $i /home/rpg/xen-unstable.hg/dist/install/etc/xen/scripts; \
done
[ -d /home/rpg/xen-unstable.hg/dist/install/etc/hotplug ] || \
	install -d -m0755 /home/rpg/xen-unstable.hg/dist/install/etc/hotplug
for i in xen-backend.agent; \
    do \
    install -m0755 $i /home/rpg/xen-unstable.hg/dist/install/etc/hotplug; \
done
[ -d /home/rpg/xen-unstable.hg/dist/install/etc/udev/rules.d ] || \
	install -d -m0755 /home/rpg/xen-unstable.hg/dist/install/etc/udev/rules.d
for i in xen-backend.rules; \
    do \
    install -m0755 $i /home/rpg/xen-unstable.hg/dist/install/etc/udev/rules.d; \

done
make[3]: Leaving directory /home/rpg/xen-unstable.hg/tools/examples' make[2]: Leaving directory /home/rpg/xen-unstable.hg/tools' make[1]: Leaving directory `/home/rpg/xen-unstable.hg'
install: cannot stat `xen-backend.rules': No such file or directory make[3]: *** [install-udev] Error 1
make[2]: *** [install] Error 2
make[1]: *** [install-tools] Error 2
make: *** [dist-tools] Error 2

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

#3 lore raw
Quoted 3 lines · Ryan Grimm

i applied your three patches to the latest changeset b/c i am having xen_blk timeout issues. i attached my output from make tools, the interesting part being:

Aha, I knew I had attached the third patch to something. I just attached it to the mail which was 2/3. I just replied with the right patch there (I'll include it here too... it's tiny)

Jeremy

# HG changeset patch
# User [email protected]
# Node ID d62a9e2969e3bcb9e32b65cbb14f3fafcaf68f00
# Parent b955507c41895ace00ef82f074e9366fd17eae97
add udev rules file which does the same thing as the hotplug agent

tools/examples/xen-backend.rules new file +4 -0
diff -r b955507c4189 -r d62a9e2969e3 tools/examples/xen-backend.rules
@@ -0,0 +1,4 @@
+SUBSYSTEM=="xen-backend", KERNEL=="vbd*", ACTION=="add", RUN+="/etc/xen/scripts/block bind"
+SUBSYSTEM=="xen-backend", KERNEL=="vbd*", ACTION=="remove", RUN+="/etc/xen/scripts/block unbind"
+SUBSYSTEM=="xen-backend", KERNEL=="vif*", ENV{PHYSDEVDRIVER}=="vif", ACTION=="online", RUN+="$env{script} up"
+SUBSYSTEM=="xen-backend", ACTION=="remove", RUN+="/usr/bin/xenstore-rm $env{XENBUS_PATH}"

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel