Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-dev] Programmatically creating maketargets: Attempted to beginRule: R/, does not match outer scope rule

I've run into a peculiar problem with CDT 2.1 (SDK).  We have developed our
own makefile generator for use with Standard CDT projects.  This has worked
just fine throughout CDT 1.2 and 2.0.x.  Now, I have just upgraded to CDT
2.1, and I get an exception when my makefile generator tries to
automatically remove or create its own make targets.  When it works, it
should manage the following targets:

Collins Make Build
Collins Make Rebuild
Collins Make Clean

Whenever I press our "Generate Makefiles and Make Targets" button, it
should remove the previous make targets (by name) if they exist and then
immediately create the make target again.

After upgrading to CDT 2.1, I often get exceptions when I perform these
operations.  If I close the project and reopen it, it might work again.
But if I shutdown Eclipse and reopen it, then the next time I perform these
operations I get exceptions.

Can anyone comment on what changed in CDT 2.1 that may have caused this?

Thanks,

Chad Barnes
Rockwell Collins Inc.

[excerpt from
com.rockwellcollins.cdt.managedMake.actions.ProjectBuilderAction.createMakeTargets()]
.
.
.
[412] if (fTargetManager.findTarget(fContainer, targetName) != null) {
[413]
fTargetManager.removeTarget(fTargetManager.findTarget(fContainer,
targetName));  //remove the target by name
[414] }
[415] fTargetManager.addTarget(fContainer, targets[i]);  //create the
target again
.
.
.

First attempt to generate my make targets:

java.lang.IllegalArgumentException: Attempted to beginRule: R/, does not
match outer scope rule: P/CH47F_Development
      at org.eclipse.core.internal.runtime.Assert.isLegal(Assert.java:58)
      at
org.eclipse.core.internal.jobs.ThreadJob.illegalPush(ThreadJob.java:106)
      at org.eclipse.core.internal.jobs.ThreadJob.push(ThreadJob.java:200)
      at
org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:58)
      at
org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:170)
      at
org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:95)
      at
org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1628)
      at
org.eclipse.core.internal.resources.File.setContents(File.java:335)
      at
org.eclipse.cdt.internal.core.CDescriptor$1.run(CDescriptor.java:341)
      at
org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1673)
      at
org.eclipse.cdt.internal.core.CDescriptor.save(CDescriptor.java:309)
      at
org.eclipse.cdt.internal.core.CDescriptor.saveProjectData(CDescriptor.java:575)
      at
org.eclipse.cdt.make.internal.core.ProjectTargets.translateDocumentToCDTProject(ProjectTargets.java:282)
      at
org.eclipse.cdt.make.internal.core.ProjectTargets.saveTargets(ProjectTargets.java:240)
      at
org.eclipse.cdt.make.internal.core.MakeTargetManager.writeTargets(MakeTargetManager.java:264)
      at
org.eclipse.cdt.make.internal.core.MakeTargetManager.removeTarget(MakeTargetManager.java:93)
      at
com.rockwellcollins.cdt.managedMake.actions.ProjectBuilderAction.createMakeTargets(ProjectBuilderAction.java:413)
      at
com.rockwellcollins.cdt.managedMake.actions.ProjectBuilderAction.createMakeFiles(ProjectBuilderAction.java:320)
      at
com.rockwellcollins.cdt.managedMake.actions.MakefileGenerator.genMake(MakefileGenerator.java:54)
      at
com.rockwellcollins.cdt.managedConfig.propertyPages.CMMPropertyPage$4.run(CMMPropertyPage.java:562)
      at
org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:303)
      at
org.eclipse.jface.operation.ModalContext.run(ModalContext.java:253)
      at
org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:397)
      at
com.rockwellcollins.cdt.managedConfig.propertyPages.CMMPropertyPage.autoGenerateMakefiles(CMMPropertyPage.java:559)
      at
com.rockwellcollins.cdt.managedConfig.propertyPages.CMMPropertyPage.performApply(CMMPropertyPage.java:542)
.
.
.

Second attempt (immediately following first)

java.lang.IllegalArgumentException: Attempted to beginRule: R/, does not
match outer scope rule: P/CH47F_Development
      at org.eclipse.core.internal.runtime.Assert.isLegal(Assert.java:58)
      at
org.eclipse.core.internal.jobs.ThreadJob.illegalPush(ThreadJob.java:106)
      at org.eclipse.core.internal.jobs.ThreadJob.push(ThreadJob.java:200)
      at
org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:58)
      at
org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:170)
      at
org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:95)
      at
org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1628)
      at
org.eclipse.core.internal.resources.File.setContents(File.java:335)
      at
org.eclipse.cdt.internal.core.CDescriptor$1.run(CDescriptor.java:341)
      at
org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1673)
      at
org.eclipse.cdt.internal.core.CDescriptor.save(CDescriptor.java:309)
      at
org.eclipse.cdt.internal.core.CDescriptor.saveProjectData(CDescriptor.java:575)
      at
org.eclipse.cdt.make.internal.core.ProjectTargets.translateDocumentToCDTProject(ProjectTargets.java:282)
      at
org.eclipse.cdt.make.internal.core.ProjectTargets.saveTargets(ProjectTargets.java:240)
      at
org.eclipse.cdt.make.internal.core.MakeTargetManager.writeTargets(MakeTargetManager.java:264)
      at
org.eclipse.cdt.make.internal.core.MakeTargetManager.addTarget(MakeTargetManager.java:77)
      at
com.rockwellcollins.cdt.managedMake.actions.ProjectBuilderAction.createMakeTargets(ProjectBuilderAction.java:415)
      at
com.rockwellcollins.cdt.managedMake.actions.ProjectBuilderAction.createMakeFiles(ProjectBuilderAction.java:320)
      at
com.rockwellcollins.cdt.managedMake.actions.MakefileGenerator.genMake(MakefileGenerator.java:54)
      at
com.rockwellcollins.cdt.managedMake.actions.MakeOnlyAction$1.run(MakeOnlyAction.java:46)
      at
org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:101)



Back to the top