<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ben's Blog &#187; mozillabuild</title>
	<atom:link href="http://blog.mozilla.com/bhearsum/archives/category/mozillabuild/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.mozilla.com/bhearsum</link>
	<description></description>
	<lastBuildDate>Tue, 27 Oct 2009 10:45:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Anatomy of an SDK update</title>
		<link>http://blog.mozilla.com/bhearsum/archives/113</link>
		<comments>http://blog.mozilla.com/bhearsum/archives/113#comments</comments>
		<pubDate>Fri, 02 Oct 2009 16:05:32 +0000</pubDate>
		<dc:creator>bhearsum</dc:creator>
				<category><![CDATA[build]]></category>
		<category><![CDATA[maintenance]]></category>
		<category><![CDATA[mozillabuild]]></category>
		<category><![CDATA[opsi]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[sdk]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/bhearsum/?p=113</guid>
		<description><![CDATA[Over the course of the past week or so I&#8217;ve been working on rolling out the Windows 7 SDK to our build machines. Doing so presented two challenges: Getting the SDK to deploy silently and properly, and updating the appropriate build configurations to use it. Neither of these may sound very challenging, and indeed, they [...]]]></description>
			<content:encoded><![CDATA[<p>Over the course of the past week or so I&#8217;ve been working on rolling out the Windows 7 SDK to our build machines. Doing so presented two challenges: Getting the SDK to deploy silently and properly, and updating the appropriate build configurations to use it. Neither of these may sound very challenging, and indeed, they didn&#8217;t to me either, but because of a combination of factors this ended up becoming a week long ordeal. In this post I will attempt to detangle everything that happened.</p>
<p>Let&#8217;s start with the actual SDK installation. Unlike most other reasonable packages, the Windows 7 SDK is <em>not</em> distributed as an MSI package, but rather a collection of MSIs wrapped in an EXE. Unfortunately, this EXE doesn&#8217;t enable you to do a customized, silent install &#8211; the precise thing we need. Vainly, I thought I could figure out the proper order and magic options to install the enclosed MSIs properly. Needless to say, this failed. To work around this I fell back onto using an <a href="http://www.autoitscript.com/">Autoit</a> <a href="http://hg.mozilla.org/build/opsi-package-sources/file/1a4ca5538b0c/win7-sdk/CLIENT_DATA/win7-sdk.au3">script</a> that would click through the interactive installer for me. It took some fuss, but not too much difficulty to get that working.</p>
<p>Now, the fun part (of deployment). We use a piece of software called <a href="http://opsi.org/">OPSI</a> to schedule and perform software installations across our farm of 80 or so Windows VMs. OPSI runs very early in the Windows start-up process, and actually executes as the SYSTEM user. Well, it turns out that the Windows 7 SDK must be installed by a full user, not the SYSTEM account. This <em>seems</em> unnecessary, as we&#8217;ve deployed <a href="http://hg.mozilla.org/build/opsi-package-sources/file/tip/wince-sdk">other</a> <a href="http://hg.mozilla.org/build/opsi-package-sources/file/tip/tegra-sdk">SDKs</a> through OPSI in the past without issue. After trying to fake it out by setting various environment variables <a href="https://forum.opsi.org/viewtopic.php?f=8&#038;t=956&#038;start=0&#038;sid=9edcafc85a3a856107c47109c45eae64">I turned to the OPSI forums</a> for some help. (As an aside, the OPSI developers have been fantastic in their support of our installation, many thanks to them.) It turns out that I&#8217;m not the first person to hit problems like this. They pointed me to <a href="http://www.opsi.org/opsi_wiki/TemplateForInstallationsAsTemporaryLocalAdmin">a template</a> for a script that works around such an issue. The solution ends up being:</p>
<ol>
<li>Copy installation files to the slave</li>
<li>Create a new user in the Administrators group, set that user to automatically login at next boot</li>
<li>Reboot, and run the package installation at login</li>
<li>Restore the original automatic login, reboot</li>
<li>Cleanup (delete installation files, remove the created user)</li>
</ol>
<p>This is obviously quite hacky, but it gets the job done.</p>
<p>So! With that in hand (and <a href="http://hg.mozilla.org/build/opsi-package-sources">in repo</a>) we set the SDK to deploy over the course of Wednesday night and Thursday morning. Overall, this went smoothly. For a reason (which I haven&#8217;t yet figured out) some of the slaves needed some kicking to do the installation properly.</p>
<p>Remember how I said part 2 of this was updating the build configurations? I had planned to do this on Friday, and even <a href="https://bug505504.bugzilla.mozilla.org/attachment.cgi?id=403894">posted a patch</a> in preparation. Well, it turns out that MozillaBuild likes to be smart and find the most recent SDK and compiler for you. This completely slipped my mind while I was doing the deployment and a result, all builds from Thursday (yesterday) morning to Friday (today) morning, including those on mozilla-1.9.1, were done with the Windows 7 SDK. This went unnoticed most of Thursday until I was doing a final test of my build configuration patch.</p>
<p>Here&#8217;s where the fun starts for this part. After discovering I&#8217;d accidentally changed the SDK for everything I went into a bit of a panic and rapidly started testing some fixes out in our staging environment. During the course of this I discovered that things were worse than I thought. Most builds were using the Windows 7 SDK, but not the &#8220;unit test&#8221; ones. So we weren&#8217;t even using the same SDK for all the builds for a given branch! Getting all of that sorted out was compounded by <a href="http://hg.mozilla.org/users/bhearsum_mozilla.com/buildbot-configs/rev/ccf36596885d">all</a> <a href="http://hg.mozilla.org/users/bhearsum_mozilla.com/buildbot-configs/rev/7ae7a2f6dc21">of</a> <a href="http://hg.mozilla.org/users/bhearsum_mozilla.com/buildbot-configs/rev/e1ce459c091d">the</a> <a href="http://hg.mozilla.org/users/bhearsum_mozilla.com/buildbot-configs/rev/58f3a3bbff0b">iterations</a> of path styles (c:/ vs. c:\ vs. /c/) I had to try before I found the magic combination. In the end, I discovered a few things:</p>
<ul>
<li>If you&#8217;re specifying LIB/INCLUDE/SDKDIR in a mozconfig, you must use Windows-style paths</li>
<li>If you&#8217;re specifying PATH in a mozconfig, you CANNOT use Windows-style paths &#8211; you must use MSYS style</li>
<li>You can&#8217;t test for these things properly without clobbering</li>
</ul>
<p>As I write this the first set of builds that all use the correct SDK are finishing up, and this deployment from hell appears to be nearly over. I want to express a special thanks to the OPSI developers, who were very helpful, and to Nick Thomas and Chris AtLee, for their patience with my countless iterations of build configuration patches. As a final note, let me state explicitly which SDK is being used where:</p>
<ul>
<li>Windows Vista SDK (6.0a): mozilla-1.9.1 builds</li>
<li>Windows 7 SDK (7.0): mozilla-central, mozilla-1.9.2, TraceMonkey, Electrolysis, and Places builds</li>
</ul>
<p>WinCE and WinMO builds are unaffected by this deployment.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/bhearsum/archives/113/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MozillaBuild wiki page</title>
		<link>http://blog.mozilla.com/bhearsum/archives/11</link>
		<comments>http://blog.mozilla.com/bhearsum/archives/11#comments</comments>
		<pubDate>Thu, 27 Dec 2007 18:25:49 +0000</pubDate>
		<dc:creator>bhearsum</dc:creator>
				<category><![CDATA[mozillabuild]]></category>
		<category><![CDATA[planet]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/bhearsum/archives/11</guid>
		<description><![CDATA[Yes, MozillaBuild finally has a home that isn&#8217;t in the form of blog posts or bugs. The page is a bit barren right now, but it *does* contain links to release notes, which some people have asked for.
You can watch this page for future news and updates about MozillaBuild.
UPDATE: A link to the wiki page, [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, MozillaBuild finally has a home that isn&#8217;t in the form of blog posts or bugs. The page is a bit barren right now, but it *does* contain links to release notes, which some people have asked for.</p>
<p>You can watch this page for future news and updates about MozillaBuild.</p>
<p>UPDATE: A link to the wiki page, behold: <a href="http://wiki.mozilla.org/MozillaBuild">http://wiki.mozilla.org/MozillaBuild</a> (thanks reed)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/bhearsum/archives/11/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MozillaBuild 1.2rc2</title>
		<link>http://blog.mozilla.com/bhearsum/archives/10</link>
		<comments>http://blog.mozilla.com/bhearsum/archives/10#comments</comments>
		<pubDate>Fri, 21 Dec 2007 15:57:52 +0000</pubDate>
		<dc:creator>bhearsum</dc:creator>
				<category><![CDATA[mozillabuild]]></category>
		<category><![CDATA[planet]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/bhearsum/archives/10</guid>
		<description><![CDATA[Thanks to everyone that helped test MozillaBuild 1.2rc1. A bug with cvs was found that makes cvs checkouts, checkins, and maybe other things fail in weird ways. RC1 was the first MozillaBuild to use cvs 1.11.22, for rc2 we&#8217;ve switched back to just plain 1.11. We&#8217;ve also added a couple of small enhancements. Notably, the [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to everyone that helped test MozillaBuild 1.2rc1. A <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=409260">bug with cvs</a> was found that makes cvs checkouts, checkins, and maybe other things fail in weird ways. RC1 was the first MozillaBuild to use cvs 1.11.22, for rc2 we&#8217;ve switched back to just plain 1.11. We&#8217;ve also added a couple of <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=382760">small</a> <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=409114">enhancements</a>. Notably, the font issue with ClearType/widescreens has been fixed. For a more complete list of what&#8217;s in rc2 checkout the dependent bugs in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=406085">bug 406085</a>.</p>
<p>I should note that you must run start-msys*.bat &#8220;as administrator&#8221; on Vista.</p>
<p>Hopefully this next part will be unnecessary but if you *do* find any bugs please file them in <a href="https://bugzilla.mozilla.org/enter_bug.cgi?alias=&amp;assigned_to=nobody%40mozilla.org&amp;blocked=&amp;bug_file_loc=http%3A%2F%2F&amp;bug_severity=normal&amp;bug_status=NEW&amp;comment=&amp;component=MozillaBuild&amp;contenttypeentry=&amp;contenttypemethod=autodetect&amp;contenttypeselection=text%2Fplain&amp;data=&amp;dependson=&amp;description=&amp;flag_type-4=X&amp;form_name=enter_bug&amp;keywords=&amp;maketemplate=Remember%20values%20as%20bookmarkable%20template&amp;op_sys=Mac%20OS%20X&amp;priority=--&amp;product=mozilla.org&amp;qa_contact=mozillabuild%40mozilla-org.bugs&amp;rep_platform=PC&amp;short_desc=&amp;target_milestone=---&amp;version=other">mozilla.org:MozillaBuild</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/bhearsum/archives/10/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MozillaBuild 1.2rc1</title>
		<link>http://blog.mozilla.com/bhearsum/archives/9</link>
		<comments>http://blog.mozilla.com/bhearsum/archives/9#comments</comments>
		<pubDate>Wed, 19 Dec 2007 22:46:31 +0000</pubDate>
		<dc:creator>bhearsum</dc:creator>
				<category><![CDATA[mozillabuild]]></category>
		<category><![CDATA[planet]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/bhearsum/archives/9</guid>
		<description><![CDATA[While working on release automation it was discovered that the ssh version that ships with MozillaBuild 1.1 is archaic. This has bitten us in a few places (try server, stage migration, for example).. I managed to upgrade SSH on MozillaBuild 1.1 without too much trouble and ended up putting together a MozillaBuild patch for it.
Ted [...]]]></description>
			<content:encoded><![CDATA[<p>While working on release automation it was discovered that the ssh version that ships with MozillaBuild 1.1 is archaic. This has bitten us in a few places (try server, stage migration, for example).. I managed to upgrade SSH on MozillaBuild 1.1 without too much trouble and ended up putting together a MozillaBuild patch for it.</p>
<p><a>Ted</a> asked me to setup a <a href="http://lxr.mozilla.org/mozilla/source/tools/build-environment/win32/packageit.py#13">MozillaBuild build environment</a>. &#8220;How hard could that be&#8221;, I thought to myself. I ended up spending 3 days getting a VM/build environment setup (someone should really make some sort of installer that sets up an MSYS build environment for you&#8230;MSYSBuild, maybe? ;-). Ted and I both spent additional time fighting with DLL rebasing. (I have to admit though, I don&#8217;t understand DLL rebasing <u>at all</u>, even after it was explained to me.</p>
<p>Ted eventually found a solution for this, and now, there is a <a href="http://people.mozilla.com/~tmielczarek/MozillaBuild-1.2rc.exe">MozillaBuild 1.2rc1</a>. Anybody who can help us test will be greatly rewarded (with a new MozillaBuild sometime soon ;)!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/bhearsum/archives/9/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
