[gnome-shell: 2/2] make gnome-shell runnable from an install



commit 8087e6aee6bcd647de2d57fa695732d999034efa
Author: Dan Winship <danw gnome org>
Date:   Wed Mar 11 09:59:02 2009 -0400

    make gnome-shell runnable from an install
---
 configure.ac              |    1 -
 src/Makefile-taskpanel.am |    4 ++--
 src/Makefile.am           |   18 ++++++++++++++----
 src/gnome-shell.in        |   42 +++++++++++++++++++++++++-----------------
 4 files changed, 41 insertions(+), 24 deletions(-)

diff --git a/configure.ac b/configure.ac
index fd36fa1..756fb4f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -76,5 +76,4 @@ AC_OUTPUT([
   js/Makefile
   js/ui/Makefile
   src/Makefile
-  src/gnome-shell
 ])
diff --git a/src/Makefile-taskpanel.am b/src/Makefile-taskpanel.am
index be15758..2bdf4e9 100644
--- a/src/Makefile-taskpanel.am
+++ b/src/Makefile-taskpanel.am
@@ -11,7 +11,7 @@ gnomeshell_taskpanel_SOURCES =			\
 	shell-panel-window.c	\
 	shell-panel-window.h	\
 	$(NULL)
-	
+
 gnomeshell_taskpanel_LDADD = $(TASKPANEL_LIBS)
 
-bin_PROGRAMS += gnomeshell-taskpanel
+libexec_PROGRAMS += gnomeshell-taskpanel
diff --git a/src/Makefile.am b/src/Makefile.am
index d03c4fd..cc29a83 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -2,9 +2,22 @@ NULL =
 BUILT_SOURCES =
 CLEANFILES =
 EXTRA_DIST = 
-bin_PROGRAMS =
+libexec_PROGRAMS =
 noinst_LTLIBRARIES = 
 
+bin_SCRIPTS = gnome-shell
+
+gnome-shell: gnome-shell.in
+	sed -e "s|@META_BIN_DIR[ ]|$(META_BIN_DIR)|" \
+	    -e "s|@GJS_JS_DIR[ ]|$(GJS_JS_DIR)|" \
+	    -e "s|@GJS_JS_NATIVE_DIR[ ]|$(GJS_JS_NATIVE_DIR)|" \
+	    -e "s|@libexecdir[ ]|$(libexecdir)|" \
+	    -e "s|@libdir[ ]|$(libdir)|" \
+	    -e "s|@pkgdatadir[ ]|$(pkgdatadir)|" \
+	    $< > $@ && chmod a+x $@
+CLEANFILES += gnome-shell
+EXTRA_DIST += gnome-shell.in
+
 include Makefile-tidy.am
 include Makefile-big.am
 include Makefile-gdmuser.am
@@ -147,6 +160,3 @@ CLEANFILES += Big-1.0.gir
 Big-1.0.typelib: libbig-1.0.la Big-1.0.gir
 	LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}. g-ir-compiler Big-1.0.gir -o $@
 CLEANFILES += Big-1.0.typelib
-
-all-local:
-	chmod a+x gnome-shell
diff --git a/src/gnome-shell.in b/src/gnome-shell.in
index 2e452d4..abaec6a 100755
--- a/src/gnome-shell.in
+++ b/src/gnome-shell.in
@@ -107,16 +107,33 @@ def _get_glx_extensions():
     return (server_glx_extensions, client_glx_extensions, glx_extensions)
 
 def start_shell():
-    # Figure out the path to the plugin when uninstalled
-    src_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
-    top_dir = os.path.dirname(src_dir)
-    plugin_dir = os.path.join(top_dir, "src")
-    js_dir = os.path.join(top_dir, "js")
-    data_dir = os.path.join(top_dir, "data")
+    bin_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
+    if os.path.exists(os.path.join(bin_dir, 'gnome-shell.in')):
+        running_from_source_tree = True
+        top_dir = os.path.dirname(bin_dir)
+        plugin_dir = os.path.join(top_dir, "src")
+        typelib_dir = os.path.join(top_dir, "src")
+        taskpanel_dir = os.path.join(top_dir, "src")
+        js_dir = os.path.join(top_dir, "js")
+        data_dir = os.path.join(top_dir, "data")
+    else:
+        running_from_source_tree = False
+        js_dir = os.path.join('@pkgdatadir@', 'js')
+        plugin_dir = '@libdir@/metacity/plugins/clutter'
+        taskpanel_dir = '@libexecdir@'
+
+    # Set up environment
+    env = dict(os.environ)
+    env.update({'GNOME_SHELL_JS'      : '@GJS_JS_DIR@:@GJS_JS_NATIVE_DIR@:' + js_dir,
+                'PATH'                : '@META_BIN_DIR@:' + os.environ.get('PATH', '') + ':' + taskpanel_dir,
+                'GNOME_DISABLE_CRASH_DIALOG' : '1'})
+
+    if running_from_source_tree:
+        env.update({'GNOME_SHELL_DATADIR' : data_dir,
+                    'GI_TYPELIB_PATH'     : typelib_dir})
 
     # Work around Ubuntu xulrunner bug,
     # http://bugzilla.gnome.org/show_bug.cgi?id=573413
-    mozjs_ld_library_path = ''
     pkgconfig = subprocess.Popen(['pkg-config', '--variable=sdkdir', 'mozilla-js'],
                                  stdout=subprocess.PIPE)
     mozjs_sdkdir = pkgconfig.communicate()[0].strip()
@@ -124,16 +141,7 @@ def start_shell():
     if pkgconfig.returncode == 0:
         mozjs_libdir = re.sub('-(sdk|devel)', '', mozjs_sdkdir)
         if os.path.exists(mozjs_libdir + '/libmozjs.so'):
-            mozjs_ld_library_path = ':' + mozjs_libdir
-
-    # Set up environment
-    env = dict(os.environ)
-    env.update({'GNOME_SHELL_JS'      : '@GJS_JS_DIR@:@GJS_JS_NATIVE_DIR@:' + js_dir,
-                'GNOME_SHELL_DATADIR' : data_dir,
-                'GI_TYPELIB_PATH'     : plugin_dir,
-                'PATH'                : '@META_BIN_DIR@:' + os.environ.get('PATH', '') + ':' + plugin_dir,
-                'LD_LIBRARY_PATH'     : os.environ.get('LD_LIBRARY_PATH', '') + ':' + plugin_dir + mozjs_ld_library_path,
-                'GNOME_DISABLE_CRASH_DIALOG' : '1'})
+            env['LD_LIBRARY_PATH'] = os.environ.get('LD_LIBRARY_PATH', '') + ':' + mozjs_libdir
 
     if not options.verbose:
         # Unless verbose() is specified, only let gjs show errors and



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]