Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [papyrus-rt-dev] Makefile enhancements (patch #10)

Hi Ernesto,

   Here's a list of the changes made in patch #10:
  • made the copyright changes
  • added a safeguard (with a notice) for the existing Makefile(s) to prevent an overwrite by CMake generated Makefile(s)
  • made a Windows CMake config fix for an issue discovered during testing
  • removed the genCMake flag enabling automatic generation of both the existing Makefile and the new CMakeLists.txt outputs.
  • verified the changeset on the Ubuntu workstation making sure the existing Makefiles for both the modeled projects and RTS lib build, link, and execute

  And thankfully, Hudson is happy.

  Excluding additional documentation, I have nothing else planned for this changeset.

- Bill
 
>>> "William Byrne" <williamb@xxxxxxxxxx> 5/18/2016 4:39 PM >>>
Excellent. 

I've already made the copyright changes, and currently testing/fixing a few small things.  I expect to post the changes this evening.

BTW, thanks for correcting the "expected_src".  Not sure why the order of member variables differed in my case.  Perhaps I'm running the standalone generator incorrectly.
 
>>> Ernesto Posse <eposse@xxxxxxxxxxxxx> 5/18/2016 4:04 PM >>>
That looks great!

We have discussed about your contribution, and we'll merge it before the freeze, and I see that you already signed a CLA, and luckily the contribution is less than 1000 lines, so we can merge it without doing a CQ, but since this is not in the feature set for 1.0 and since we haven't had time to test it we are not going to publicize it yet, as a 1.0 feature. I think we'll be able to publicize it in 1.0.1, though.

Before merging it, could you update the copyright licences of the new files (and only the new files) replacing "The Eclipse Foundation" and "CEA LIST" to you or your company or whichever is appropriate? (and keeping the EPL notice of course)





On Wed, May 18, 2016 at 2:57 PM William Byrne <williamb@xxxxxxxxxx> wrote:
Exactly, but that's only for the rts.lib and rtsd.lib in the case of MSVC..

All the remaining build pieces such as the solution and project files get created under the build subdirectories I show for MyModel below in my previous message.

An example of two build tools side-by-side for the same model project:

Here are some msvc pics:





Here are some cygwin pics:





>>> Ernesto Posse <eposse@xxxxxxxxxxxxx> 5/18/2016 2:27 PM >>>
I see, so you set the TARGETOS and BUILD_TOOLS environment variables accordingly, and in particular, in Visual Studio you set them to 'windows' and 'x86-VisualC++-12.0' respectively?



On Wed, May 18, 2016 at 1:52 PM William Byrne <williamb@xxxxxxxxxx> wrote:
Building and debugging for both the modeled project and RTS occur within the Visual Studio IDE. Both VS 2013 & 2015 were tested. Having the ability to step into both the project and RTS was my primary motivation for introducing CMake. It's also possible to build the MSVC artifacts via the command line; e.g., cmake --build ..

It's also possible to have side-by-side generation for the various built tools; e.g.,

MyModel
src
-- build-msvc-2013
-- build-msvc-2015
-- build-msys
-- build-cygwin

Two points regarding the RTS library. 1) It's built and installed on demand as a dependency. 2) It's installed under the following directory:

<umlrt.rts>/lib/<os>/<build-tool>/<config>


>>> Ernesto Posse <eposse@xxxxxxxxxxxxx> 5/18/2016 1:24 PM >>>
Hi again William. We have been talking about your feature and we are curious about your testing on Windows under Visual Studio. The RTS has some Windows support but it has a different API, and my understanding is that using Visual Studio you are compiling with Microsoft's compiler, not with gcc. Isn't that the case? Your instructions are for Eclipse+Cygwin, and the RTS should work on Windows under Cygwin, but what do you do on VS?


On Wed, May 18, 2016 at 1:06 PM Christian Damus <give.a.damus@xxxxxxxxx> wrote:
Hi,

