SF.net SVN: morphix: [2282] trunk/mmaker

[email protected]
Newsgroups gmane.linux.morphix.cvs
Message-ID <[email protected]>
Revision: 2282
Author:   alextreme
Date:     2006-05-30 15:08:18 -0700 (Tue, 30 May 2006)
ViewCVS:  http://svn.sourceforge.net/morphix/?rev=2282&view=rev

Log Message:
-----------
  * adding <commandlist><command></command></commandlist> tags
  * Brendan, could you give this a spin? Will package after you OK it :)

Modified Paths:
--------------
    trunk/mmaker/README
    trunk/mmaker/README.isomaker
    trunk/mmaker/README.template
    trunk/mmaker/libmorphix/makemodule.c
    trunk/mmaker/libmorphix/parsemod.c
    trunk/mmaker/libmorphix/parsemod.h
Modified: trunk/mmaker/README
===================================================================
--- trunk/mmaker/README	2006-05-30 21:51:21 UTC (rev 2281)
+++ trunk/mmaker/README	2006-05-30 22:08:18 UTC (rev 2282)
@@ -35,7 +35,7 @@
 How does it handle initialization of a module at runtime?
 ---------------------------------------------------------
 
-The /morphix/init* scripts too are in the process of being debianified, light and gnome already are there.
+The /morphix/init* scripts too are in the process of being debianified. Add one of the morphix-init-* packages, they are available for most windowmanagers. Files in morphix-init contain the basics, should be easy to fork & customize.
 
 How do I make/install mmaker?
 -----------------------------

Modified: trunk/mmaker/README.isomaker
===================================================================
--- trunk/mmaker/README.isomaker	2006-05-30 21:51:21 UTC (rev 2281)
+++ trunk/mmaker/README.isomaker	2006-05-30 22:08:18 UTC (rev 2282)
@@ -10,6 +10,7 @@
 morphix-mmaker
 morphix-make-iso
 morphix-deb-get
+morphix-morphmini
 
 Usage:
 ------
@@ -18,6 +19,7 @@
 
         -b:     Base module template to build output.iso with
         -m:     Main module template to include in output.iso
+	-n:	Mini module template to include in output.iso (needs morphmini)
         -r:     Specify repository for deb/udeb packages to include on iso
         -p:     Packages to be included on iso
 	-t:	Tarball to be included on iso

Modified: trunk/mmaker/README.template
===================================================================
--- trunk/mmaker/README.template	2006-05-30 21:51:21 UTC (rev 2281)
+++ trunk/mmaker/README.template	2006-05-30 22:08:18 UTC (rev 2282)
@@ -61,10 +61,18 @@
 	<!-- package to apt-get purge -->
       ...
     </packagelist>
+
     <patchlist>
 
       <patch>path/to/shellscript.sh</patch> (
 	<!-- shell script on HOST system, gets the build directory as $1 -->
     </patchlist>
+
+    <commandlist>
+
+      <command>echo "Real Morphers idle on #morphix"</command> (
+	<!-- shell command run in the build chroot, just before compressing -->
+    </commandlist>
+
   </group>
 </comps>

Modified: trunk/mmaker/libmorphix/makemodule.c
===================================================================
--- trunk/mmaker/libmorphix/makemodule.c	2006-05-30 21:51:21 UTC (rev 2281)
+++ trunk/mmaker/libmorphix/makemodule.c	2006-05-30 22:08:18 UTC (rev 2282)
@@ -528,6 +528,37 @@
 }
 
 /**
+   Executes shell commands, defined in the xml file.
+
+   @param module mmodule*; module structure, initialised
+   @param dirname gchar*; location of the directory
+
+   return TRUE if successful, FALSE and message to stderr if an error occurred
+*/
+
+gboolean executeCommands(mmodule *module, gchar *dirname) {
+	GList *ptr = module->commandlist;
+	while (ptr != NULL) {
+		gchar *cmdline = NULL;
+		gchar *command = ptr->data;
+
+		if (command == NULL)
+			continue;
+
+		cmdline = g_strdup_printf("%s %s %s",P_CHROOT,module->dirname,command);
+		if (!ExecuteCommand(cmdline)) {
+			fprintf(stderr,"Warning: unable to execute command: %s\n", command);
+			g_free(command);
+			g_free(cmdline);
+			continue;
+		}
+		g_free(cmdline);
+		ptr = ptr->next;
+	}
+	return TRUE;
+}
+
+/**
    Reverts debconf to normal usage
 
    @param dirname gchar*; location of the module
@@ -1088,6 +1119,9 @@
 		if (!executePatches(module,module->dirname)) {
 			return FALSE;
 		}
+		if (!executeCommands(module,module->dirname)) {
+			return FALSE;
+		}
 
 		if (!compressModule(module,outputfilename,leave_dir,FS_ISO9660,module->name)) {
 			return FALSE;
@@ -1116,6 +1150,9 @@
 		if (!executePatches(module,module->dirname)) {
 			return FALSE;
 		}
+		if (!executeCommands(module,module->dirname)) {
+			return FALSE;
+		}
 
 		if (!compressModule(module,outputfilename,leave_dir,FS_ISO9660,module->name)) {
 			return FALSE;

Modified: trunk/mmaker/libmorphix/parsemod.c
===================================================================
--- trunk/mmaker/libmorphix/parsemod.c	2006-05-30 21:51:21 UTC (rev 2281)
+++ trunk/mmaker/libmorphix/parsemod.c	2006-05-30 22:08:18 UTC (rev 2282)
@@ -236,6 +236,21 @@
 	return module;
 }
 
+mmodule* parseCommandlist(xmlDocPtr doc, xmlNodePtr cur, mmodule *module) {
+	xmlChar *key;	
+	cur = cur->xmlChildrenNode;
+	module->commandlist = NULL;
+	while (cur != NULL) {
+		if (!xmlStrcmp(cur->name, ((const xmlChar *)"command"))) {
+			key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
+			module->commandlist = g_list_append(module->commandlist,g_strdup(key));
+			xmlFree(key);
+		}
+		cur = cur->next;
+	}
+	return module;
+}
+
 void initPackage(package_struct *package) {
 	package->name = NULL;
 	package->target = NULL;
@@ -254,6 +269,7 @@
 	module->packagelist = NULL;
 	module->packagedeletelist = NULL;
 	module->patchlist = NULL;
+	module->commandlist = NULL;
 	module->arch = NULL;
 	module->verbose = FALSE;
 	module->interactive = FALSE;
@@ -312,6 +328,9 @@
 		if (!xmlStrcmp(cur->name, ((const xmlChar *)"patchlist"))) {
 			parsePatchlist(doc,cur,module);
 		}
+		if (!xmlStrcmp(cur->name, ((const xmlChar *)"commandlist"))) {
+			parseCommandlist(doc,cur,module);
+		}
 		cur = cur->next;
 	}
 	return module;
@@ -391,6 +410,14 @@
 		}
 		g_list_free(module->patchlist);
 	}
+	if (module->commandlist != NULL) {
+		GList *ptr = module->commandlist;
+		while (ptr != NULL) {
+			g_free(ptr->data);
+			ptr = ptr->next;
+		}
+		g_list_free(module->commandlist);
+	}
 	g_free(module);
 }
 

Modified: trunk/mmaker/libmorphix/parsemod.h
===================================================================
--- trunk/mmaker/libmorphix/parsemod.h	2006-05-30 21:51:21 UTC (rev 2281)
+++ trunk/mmaker/libmorphix/parsemod.h	2006-05-30 22:08:18 UTC (rev 2282)
@@ -48,6 +48,7 @@
 	GList *packagelist; // list of package structs
 	GList *packagedeletelist; // list of package structs
 	GList *patchlist; // list of names of patches for module
+	GList *commandlist; // list of commands for module
 	GList *retrievelist; // list of to/from combinations
 
 	gboolean verbose; // build verbosely


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



-------------------------------------------------------
All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.