Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve CDT's setup #39

Closed
merks opened this issue Aug 12, 2022 · 3 comments
Closed

Improve CDT's setup #39

merks opened this issue Aug 12, 2022 · 3 comments

Comments

@merks
Copy link
Contributor

merks commented Aug 12, 2022

I'm doing several things that once. I hope that's okay.

I added a configuration in the same folder as the setup. It's reference via an annotation in the project (so that the setup archiver can discover it and include it in the setups.zip):

image

The configuration installs the latest available committers product and the workspace includes the main branch of the CDT project setup.

I've simplified the targlet definition:

image

I've tried as must has possible to use moving target (latest) repos where available so that developers notice problems introduced upstream early when they are first introduced.

This lead to two compile problems in two tests projects that I fixed with package imports and you'll see in the PR.

I've modified the working sets so that there is one per subfolder:

image

The first working set is any project not part of the subsequent working sets, i.e., currently just the org.eclipse.cdt.root project.

So the workspace now is organized like this:

image

merks added a commit to merks/cdt that referenced this issue Aug 12, 2022
Include a configuration, simplify the targlet for the target platform,
and enhance the working sets based on folder structure.

eclipse-cdt#39
@merks
Copy link
Contributor Author

merks commented Aug 14, 2022

@jonahgraham @ruspl-afed

The API baseline in the setup still looks over complicated to me. But looking at /org.eclipse.cdt.target/cdt-baseline.target I think that too is overly complicated and that it is not up-to-date. It uses this p2 site:

image

But the latest release is

image

So why not use this URL?

https://download.eclipse.org/tools/cdt/releases/latest/

I've not used API baseline tools in any of my projects so forgive if this is a stupid question, but what is the purpose of the other locations? Probably because planner mode is used but in the end, only the plugins and features present in the git repository need to be in the API base for comparison, right? So one could just have the single location of the most recent release and use slicer mode I think. Or am I misguided?

I believe the API baseline target could be reduced to this:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?>
<target name="Generated from CDT" sequenceNumber="36">
  <locations>
    <location includeAllPlatforms="true" includeConfigurePhase="true" includeMode="slicer" includeSource="false" type="InstallableUnit">
      <unit id="org.eclipse.cdt.autotools.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.build.crossgcc.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.cmake.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.core.autotools.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.debug.dap.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.debug.dap.gdbjtag.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.debug.gdbjtag.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.debug.standalone.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.debug.ui.memory.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.docker.launcher.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.examples.dsf.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.gnu.multicorevisualizer.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.jsoncdb.arm" version="0.0.0"/>
      <unit id="org.eclipse.cdt.jsoncdb.hpenonstop" version="0.0.0"/>
      <unit id="org.eclipse.cdt.jsoncdb.intel" version="0.0.0"/>
      <unit id="org.eclipse.cdt.jsoncdb.microsoft" version="0.0.0"/>
      <unit id="org.eclipse.cdt.jsoncdb.nvidia" version="0.0.0"/>
      <unit id="org.eclipse.cdt.launch.remote.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.launch.serial.feature.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.llvm.dsf.lldb.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.lsp.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.managedbuilder.llvm.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.meson.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.msw.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.qt.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.sdk.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.testsrunner.feature.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.unittest.feature.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.cdt.util" version="0.0.0"/>
      <unit id="org.eclipse.cdt.visualizer.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.launchbar.remote.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.remote.console.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.remote.proxy.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.remote.serial.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.remote.telnet.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.tm.terminal.connector.cdtserial.feature.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.tm.terminal.connector.remote.feature.feature.group" version="0.0.0"/>
      <unit id="org.eclipse.tm.terminal.feature.feature.group" version="0.0.0"/>
      <repository location="https://download.eclipse.org/tools/cdt/releases/latest"/>
    </location>
  </locations>
</target>

This would always follow the latest release properly and the set of IUs would need to be updated only if you added a plugin or feature but do not also include it in any existing feature but rather add it directly to the category.xml. In other words, the above list is minimized to eliminate IUs that are included but other IUs in the list, so the above are the root IUs of the inclusion tree.

Based on this, I can minimize the targlet for the API baseline to match...

merks added a commit to merks/cdt that referenced this issue Aug 14, 2022
Also simplify the corresponding API baseline targlet in the setup

eclipse-cdt#39
merks added a commit to merks/cdt that referenced this issue Aug 14, 2022
Also simplify the corresponding API baseline targlet in the setup

eclipse-cdt#39
merks added a commit to merks/cdt that referenced this issue Aug 14, 2022
Also simplify the corresponding API baseline targlet in the setup

eclipse-cdt#39
@jonahgraham
Copy link
Member

I haven’t tried planner vs slicer in the past to see if that solves the dependencies. But CDT has very many dependencies, so it doesn’t surprise me we have these projects listed

As for 10.6 vs 10.7 as baseline. The main branch has not actually been setup for post 10.7 dev yet. I need to find time to run through that checklist. IE what is needed is eclipse-cdt/cdt-infra#59 done for next version.

jonahgraham pushed a commit that referenced this issue Aug 22, 2022
Also simplify the corresponding API baseline targlet in the setup

#39
@jonahgraham
Copy link
Member

Thanks Ed for all the improvements. If there is more ideas please let us know.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants