Initial add of defaria.com
[clearscm.git] / defaria.com / blogs / Status / 2006 / 12 / mkccpm-and-mkvo.html
1 <!DOCTYPE html>
2 <html lang="en-us" itemscope itemtype="http://schema.org/Article">
3   <head>
4     <meta charset="utf-8">
5     <meta name="description" content=" Pulled out common code from mkview that will be needed for mkvob into Mkcc.pm Perl module Re-engineered mkview to use Mkcc.pm Started recoding mkvob to use GPDB and the new Mkcc.pm Code complete on mkvob - need to test...">
6     <meta name="generator" content="Movable Type 5.2.3">
7     <title>Mkcc.pm and mkvob - Status</title>
8     <link rel="alternate" type="application/atom+xml" title="Recent Entries" href="http://defaria.com/blogs/Status/atom.xml">
9     <link rel="canonical" href="http://defaria.com/blogs/Status/2006/12/mkccpm-and-mkvo.html">
10     <meta name="viewport" content="width=device-width,initial-scale=1">
11     <link rel="stylesheet" href="http://defaria.com/blogs/Status/styles.css">
12     <!--[if lt IE 9]>
13     <link rel="stylesheet" href="http://defaria.com/blogs/Status/styles_ie.css">
14     <script src="/mt/mt-static/support/theme_static/rainier/js/html5shiv.js"></script>
15     <![endif]-->
16     
17     <link rel="start" href="http://defaria.com/blogs/Status/">
18
19     <link rel="prev" href="http://defaria.com/blogs/Status/2006/12/reworking-gpdb.html" title="Reworking GPDB tables, mkview">
20     <link rel="next" href="http://defaria.com/blogs/Status/2007/01/site-admins.html" title="Site Admins">
21     <!-- Open Graph Protocol -->
22     <meta property="og:type" content="article">
23     <meta property="og:locale" content="en-us">
24     <meta property="og:title" content="Mkcc.pm and mkvob">
25     <meta property="og:url" content="http://defaria.com/blogs/Status/2006/12/mkccpm-and-mkvo.html">
26     <meta property="og:description" content=" Pulled out common code from mkview that will be needed for mkvob into Mkcc.pm Perl module Re-engineered mkview to use Mkcc.pm Started recoding mkvob to use GPDB and the new Mkcc.pm Code complete on mkvob - need to test...">
27     <meta property="og:site_name" content="Status">
28     <meta property="og:image" content="/mt/mt-static/support/theme_static/rainier/img/siteicon-sample.png">
29     <!-- Metadata -->
30     <meta itemprop="description" content=" Pulled out common code from mkview that will be needed for mkvob into Mkcc.pm Perl module Re-engineered mkview to use Mkcc.pm Started recoding mkvob to use GPDB and the new Mkcc.pm Code complete on mkvob - need to test...">
31     <link itemprop="url" href="http://defaria.com/blogs/Status/2006/12/mkccpm-and-mkvo.html">
32     <link itemprop="image" href="/mt/mt-static/support/theme_static/rainier/img/siteicon-sample.png">
33     
34   </head>
35   <body>
36     <div id="container">
37       <div id="container-inner">
38         <header id="header" role="banner">
39           <div id="header-inner">
40             <div id="header-content">
41               <h1>
42                 <a href="http://defaria.com/blogs/Status/">
43
44                   Status
45
46                 </a>
47               </h1>
48               
49             </div>
50
51             <nav role="navigation">
52           <ul>
53             <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
54
55
56           </ul>
57         </nav>
58
59           </div>
60         </header>
61         <div id="content">
62           <div id="content-inner">
63             <ul class="breadcrumb breadcrumb-list">
64               <li class="breadcrumb-list-item"><a href="http://defaria.com/blogs/Status/">Home</a></li>
65               <li class="breadcrumb-list-item">Mkcc.pm and mkvob</li>
66             </ul>
67             <div id="individual-main" class="main" role="main">
68               <article id="entry-1860" class="entry entry-asset asset hentry">
69                 <div class="asset-header">
70                   <h2 itemprop="name" class="asset-name entry-title">Mkcc.pm and mkvob</h2>
71                   <footer class="asset-meta">
72                     <ul class="asset-meta-list">
73                       <li class="asset-meta-list-item">Posted on <time datetime="2006-12-28T16:50:10-08:00" itemprop="datePublished">December 28, 2006</time></li>
74                       <li class="asset-meta-list-item">by <span class="author entry-author vcard"></span></li>
75
76   
77                       <li class="asset-meta-list-item">in <a itemprop="articleSection" rel="tag" href="http://defaria.com/blogs/Status/gpdb/">GPDB</a></li>
78   
79
80                    </ul>
81                 </footer>
82                 </div>
83                 <div class="entry-content asset-content" itemprop="articleBody">
84                   <ul>
85   <li>Pulled out common code from mkview that will be needed for mkvob into Mkcc.pm Perl module</li>
86
87   <li>Re-engineered mkview to use Mkcc.pm</li>
88
89   <li>Started recoding mkvob to use GPDB and the new Mkcc.pm</li>
90
91   <li>Code complete on mkvob - need to test</li>
92
93   <li><b>Issue</b>: It seems that we have multiple versions of mkview_linked and that UK has continued development of their version of mkview_linked while we've been developing on mkview_linked here in Dallas. IOW there are two versions in separate vobs!</li>
94 </ul>
95                   <h3>The old mkvob_db</h3>
96
97 <p>There are some oddities in the old mkvob_db code. For example, there is an insistence in setting umask to 0 before creating directories, which are created with specific permissions. Setting umask is only for the new creation of a directory or file. One could, instead, simply make the directory then chmod it to whatever you really wanted the permissions to be. The new subroutine MakeDir in Mkcc.pm does just that, as well as chown if owner and group are passed in as well as only making the directory if it is needed. This simplifies the code a lot and removes the need to save, set and restore umask.</p>
98
99 <p>Another oddity of the old code can be seen in the following:</p>
100
101 <div class=code><pre>
102 foreach $rgn (@regionList) {
103   $debug && print "DEBUG: Checking tag in $rgn\n";
104
105   $cmd = 'lsvob -s -region $rgn';
106
107   @output = ctcmd($cmd);
108
109   foreach $item (@output)
110   {
111     if ($item =~ /^$tag$/)
112       {
113         print "VOB tag $tag already exists in $rgn\n\n";
114         exit (1);
115       }
116   }
117 }
118 </pre></div>
119
120 <p>Looks innocuous enough - run through a list of regions looking to see if this newly requested vob tag already exists in any of the regions. However there are bugs and inefficiencies in the above code. For starters the single quote on the setting of $cmd says to <b>not</b> expand the variable $rgn. The resulting command then becomes "cleartool lsvob -s region $rgn" which, of course, would return an error, which, of course, is not checked for here. So the code, while trying to verify that this vob tag does not exist in any of the regions, fails to actually check it!</p>
121
122 <p>However if we just correct that by using double quotes we will now incur a performance penalty. Now the registry server will be required to return all the vob tags for each and every region which can take some time. Is there any way we can make this faster? Why yes there is! Specify the actual vob tag (as in cleartool lsvob -s -region &lt;region name&gt; &lt;vob tag&gt;)! You know sometimes people say that Clearcase always returns all of the registry data which is then parsed locally. Then again, sometimes it's the programmer who asks for it!</p>
123
124 <p>So the new code looks like:</p>
125
126 <div class=code><pre>
127 foreach (@regionList) {
128   debug "Checking for $tag in region $_";
129
130   @output = ctcmd "lsvob -s -region $_ $tag";
131
132   error "VOB tag $tag already exists in region $_", 1 if !grep /Error/, @output;
133 } # foreach
134 </pre></div>
135
136 <p>Note the simplifications for debug (now a subroutine from Mkcc.pm), usage of the default variable ($_) and error reporting (also a subroutine from Mkcc.pm). This algorithm performs the same task, correctly and orders of magnitude quicker.
137                 </div>
138                 <nav class="page-navigation entry-navigation pagination content-nav">
139                   <ul class="page-navigation-list">
140
141                     <li class="page-navigation-list-item page-navigation-prev"><a rel="prev" href="http://defaria.com/blogs/Status/2006/12/reworking-gpdb.html" title="Reworking GPDB tables, mkview">Previous entry</a></li>
142
143
144                     <li class="page-navigation-list-item page-navigation-next"><a rel="next" href="http://defaria.com/blogs/Status/2007/01/site-admins.html" title="Site Admins">Next entry</a></li>
145
146                   </ul>
147                 </nav>
148                 <!--
149 <aside id="zenback" class="zenback feedback">
150   Please paste Zenback script code here.
151 </aside>
152 -->
153                 
154                 
155               </article>
156             </div>
157             <aside class="widgets related" role="complementary">
158               <nav class="widget-search widget">
159   <div class="widget-content">
160     <form method="get" id="search" action="http://defaria.com/mt/mt-search.cgi">
161       <div>
162         <input type="text" name="search" value="" placeholder="Search...">
163
164         <input type="hidden" name="IncludeBlogs" value="8">
165
166         <input type="hidden" name="limit" value="20">
167         <button type="submit" name="button">
168           <img alt="Search" src="/mt/mt-static/support/theme_static/rainier/img/search-icon.png">
169         </button>
170       </div>
171     </form>
172   </div>
173 </nav>
174 <nav class="widget-archive-category widget">
175   <h3 class="widget-header">Categories</h3>
176   <div class="widget-content">
177     
178       
179     <ul class="widget-list">
180       
181       
182       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/ameriquest/">Ameriquest (99)</a>
183       
184       
185       </li>
186       
187     
188       
189       
190       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/audience/">Audience (3)</a>
191       
192       
193       </li>
194       
195     
196       
197       
198       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/broadcom/">Broadcom (76)</a>
199       
200       
201       </li>
202       
203     
204       
205       
206       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/gpdb/">GPDB (35)</a>
207       
208       
209       </li>
210       
211     
212       
213       
214       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-dynamics/">General Dynamics (61)</a>
215       
216       
217       </li>
218       
219     
220       
221       
222       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-electric/">General Electric (13)</a>
223       
224       
225       </li>
226       
227     
228       
229       
230       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/hewlett-packard/">Hewlett Packard (13)</a>
231       
232       
233       </li>
234       
235     
236       
237       
238       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/lynuxworks/">LynuxWorks (162)</a>
239       
240       
241       </li>
242       
243     
244       
245       
246       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/pqa/">PQA (35)</a>
247       
248       
249       </li>
250       
251     
252       
253       
254       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/salira/">Salira (79)</a>
255       
256       
257       </li>
258       
259     
260       
261       
262       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/tellabs/">Tellabs (2)</a>
263       
264       
265       </li>
266       
267     
268       
269       
270       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/texas-instruments/">Texas Instruments (31)</a>
271       
272       
273       </li>
274       
275     </ul>
276       
277     
278   </div>
279 </nav>
280   
281
282 <nav class="widget-archive-dropdown widget">
283   <h3 class="widget-header">Archives</h3>
284   <div class="widget-content">
285     <select>
286       <option>Select a Month...</option>
287     
288       <option value="http://defaria.com/blogs/Status/2016/02/">February 2016</option>
289     
290   
291     
292       <option value="http://defaria.com/blogs/Status/2014/09/">September 2014</option>
293     
294   
295     
296       <option value="http://defaria.com/blogs/Status/2014/04/">April 2014</option>
297     
298   
299     
300       <option value="http://defaria.com/blogs/Status/2014/03/">March 2014</option>
301     
302   
303     
304       <option value="http://defaria.com/blogs/Status/2013/02/">February 2013</option>
305     
306   
307     
308       <option value="http://defaria.com/blogs/Status/2012/09/">September 2012</option>
309     
310   
311     
312       <option value="http://defaria.com/blogs/Status/2012/08/">August 2012</option>
313     
314   
315     
316       <option value="http://defaria.com/blogs/Status/2012/05/">May 2012</option>
317     
318   
319     
320       <option value="http://defaria.com/blogs/Status/2012/04/">April 2012</option>
321     
322   
323     
324       <option value="http://defaria.com/blogs/Status/2012/02/">February 2012</option>
325     
326   
327     
328       <option value="http://defaria.com/blogs/Status/2012/01/">January 2012</option>
329     
330   
331     
332       <option value="http://defaria.com/blogs/Status/2011/10/">October 2011</option>
333     
334   
335     
336       <option value="http://defaria.com/blogs/Status/2011/07/">July 2011</option>
337     
338   
339     
340       <option value="http://defaria.com/blogs/Status/2010/09/">September 2010</option>
341     
342   
343     
344       <option value="http://defaria.com/blogs/Status/2010/08/">August 2010</option>
345     
346   
347     
348       <option value="http://defaria.com/blogs/Status/2010/04/">April 2010</option>
349     
350   
351     
352       <option value="http://defaria.com/blogs/Status/2010/03/">March 2010</option>
353     
354   
355     
356       <option value="http://defaria.com/blogs/Status/2010/02/">February 2010</option>
357     
358   
359     
360       <option value="http://defaria.com/blogs/Status/2009/05/">May 2009</option>
361     
362   
363     
364       <option value="http://defaria.com/blogs/Status/2009/04/">April 2009</option>
365     
366   
367     
368       <option value="http://defaria.com/blogs/Status/2008/07/">July 2008</option>
369     
370   
371     
372       <option value="http://defaria.com/blogs/Status/2008/05/">May 2008</option>
373     
374   
375     
376       <option value="http://defaria.com/blogs/Status/2008/04/">April 2008</option>
377     
378   
379     
380       <option value="http://defaria.com/blogs/Status/2008/03/">March 2008</option>
381     
382   
383     
384       <option value="http://defaria.com/blogs/Status/2008/02/">February 2008</option>
385     
386   
387     
388       <option value="http://defaria.com/blogs/Status/2008/01/">January 2008</option>
389     
390   
391     
392       <option value="http://defaria.com/blogs/Status/2007/12/">December 2007</option>
393     
394   
395     
396       <option value="http://defaria.com/blogs/Status/2007/11/">November 2007</option>
397     
398   
399     
400       <option value="http://defaria.com/blogs/Status/2007/10/">October 2007</option>
401     
402   
403     
404       <option value="http://defaria.com/blogs/Status/2007/09/">September 2007</option>
405     
406   
407     
408       <option value="http://defaria.com/blogs/Status/2007/08/">August 2007</option>
409     
410   
411     
412       <option value="http://defaria.com/blogs/Status/2007/07/">July 2007</option>
413     
414   
415     
416       <option value="http://defaria.com/blogs/Status/2007/06/">June 2007</option>
417     
418   
419     
420       <option value="http://defaria.com/blogs/Status/2007/05/">May 2007</option>
421     
422   
423     
424       <option value="http://defaria.com/blogs/Status/2007/04/">April 2007</option>
425     
426   
427     
428       <option value="http://defaria.com/blogs/Status/2007/03/">March 2007</option>
429     
430   
431     
432       <option value="http://defaria.com/blogs/Status/2007/01/">January 2007</option>
433     
434   
435     
436       <option value="http://defaria.com/blogs/Status/2006/12/">December 2006</option>
437     
438   
439     
440       <option value="http://defaria.com/blogs/Status/2006/11/">November 2006</option>
441     
442   
443     
444       <option value="http://defaria.com/blogs/Status/2006/10/">October 2006</option>
445     
446   
447     
448       <option value="http://defaria.com/blogs/Status/2006/09/">September 2006</option>
449     
450   
451     
452       <option value="http://defaria.com/blogs/Status/2006/07/">July 2006</option>
453     
454   
455     
456       <option value="http://defaria.com/blogs/Status/2006/06/">June 2006</option>
457     
458   
459     
460       <option value="http://defaria.com/blogs/Status/2006/05/">May 2006</option>
461     
462   
463     
464       <option value="http://defaria.com/blogs/Status/2006/04/">April 2006</option>
465     
466   
467     
468       <option value="http://defaria.com/blogs/Status/2006/03/">March 2006</option>
469     
470   
471     
472       <option value="http://defaria.com/blogs/Status/2006/02/">February 2006</option>
473     
474   
475     
476       <option value="http://defaria.com/blogs/Status/2006/01/">January 2006</option>
477     
478   
479     
480       <option value="http://defaria.com/blogs/Status/2005/12/">December 2005</option>
481     
482   
483     
484       <option value="http://defaria.com/blogs/Status/2005/11/">November 2005</option>
485     
486   
487     
488       <option value="http://defaria.com/blogs/Status/2005/10/">October 2005</option>
489     
490   
491     
492       <option value="http://defaria.com/blogs/Status/2005/09/">September 2005</option>
493     
494   
495     
496       <option value="http://defaria.com/blogs/Status/2005/08/">August 2005</option>
497     
498   
499     
500       <option value="http://defaria.com/blogs/Status/2005/07/">July 2005</option>
501     
502   
503     
504       <option value="http://defaria.com/blogs/Status/2005/06/">June 2005</option>
505     
506   
507     
508       <option value="http://defaria.com/blogs/Status/2005/05/">May 2005</option>
509     
510   
511     
512       <option value="http://defaria.com/blogs/Status/2005/04/">April 2005</option>
513     
514   
515     
516       <option value="http://defaria.com/blogs/Status/2005/03/">March 2005</option>
517     
518   
519     
520       <option value="http://defaria.com/blogs/Status/2005/02/">February 2005</option>
521     
522   
523     
524       <option value="http://defaria.com/blogs/Status/2005/01/">January 2005</option>
525     
526   
527     
528       <option value="http://defaria.com/blogs/Status/2004/12/">December 2004</option>
529     
530   
531     
532       <option value="http://defaria.com/blogs/Status/2004/09/">September 2004</option>
533     
534   
535     
536       <option value="http://defaria.com/blogs/Status/2004/08/">August 2004</option>
537     
538   
539     
540       <option value="http://defaria.com/blogs/Status/2004/07/">July 2004</option>
541     
542   
543     
544       <option value="http://defaria.com/blogs/Status/2004/06/">June 2004</option>
545     
546   
547     
548       <option value="http://defaria.com/blogs/Status/2004/05/">May 2004</option>
549     
550   
551     
552       <option value="http://defaria.com/blogs/Status/2004/04/">April 2004</option>
553     
554   
555     
556       <option value="http://defaria.com/blogs/Status/2004/03/">March 2004</option>
557     
558   
559     
560       <option value="http://defaria.com/blogs/Status/2004/02/">February 2004</option>
561     
562   
563     
564       <option value="http://defaria.com/blogs/Status/2004/01/">January 2004</option>
565     
566   
567     
568       <option value="http://defaria.com/blogs/Status/2003/12/">December 2003</option>
569     
570   
571     
572       <option value="http://defaria.com/blogs/Status/2003/11/">November 2003</option>
573     
574     </select>
575   </div>
576 </nav>
577     
578   
579
580 <div class="widget-syndication widget section">
581   <div class="widget-content">
582     <p><img src="http://defaria.com/mt/mt-static/images/status_icons/feed.gif" alt="Subscribe to feed" width="9" height="9" /> <a href="http://defaria.com/blogs/Status/atom.xml">Subscribe to this blog's feed</a></p>
583
584   </div>
585 </div>
586
587             </aside>
588           </div>
589         </div>
590         <footer id="footer" role="contentinfo">
591           <div id="footer-inner">
592             <div id="footer-content">
593   <nav role="navigation">
594           <ul>
595             <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
596
597
598           </ul>
599         </nav>
600
601   <p class="license">&copy; Copyright 2016.</p>
602   <p class="poweredby">Powered by <a href="http://www.movabletype.org/">Movable Type</a></p>
603 </div>
604           </div>
605         </footer>
606       </div>
607     </div>
608     <script src="http://defaria.com/mt/mt-static/jquery/jquery.min.js"></script>
609     <script src="http://defaria.com/blogs/Status/mt-theme-scale2.js"></script>
610   </body>
611 </html>