Closed Bug 101431 Opened 23 years ago Closed 23 years ago

Get jar.mn concatenation into the builds

Categories

(SeaMonkey :: Build Config, defect)

x86
All
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: gerv, Assigned: cls)

Details

Attachments

(8 files)

I have a plan to allow people to contribute patches to the UI and other non-compiled files without having to set up a build environment. There's stuff in n.p.m.seamonkey about this: news://news.mozilla.org:119/3BA69897.5030705@mozilla.org As part of this, in order for patches to work, we need to ship a file with Mozilla which gives the mappings from CVS file locations to jar file locations. This is basically a concatenation of all instances of jar.mn with a little more path information added. There are a couple of quirks to this (platform-specific files) but it shouldn't be too hard. My current idea (cls had an objection to part of this, but I can't remember what it was): Find all the jar.mn files in the tree you are building. (This does away with the need for a master list of jar.mn files.) If this finds old and crufty jar.mn files, that's fine. There won't be a clash. If the path to a jar.mn file contains the wrong ones for your platform of /win/ , /unix/, /os2/ or /mac/, then you don't add that one in. You munge and concatenate all those files together and ship the result as chrome/filelist.txt or similar. This can then be used by automated tools to translate chrome paths into CVS paths. There is the slight problem that some jar.mn files don't have the double format for all or part of them, if the referenced file is in the same directory as the jar.mn file, but the script should be able to cope with this. I plan to write the correct perl script, and then coordinate with the build team to try and get it made part of the build. Gerv
OK, so here's a first draft of the script. I have no idea whether it will work cross-platform - it uses Unix-style paths. Does Perl Do The Right Thing in these cases? Comments and feedback requested :-) The file it produces is about 161k, which compresses to 16k using gzip. Gerv
Attached file makelist.pl v.0.1
cls: a reasonable first step would be to make the changes required to include a chromelist.txt file in the nightlies, but make it so that it gets that file straight from CVS. I could then check in a chromelist.txt I generated, and people could use that until we have a cross-platform generating script. How does that sound? New version of makelist.pl coming. Gerv
Attached file makelist.pl v.0.2.
This patch adds the making of chromelist.txt into Windows and Unix builds. Because Patch Maker currently doesn't work on the Mac, there's not much point in adding it to the Mac build system yet (although I've talked to smfr and I have an idea as to how to do that.) Looking for review from cls. Gerv
Comment on attachment 52602 [details] [diff] [review] Patch v.1 - incorporate making chromelist.txt into Windows and Unix builds gerv's changes look good to me; gerv, you want to verify that my change does what you want it to (removal of the list when building from the top, and, therefore, building in mozilla/config)?
Attachment #52602 - Flags: review+
Looks good to me. So... can I check this in? Gerv
i'd rather get at least the once-over from cls before committing.
The chromelist.txt as distributed from mozilla.org/hacking/patch-maker doesn't contain tabbrowser.xml. Does that indicate a problem with makelist.pl, or is there some genuine reason why tabbrowser.xml (and presumably some other files but I'm not sure which) can't be edited with patchmaker? I don't think the distributed chromelist file can be simply outdated, because it contains linkToolbar* which was added *after* the tab browser landed.
Yeah, but I had linktoolbar in my tree before then :-) I've updated the chromelist.txt files on the webserver; just grab a new one. Gerv
Thanks, that worked :)
make-list.pl is too generic. It should be make-chromelist.pl or make-chrome-list.pl. When I run it on my RH6.2 system, I get this error: Can't locate File/Spec/Functions.pm in @INC (@INC contains: ../../../mozilla/config /usr/lib/perl5/5.00503/i386-linux /usr/lib/perl5/5.00503 /usr/lib/perl5/site_perl/5.005/i386-linux /usr/lib/perl5/site_perl/5.005 .) at ../../../mozilla/config/make-list.pl line 49. BEGIN failed--compilation aborted at ../../../mozilla/config/make-list.pl line 49. I'm guessing that File::Spec::Functions isn't a standard perl5.004+ module. From the File::Spec man page: Since File::Spec is object oriented, subroutines should not called directly, as in: File::Spec::catfile('a','b'); but rather as class methods: File::Spec->catfile('a','b'); Removing the 'use File::Spec::Functions;' and making the above change seems to work for me.
Attached patch Patch v.2Splinter Review
Chris - thanks for the feedback. Are these new patches acceptable? Gerv
The perl script still contains a File::Spec::Unix call. I'm not sure if that's going to cause problems on win32 or not. r=cls if you can verify that the script works as it should on win32 (I can't test that right now).
Tests on IRC indicate that, on Windows, "use File::Spec::Unix" works, whereas "use File::Spec::foo" does not. Therefore, it is available. I'll check this in when the checkin frequency is lower, just in case. Gerv
OK, so I broke IRIX. This is somewhat surprising, as http://www.perldoc.com indicates that File::Spec is available on all Perl version from 5.004 through 5.004_05 upwards. So, what happens next? Is it my responsibility to work around the quirks of IRIX's copy of Perl? Do we have a minimum Perl version we require, and is IRIX meeting it? Can we check this back in, #ifdefed out for IRIX? And why were the Windows build changes backed out anyway? :-) Gerv
Sorry, it was late, I was tired and I couldn't find you after things went red. 5.004 is the minimum version that we require and is the version installed on cement. If there's a problem with that particular installation, then we can pull the tb and fix it. I thought that the feature wasn't supported in 5.004 at all (perldoc.com is news to me). Sorry about that.
Hey, no problem :-) I admire you for keeping an eye on the tree at 2am. So, would you like me to check this stuff back in when the tree opens, or do you want me to wait until the IRIX Perl question gets investigated? Gerv
I'll check it back in tonight. I'm going to rebuild perl on cement since it's using a NFS/IS installed version so who knows what's wrong with it. ;) Sure enough, it doesn't have File/Spec.pm .
I think http://www.perldoc.com is on crack. dec1 just went red because of the same issue so I downloaded perl5.004 & 5.004_05. File/Spec was added in 5.004_05 not 5.004. So either the script needs to be rewritten to not use File::Spec or we need to bump our minimum perl rev to 5.005 and upgrade the tinderboxes. Backing out the rules.mk change again.
<sigh>. What File::Spec gives us is a platform-independent way of manipulating path information (catdir(), catfile() etc.). I would expect it to be already in use, except I doubt we have much cross-platform build system Perl code. ;-) Would it be inconvenient to bump the minimum required Perl version? If and when build systems converge, we may well hit this problem again. I don't know. Gerv
I have r=cls from IRC. Gerv
Fixed. Gerv
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: