commsfwutils/commsbufs/mbufgobblerlayer/how to clone this component.txt
branchRCL_3
changeset 76 576874e13a2c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwutils/commsbufs/mbufgobblerlayer/how to clone this component.txt	Wed Sep 15 13:33:11 2010 +0300
@@ -0,0 +1,112 @@
+
+#####################################
+#                                   #
+# Update Content And Filenames tool #
+#                                   #
+#####################################
+
+The Update Content And Filenames tool allows you to clone this component to a new implementation.
+It does the boring housekeeping to rename the source, change target DLL name,
+update the UIDs etc. etc.
+It does this by performing recursive search and replace on file names and content.
+
+
+How to clone this component to a new implementation:
+
+-	Ensure this component builds as is:
+        cd group
+        sbs -c winscw_udeb
+        sbs -c winscw_udeb.test
+	If you're feeling conscientious you could test it too :-)
+
+-	Nominate an appropriate name for the new component.
+		e.g. Test123
+	If there's any chance the new component will end up
+	in a deliverable, please choose the name more carefully
+	than I just did
+
+-	Copy this folder (the one containing this README file),
+	naming the new folder as something appropriate,
+	relating to the component name you have chosen
+	(and keep it lower case to keep linux builds happy)
+		e.g. "Copy Of mbufgobblerlayer" => "test123layer"
+
+-	Ensure the new folder and all its contents are writable.
+	(if you got mbufgobblerlayer from a version control system it might be read-only)
+	
+Then, in the *new* folder:
+
+-	Modify the file UpdateContentsAndFilenames.ini accordingly,
+	to reflect the values required by your new component.
+	Obviously you'll need to obtain new UIds rather than just making them up :-)
+	 (Ask your architect where new UIds should come from these days)
+	The "Search" fields specify the current values which will be replaced.
+	The "Replace" fields must be changed from CHANGEME to the desired values.
+		e.g. [Name].Replace=CHANGEME => [Name].Replace=Test123
+		e.g. [DllUid].Replace=CHANGEME => [DllUid].Replace=01234567
+		etc..
+
+-	Ensure Python 2.6.2 or greater is installed. This should come down automatically
+  with SymSEE or whatever you used to put together your development environment.
+	
+-	Open a command window in the *new* folder, and run:
+		updatecontentandfilenames.py
+
+-	Before you make further modifications, ensure the script updated
+	everything correctly:
+        cd group
+        sbs -c winscw_udeb
+        sbs -c winscw_udeb.test
+	(and run any regression tests over the new copy of the component)
+
+
+
+Notes and caveats:
+
+1.
+Remember you're taking a copy, so if you're cloning something feature-rich,
+please think carefully about whether either..
+	- you really do want 2 copies of the same feature code knocking about, which is
+	  totally ok if you're just trying something out and/or you want to isolate the new
+	  component from changes in the cloned component
+.. or ..
+	- you should be considering cloning a more basic implementation,
+	  then applying techniques such as inheritance to reuse the existing features
+
+
+So it's more suited for cloning basic ("feature-impoverished?") implementations as a
+starting point for developing more functional implementations.
+
+e.g. mbufgobbler Layer	-> some new layer
+
+
+2.
+Correct functioning of the script of course assumes some reasonably pragmatic
+correlation between class names, folder names, dll names etc.
+
+It's easy for you to add extra search and replace pairs as needed to address
+more complicated renaming tasks. Just add more sections to the
+UpdateContentsAndFilenames.ini file. The [Header Names] are not used for anything, they're
+just for your reference and should probably be unique across the file.
+The really important bit is the Search/Replace pairs.
+
+
+3.
+Each search/replace pair is applied in turn. So don't expect to be able to do anything
+sneaky like swapping strings in a single run.
+
+
+4.
+Reusing this script elsewhere should be easy,
+because there is no special significance to the .ini file section names-
+they are just there to assist the user in populating the fields.
+i.e. .ini file sections purely exist to group together each Search/Replace pair.
+
+Just copy the updatecontentandfilenames.* files into the root folder of a new
+copy of the component that you want to clone, edit the ini file, and run the python script.
+
+
+5.
+Have fun..
+
+