Yes, the templates configured in the source projects indicate CEA LIST because the majority of contributions to Papyrus are from CEA LIST.

It would be nice to make it more dynamic, using some kind of variable that the developer can define in the local workspace. If anyone can suggest how to make such improvement, I’ll be happy to realize it in the project configurations. For myself, I have shell scripts that automatically update the copyright headers of files in my git index, so I haven’t much worried about it.

Cheers,

Christian

On 18 May, 2016 at 13:02:55, William Byrne (williamb@xxxxxxxxxx) wrote:
Okay. I believe those were inserted by the Eclipse templates. Will correct.
>>> Ernesto Posse <eposse@xxxxxxxxxxxxx> 5/18/2016 12:54 PM >>>
By the way, we noticed that in the files you contributed you've added "The Eclipse Foundation" and "CEA LIST" as the copyright holders. I think you cannot attribute your files to them. They should have your copyright, but preserving the EPL.



On Tue, May 17, 2016 at 8:50 PM William Byrne <williamb@xxxxxxxxxx> wrote:
>> I assume that having a CMakeLists.txt would not have any effect if CMake is not used, correct?
Correct.

>> In particular, generating it would not conflict with the makefiles?
Yes, providing CMake is executed from a directory other than that containing the current Makefile. I'm adding a safety to ensure this.
>>> Ernesto Posse <eposse@xxxxxxxxxxxxx> 5/17/2016 4:27 PM >>>
I assume that having a CMakeLists.txt would not have any effect if CMake is not used, correct? In particular, generating it would not conflict with the makefiles?



On Tue, May 17, 2016 at 4:08 PM William Byrne <williamb@xxxxxxxxxx> wrote:
Hi Ernesto,

I realize that flag presents an issue regarding how it gets enabled. How do you feel about generating both the existing Makefile along with the new CMakeLists.txt file? When I get back to my office this evening, I can enable both modes and verify.

- Bill

>>> Ernesto Posse <eposse@xxxxxxxxxxxxx> 5/17/2016 12:11 PM >>>
I forgot to ask. I looked over your documentation, but it looks to me that it doesn't say how to enable the CMake build. Given that the cmakeGen flag in CppCodePattern doesn't seem to be set anywhere and there is no UI support for it, I'm guessing that this can only be enabled if the user is executing the generator from the development environment, or am I missing something?


On Tue, May 17, 2016 at 12:09 PM Ernesto Posse <eposse@xxxxxxxxxxxxx> wrote:
William, I pushed a patch trying to solve the testing issue, although I'm not sure what's the problem. Also, there was a problem with the existing CppMakefileGenerator: when you formatted it, the tabs were replaced by spaces, resulting in a bad makefile.

Anyway, you can get the patch by selecting the repo in the Git Repositories view, right-click->Fetch from Gerrit... and under "Change" select 72661-<patch-number>.


On Mon, May 16, 2016 at 9:56 PM charles+zeligsoft.com <charles@xxxxxxxxxxxxx> wrote:
Perfect! Thanks!

/Charles

On 2016.05.16, at 20:59 , William Byrne <williamb@xxxxxxxxxx> wrote:

Hi Charles,

I provided PDF guides for Windows and Ubuntu up-thread @ 5/15/2016 9:51 PM.

- Bill
>>> "charles+zeligsoft.com" <charles@xxxxxxxxxxxxx> 5/16/2016 8:31 PM >>>
Hi Bill,

Good and thanks for your efforts with this. It is appreciated.

I will defer to Ernesto and Barry for the review of the technical aspects.

Will there be a need to either user or toolsmith documentation for this capability?


Sincerely,

Charles Rivet
Senior Product Manager
charles@xxxxxxxxxxxxx

On 2016.05.16, at 14:20 , William Byrne <williamb@xxxxxxxxxx> wrote:

