Skip to content

Code commit and review process #87

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

Closed
pbrier opened this issue Oct 20, 2013 · 34 comments
Closed

Code commit and review process #87

pbrier opened this issue Oct 20, 2013 · 34 comments

Comments

@pbrier
Copy link
Contributor

pbrier commented Oct 20, 2013

Would it be a suggestion to implement a "formal" code commit and review process?
e.g. something like this:
https://github.com/energia/Energia/wiki/Bug-fix-and-new-feature-review-process

We could use topic branches, or at least have some staging in the process from feature/bugfix to master branch (e.g. using a "development" branch)

The github wiki pages could be used to document the process (along with coding styles and other considerations)

@bogdanm
Copy link
Contributor

bogdanm commented Oct 21, 2013

Hi Peter,

On Sun, Oct 20, 2013 at 1:14 PM, Peter Brier [email protected]:

Would it be a suggestion to implement a "formal" code commit and review
process?
e.g. something like this:

https://github.com/energia/Energia/wiki/Bug-fix-and-new-feature-review-process

We could use topic branches, or at least have some staging in the process
from feature/bugfix to master branch (e.g. using a "development" branch)

The github wiki pages could be used to document the process (along with
coding styles and other considerations)

One possible issue with this approach is that we accept pull requests from
two different sources: github.com and mbed.org. Defining a common policy
would probably be difficult due to the differences in the interfaces and
usability of these two sites, while defining two different policies might
be confusing. Is there something in particular that bothers you with our
current process?

Thanks,
Bogdan


Reply to this email directly or view it on GitHubhttps://github.com//issues/87
.

@pbrier
Copy link
Contributor Author

pbrier commented Oct 27, 2013

