Closed Bug 520620 Opened 15 years ago Closed 14 years ago

Rename project build configurations to match modern project files

Categories

(Camino Graveyard :: General, defect)

All
macOS
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED
Camino2.1

People

(Reporter: alqahira, Assigned: stuart.morgan+bugzilla)

Details

Attachments

(1 file, 1 obsolete file)

63.75 KB, patch
alqahira
: feedback+
Details | Diff | Splinter Review
Right now our project has the old "Development" and "Deployment" build configuration names, while modern projects use "Debug" and "Release".  Besides being old and phonetically confusing, this creates implementation "hassles" when integrating third-party projects (for bug 518615, I'm going to have to change our project, xcconfig, and Makefile because the build configuration names no longer match up with the new Growl project).

Stuart mentioned before that this might have other implications throughout the build system, so we'd want to do this carefully and watch (and not, say, before 2.0).
Attached patch fix (obsolete) — Splinter Review
This worked in my Debug and Release (yay!) builds, so it looks like there weren't too many ripple effects. And we have one less local mod to a third-party project :)

Smokey, can you kick the tires on this just to get a second opinion on it building?

(I know that changing the symbol generation for third-party frameworks to point to $CONFIGURATION is a bit weird, since they don't use DWARF in Debug, but leaving it pointing to Release is even more silly since it's not built at all. At least this way someone could locally change the projects to generate DWARF symbols to test in Debug.)
Assignee: nobody → stuart.morgan+bugzilla
Status: NEW → ASSIGNED
Attachment #448374 - Flags: superreview?(mikepinkerton)
Attachment #448374 - Flags: feedback?(alqahira)
Comment on attachment 448374 [details] [diff] [review]
fix

rs=pink
Attachment #448374 - Flags: superreview?(mikepinkerton) → superreview+
Comment on attachment 448374 [details] [diff] [review]
fix

Per irc, this doesn't work on 10.5; Xcode/xcodebuild tries to copy the frameworks out of $(OBJDIR)/camino/build/$(BUILDSTYLE)/ rather than $(OBJDIR)/camino/$(3RDPARTYITEM)/build/$(BUILDSTYLE)/
Attachment #448374 - Flags: feedback?(alqahira) → feedback-
Attached patch v2Splinter Review
That's a well-established Xcode bug that I'd forgotten about despite having to deal with it in the past. On the bright side the fact that it works for me suggests the finally fixed in in the 10.6 toolchain.

This includes the standard workaround to this problem: manually copy the frameworks into the Camino build target directory, so when Xcode looks there for whatever inexplicable reason, it finds them. I've tried to make sure it will happen in the right order, but I can't test on 10.6 since it already works.
Attachment #448374 - Attachment is obsolete: true
Attachment #448420 - Flags: feedback?(alqahira)
Attachment #448420 - Flags: feedback?(alqahira) → feedback+
Comment on attachment 448420 [details] [diff] [review]
v2

>+		005C9E1111B44D3D002FAA43 /* Copy Frameworks to Build Dir */ = {
>+			isa = PBXShellScriptBuildPhase;
>+			buildActionMask = 2147483647;
>+			files = (
>+			);
>+			inputPaths = (
>+			);
>+			name = "Copy Frameworks to Build Dir";
>+			outputPaths = (
>+				"${BUILT_PRODUCTS_DIR}/Breakpad.framework",
>+				"${BUILT_PRODUCTS_DIR}/Growl.framework",
>+				"${BUILT_PRODUCTS_DIR}/Sparkle.framework",
>+			);
>+			runOnlyForDeploymentPostprocessing = 0;
>+			shellPath = /bin/sh;
>+			shellScript = "\"${SRCROOT}/scripts/copy-third-party-frameworks.sh\"";
>+			showEnvVarsInLog = 0;
>+		};
>+		005C9E1711B44D66002FAA43 /* Copy Frameworks to Build Dir */ = {
>+			isa = PBXShellScriptBuildPhase;
>+			buildActionMask = 2147483647;
>+			files = (
>+			);
>+			inputPaths = (
>+			);
>+			name = "Copy Frameworks to Build Dir";
>+			outputPaths = (
>+				"${BUILT_PRODUCTS_DIR}/Breakpad.framework",
>+				"${BUILT_PRODUCTS_DIR}/Growl.framework",
>+				"${BUILT_PRODUCTS_DIR}/Sparkle.framework",
>+			);
>+			runOnlyForDeploymentPostprocessing = 0;
>+			shellPath = /bin/sh;
>+			shellScript = "\"${SRCROOT}/scripts/copy-third-party-frameworks.sh\"";
>+			showEnvVarsInLog = 0;
>+		};

These are now the first shell script build phases, so they should show env vars instead of the "Copy Crash Reporter InfoPlist.strings Override" phases.

>diff --git a/scripts/copy-third-party-frameworks.sh b/scripts/copy-third-party-frameworks.sh
>new file mode 100755
>--- /dev/null
>+++ b/scripts/copy-third-party-frameworks.sh
>@@ -0,0 +1,19 @@
>+#!/bin/bash
>+# Xcode doesn't understand that our third-party frameworks are built into different directories
>+# than Camino is built into, so doing a normal copy phase doesn't work. Instead, we copy them
>+# manually.
>+# (This issue seems to be fixe in Snow Leopard, so we can hopefully eliminate this someday)
>+

Have this script echo what it's doing/purpose is at the start, just like the regular shell-script build phases.

r/f=ardissone with those changes.
Landed 3104:424de5db1c9b with those changes.
Status: ASSIGNED → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: