summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lumens <clumens@redhat.com>2008-01-23 12:19:03 -0500
committerChris Lumens <clumens@redhat.com>2008-01-23 12:19:03 -0500
commit38dbc4db50dc16c687bd98c26d850eec1d0392f9 (patch)
tree88a71edeb861632e432bde34eb476658f13c40d2
parentb7a5a31f4c0c908e4025cf1a2bcaf2930b64150b (diff)
downloadanaconda-38dbc4db50dc16c687bd98c26d850eec1d0392f9.tar.gz
anaconda-38dbc4db50dc16c687bd98c26d850eec1d0392f9.tar.xz
anaconda-38dbc4db50dc16c687bd98c26d850eec1d0392f9.zip
Add dogtail support (#172891, #239024).
Patches are from Alexander Todorov <atodorov AT redhat DOT com>.
-rwxr-xr-xanaconda33
-rw-r--r--loader2/loader.c7
-rw-r--r--loader2/loader.h1
-rwxr-xr-xscripts/upd-instroot25
4 files changed, 65 insertions, 1 deletions
diff --git a/anaconda b/anaconda
index a192a17df..e641ce9bb 100755
--- a/anaconda
+++ b/anaconda
@@ -273,6 +273,7 @@ def parseOptions():
op.add_option("--module", action="append", default=[])
op.add_option("--nomount", dest="rescue_nomount", action="store_true", default=False)
op.add_option("--updates", dest="updateSrc", action="store", type="string")
+ op.add_option("--dogtail", dest="dogtail", action="store", type="string")
return op.parse_args()
@@ -983,6 +984,38 @@ if __name__ == "__main__":
anaconda.setDispatch()
+ # download and run Dogtail script
+ if opts.dogtail:
+ try:
+ import urlgrabber
+
+ try:
+ fr = urlgrabber.urlopen(opts.dogtail)
+ except urlgrabber.grabber.URLGrabError, e:
+ log.error("Could not retrieve Dogtail script from %s.\nError was\n%s" % (opts.dogtail, e))
+ fr = None
+
+ if fr:
+ from tempfile import mkstemp
+
+ (fw, testcase) = mkstemp(prefix='testcase.py.', dir='/tmp')
+ os.write(fw, fr.read())
+ fr.close()
+ os.close(fw)
+
+ # download completed, run the test
+ if not os.fork():
+ # we are in the child
+ os.chmod(testcase, 0755)
+ os.execv(testcase, [testcase])
+ sys.exit(0)
+ else:
+ # we are in the parent, sleep to give time for the testcase to initialize
+ # todo: is this needed, how to avoid possible race conditions
+ time.sleep(1)
+ except Exception, e:
+ log.error("Exception %s while running Dogtail testcase" % e)
+
if opts.lang:
anaconda.dispatch.skipStep("language", permanent = 1)
instClass.setLanguage(anaconda.id, opts.lang)
diff --git a/loader2/loader.c b/loader2/loader.c
index 1b2bce564..deff18142 100644
--- a/loader2/loader.c
+++ b/loader2/loader.c
@@ -772,6 +772,8 @@ static void parseCmdLineFlags(struct loaderData_s * loaderData,
loaderData->updatessrc = strdup(argv[i] + 8);
else if (!strncasecmp(argv[i], "updates", 7))
flags |= LOADER_FLAGS_UPDATES;
+ else if (!strncasecmp(argv[i], "dogtail=", 8))
+ loaderData->dogtailurl = strdup(argv[i] + 8);
else if (!strncasecmp(argv[i], "dd=", 3) ||
!strncasecmp(argv[i], "driverdisk=", 11)) {
loaderData->ddsrc = strdup(argv[i] +
@@ -1851,6 +1853,11 @@ int main(int argc, char ** argv) {
*argptr++ = loaderData.updatessrc;
}
+ if (loaderData.dogtailurl) {
+ *argptr++ = "--dogtail";
+ *argptr++ = loaderData.dogtailurl;
+ }
+
if ((loaderData.lang) && !FL_NOPASS(flags)) {
*argptr++ = "--lang";
*argptr++ = loaderData.lang;
diff --git a/loader2/loader.h b/loader2/loader.h
index 64614ef4b..df484ab49 100644
--- a/loader2/loader.h
+++ b/loader2/loader.h
@@ -142,6 +142,7 @@ struct loaderData_s {
void * methodData;
char * logLevel;
char * updatessrc;
+ char * dogtailurl;
pid_t fw_loader_pid;
char *fw_search_pathz;
diff --git a/scripts/upd-instroot b/scripts/upd-instroot
index 7f3e42f96..164ad872d 100755
--- a/scripts/upd-instroot
+++ b/scripts/upd-instroot
@@ -276,7 +276,7 @@ if [ $ARCH = ppc ]; then
fi
# dogtail stuff...
-PACKAGESGR="$PACKAGESGR gail at-spi libbonobo ORBit2"
+PACKAGESGR="$PACKAGESGR gail at-spi libbonobo ORBit2 pyspi GConf2 dogtail libXevie libXtst gnome-python2-gconf"
# modular xorg...
XORGLIBS="libICE libSM libX11 libXcursor libXext libXfixes libXft libXi libxkbfile libXmu libXpm libXrandr libXrender libXt libXxf86misc libXaw liblbxutil libXfont libfontenc libXau libXdmcp libXfont libXinerama"
@@ -728,6 +728,14 @@ usr/$LIBDIR/gtk-2.0/modules/libgail.so
usr/libexec/bonobo-activation-server
usr/libexec/at-spi-registryd
usr/$LIBDIR/bonobo/servers
+usr/libexec/gconfd-2
+usr/$LIBDIR/libXtst*
+usr/$LIBDIR/libgconf-2*
+usr/$LIBDIR/GConf/2/libgconfbackend-xml.so
+usr/$LIBDIR/python?.?/site-packages/gtk-2.0/atk.so
+usr/$LIBDIR/python?.?/site-packages/gtk-2.0/gconf.so
+usr/$LIBDIR/python?.?/site-packages/atspi.so
+usr/lib/python?.?/site-packages/dogtail/*.py
EOF
@@ -899,6 +907,21 @@ echo `date` "Expanding graphical packages..."
expandPackageSet $yumconf $YUMDIR "$RPMSGR" $DESTGR $KEEPFILEGR
echo `date` "Done Expanding graphical packages..."
+# more dogtail stuff
+if [ -n "$NEEDGR" ]; then
+ # Dogtail will check this
+ echo "Creating customized GConf2 settings for root"
+ mkdir -p $DESTGR/.gconf/desktop/gnome/interface
+ touch $DESTGR/.gconf/desktop/%gconf.xml
+ touch $DESTGR/.gconf/desktop/gnome/%gconf.xml
+ cat > $DESTGR/.gconf/desktop/gnome/interface/%gconf.xml <<EOF
+<?xml version="1.0"?>
+<gconf>
+ <entry name="accessibility" mtime="1176200664" type="bool" value="true">
+ </entry>
+</gconf>
+EOF
+
rm -rf $yumconf $YUMDIR
# echo "retrieving timezones"