Closed
Bug 296900
Opened 19 years ago
Closed 19 years ago
Xcode 2.1: need to support per-build configuration build directories
Categories
(Firefox Build System :: General, defect)
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: mark, Assigned: mark)
References
()
Details
Attachments
(3 files, 4 obsolete files)
2.51 KB,
patch
|
cls
:
review+
jaas
:
review+
benjamin
:
review+
benjamin
:
approval-aviary1.1a2+
|
Details | Diff | Splinter Review |
5.81 KB,
patch
|
jaas
:
review+
cls
:
review+
|
Details | Diff | Splinter Review |
4.74 KB,
patch
|
mikepinkerton
:
review+
sfraser_bugs
:
superreview+
|
Details | Diff | Splinter Review |
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8b2) Gecko/20050605 Firefox/1.0+ Build Identifier: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8b2) Gecko/20050605 Firefox/1.0+ Xcode 2.1 was released earlier today. It breaks our build process, because build products are now placed in a build configuration-specific directory. (Build configurations replace build styles.) In the past, we used to be able to rely on finding build products of xcodebuild (or pbbuild or pbxbuild) in a project's build subdirectory. Now, we need to look in build/Development or build/Deployment. Because of this, a build under Xcode 2.1 will fail after xcodebuild, because the Mozilla build system does not find the products where it expects them. This affects DefaultPlugin, PrintPDE, and Camino. For example: |NEXT_ROOT= /usr/bin/xcodebuild -project DefaultPlugin.xcode -target "Default Plugin" -buildstyle Development GCC_VERSION="4.0" |deprecated option: -buildstyle is no longer supported in xcodebuild. Use -configuration instead. |(NOTE: project DefaultPlugin was written by an older version of Xcode (39) -- temporarily upgrading it to version 42 (without modifying project file)) | |=== BUILDING NATIVE TARGET Default Plugin WITH CONFIGURATION Development === |** BUILD SUCCEEDED ** |echo -n NSPLMOSS > "build/DefaultPlugin.build/Default Plugin.build/PkgInfo" |/bin/sh: line 1: build/DefaultPlugin.build/Default Plugin.build/PkgInfo: No such file or directory We need to detect Xcode > 2.1 and treat this case accordingly. Reproducible: Always Steps to Reproduce:
Assignee | ||
Comment 1•19 years ago
|
||
xcodebuild can be told to use the "old" location for build products on the command line. DefaultPlugin is also modified so that its PkgInfo is placed directly in the plugin after it is built, rather than being placed elsewhere and copied separately. The drawback here is that Xcode's defaults are overridden on the command line, so builds done from within Xcode.app aren't adjusted. This may be a minor nuisance, especially for Camino, but it's not as bad as it seems. I'm leaving the actual build directory set to its default, it's only the build product directory, to which products are copied after building, that I'm overriding. Speaking of Camino, I haven't yet tested this patch with it, although I've got a build cooking right now. I don't anticipate trouble. The alternative is to have the Mozilla build system test for the Xcode version and adjust itself to use the new paths as appropriate. The problem is that there's no really good "official" way to get the Xcode version. "xcodebuild -version" seems most appropriate, but as of 2.1, it produces the non-intuitive output "DevToolsCore-620.0; DevToolsSupport-610.0". For older versions of xcodebuild (some of which may call themselves pbxbuild or pbbuild), -version isn't even recognized. At least for now, I think that overriding the new default to match the old is preferrable to obscure version parsing.
Attachment #185525 -
Flags: superreview?(sfraser_bugs)
Attachment #185525 -
Flags: review?(cls)
Assignee | ||
Updated•19 years ago
|
Attachment #185525 -
Attachment is obsolete: true
Attachment #185525 -
Flags: superreview?(sfraser_bugs)
Attachment #185525 -
Flags: review?(cls)
Assignee | ||
Comment 2•19 years ago
|
||
-+ echo -n NSPLMOSS > "build/Default Plugin.plugin/PkgInfo" ++ echo -n NSPLMOSS > "build/Default Plugin.plugin/Contents/PkgInfo"
Attachment #185526 -
Flags: superreview?(sfraser_bugs)
Attachment #185526 -
Flags: review?(cls)
Assignee | ||
Comment 3•19 years ago
|
||
The main Camino target during the Camino build refers to the products built in the other targets in that project. BUILT_PRODUCTS_DIR is needed to tell Xcode where to find them. Also, while I'm at it, I'm removing the extraneous "all" target from the DefaultPlugin Makefile. rules.mk brings in a correct "all" target, having an extra one means that a "make" in that directory calls for xcodebuild twice.
Assignee | ||
Updated•19 years ago
|
Attachment #185526 -
Attachment is obsolete: true
Attachment #185533 -
Flags: superreview?(sfraser_bugs)
Attachment #185533 -
Flags: review?(cls)
Assignee | ||
Updated•19 years ago
|
Attachment #185526 -
Flags: superreview?(sfraser_bugs)
Attachment #185526 -
Flags: review?(cls)
Updated•19 years ago
|
Assignee: nobody → mark
Status: UNCONFIRMED → NEW
Ever confirmed: true
Attachment #185533 -
Flags: review?(cls) → review+
Attachment #185533 -
Flags: review+
Comment 4•19 years ago
|
||
Comment on attachment 185533 [details] [diff] [review] v3, handle Camino too I'm not a superreviewer but this is a build-config change only, which according to the rules does not require sr. Marking third-review for good measure, and a=me
Attachment #185533 -
Flags: superreview?(sfraser_bugs)
Attachment #185533 -
Flags: review+
Attachment #185533 -
Flags: approval-aviary1.1a2+
Checking in config/config.mk; /cvsroot/mozilla/config/config.mk,v <-- config.mk new revision: 3.320; previous revision: 3.319 done Checking in modules/plugin/samples/default/mac/Makefile.in; /cvsroot/mozilla/modules/plugin/samples/default/mac/Makefile.in,v <-- Makefile.in new revision: 1.12; previous revision: 1.11 done
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
Assignee | ||
Comment 6•19 years ago
|
||
Reopening to handle this a better way
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Assignee | ||
Comment 7•19 years ago
|
||
The initial patch forced Xcode 2.1 to use the build product directories that Xcode 2.0 used. That caused some unnecessary churning when building a project from the Xcode UI or running "xcodebuild" manually at the CLI. (In the latter case, I suggest using "make" instead though.) This update adds a configure check for the Xcode version, and if it indicates 2.1 or later, the make machinery will look for build products in the new-style directories. Testers, remember to autoconf.
Attachment #186527 -
Flags: review?(joshmoz)
Assignee | ||
Updated•19 years ago
|
Attachment #186527 -
Flags: review?(cls)
Attachment #186527 -
Flags: approval1.8b3?
Assignee | ||
Updated•19 years ago
|
Attachment #186527 -
Attachment is obsolete: true
Attachment #186527 -
Flags: review?(joshmoz)
Attachment #186527 -
Flags: review?(cls)
Attachment #186527 -
Flags: approval1.8b3?
Assignee | ||
Comment 8•19 years ago
|
||
Right - test doesn't short-circuit. -+ if test -n "$XCODEBUILD_VERSION" -a "$XCODEBUILD_VERSION" -ge 620 ; then ++ if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
Attachment #186531 -
Flags: review?(joshmoz)
Attachment #186531 -
Flags: approval1.8b3?
Assignee | ||
Updated•19 years ago
|
Attachment #186531 -
Flags: review?(cls)
Updated•19 years ago
|
Attachment #186531 -
Flags: approval1.8b3?
Assignee | ||
Comment 9•19 years ago
|
||
Adjust paths in Camino.xcode where needed.
Attachment #186552 -
Flags: superreview?(sfraser_bugs)
Attachment #186552 -
Flags: review?(pinkerton)
Attachment #186552 -
Flags: approval1.8b3?
Updated•19 years ago
|
Attachment #186552 -
Flags: approval1.8b3?
Comment 10•19 years ago
|
||
Comment on attachment 186552 [details] [diff] [review] Camino portion does |$TARGET_BUILD_DIR| work as expected in using Xcode pre-2.1? Just checking. does the change for the default plugin work with objdir builds?
Assignee | ||
Comment 11•19 years ago
|
||
(In reply to comment #10) > does |$TARGET_BUILD_DIR| work as expected in using Xcode pre-2.1? Just > checking. Tested with Xcode 1.1 on 10.3.9, and yes, you wind up with a Rezzed Camino.rsrc in the app bundle. > does the change for the default plugin work with objdir builds? It does. I only work with objdir builds. But at least as it stands now, Default Plugin isn't copied into the Camino app bundle. It's present in the project only as a file reference, there's no corresponding copy phase for it. On the other hand, it IS copied into Firefox, where it's superseded by the PFS, but that's bug 261751.
Attachment #186531 -
Flags: review?(cls) → review+
Attachment #186531 -
Flags: review?(joshmoz) → review+
Assignee | ||
Updated•19 years ago
|
Attachment #186552 -
Flags: superreview?(sfraser_bugs)
Attachment #186552 -
Flags: review?(pinkerton)
Assignee | ||
Comment 12•19 years ago
|
||
The Default Plugin not being included is probably an accident. Since I'm messing with it in this patch anyway, it might as well go back in to the app bundle. Note that the patch in attachment 186531 [details] [diff] [review] (not this patch, the core one) will bust any automated Camino packagers using Xcode 2.1, if the packager depends on Camino.app being in camino/build/Camino.app. The only thing that seems to be affected (according to lxr) is /tools/tinderbox/build-camino.pl. The best solution is to adapt Camino's Makefile to copy the built Camino.app from whereever the build system decided it was placed into objdir/dist/Camino.app, and use that as the jumping-off point for any automated packaging. I'm not touching this yet - it's not crucial until any automated packager is on 2.1.
Assignee | ||
Updated•19 years ago
|
Attachment #186552 -
Attachment is obsolete: true
Attachment #186697 -
Flags: superreview?(sfraser_bugs)
Attachment #186697 -
Flags: review?(pinkerton)
Assignee | ||
Updated•19 years ago
|
Attachment #186531 -
Flags: approval1.8b3?
Assignee | ||
Updated•19 years ago
|
Attachment #186697 -
Flags: approval1.8b3?
Updated•19 years ago
|
Attachment #186697 -
Flags: superreview?(sfraser_bugs) → superreview+
Updated•19 years ago
|
Attachment #186531 -
Flags: approval1.8b3? → approval1.8b3+
Comment 13•19 years ago
|
||
Comment on attachment 186697 [details] [diff] [review] Camino, two birds, one stone r=pink
Attachment #186697 -
Flags: review?(pinkerton) → review+
Comment 14•19 years ago
|
||
landed on trunk
Status: REOPENED → RESOLVED
Closed: 19 years ago → 19 years ago
Resolution: --- → FIXED
Attachment #186697 -
Flags: approval1.8b3?
Updated•6 years ago
|
Product: Core → Firefox Build System
You need to log in
before you can comment on or make changes to this bug.
Description
•