Currently using the HEAD master branch sometimes breaks a build, due to fixes that are pulled in, that are
not sufficiently scrutinized (e.g. see Issue #94 and issue #95, due to pulling in Issue #91).

I would propose that before anything is put in to the master branch, at least:

  • The code is build for all compilers, targets and configurations (it should not fail)
  • All samples are build (and auto tests performed)
  • The code is reviewed by someone else than the author

Does this make sense?

@emilmont
Copy link
Contributor

Hi Peter,
by default we do check the build only with ARMCC and the process is launched manually.

Does this make sense?

Of course, it makes sense.
We are planning to trigger this process automatically, triggered by github pull requests and to add all the compilers. This would have detected the issue introduced for the GCC compiler (#94).

Cheers,
Emilio

@aethaniel
Copy link

Hi Emilio,

Sorry to disturb but when this validation process would be available?

Does it also mean that any pull request, for example bringing new devices port, would have to take ARMCC into consideration?
Obviously a patch on code previously validated on ARMCC would have to be working.

My concern is really about providing new devices (and boards) with ARM GCC based projects.

Cheers

@emilmont
Copy link
Contributor

Hi Aethaniel,

when this validation process would be available?

We should have it before the end of the year.

Does it also mean that any pull request, for example bringing new
devices port, would have to take ARMCC into consideration?

No, it will be configurable, similarly to what we are doing for the build releases:
https://github.com/mbedmicro/mbed/blob/master/workspace_tools/build_release.py#L29

It is totally fine to submit a "pull request" adding support for a new target even if it is initially tested only with GCC.

Cheers,
Emilio

@matthewelse
Copy link
Contributor

Hi Everyone (this is probably more useful for Emilio),

Have you considered using something like Travis-CI, which could build all of the code when a push is made, and then provide you with a nice graphic that you could include in the README... The only problem might be that it probably doesn't have all of the embedded compilers. If Travis-CI doesn't include the necessary compilers, you could possibly look at something like Buildbot (used by OpenCV), which might allow more flexibility.

Thanks,

Matthew

@mbednotifications
Copy link

It'd be very easy to setup Travis test with GCC and could even run on Qemu
too. I'm more the happy to help! I suppose GCC would be rather enough to
catch most errors, while there might be some compiler-specific cases, we
could still get a green or red light for trivial pull-requests much
quicker. If merging and testing that is done by the maintainers is
currently decoupled, then we could probably make master 80% more stable by
adding Travis... By the way, one can deploy Travis on their site too
(perhaps this could be done to provide ARMCC).

@matthewelse
Copy link
Contributor

Just out of interest, who sent that? It just says mbed notifications...

@matthewelse
Copy link
Contributor

I've just got a travis proof of concept working - see 3da2549. The build succeeded on all of the targets that officially support GCC_ARM, however they use Ubuntu, so there's not much we can do about ARM_CC at the moment.

@matthewelse
Copy link
Contributor

Just done a test pull request as well, just to make sure that Travis is doing its job properly, and so far it seems to be working well... 👍

@aethaniel
Copy link

Indeed, Travis-CI seems really interesting.
Why do you have this error: E: Unable to locate package gcc-arm-none-eabi ?
Is it because we can't install external packages?

@matthewelse
Copy link
Contributor

I only had that error on either the first commit, which I had to fix, and when I purposely broke it on a branch to make sure it was working ok

@matthewelse
Copy link
Contributor

The most recent commit on the master branch passed. See this: https://travis-ci.org/matthewelse/mbed/builds/13145173

@aethaniel
Copy link

I saw. Great job, Matthew. Thanks for sharing this.

@matthewelse
Copy link
Contributor

No problem... It could be a bit interesting getting ARM_CC to run though. Maybe wine, or something like that would run it?

@aethaniel
Copy link

does it have to be installed each time a job is run? I saw the VM is rebuilt every time but maybe I misunderstood this.

@matthewelse
Copy link
Contributor

Yeah it has to be all reinstalled.

@aethaniel
Copy link

wouldn't this be a bit heavy at long term?

@matthewelse
Copy link
Contributor

Yes it would, especially if we're having to virtualise windows in order to
run ARM_CC to compile everything... It may be something that requires a custom install of travis-ci or something like it on ARM's own servers to keep compilation times down.

@aethaniel
Copy link

is ARM CC part of DS 5? there is a linux distribution for the community edition. Maybe Emilio could have the answer.

@matthewelse
Copy link
Contributor

I think that DS-5 and ARM-CC are separate but I might be wrong... Yeah he probably would, but I have a feeling that the mbed team are over in San Francisco for the week and it'll still be early morning there.

@matthewelse
Copy link
Contributor

Actually, I think you might be right. I'm downloading DS5 onto my ubuntu machine now, but it's a massive download (800MB) so it's still not practical in its raw form to be used on a vm that's rebuilt every time.
Just thought, I reckon the mbed online compiler is probably hosted on a linux server, so there must be a version of ARM-CC for linux.

@matthewelse
Copy link
Contributor

The good news is, ARMCC at least works on wine, though it's a bit of an ugly solution especially with a gui installer. I'm still waiting on the DS5 download.

@aethaniel
Copy link

The question of ARM-CC should be also the same for IAR.
Maybe having a build passed using Travis on ARM GCC would be enough for a first validation step before the pull request code review.

@matthewelse
Copy link
Contributor

It would certainly help, but it's by no means as useful as I'm sure Emilio and Bogdan would like it to be...

@matthewelse
Copy link
Contributor

(not having ARM-CC, that is) <- As this is used for the online compiler, this is the most important validation step I suppose

@matthewelse
Copy link
Contributor

There's also the fact that the build.py script tells you which target builds have passed and which have failed. It'd be nice to somehow use that to our advantage.

@mbednotifications
Copy link

I can compile with armcc without having to install the whole uvision
package. Just copy the whole armcc folder (with bin/include/lib) somewhere,
and then copy TOOLS.ini to the bin folder and you should be able to compile
from that path.
Not ideal but if you can run that from wine at least you don't have to run
the installer (just inzip). I'm not sure how all this works with licensing,
so please don't get me arrested ARM :)

On Monday, October 28, 2013 6:39:30 AM UTC-7, Matthew Else wrote:

There's also the fact that the build.py script tells you which target
builds have passed and which have failed. It'd be nice to somehow use that
to our advantage.


Reply to this email directly or view it on GitHubhttps://github.com//issues/87#issuecomment-27211788
.

@errordeveloper
Copy link

Looks like github has some issue with comments by email, few usernames including mine show up as mbednotifications instead or is it the way this is setup with the mailing list?

@matthewelse
Copy link
Contributor

Yeah I think we'll pretty much have to get ARM to sort this out for licensing reasons, but I'm sure they'll have no problem sorting it out, seeing as they make the compilers...

@matthewelse
Copy link
Contributor

The problem is that when you reply to the google group, it goes through the google group to github, so goes down in mbed notifications.

@Joey-Ye
Copy link

Joey-Ye commented Oct 29, 2013

Hi, Matt,

I've just got a travis proof of concept working - see 3da2549. The build succeeded on all of the targets that
officially support GCC_ARM, however they use Ubuntu, so there's not much we can do about ARM_CC at the
moment.

GCC_ARM should run on all linux distribution, windows and Mac OS. It was tested against ubuntu, redhat. People run it on debian successfully. https://launchpad.net/gcc-arm-embedded/+download

Please could you try it and let me know in case it has any problem running on your system.

Joey

@emilmont
Copy link
Contributor

Hi all,
sorry for the delay, this week we are very busy in California for the "mbed connect" conference and TechCon.

Yes, ARMCC is cross-platform and there are also releases for Linux.

Thank you for your suggestions about Travis. This goes exactly along what we are planning to do.

The big picture is that we want to build a bigger farm of mbed devices and we want to provide it as a service through mbed.org for automating these sort of tests: not only the build, but the actual functionalities.

We are actually hiring an engineer that will be responsible for this project:

Cheers,
Emilio

@matthewelse
Copy link
Contributor

That sounds really interesting, so are you planning to have some sort of automated infrastructure of mbeds that test the builds as they come in?

@0xc0170 0xc0170 closed this as completed Oct 15, 2014
artokin pushed a commit to artokin/mbed-os that referenced this issue Jan 12, 2018
… from d0a2597..8689fca

8689fca Reverting address check from transaction find (ARMmbed#89)
ca3c3ab Fix transactions to handle all token lengths (ARMmbed#87)

git-subtree-dir: features/nanostack/FEATURE_NANOSTACK/coap-service
git-subtree-split: 8689fca
kegilbert pushed a commit to kegilbert/mbed-os that referenced this issue Jan 25, 2018
… from d0a2597..8689fca

8689fca Reverting address check from transaction find (ARMmbed#89)
ca3c3ab Fix transactions to handle all token lengths (ARMmbed#87)

git-subtree-dir: features/nanostack/FEATURE_NANOSTACK/coap-service
git-subtree-split: 8689fca
cmonr pushed a commit that referenced this issue Jan 27, 2018
… from d0a2597..8689fca

8689fca Reverting address check from transaction find (#89)
ca3c3ab Fix transactions to handle all token lengths (#87)

git-subtree-dir: features/nanostack/FEATURE_NANOSTACK/coap-service
git-subtree-split: 8689fca
cmonr pushed a commit that referenced this issue Jan 27, 2018
… from d0a2597..8689fca

8689fca Reverting address check from transaction find (#89)
ca3c3ab Fix transactions to handle all token lengths (#87)

git-subtree-dir: features/nanostack/FEATURE_NANOSTACK/coap-service
git-subtree-split: 8689fca
cmonr pushed a commit that referenced this issue Jan 27, 2018
… from d0a2597..8689fca

8689fca Reverting address check from transaction find (#89)
ca3c3ab Fix transactions to handle all token lengths (#87)

git-subtree-dir: features/nanostack/FEATURE_NANOSTACK/coap-service
git-subtree-split: 8689fca
artokin pushed a commit to artokin/mbed-os that referenced this issue Feb 25, 2019
0a4f6be astyle validation (ARMmbed#89)
f43f52d add mention about mbed-os.lib generation and ignore example folder (ARMmbed#88)
3f48e87 .tmp_data_ptr = 0 added (ARMmbed#55)
9697f63 doc update + mbed-os 5 example application (ARMmbed#84)
891508b CI improvements - introduce Jenkinsfile (ARMmbed#87)

git-subtree-dir: features/frameworks/mbed-trace
git-subtree-split: 0a4f6be43da09feb2e55eae0697546bcc23d0a23
artokin pushed a commit to artokin/mbed-os that referenced this issue Jul 5, 2019
…8c37..9af7568

9af7568 Merge pull request ARMmbed#87 from ARMmbed/sync_with_mbedos
5c16e57 (via Mbed OS) ns_list: avoid UINT_FAST8_MAX
36b4ace nsdynmenlib API to add memory region to heap (ARMmbed#86)

git-subtree-dir: features/frameworks/nanostack-libservice
git-subtree-split: 9af756886f082ef8a26372fae5a337203395457f
linlingao added a commit to linlingao/mbed-os that referenced this issue Jul 12, 2019
disable lpticker due to slow access
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

9 participants