# HG changeset patch # User timkelly # Date 1269896172 18000 # Node ID 352c0236f181a43b799f7c4e9ccde06048e5da32 # Parent ba4d2e64ac437bb4037ab825a050deed17f439f7 bug 10674. Sort sbsv2 configuration names with same platform_target alias prefix. ensure gcce error parser is used for sbsv2 GCCE4 build configs, add a project specific (sbsv2 only) edit box that allows user to append whatever they want to the -c parameter (the build alias). Also, fixed SDK support for TB kits now that TB92SF appears as a prefix rather than a suffix in the buildinfo.txt file. diff -r ba4d2e64ac43 -r 352c0236f181 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/ICarbideProjectInfo.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/ICarbideProjectInfo.java Fri Mar 26 14:07:53 2010 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/project/ICarbideProjectInfo.java Mon Mar 29 15:56:12 2010 -0500 @@ -298,5 +298,12 @@ */ public String extraSBSv2Args(); - + /** + * Appends arbitrary text to a default Carbide/Raptor configuration (the -c parameter). The default name is always given, e.g. armv5_urel, but users can + * append whatever they want to change the behavior of the build. + * @return the string to append the text to for the Raptor -c parameter + * + * @since 2.6 + */ + public String buildConfigAppender(); } diff -r ba4d2e64ac43 -r 352c0236f181 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildConfiguration.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildConfiguration.java Fri Mar 26 14:07:53 2010 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildConfiguration.java Mon Mar 29 15:56:12 2010 -0500 @@ -288,6 +288,10 @@ public int getErrorParserId(){ String plat = this.getPlatformString(); + if (this.getSBSv2Alias() != null && this.getSBSv2Alias().toUpperCase().contains(ISymbianBuildContext.GCCE_PLATFORM)){ + return ERROR_PARSERS_GCCE; + } + if (plat.equals(ISymbianBuildContext.EMULATOR_PLATFORM)){ return ERROR_PARSERS_WINSCW; } else if (plat.startsWith("ARMV")){ diff -r ba4d2e64ac43 -r 352c0236f181 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideProjectInfo.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideProjectInfo.java Fri Mar 26 14:07:53 2010 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideProjectInfo.java Mon Mar 29 15:56:12 2010 -0500 @@ -61,7 +61,8 @@ protected boolean overrideMakeEngine; protected String makeEngineToUse; protected String extraSBSv2Args; - + protected String buildAliasAppender; + // for internal plugin use public static final String OVERRIDE_WORKSPACE_SETTINGS_KEY = "overrideWorkspaceSettings"; //$NON-NLS-1$ public static final String CLEAN_LEVEL = "cleanLevel"; //$NON-NLS-1$ @@ -79,7 +80,7 @@ public static final String OVERRIDE_MAKE_ENGINE = "overrideMakeEngine"; //$NON-NLS-1$ public static final String MAKE_ENGINE_TO_USE = "makeEngineToUse"; //$NON-NLS-1$ public static final String EXTRA_SBSV2_ARGS = "extraSBSv2Args"; //$NON-NLS-1$ - + public static final String BUILD_ALIAS_APPENDER = "buildAliasAppendText"; //$NON-NLS-1$ public CarbideProjectInfo(IProject project) { this.projectTracker = new TrackedResource(project); @@ -229,6 +230,10 @@ if (orig != null){ extraSBSv2Args = orig; } + orig = storage.getAttribute(BUILD_ALIAS_APPENDER); + if (orig != null){ + buildAliasAppender = orig; + } } } @@ -262,6 +267,7 @@ overrideMakeEngine = BuilderPreferencePage.overrideDefaultMakeEngine(); makeEngineToUse = BuilderPreferencePage.makeEngine(); extraSBSv2Args = BuilderPreferencePage.extraSBSv2ArgsTextStore(); + buildAliasAppender = ""; // project setting only } public List getBuildConfigurations() { @@ -527,6 +533,11 @@ return BuilderPreferencePage.extraSBSv2ArgsTextStore(); } + public String buildConfigAppender() { + // This is a project setting only, i.e. no workspace setting to override + return buildAliasAppender; + } + /* * The following methods are non-API */ @@ -585,4 +596,8 @@ public String extraSBSv2ArgsProjectValue() { return extraSBSv2Args; } + + public String buildAliasAppendTextValue() { + return buildAliasAppender; + } } diff -r ba4d2e64ac43 -r 352c0236f181 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideProjectModifier.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideProjectModifier.java Fri Mar 26 14:07:53 2010 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideProjectModifier.java Mon Mar 29 15:56:12 2010 -0500 @@ -220,6 +220,8 @@ makeEngineToUse = settingValue; } else if (settingName.equals(EXTRA_SBSV2_ARGS)) { extraSBSv2Args = settingValue; + } else if (settingName.equals(BUILD_ALIAS_APPENDER)) { + buildAliasAppender = settingValue; } // now write it to the file @@ -318,6 +320,7 @@ storage.setAttribute(OVERRIDE_MAKE_ENGINE, overrideMakeEngine ? "true" : "false"); storage.setAttribute(MAKE_ENGINE_TO_USE, makeEngineToUse); storage.setAttribute(EXTRA_SBSV2_ARGS, extraSBSv2Args); + storage.setAttribute(BUILD_ALIAS_APPENDER, buildAliasAppender); } } } catch (CoreException e) { diff -r ba4d2e64ac43 -r 352c0236f181 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideSBSv2Builder.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideSBSv2Builder.java Fri Mar 26 14:07:53 2010 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideSBSv2Builder.java Mon Mar 29 15:56:12 2010 -0500 @@ -502,6 +502,11 @@ if (isTest) { configName = configName + ".test"; //$NON-NLS-1$ } + + if (cpi.buildConfigAppender() != null && cpi.buildConfigAppender().length() > 0){ + configName = configName + cpi.buildConfigAppender(); + } + args.add(configName); //TODO this causes output to go to stdout, but only at the end of the build. should we specify a logfile name and tail the file? diff -r ba4d2e64ac43 -r 352c0236f181 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/BuildSettingsUI.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/BuildSettingsUI.java Fri Mar 26 14:07:53 2010 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/BuildSettingsUI.java Mon Mar 29 15:56:12 2010 -0500 @@ -65,6 +65,8 @@ private Text makeEngineText; private Label extraArgsLabel; private Text extraArgsText; + private Label buildAliasLabel; // project setting only + private Text buildAliasText; // project setting only public BuildSettingsUI(Shell shell, boolean wantsSBSv2, boolean projectSetting) { this.shell = shell; @@ -256,6 +258,17 @@ extraArgsText.setToolTipText(Messages.getString("BuildSettingsUI.ExtraArgsToolTipText")); //$NON-NLS-1$ extraArgsText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); + if (projectSetting){ + buildAliasLabel = new Label(content, SWT.NONE); + buildAliasLabel.setText(Messages.getString("BuildSettingsUI.AlliasAppendLabel")); //$NON-NLS-1$ + buildAliasLabel.setToolTipText(Messages.getString("BuildSettingsUI.AlliasAppendToolTipText")); //$NON-NLS-1$ + GridData buildAliasGridData = new GridData(); + buildAliasLabel.setLayoutData(buildAliasGridData); + + buildAliasText = new Text(content, SWT.BORDER); + buildAliasText.setToolTipText(Messages.getString("BuildSettingsUI.AlliasAppendToolTipText")); //$NON-NLS-1$ + buildAliasText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); + } overrideDefaultMakeEngineCheck = new Button(content, SWT.CHECK); overrideDefaultMakeEngineCheck.setText(Messages.getString("BuildSettingsUI.OverrideMakeEngineLabel")); //$NON-NLS-1$ overrideDefaultMakeEngineCheck.setToolTipText(Messages.getString("BuildSettingsUI.OverrideMakeEngineToolTip")); //$NON-NLS-1$ @@ -457,6 +470,14 @@ extraArgsText.setText(args); } + public String getBuildAliasAppendText() { + return buildAliasText.getText(); + } + + public void setBuildAliasAppendText(String args) { + buildAliasText.setText(args); + } + public boolean getDontPromtTrackDeps(){ if (!projectSetting){ return dontCheckForExternalDependencies.getSelection(); diff -r ba4d2e64ac43 -r 352c0236f181 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/CarbideCPPProjectSettingsPage.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/CarbideCPPProjectSettingsPage.java Fri Mar 26 14:07:53 2010 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/CarbideCPPProjectSettingsPage.java Mon Mar 29 15:56:12 2010 -0500 @@ -273,6 +273,8 @@ cpi.writeProjectSetting(CarbideProjectInfo.MAKE_ENGINE_TO_USE, buildSettingsUI.getMakeEngine()); cpi.writeProjectSetting(CarbideProjectInfo.EXTRA_SBSV2_ARGS, buildSettingsUI.getExtraSBSv2Args()); + + cpi.writeProjectSetting(CarbideProjectInfo.BUILD_ALIAS_APPENDER, buildSettingsUI.getBuildAliasAppendText()); } List checkedComponents = getCheckedComponentFilenames(); @@ -328,6 +330,7 @@ buildSettingsUI.setOverrideDefaultMakeEngine(cpi.overrideMakeEngineProjectValue()); buildSettingsUI.setMakeEngineText(cpi.makeEngineProjectValue()); buildSettingsUI.setExtraSBSv2Args(cpi.extraSBSv2ArgsProjectValue()); + buildSettingsUI.setBuildAliasAppendText(cpi.buildAliasAppendTextValue()); } initMMPSelectionUI(cpi); diff -r ba4d2e64ac43 -r 352c0236f181 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/messages.properties --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/messages.properties Fri Mar 26 14:07:53 2010 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/messages.properties Mon Mar 29 15:56:12 2010 -0500 @@ -98,6 +98,8 @@ BuildSettingsUI.ExtraArgsLabelToolTip=Pass additional arguments to the sbs command-line. BuildSettingsUI.ExtraArgsText=Additional SBSv2 arguments BuildSettingsUI.ExtraArgsToolTipText=Add any extra arguments to be passed to sbs.bat here. +BuildSettingsUI.AlliasAppendLabel=Append to Build Configuration +BuildSettingsUI.AlliasAppendToolTipText=Appends the text to the default -c SBS parameter exactly as entered in the edit box. BuildSettingsUI.KeepGoingLabel=Keep going BuildSettingsUI.KeepGoingToolTip=Continue building, even if some build commands fail BuildSettingsUI.MakeEngineLabel=Make engine diff -r ba4d2e64ac43 -r 352c0236f181 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SBSv2Utils.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SBSv2Utils.java Fri Mar 26 14:07:53 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SBSv2Utils.java Mon Mar 29 15:56:12 2010 -0500 @@ -239,27 +239,7 @@ } } - Collections.sort(contexts, new Comparator() { - - public int compare(ISymbianBuildContext o1, ISymbianBuildContext o2) { - String platform1 = o1.getPlatformString(); - String platform2 = o2.getPlatformString(); - if (platform1.equals(platform2)) { - return o1.getTargetString().compareTo(o2.getTargetString()); - } else { - if (platform1.equals(ISymbianBuildContext.EMULATOR_PLATFORM)) { - return -1; - } - else if (platform2.equals(ISymbianBuildContext.EMULATOR_PLATFORM)) { - return 1; - } - } - return 0; - } - - }); - - return contexts; + return sortContexts(contexts); } /** @@ -381,5 +361,90 @@ } return sbsPath != null ? sbsPath : new Path(sbsScriptName); // dummy } + + private static List sortContexts(List contexts){ + + // 3 sorting stages to handle long Raptor aliases, and multiple aliases that have a similar platform and target prefix (e.g. armv5_urel) + + Collections.sort(contexts, new Comparator() { + + // First sort the target name (Debug / Release) and push Emulation to the top + public int compare(ISymbianBuildContext o1, ISymbianBuildContext o2) { + String sbsAlias1 = o1.getSBSv2Alias(); + String sbsAlias2 = o2.getSBSv2Alias(); + + if (o1.getPlatformString().equals(o2.getPlatformString())) { + if (o1.getSBSv2Alias().split("_").length == 2 && o2.getSBSv2Alias().split("_").length == 2) + return o1.getTargetString().compareTo(o2.getTargetString()); + else if (sbsAlias1.split("_").length >= 3 && sbsAlias1.split("_").length >= 3) + return 1; + } else { + if (sbsAlias1.toUpperCase().startsWith(ISymbianBuildContext.EMULATOR_PLATFORM)) { + return -1; + }else if (sbsAlias2.toUpperCase().startsWith(ISymbianBuildContext.EMULATOR_PLATFORM)) { + return 1; + } + } + return sbsAlias1.compareTo(sbsAlias2); + + } + + }); + + // Sort long alias names + Collections.sort(contexts, new Comparator() { + + public int compare(ISymbianBuildContext o1, ISymbianBuildContext o2) { + String sbsAlias1 = o1.getSBSv2Alias(); + String sbsAlias2 = o2.getSBSv2Alias(); + + if (sbsAlias1.split("_").length >= 3 && sbsAlias1.split("_").length >= 3 && !sbsAlias1.equals(sbsAlias2)){ + String temp1[] = sbsAlias1.split("_"); + String temp2[] = sbsAlias2.split("_"); + String suffix1 = ""; + String suffix2 = ""; + for (int i = 2; i < temp1.length; i++){ + suffix1 += temp1[i] + "_"; + } + + for (int i = 2; i < temp2.length; i++){ + suffix2 += temp2[i] + "_"; + } + + return suffix1.compareTo(suffix2); + } + + return 0; + } + }); + + // Sort the target string for long aliases + Collections.sort(contexts, new Comparator() { + + public int compare(ISymbianBuildContext o1, ISymbianBuildContext o2) { + String sbsAlias1 = o1.getSBSv2Alias(); + String sbsAlias2 = o2.getSBSv2Alias(); + String temp1[] = sbsAlias1.split("_"); + String temp2[] = sbsAlias2.split("_"); + String suffix1 = ""; + String suffix2 = ""; + for (int i = 2; i < temp1.length; i++){ + suffix1 += temp1[i] + "_"; + } + + for (int i = 2; i < temp2.length; i++){ + suffix2 += temp2[i] + "_"; + } + + if (sbsAlias1.split("_").length >= 3 && sbsAlias1.split("_").length >= 3 && suffix1.equals(suffix2)){ + return o1.getTargetString().compareTo(o2.getTargetString()); + } + + return 0; + } + }); + + return contexts; + } } diff -r ba4d2e64ac43 -r 352c0236f181 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java Fri Mar 26 14:07:53 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java Mon Mar 29 15:56:12 2010 -0500 @@ -109,7 +109,6 @@ public SymbianSDK(DeviceType device) { deviceEntry = device; scanSDK(); - } public void scanSDK(){ @@ -1042,8 +1041,18 @@ if (line.startsWith(BUILD_INFO_KEYWORD)){ String[] versionTokens = line.split(" "); if (versionTokens.length == 3){ - int index = versionTokens[2].lastIndexOf("v"); - if (index > 0){ + + if (versionTokens[2].toUpperCase().startsWith("TB92SF") || versionTokens[2].toUpperCase().endsWith("TB92SF")){ + setOSVersion(new Version("9.5.0")); + setSDKVersion(new Version("5.2.0")); + break; + } else if (versionTokens[2].toUpperCase().startsWith("TB101SF") || versionTokens[2].toUpperCase().endsWith("TB101SF")){ + setOSVersion(new Version("9.6.0")); + setSDKVersion(new Version("6.0.0")); + break; + } + else if (versionTokens[2].lastIndexOf("v") > 0){ + int index = versionTokens[2].lastIndexOf("v"); String osVersionString = versionTokens[2].substring(index+1, versionTokens[2].length()); if (osVersionString.compareToIgnoreCase("tb91sf") == 0){ diff -r ba4d2e64ac43 -r 352c0236f181 core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/SBSv2PlatformFilterComposite.java --- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/SBSv2PlatformFilterComposite.java Fri Mar 26 14:07:53 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/SBSv2PlatformFilterComposite.java Mon Mar 29 15:56:12 2010 -0500 @@ -17,6 +17,7 @@ package com.nokia.carbide.cpp.internal.api.sdk.ui; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.eclipse.jface.viewers.ArrayContentProvider; @@ -97,8 +98,13 @@ private void initTable(boolean refreshList) { - tableViewer.setInput(SBSv2Utils.getUnfilteredSBSv2BuildConfigurations(refreshList).keySet()); - + Object[] keySet = SBSv2Utils.getUnfilteredSBSv2BuildConfigurations(refreshList).keySet().toArray(); + List sbsAliases = new ArrayList(); + for (Object key : keySet) + sbsAliases.add((String)key); + Collections.sort(sbsAliases); + tableViewer.setInput(sbsAliases); + // check all configs tableViewer.setAllChecked(true);