Hi Charles,
I believe the risk to be low if we consider generating both the existing Makefile and the additional CMake support.
Ernesto identified test areas that require attention. I'll patch the change for testing, and also verify that both Makefile generation modes can peacefully coexist.
Regarding support for Windows, the modeled binary can be built via the CLI and also from within Visual Studio (tested 2013 and 2015.) And this includes the ability to step into the RTS library (which was my initial motivation for the comprehensive build.) So effectively, a modeled project can be built and debugged from within Eclipse using the Cygwin configuration and/or from within Visual Studio. Both Eclipse and VS can be supported concurrently for a given CDT project providing each has its own "build" artifact directory
- Bill

>>> "charles+zeligsoft.com" <charles@xxxxxxxxxxxxx> 5/16/2016 1:45 PM >>>
Hi William,

The MVP for v1.0 only has Linux as a platform/target.

Before this is brought into v1.0, could you please indicate the level of risk and potential impact this additional feature will have on a June 30 release?

Thanks!


Sincerely,

Charles Rivet
Senior Product Manager
charles@xxxxxxxxxxxxx

On 2016.05.16, at 12:52 , William Byrne <williamb@xxxxxxxxxx> wrote:

Thanks, Ernesto.
It would be good to make the freeze especially for 1.0.
Barry, the RTS changes strictly concern building on the various platforms/targets utilizing the HAVE_/NEED_ autoconf semantics. Tested environments thus far: Ubuntu 12.04, Fedora 20, VS 2013, VS 2015, cygwin, msys


>>> Ernesto Posse <eposse@xxxxxxxxxxxxx> 5/16/2016 12:07 PM >>>
Hi William. I reviewed your change, and it looks very good, but I have a couple of comments and questions, which I posted in Gerrit.

I also added Barry as a reviewer, since the Gerrit includes some changes in the RTS (Barry is responsible for the RTS).

We have a feature freeze on Friday for 1.0, so I'm not sure if it will make it in time, but hopefully it will.

Thanks!


On Sun, May 15, 2016 at 9:52 PM William Byrne <williamb@xxxxxxxxxx> wrote:
PDF guides attached for both Windows and Ubuntu.
>>> "William Byrne" <williamb@xxxxxxxxxx> 5/14/2016 7:51 PM >>>
>> I'll speak to these details in the "simple" guide.

Attached PDF guide: Steps to setup and debug generated Papyrus-RT models on Windows using CMake & Cygwin
>>> "William Byrne" <williamb@xxxxxxxxxx> 5/14/2016 12:51 AM >>>
Hi Ernesto,

I rolled-back the formatting clean-up into the original commit via Amend (which is very convenient.) You may notice a few whitespace changes that amount to nothing more than converting tabs to spaces, and the elimination of trailing whitespace that Gerrit flagged in terrorizing red blocks.

I'll follow up with a simple step-by-step guide (with pics) for execution on Windows using Cygwin within Eclipse. But if you're familiar with cmake, give it a go. It should just work*. Aside from creating the canonical build sub-directory, be sure to symlink the RTS relative to the model source; e.g.,

[PingPong_CDTProject]/src/umlrt.rts -> org.eclipse.papyrus-rt/plugins/umlrt/runtime/rts
I'll speak to these details in the "simple" guide.

- Bill

* To generate CMakeLists.txt, the cmakeGen member in CppCodePattern must be set to true since generation defaults to the earlier Makefile implementation.

Tested x86 on: Ubuntu 12.04, Fedora 20, VS 2013, VS 2015, cygwin, msys


A couple of points regarding the code changes:

1) The new class, ConditionalDirective, might be refactored as a subclass of BlockInitializer, but for the time-being, the two classes are siblings that share an extracted subset of functionality encapsulated in the new ExpressionList class. The ConditionalDirective class provides #ifdef, etc.

2) The Makefile generators share the abstracted super-xtend, AbstractCppMakefileGenerator

>>> Ernesto Posse <eposse@xxxxxxxxxxxxx> 5/13/2016 4:48 PM >>>
Hi William. Yes, it's safe to abandon, and yes, we prefer to rebase over merge so we get a more "linear" history. Other projects have different policies, but it's rebase for us. I think our Oomph setup automatically configures the git and gerrit branch that is checked out to rebase on pull, but if not, you can always select the branch on EGit->Configure...->Rebase on pull (I don't recall the exact name of the menu items).


On Fri, May 13, 2016 at 4:37 PM William Byrne <williamb@xxxxxxxxxx> wrote:
Hi Ernesto,
Thanks for the formatting prefs. I'll apply and amend the changes as recommended. Is it safe to 'Abandon' the extraneous change from within the Gerrit web UI?

Still cutting my teeth on the Git/Gerrit paradigm. Question. From what I read, it's often preferred to Rebase when pulling the origin/master into my local repo. Does that sound right?

- Bill



>>> Ernesto Posse <eposse@xxxxxxxxxxxxx> 5/13/2016 3:54 PM >>>
Hi William. I took a quick look, but the change of formatting makes it quite hard to see where you made changes.

The new Oomph setup sets the default formatting, but it hasn't been applied yet to most of the sources, so naturally when you save, it applies the new formatting rather than the old, so it's not your fault, but unfortunately it becomes quite hard to see the diff.

I was wondering if perhaps you could use for now, the formatting preferences I'm attaching, reformat the files you changed and push to Gerrit again?

As I commented on your other change, when pushing to Gerrit, it's preferable to do a commit amend on your existing commit, reusing the same Change-Id in the commit message rather than creating a separate commit. If you do that, Gerrit will add a patch on the existing change-set, accumulating all the changes. Let me know if you have trouble with this.

Thanks


On Fri, May 13, 2016 at 10:32 AM Ernesto Posse <eposse@xxxxxxxxxxxxx> wrote:
Thanks William, sounds great! I'll take a look.


On Thu, May 12, 2016 at 4:46 PM William Byrne <williamb@xxxxxxxxxx> wrote:
Hi Ernesto,

I pushed the cmake changes which were successfully tested on the following: Ubuntu 12.04, Fedora 20, VS 2013, VS 2015, cygwin, msys

To support generation of empty arrays, I added the ConditionalDirective class to help satisfy MSVC requirements via #ifdef. This addition necessitated the ability to suppression indentation when emitting the directives.

The RTS lib is automatically built when building the given cmake'd model projects. The model and RTS lib can be debugged/stepped on Windows via the cygwin tooling. If interested, I can provide the eclipse tooling requirements to cmake, make, and debug from within the IDE.

Apologies for some unintended space formatting NEON decided to apply that escaped my attention prior to committing. I hope I didn't make a mess of things as this was my first Gerrit experience.

- Bill
>>> Ernesto Posse <eposse@xxxxxxxxxxxxx> 5/3/2016 3:45 PM >>>
Hi William. I don't think we have any task for makefiles, so by all means feel free to make a contribution (no pun intended).

Are you an Eclipse committer? If so, you can push your contribution to Gerrit and any of the project committers can merge it. If not, you will probably have to sign a Contributor Licence Agreement (see https://wiki.eclipse.org/CLA), get an Eclipse account (if you don't already have one) and set-up your environment as described in the links below.

* Contributing to an Eclipse project: https://eclipse.org/contribute/

Feel free to ask any questions about contributing, or the code generator or runtime.

Cheers,



On Tue, May 3, 2016 at 2:59 PM William Byrne <williamb@xxxxxxxxxx> wrote:
Is anyone slated to work on Makefile enhancements? If not, I'd like to implement a CMake solution for both codegen and the RT library.
_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev
_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev
_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev
_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev
_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev

_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev

_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev

_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev
_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev
_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev
_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev
_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev

Back to the top