From 38dbc4db50dc16c687bd98c26d850eec1d0392f9 Mon Sep 17 00:00:00 2001 From: Chris Lumens Date: Wed, 23 Jan 2008 12:19:03 -0500 Subject: Add dogtail support (#172891, #239024). Patches are from Alexander Todorov . --- anaconda | 33 +++++++++++++++++++++++++++++++++ loader2/loader.c | 7 +++++++ loader2/loader.h | 1 + scripts/upd-instroot | 25 ++++++++++++++++++++++++- 4 files changed, 65 insertions(+), 1 deletion(-) 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 + rm -rf $yumconf $YUMDIR # echo "retrieving timezones" -- cgit