Apache Newt is a smart build and package management tool, designed for C and C++
applications in embedded contexts. Newt was developed as a part of the
Apache Mynewt Operating System, more information on Apache Mynewt can be found
at https://mynewt.apache.org/.
Features
Newt is a build system that can read a directory tree, build a dependency tree, and emit the right build artifacts. It then allows you to do the following:
Download built target to board
Generate full flash images
Download debug images to a target board using a debugger
Conditionally compile libraries & code based upon build settings
Generate and download manufacturing flash images
Newt is also a source management system that allows you to do the following:
Create reusable source distributions (called repos) from a collection of code.
Use third-party components with licenses that are not comptatible with the ASF (Apache Software Foundation) license
Upgrade repos
How it Works
When Newt sees a directory tree that contains a “project.yml” file, it recognizes it as the base directory of a project, and automatically builds a package tree.
More information can be found in the “Newt Tool Manual” under Docs at https://mynewt.apache.org/.
Getting Started
To build Apache Newt, simply run the included build.sh script. For more
information on building and installng Apache Newt, please read
INSTALLING or the documentation on https://mynewt.apache.org/
Once you’ve installed newt, you can get started by creating a new project:
$ newt new your_project
For more information, and a tutorial for getting started, please take a look at
the Apache Mynewt documentation.
Contributing
Introduction
Anybody who works with Apache Mynewt can be a contributing member of the
community that develops and deploys it. The process of releasing an operating
system for microcontrollers is never done: and we welcome your contributions
to that effort.
Pull Requests
Apache Mynewt welcomes pull request via Github. Discussions are done on Github,
but depending on the topic, can also be relayed to the official Apache Mynewt
developer mailing list dev@mynewt.apache.org.
Filing Bugs
Bugs can be filed as Github issues
here. Where possible, please
include a self-contained reproduction case!
Feature Requests
If you are suggesting a new feature, please email the developer list directly
with a description of the feature or submit a
Github issue.
Writing Tests
We love getting newt tests! Apache Mynewt is a huge undertaking, and improving
code coverage is a win for every Apache Mynewt user.
Newt tests are regular Go tests and run in GitHub Actions on every pull
request. They can also be run locally from the repository root:
$ go test ./...
Useful variants:
$ go test -v ./... # show each test and newt's output
$ go test ./newt/toolchain # run tests of a single package
$ go test -v -run TestUpgrade ./newt # run only matching tests
$ go test -count=1 ./... # ignore cached test results
Only Go and git are needed; the tests do not need network access or a
newt binary. The test binary runs itself as newt, and each test works on
a copy of a project from newt/testdata in a temporary directory. Remote
repositories used by the upgrade tests are local dummy repositories stored
as git fast-export streams in newt/testdata/upgrade/dummy-repos; these
tests ignore your global and system git configuration.
New end-to-end tests can follow the same pattern: add a project under
newt/testdata and a *_test.go file in newt/ that runs newt commands
against it.
Writing Documentation
Contributing to documentation (in addition to writing tests), is a great way
to get involved with the Apache Mynewt project. The Newt documentation is found
in /docs.
Newt
Apache Newt is a smart build and package management tool, designed for C and C++ applications in embedded contexts. Newt was developed as a part of the Apache Mynewt Operating System, more information on Apache Mynewt can be found at https://mynewt.apache.org/.
Features
Newt is a build system that can read a directory tree, build a dependency tree, and emit the right build artifacts. It then allows you to do the following:
Newt is also a source management system that allows you to do the following:
How it Works
When Newt sees a directory tree that contains a “project.yml” file, it recognizes it as the base directory of a project, and automatically builds a package tree. More information can be found in the “Newt Tool Manual” under Docs at https://mynewt.apache.org/.
Getting Started
To build Apache Newt, simply run the included build.sh script. For more information on building and installng Apache Newt, please read INSTALLING or the documentation on https://mynewt.apache.org/
Once you’ve installed newt, you can get started by creating a new project:
For more information, and a tutorial for getting started, please take a look at the Apache Mynewt documentation.
Contributing
Introduction
Anybody who works with Apache Mynewt can be a contributing member of the community that develops and deploys it. The process of releasing an operating system for microcontrollers is never done: and we welcome your contributions to that effort.
Pull Requests
Apache Mynewt welcomes pull request via Github. Discussions are done on Github, but depending on the topic, can also be relayed to the official Apache Mynewt developer mailing list dev@mynewt.apache.org.
Filing Bugs
Bugs can be filed as Github issues here. Where possible, please include a self-contained reproduction case!
Feature Requests
If you are suggesting a new feature, please email the developer list directly with a description of the feature or submit a Github issue.
Writing Tests
We love getting newt tests! Apache Mynewt is a huge undertaking, and improving code coverage is a win for every Apache Mynewt user.
Newt tests are regular Go tests and run in GitHub Actions on every pull request. They can also be run locally from the repository root:
Useful variants:
Only Go and
gitare needed; the tests do not need network access or anewtbinary. The test binary runs itself as newt, and each test works on a copy of a project fromnewt/testdatain a temporary directory. Remote repositories used by the upgrade tests are local dummy repositories stored asgit fast-exportstreams innewt/testdata/upgrade/dummy-repos; these tests ignore your global and system git configuration.New end-to-end tests can follow the same pattern: add a project under
newt/testdataand a*_test.gofile innewt/that runs newt commands against it.Writing Documentation
Contributing to documentation (in addition to writing tests), is a great way to get involved with the Apache Mynewt project. The Newt documentation is found in /docs.
Getting Help
The best place to seek help is the Apache Mynewt slack channel
The Apache Mynewt developers mailing list is another good resource.