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

Dependency clarification #1665

Open
wants to merge 3 commits into
base: develop
Choose a base branch
from
Open

Dependency clarification #1665

wants to merge 3 commits into from

Conversation

zfields
Copy link
Contributor

@zfields zfields commented Jan 3, 2019

Problem

The dependency information is incomplete, and the available information is unorganized and hard to process.

Solution

Introduced markdown tables to help standardize the dependencies and where to find them. Also created new section to describe using the toolchain via Docker container (which manages all dependencies for the end-user).

I have also supplied the Dockerfile used to create the image that supports containerized toolchain.


Completeness

  • User is totes amazing for contributing!
  • Contributor has signed CLA (Info here)
  • Problem and Solution clearly stated
  • Run unit/integration/application tests on device
  • Added documentation
  • Added to CHANGELOG.md after merging (add links to docs and issues)

@zfields zfields changed the title Dep Dependency clarification Jan 3, 2019
Removed dfu-util from build dependencies
Added gcc-arm-none-eabi dependencies
5. [Git](#5-git)
6. [Command line tools](#6-command-line-tools)
1. You can download and install the dependencies natively
1. You can install Docker and run the toolchain in a container _(with all dependencies supplied therein)_
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In markdown you just use the number 1 over and over again, and it will render it correctly. This allows you to rearrange steps without having to renumber the whole list.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While I agree that it renders correctly, markdown is still a human-readable format and I don't see any reason why the enumeration shouldn't be correct even in plain-text.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not only saying it works, but it's also recommended by linters.

That being said, I understand your feelings and I don't have a strong preference. You are correct it is more human readable 👍 , but I've learned to read it like a machine. 🤖

I'll change it back, it seems like the right thing to do.

The Docker build container will execute `make`, and any parameters you pass behind it will be passed directly to `make`. Although more verbose, the Docker build container has a couple of advantages over native installation.

1. Isolation of build dependencies required by the Particle firmware
1. Dependencies are always in sync and are managed by Particle
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2?

The Core/Photon uses an ARM Cortex M3 CPU based microcontroller. All of the code is built around the GNU GCC toolchain offered and maintained by ARM.

The build requires version 5.3.1 20160307 or newer of ARM GCC and will print an error
message if the version is older than this.

| OS | Distribution | Package Manager | Command |
|:-- |:------------ |:--------------- |:------- |
| Linux | Ubuntu | apt-get | `sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa && sudo apt-get update && sudo apt-get install gcc-arm-embedded` |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will install gcc 8 though, which we do not support.


| Confirmed version | Download page |
|:-----------------:|:-------------:|
| 5.3.1 | [launchpad.net](https://launchpad.net/gcc-arm-embedded) |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AFAIK ARM toolchains can no longer be downloaded from Launchpad. This link should instead be https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads


**Linux and Windows**:
- Download and install version 5.3.1 from: https://launchpad.net/gcc-arm-embedded
Additional 32-bit dependencies:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should generalize this section and remove Debian-specific references.


#### 6. Command line tools
### Zadig (Windows only)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In theory this should no longer be required as we implement proper WCID descriptors for Windows on both Gen 2 and Gen 3 devices (but not for Core). So we might add something like 'generally this should not be required for recent releases'.

@@ -1,10 +0,0 @@

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As far as I understand this change was reverted in #1664. I'd remove f77ae44 from this branch altogether in order to not accidentally overwrite #1664.

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

Successfully merging this pull request may close these issues.

2 participants