2 <html lang="en-us" itemscope itemtype="http://schema.org/Article">
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">
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>
17 <link rel="start" href="http://defaria.com/blogs/Status/">
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">
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">
37 <div id="container-inner">
38 <header id="header" role="banner">
39 <div id="header-inner">
40 <div id="header-content">
42 <a href="http://defaria.com/blogs/Status/">
51 <nav role="navigation">
53 <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
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>
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>
77 <li class="asset-meta-list-item">in <a itemprop="articleSection" rel="tag" href="http://defaria.com/blogs/Status/gpdb/">GPDB</a></li>
83 <div class="entry-content asset-content" itemprop="articleBody">
85 <li>Pulled out common code from mkview that will be needed for mkvob into Mkcc.pm Perl module</li>
87 <li>Re-engineered mkview to use Mkcc.pm</li>
89 <li>Started recoding mkvob to use GPDB and the new Mkcc.pm</li>
91 <li>Code complete on mkvob - need to test</li>
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>
95 <h3>The old mkvob_db</h3>
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>
99 <p>Another oddity of the old code can be seen in the following:</p>
101 <div class=code><pre>
102 foreach $rgn (@regionList) {
103 $debug && print "DEBUG: Checking tag in $rgn\n";
105 $cmd = 'lsvob -s -region $rgn';
107 @output = ctcmd($cmd);
109 foreach $item (@output)
111 if ($item =~ /^$tag$/)
113 print "VOB tag $tag already exists in $rgn\n\n";
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>
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 <region name> <vob tag>)! 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>
124 <p>So the new code looks like:</p>
126 <div class=code><pre>
127 foreach (@regionList) {
128 debug "Checking for $tag in region $_";
130 @output = ctcmd "lsvob -s -region $_ $tag";
132 error "VOB tag $tag already exists in region $_", 1 if !grep /Error/, @output;
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.
138 <nav class="page-navigation entry-navigation pagination content-nav">
139 <ul class="page-navigation-list">
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>
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>
149 <aside id="zenback" class="zenback feedback">
150 Please paste Zenback script code here.
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">
162 <input type="text" name="search" value="" placeholder="Search...">
164 <input type="hidden" name="IncludeBlogs" value="8">
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">
174 <nav class="widget-archive-category widget">
175 <h3 class="widget-header">Categories</h3>
176 <div class="widget-content">
179 <ul class="widget-list">
182 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/ameriquest/">Ameriquest (99)</a>
190 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/audience/">Audience (3)</a>
198 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/broadcom/">Broadcom (76)</a>
206 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/gpdb/">GPDB (35)</a>
214 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-dynamics/">General Dynamics (61)</a>
222 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-electric/">General Electric (13)</a>
230 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/hewlett-packard/">Hewlett Packard (13)</a>
238 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/lynuxworks/">LynuxWorks (162)</a>
246 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/pqa/">PQA (35)</a>
254 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/salira/">Salira (79)</a>
262 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/tellabs/">Tellabs (2)</a>
270 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/texas-instruments/">Texas Instruments (31)</a>
282 <nav class="widget-archive-dropdown widget">
283 <h3 class="widget-header">Archives</h3>
284 <div class="widget-content">
286 <option>Select a Month...</option>
288 <option value="http://defaria.com/blogs/Status/2016/02/">February 2016</option>
292 <option value="http://defaria.com/blogs/Status/2014/09/">September 2014</option>
296 <option value="http://defaria.com/blogs/Status/2014/04/">April 2014</option>
300 <option value="http://defaria.com/blogs/Status/2014/03/">March 2014</option>
304 <option value="http://defaria.com/blogs/Status/2013/02/">February 2013</option>
308 <option value="http://defaria.com/blogs/Status/2012/09/">September 2012</option>
312 <option value="http://defaria.com/blogs/Status/2012/08/">August 2012</option>
316 <option value="http://defaria.com/blogs/Status/2012/05/">May 2012</option>
320 <option value="http://defaria.com/blogs/Status/2012/04/">April 2012</option>
324 <option value="http://defaria.com/blogs/Status/2012/02/">February 2012</option>
328 <option value="http://defaria.com/blogs/Status/2012/01/">January 2012</option>
332 <option value="http://defaria.com/blogs/Status/2011/10/">October 2011</option>
336 <option value="http://defaria.com/blogs/Status/2011/07/">July 2011</option>
340 <option value="http://defaria.com/blogs/Status/2010/09/">September 2010</option>
344 <option value="http://defaria.com/blogs/Status/2010/08/">August 2010</option>
348 <option value="http://defaria.com/blogs/Status/2010/04/">April 2010</option>
352 <option value="http://defaria.com/blogs/Status/2010/03/">March 2010</option>
356 <option value="http://defaria.com/blogs/Status/2010/02/">February 2010</option>
360 <option value="http://defaria.com/blogs/Status/2009/05/">May 2009</option>
364 <option value="http://defaria.com/blogs/Status/2009/04/">April 2009</option>
368 <option value="http://defaria.com/blogs/Status/2008/07/">July 2008</option>
372 <option value="http://defaria.com/blogs/Status/2008/05/">May 2008</option>
376 <option value="http://defaria.com/blogs/Status/2008/04/">April 2008</option>
380 <option value="http://defaria.com/blogs/Status/2008/03/">March 2008</option>
384 <option value="http://defaria.com/blogs/Status/2008/02/">February 2008</option>
388 <option value="http://defaria.com/blogs/Status/2008/01/">January 2008</option>
392 <option value="http://defaria.com/blogs/Status/2007/12/">December 2007</option>
396 <option value="http://defaria.com/blogs/Status/2007/11/">November 2007</option>
400 <option value="http://defaria.com/blogs/Status/2007/10/">October 2007</option>
404 <option value="http://defaria.com/blogs/Status/2007/09/">September 2007</option>
408 <option value="http://defaria.com/blogs/Status/2007/08/">August 2007</option>
412 <option value="http://defaria.com/blogs/Status/2007/07/">July 2007</option>
416 <option value="http://defaria.com/blogs/Status/2007/06/">June 2007</option>
420 <option value="http://defaria.com/blogs/Status/2007/05/">May 2007</option>
424 <option value="http://defaria.com/blogs/Status/2007/04/">April 2007</option>
428 <option value="http://defaria.com/blogs/Status/2007/03/">March 2007</option>
432 <option value="http://defaria.com/blogs/Status/2007/01/">January 2007</option>
436 <option value="http://defaria.com/blogs/Status/2006/12/">December 2006</option>
440 <option value="http://defaria.com/blogs/Status/2006/11/">November 2006</option>
444 <option value="http://defaria.com/blogs/Status/2006/10/">October 2006</option>
448 <option value="http://defaria.com/blogs/Status/2006/09/">September 2006</option>
452 <option value="http://defaria.com/blogs/Status/2006/07/">July 2006</option>
456 <option value="http://defaria.com/blogs/Status/2006/06/">June 2006</option>
460 <option value="http://defaria.com/blogs/Status/2006/05/">May 2006</option>
464 <option value="http://defaria.com/blogs/Status/2006/04/">April 2006</option>
468 <option value="http://defaria.com/blogs/Status/2006/03/">March 2006</option>
472 <option value="http://defaria.com/blogs/Status/2006/02/">February 2006</option>
476 <option value="http://defaria.com/blogs/Status/2006/01/">January 2006</option>
480 <option value="http://defaria.com/blogs/Status/2005/12/">December 2005</option>
484 <option value="http://defaria.com/blogs/Status/2005/11/">November 2005</option>
488 <option value="http://defaria.com/blogs/Status/2005/10/">October 2005</option>
492 <option value="http://defaria.com/blogs/Status/2005/09/">September 2005</option>
496 <option value="http://defaria.com/blogs/Status/2005/08/">August 2005</option>
500 <option value="http://defaria.com/blogs/Status/2005/07/">July 2005</option>
504 <option value="http://defaria.com/blogs/Status/2005/06/">June 2005</option>
508 <option value="http://defaria.com/blogs/Status/2005/05/">May 2005</option>
512 <option value="http://defaria.com/blogs/Status/2005/04/">April 2005</option>
516 <option value="http://defaria.com/blogs/Status/2005/03/">March 2005</option>
520 <option value="http://defaria.com/blogs/Status/2005/02/">February 2005</option>
524 <option value="http://defaria.com/blogs/Status/2005/01/">January 2005</option>
528 <option value="http://defaria.com/blogs/Status/2004/12/">December 2004</option>
532 <option value="http://defaria.com/blogs/Status/2004/09/">September 2004</option>
536 <option value="http://defaria.com/blogs/Status/2004/08/">August 2004</option>
540 <option value="http://defaria.com/blogs/Status/2004/07/">July 2004</option>
544 <option value="http://defaria.com/blogs/Status/2004/06/">June 2004</option>
548 <option value="http://defaria.com/blogs/Status/2004/05/">May 2004</option>
552 <option value="http://defaria.com/blogs/Status/2004/04/">April 2004</option>
556 <option value="http://defaria.com/blogs/Status/2004/03/">March 2004</option>
560 <option value="http://defaria.com/blogs/Status/2004/02/">February 2004</option>
564 <option value="http://defaria.com/blogs/Status/2004/01/">January 2004</option>
568 <option value="http://defaria.com/blogs/Status/2003/12/">December 2003</option>
572 <option value="http://defaria.com/blogs/Status/2003/11/">November 2003</option>
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>
590 <footer id="footer" role="contentinfo">
591 <div id="footer-inner">
592 <div id="footer-content">
593 <nav role="navigation">
595 <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
601 <p class="license">© Copyright 2016.</p>
602 <p class="poweredby">Powered by <a href="http://www.movabletype.org/">Movable Type</a></p>
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>