mynewt-newt.git
5 days agobuild: Skip config and transient packages master
Andrzej Kaczmarek [Wed, 21 Sep 2022 08:46:22 +0000 (10:46 +0200)] 
build: Skip config and transient packages

config and transient packages do not have any code by design, so there's
no need to include them in build. This should fix the problem when
package becomes transient at some point but .a for that package is
present in build folder from an old build and is still included when
linking image.

12 days agoAdd command to list available targets
Andrzej Kaczmarek [Wed, 14 Sep 2022 14:02:08 +0000 (16:02 +0200)] 
Add command to list available targets

Use 'newt target list'.

13 days agosyscfg: Write defs for packages included in build
Andrzej Kaczmarek [Fri, 2 Sep 2022 11:36:56 +0000 (13:36 +0200)] 
syscfg: Write defs for packages included in build

This adds symbols in syscfg.h for each package included in build. The
symbol name has "MYNEWT_PKG_" prefix followed with sanitized package's
full name, i.e. repo designator has "@" stripped and is separated with
"__" from package name, then all illegal characters in resulting name
are replaced with "_".

8 weeks agoDon't default to shallow clone for 'new' command
Szymon Janc [Tue, 2 Aug 2022 07:51:30 +0000 (09:51 +0200)] 
Don't default to shallow clone for 'new' command

Release tag may no longer be on top of master branch and shallow
copy would result if checkout fail.

2 months agomfg: Use app pkg FullName to resolve manifest directory
Andrzej Kaczmarek [Wed, 29 Jun 2022 14:32:33 +0000 (16:32 +0200)] 
mfg: Use app pkg FullName to resolve manifest directory

We should use FullName instead of Name since application bin directory
includes repo designator in its path - this applies to any app,
including bootloader.

2 months agoRevert "mfg: account for updated bootloader path in mfg command"
Andrzej Kaczmarek [Wed, 29 Jun 2022 14:31:17 +0000 (16:31 +0200)] 
Revert "mfg: account for updated bootloader path in mfg command"

This reverts commit 67de80e3a247f2ec9b678e6c3aeffb52e34a23ae.

3 months agoFix misleading error message for mfg raw
Jerzy Kasenberg [Mon, 27 Jun 2022 06:24:48 +0000 (08:24 +0200)] 
Fix misleading error message for mfg raw

Code checked existence of "name" field in yaml file
and when not found reports that "filename" was missing.

Now correct missing filed is reported.

3 months agoflashmap: Define more symbols in sysflash.h
Andrzej Kaczmarek [Wed, 8 Jun 2022 09:51:18 +0000 (11:51 +0200)] 
flashmap: Define more symbols in sysflash.h

sysflash.h will now have more symbols defined for each flash area.

4 months agoBump version to 1.11.0-dev
Szymon Janc [Fri, 6 May 2022 09:20:42 +0000 (11:20 +0200)] 
Bump version to 1.11.0-dev

5 months agoPrepare for Mynewt 1.10.0 release mynewt_1_10_0_rc1_tag mynewt_1_10_0_tag
Szymon Janc [Fri, 22 Apr 2022 08:16:31 +0000 (10:16 +0200)] 
Prepare for Mynewt 1.10.0 release

5 months agoUpdate go.mod for Mac build
Szymon Janc [Tue, 19 Apr 2022 16:16:19 +0000 (18:16 +0200)] 
Update go.mod for Mac build

This seems to be required by build on mac, otherwise newt build with
build.sh results in 'dirty' binary.

5 months agoFix resolving project relative path
Andrzej Kaczmarek [Wed, 30 Mar 2022 10:03:48 +0000 (12:03 +0200)] 
Fix resolving project relative path

Path for .newtrc is resolved before project is created.

5 months agoAdd options to skip some git related stuff on each build
Andrzej Kaczmarek [Wed, 30 Mar 2022 09:26:04 +0000 (11:26 +0200)] 
Add options to skip some git related stuff on each build

This adds two new options to newtrc.yml:
- skip_newt_compat - allows to skip checking newt compatibility
- skip_syscfg_repo_hash - allows to skip generation of repo hashes to
  syscfg

Those can skip operations that are not essential for build but can be
potentially git-intensive which means they are painfully slow on
Windows.

Both options are boolean and disabled by default.

6 months agoAdd single state config for syscfg
Andrzej Kaczmarek [Tue, 22 Mar 2022 10:05:18 +0000 (11:05 +0100)] 
Add single state config for syscfg

This can be used intead of separate settings for each state.

6 months agoAdd experimental state for syscfg
Andrzej Kaczmarek [Tue, 22 Mar 2022 10:04:41 +0000 (11:04 +0100)] 
Add experimental state for syscfg

This will produce warning if used.

6 months agocmake: Minor reformat
Andrzej Kaczmarek [Thu, 17 Mar 2022 13:55:54 +0000 (14:55 +0100)] 
cmake: Minor reformat

GoLand keeps reformatting this over and over again.

6 months agocmake: Fix trimming project path on Windows
Andrzej Kaczmarek [Thu, 17 Mar 2022 12:59:06 +0000 (13:59 +0100)] 
cmake: Fix trimming project path on Windows

strings.TrimPrefix does not work properly if path already uses
backshasles as path separator, filepath.Rel will take care of that
automatically.

Also trimProjectPath should now replace backslashes internally to keep
returned value consistent.

6 months agoCreate a shallow copy by default
Andrzej Kaczmarek [Mon, 14 Mar 2022 18:45:21 +0000 (19:45 +0100)] 
Create a shallow copy by default

First clone will be created as shallow by default, unless explicitly set
by user.

6 months agoAdd shallow clone option
Andrzej Kaczmarek [Fri, 11 Mar 2022 14:36:33 +0000 (15:36 +0100)] 
Add shallow clone option

This adds "--shallow <depth>" command line option and corresponding
"shallow_clone: <depth>" option to enable shallow copies for git
repositories.

If set to "0" (default), no shallow copy will be performed. Any other
positive value will clone up to that number of commits of history. This
effectively adds "--depth" option to "git clone" and "git fetch"
commands.

6 months agoFix overwriting newtrc settings with default value
Andrzej Kaczmarek [Fri, 11 Mar 2022 14:37:57 +0000 (15:37 +0100)] 
Fix overwriting newtrc settings with default value

newtrc settings are read properly, but then escape_shell value is
overwritten anyway by command line setting (or a default value) so it
was not really working as expected. Now newtrc settings are read at the
very beginning and then default value or value read from newtrc is used
as a default value for command line flag so it won't be overwritten.

6 months agoDo not enclose syscfg string values in parentheses
Andrzej Kaczmarek [Mon, 14 Mar 2022 18:51:24 +0000 (19:51 +0100)] 
Do not enclose syscfg string values in parentheses

6 months agoAdd jq package
Andrzej Kaczmarek [Tue, 15 Mar 2022 09:29:40 +0000 (10:29 +0100)] 
Add jq package

This is required for "newt dump" tests.

6 months agoAdd sysinit graph output in DOT format
Andrzej Kaczmarek [Mon, 7 Mar 2022 10:03:42 +0000 (11:03 +0100)] 
Add sysinit graph output in DOT format

This adds "newt target sysinit graphviz" subcommand that outputs sysinit
structure in DOT format which allows to render a graph of dependencies.

The simplest way to create a graph is by using Graphviz and ImageMagick:
$ newt target sysinit graphviz targetname | dot -Tsvg | display

6 months agoPrint sysinit dependencis in sysinit config output
Andrzej Kaczmarek [Mon, 7 Mar 2022 09:48:11 +0000 (10:48 +0100)] 
Print sysinit dependencis in sysinit config output

6 months agoAdd dependencies for sysinit functions
Andrzej Kaczmarek [Mon, 7 Mar 2022 09:07:31 +0000 (10:07 +0100)] 
Add dependencies for sysinit functions

Currently it's only possible to specify an arbitrary stage number for
sysinit function. This can be a bit troublesome if we need to assure
some packages are initialized in specific order since it required to
adjust stages for all relevant packages. Also some packages have stages
defined via syscfg (which is horrible) which means they can be changed
and the whole setup breaks.

This patch allows to order sysinit by dependencies between functions.
New syntax is allowed in addition to stage number:
- $after:func_name
- $before:func_name

The former will ensure that function is called after "func_name", and
the latter - after "func_name".

Each sysinit function shall specify one stage number or any number of
dependencies - those cannot be mixed. Some examples of valid sysinit
definitions:

(1)
func_1: 100

(2)
func_1: $before:func_2
func_2: $after:func_1

(3)
func_1:
  - $before:func_2
  - $after:func_3
func_2: $before:func_4,$before:func_5

Note that (2) is ok even though both functions depend on each other,
since effectively both dependencies are the same.

Multiple dependencies can be specified as a list or as a comma-separated
string (3).

An error will be raised if circular dependency is found when resolving
order of functions.

6 months agoAdd const syscfg values
Andrzej Kaczmarek [Mon, 7 Mar 2022 12:21:55 +0000 (13:21 +0100)] 
Add const syscfg values

This allows to define syscfg value that shall be const. A const syscfg
definition is simply a syscfg.vals setting placed in syscfg.defs
section.

An example of candicates for such vals are e.g. BLE_CONTROLLER, BLE_HOST
or BSP_* values that are defined to be used as conditionals in other
configuration files or in code. This change removes burden of adding a
full definition and possibly also restricions for syscfg we do not want
to be ever changed.

6 months agoBump osx image to xcode13.2 (12.1).
Andrzej Kaczmarek [Thu, 10 Mar 2022 12:49:29 +0000 (13:49 +0100)] 
Bump osx image to xcode13.2 (12.1).

6 months agoFix restrictions evaluation
Andrzej Kaczmarek [Mon, 7 Mar 2022 17:10:01 +0000 (18:10 +0100)] 
Fix restrictions evaluation

The resolving process seems to not update restrictions properly in some
cases. Here's how it fails to update them:

1. reloadCfg loads settings and restrictions (and other data too, but
   that's not relevant here) for all packages resolved in previous pass
2. configuration change is detected
3. dependencies are resolved

At this point package X is added due to pkg.deps constraints based on
syscfg Y.

4. reloadCfg loads settings and restrictions again
5. configuration change is detected
6. dependencies are resolved one more time

At this point, syscfg Y changed and package X is removed as previous
pkg.deps constraints do not apply anymore. Removing package X means
r.cfg.Settings is updated - this is crucial here.

7. reloadCfg load settings and restrictions one more time

And here's the problem: it does not detect that settings have changed
since those from removed package were already removed in previous pass.
Consequently it does not update r.cfg so restrictions state is kept
from previous pass, i.e. before package X was removed.

This can be fixed by always updating r.cfg to latest configuration as
load by reloadCfg.

6 months agoAdd shorthand form for choices
Andrzej Kaczmarek [Sat, 5 Mar 2022 18:12:55 +0000 (19:12 +0100)] 
Add shorthand form for choices

Choices can now be also specified as comma-separated string. This means
both following choices definitions are valid and define the same set of
allowed values:

choices:
  - foo
  - bar
  - foobar

choices: foo,bar,foobar

6 months agoIgnore non-existing value for defunct setting
Andrzej Kaczmarek [Sat, 5 Mar 2022 16:55:22 +0000 (17:55 +0100)] 
Ignore non-existing value for defunct setting

We only care if value was set somewhere, default value does not really
matter.

6 months agoAdd dependency graph output in DOT format
Andrzej Kaczmarek [Mon, 7 Mar 2022 11:40:09 +0000 (12:40 +0100)] 
Add dependency graph output in DOT format

This adds two commands "target depviz" and "target revdepviz" which can
output dependency graph in DOT format. The usage is the same as "target
dep" and "target revdep", only the ouput format is different.

7 months agoRevert "toolchain: Link all archives with -whole-archive"
Andrzej Kaczmarek [Fri, 25 Feb 2022 16:37:24 +0000 (17:37 +0100)] 
Revert "toolchain: Link all archives with -whole-archive"

This reverts commit 807df4f13976cc477bf505f36fd36011c5836c5a.

7 months agotoolchain: Link all archives with -whole-archive
Andrzej Kaczmarek [Mon, 21 Feb 2022 14:02:04 +0000 (15:02 +0100)] 
toolchain: Link all archives with -whole-archive

Using -whole-archives guarantees that all objects from .a files are
included in build. It should not affect regular builds since we want to
include all objects from Mynewt packages anyway, but it helps to resolve
weak symbols properly if weak and non-weak counterparts are defined in
the same package/library/archive.

7 months agoAllow to inject syscfg from command line
Andrzej Kaczmarek [Thu, 17 Feb 2022 09:05:11 +0000 (10:05 +0100)] 
Allow to inject syscfg from command line

This adds new -S/--syscfg command line switch to build and config
commands which allows to inject syscfg settings from command line.
Injected settings have highest priority and thus will override any
other value set by any other package.

The purpose of this setting is to easily allow to use single targets
to build multiple similar images, e.g. that have only different BLE
public address different. It is not intended to be used instead of
having multiple targets to build different images (which is still
preferred setup), but to allow quickly build variants of the same
target wihout need to edit files every time.

7 months agoAdd subpriorities to packages
Andrzej Kaczmarek [Thu, 17 Feb 2022 07:30:57 +0000 (08:30 +0100)] 
Add subpriorities to packages

This extends concept of subpriorities from config packages to all
"standard" packages, i.e. packages that are not target/config/app/bsp.

By default, package has subrpiority of 0 and this should not be changed
unless really necessary. An example where this can be useful are MCU
packages where we have a generic package for MCU family and another
package for specific MCU. In that case it may be useful to allow the
latter package override settings from the former package. Since both
packages are of the same (standard) type, without priorities it may not
be easy to do so.

7 months agoAdd config packages
Andrzej Kaczmarek [Wed, 9 Feb 2022 01:03:56 +0000 (02:03 +0100)] 
Add config packages

This adds new package type - config.

Config packages can be only included by target package or another
config package and have assigned priorities P_tgt > P_cfg > P_app.
To avoid ambiguities, each config package has assigned priority
depending on nesting level, starting with +99 for package directly
included from target package and decreasing with each include level.

7 months agoSkip include dirs that do not exist
Andrzej Kaczmarek [Thu, 17 Feb 2022 06:28:57 +0000 (07:28 +0100)] 
Skip include dirs that do not exist

It does not really matter for build process, but makes debugging build
issues easier as it does not clutter command line with tons of unused
include directories.

10 months agoBump mynewt-artifact to v0.0.24
Fabio Utzig [Mon, 1 Nov 2021 18:46:08 +0000 (15:46 -0300)] 
Bump mynewt-artifact to v0.0.24

Signed-off-by: Fabio Utzig <utzig@apache.org>
11 months agoci: update CI build to use go 1.16
Fabio Utzig [Thu, 7 Oct 2021 15:52:12 +0000 (12:52 -0300)] 
ci: update CI build to use go 1.16

Signed-off-by: Fabio Utzig <utzig@apache.org>
12 months agoFix copying repos with symlinks
Szymon Janc [Mon, 30 Aug 2021 13:38:14 +0000 (15:38 +0200)] 
Fix copying repos with symlinks

The CopyDir implementation did not created symlinks but instead was
creating copy of a files resultign in dirty repo.

13 months agocmake: Fix handling of packages in multiple repos
Andrzej Kaczmarek [Wed, 19 May 2021 11:47:26 +0000 (13:47 +0200)] 
cmake: Fix handling of packages in multiple repos

We should better use package name with repo when creating library names
to avoid duplicates when the same package exists in multiple repos.

14 months agoMerge pull request #440 from vikrant-proxy/mfg-create
Vipul Rahane [Tue, 20 Jul 2021 21:57:42 +0000 (14:57 -0700)] 
Merge pull request #440 from vikrant-proxy/mfg-create

mfg: account for updated bootloader path in mfg command

14 months agomfg: Add an optional base address flag to mfg commands that can specify a base addres...
Vikrant [Tue, 20 Jul 2021 21:56:38 +0000 (14:56 -0700)] 
mfg: Add an optional base address flag to mfg commands that can specify a base address other than 0 (#441)

14 months agomfg: account for updated bootloader path in mfg command 440/head
Vikrant More [Sun, 11 Jul 2021 21:16:59 +0000 (14:16 -0700)] 
mfg: account for updated bootloader path in mfg command

15 months agocmake: escape also '<' and '>'
Jerzy Kasenberg [Thu, 24 Jun 2021 13:03:59 +0000 (15:03 +0200)] 
cmake: escape also '<' and '>'

cmake execute commands with sh so < and > also has to be escaped like " ( )
This allows to have cflags in the form
-DMBEDTLS_USER_CONFIG_FILE=<mbedtls/config_mynewt.h>

15 months agoexecuteShell: escape also '<' and '>'
Jerzy Kasenberg [Wed, 23 Jun 2021 12:04:21 +0000 (14:04 +0200)] 
executeShell: escape also '<' and '>'

option --executeShell escaped quotation marks
on lines that were passed to bin/sh.

This also escapes '<' and '>' before running sh.
This allows to have cflags in the form
-DMBEDTLS_USER_CONFIG_FILE=<mbedtls/config_mynewt.h>

16 months agoAllow working on repos that lack a "master" branch
Fabio Utzig [Tue, 4 May 2021 10:40:59 +0000 (07:40 -0300)] 
Allow working on repos that lack a "master" branch

Add a new key option `branch:` that can be configured for git/github
downloaders, so a user can override the default of "master", and
`newt` is gonna look for the yaml files on the given branch, eg:

```
repository.my_development_repo:
    type: git
    url: git@github.com:my_org/my_development_repo.git
    branch: dev
    vers: 0-dev
```

This will clone the repo using "dev" as the default branch.

Signed-off-by: Fabio Utzig <utzig@apache.org>
17 months agodocs: update Linux install instructions for 1.9.0
Fabio Utzig [Sun, 11 Apr 2021 23:30:52 +0000 (20:30 -0300)] 
docs: update Linux install instructions for 1.9.0

Signed-off-by: Fabio Utzig <utzig@apache.org>
17 months agoApache Mynewt 1.9.0 release
Szymon Janc [Wed, 7 Apr 2021 08:18:27 +0000 (10:18 +0200)] 
Apache Mynewt 1.9.0 release

18 months agoUpdate to mynewt-artifact v0.0.22
Fabio Utzig [Tue, 16 Mar 2021 21:23:33 +0000 (18:23 -0300)] 
Update to mynewt-artifact v0.0.22

Also run `go mod tidy` to clean up dependencies.

Signed-off-by: Fabio Utzig <utzig@apache.org>
18 months agoAdd newt.exe to .gitignore
Szymon Janc [Fri, 12 Mar 2021 11:14:44 +0000 (12:14 +0100)] 
Add newt.exe to .gitignore

18 months agoUpdate go.sum and go.mod for Windows build
Szymon Janc [Fri, 12 Mar 2021 10:45:35 +0000 (11:45 +0100)] 
Update go.sum and go.mod for Windows build

Those seem to be required by build on Windows and result in 'dirty'
binary if newt is compiled with by build.sh.

18 months agotravis: Run on Bionic
Szymon Janc [Fri, 12 Mar 2021 09:51:53 +0000 (10:51 +0100)] 
travis: Run on Bionic

Update the Travis environment to use Bionic (18.04) instead of Xenial
(16.04) due to issues installing gcc-multilib.

18 months agobuilder: Add package names to the environment variables
Casper Meijn [Fri, 30 Oct 2020 13:17:33 +0000 (14:17 +0100)] 
builder: Add package names to the environment variables

19 months agodocs: Update Windows installation instruction to 1.8
Jerzy Kasenberg [Tue, 9 Feb 2021 12:29:15 +0000 (13:29 +0100)] 
docs: Update Windows installation instruction to 1.8

Instruction was outdated mostly for version 1.6.

19 months agoUpdate go.sum with correct sums
Andy Gross [Tue, 9 Feb 2021 19:02:34 +0000 (13:02 -0600)] 
Update go.sum with correct sums

Signed-off-by: Andy Gross <andy.gross@juul.com>
20 months agodocs: deprecated Homebrew install command
Krzysztof Kopyściński [Wed, 13 Jan 2021 09:50:52 +0000 (10:50 +0100)] 
docs: deprecated Homebrew install command
ruby command is deprecated and bash command should be used.

20 months agodocs: Update linux build instruction
Jakub Tyszkowski [Sat, 5 Dec 2020 22:02:19 +0000 (23:02 +0100)] 
docs: Update linux build instruction

Following the existing instruction resulted in an outdated version of the tool.
This caused many problem when one tried to use it and made the first experience
very unpleasent.

21 months agonewt: Support legacy TLV option
Andy Gross [Wed, 18 Nov 2020 17:47:44 +0000 (11:47 -0600)] 
newt: Support legacy TLV option

This patch adds support for generating images using legacy TLV values for
AES_NONCE and SECRET_ID.  This allows newer newt tool versions to be able to
create new application images for devices which only support legacy TLV values.

Signed-off-by: Andy Gross <andy.gross@juul.com>
21 months agoRelax empty values override restriction
Jerzy Kasenberg [Fri, 4 Dec 2020 11:41:03 +0000 (12:41 +0100)] 
Relax empty values override restriction

With this change syscfg variables that are defined but don't have
default values in syscfg.defs, can be set in other packages and not only
bsp/app/target.

This way MCU packages can set values that otherwise would have to be
set by every BSP.

Since there is no default value, single package that provides value
is not creating any conflicts.

22 months agoMerge pull request #421 from mkiiskila/fix_dep_flags
mkiiskila [Tue, 24 Nov 2020 12:09:27 +0000 (14:09 +0200)] 
Merge pull request #421 from mkiiskila/fix_dep_flags

newt; fix flag use when building dependencies.

22 months agonewt; fix flag use when building dependencies. 421/head
Marko Kiiskila [Mon, 23 Nov 2020 13:41:49 +0000 (15:41 +0200)] 
newt; fix flag use when building dependencies.
Specifically, need the missing asflags when using clang to build sim.

22 months agoMerge pull request #418 from agross-korg/section-tlv-support
Andy Gross [Wed, 11 Nov 2020 17:18:17 +0000 (11:18 -0600)] 
Merge pull request #418 from agross-korg/section-tlv-support

Add Section TLV support to images

22 months agonewt: Upgrade mynewt-artifact to v0.0.20 418/head
Andy Gross [Fri, 23 Oct 2020 22:06:51 +0000 (17:06 -0500)] 
newt: Upgrade mynewt-artifact to v0.0.20

This patch updates the mynewt-artifact to v0.0.20.  This is necessary to pick
up changes required to support the section TLV.

Signed-off-by: Andy Gross <andy.gross@juul.com>
22 months agonewt: Add sections option to newt create-image cmd
Andy Gross [Mon, 19 Oct 2020 21:32:09 +0000 (16:32 -0500)] 
newt: Add sections option to newt create-image cmd

This patch adds an additional option to the newt create-image command.  Some
images may require an additional TLV To describe an elf section inside the
binary.  This TLV will be used later in post-processing where the elf
information is not available.

Signed-off-by: Andy Gross <andy.gross@juul.com>
23 months agoupgrade: Don't abort if repo references bad commit
Christopher Collins [Wed, 25 Mar 2020 00:13:35 +0000 (17:13 -0700)] 
upgrade: Don't abort if repo references bad commit

Newt would abort the upgrade if a repo's dependency list specifies a
nonexistent commit.  This was bad because it means a repo maintainer
could break `newt upgrade` for all users by deleting a tag or by
introducing a typo to their `repository.yml` file.

Now newt just warns the user about the problem and proceeds with the
upgrade.

23 months agobuild.sh: Invoke sh as a login shell
Christopher Collins [Mon, 22 Jun 2020 17:30:38 +0000 (10:30 -0700)] 
build.sh: Invoke sh as a login shell

This fixes #390

build.sh depends on the `go` executable.  This executable may not be in the
user's path when /bin/sh is invoked as a non-login shell (a non-login
shell does not execute the various "profile" scripts).  Since we don't
package `go` as part of the newt distribution, we should not assume it
is available to the build script in a non-login shell.

23 months agobuilder: Add build profile to the environment variables
Casper Meijn [Fri, 23 Oct 2020 07:57:23 +0000 (09:57 +0200)] 
builder: Add build profile to the environment variables

2 years agoAllow newt to use number of physical cores as default for number of jobs in newt...
Mark Blake [Mon, 14 Sep 2020 20:08:36 +0000 (13:08 -0700)] 
Allow newt to use number of physical cores as default for number of jobs in newt by default (#415)

- Fixed number of cpus to be physical cores by default if possible

2 years agomfg/README.md: Section describing MMR structure
Christopher Collins [Wed, 12 Aug 2020 23:47:53 +0000 (16:47 -0700)] 
mfg/README.md: Section describing MMR structure

2 years agoAdd Cflags and Include paths to pre_build_cmds environment
Casper Meijn [Sun, 5 Jul 2020 07:11:56 +0000 (09:11 +0200)] 
Add Cflags and Include paths to pre_build_cmds environment

Add the CFLAGS and INCLUDE_PATH as used by newt to the environment when
starting a pre_build_cmd. I need this to execute rust bindgen correctly.
This program will parse the mynewt headers and generate rust code from
that and therefore it needs the correct c-flags and include paths.

2 years agocmake: Fix link dir paths on Windows
Michał Narajowski [Wed, 1 Jul 2020 13:07:00 +0000 (15:07 +0200)] 
cmake: Fix link dir paths on Windows

2 years agocmake: Fix processing archive files
Michał Narajowski [Thu, 25 Jun 2020 13:07:33 +0000 (15:07 +0200)] 
cmake: Fix processing archive files

Libraries were treated like source files and were not properly
handled by cmake.

2 years agoExecute .sh scripts with bash on windows
J. Ipanienko [Wed, 19 Feb 2020 21:19:16 +0000 (13:19 -0800)] 
Execute .sh scripts with bash on windows

2 years agoFix --imgfile option for the `load` command
Christopher Collins [Fri, 12 Jun 2020 20:29:09 +0000 (13:29 -0700)] 
Fix --imgfile option for the `load` command

`--imgfile` lets the user specify the image file to load rather than
letting newt derive it from the target name.

This option wasn't working properly.  For the download scripts to load
the specified file, the `BIN_BASENAME` environment variable needs to be
set to the file's *base* (i.e., strip the `.img` extension).

Prior to this commit, this environment variable wasn't being overridden
at all.  The effect was that the `--imgfile` option was ignored
completely.

2 years agocmake: Make CMakeLists.txt more readable
Michał Narajowski [Wed, 20 May 2020 09:10:01 +0000 (11:10 +0200)] 
cmake: Make CMakeLists.txt more readable

2 years agoAdd include_dirs setting to syscfg
Michał Narajowski [Thu, 30 Apr 2020 08:27:12 +0000 (10:27 +0200)] 
Add include_dirs setting to syscfg

Allows to specify directories to include in an external SDK
that does not follow the convention used by Newt of putting
everything under "src/ext/".

2 years agodebug: add --elffile option
Christopher Collins [Tue, 28 Apr 2020 00:43:46 +0000 (17:43 -0700)] 
debug: add --elffile option

This option allows the user to specify the .elf file to load into gdb.
If the option is unspecified, newt uses the .elf file from the target's
bin directory as before.

2 years agoload: add --imgfile option
Christopher Collins [Tue, 28 Apr 2020 00:12:44 +0000 (17:12 -0700)] 
load: add --imgfile option

This option allows the user to specify the .img file to load onto the
device.  If the option is unspecified, newt loads the image file from
the target's bin directory as before.

2 years agoLog exported environnment variables with `-ldebug`
Christopher Collins [Wed, 22 Apr 2020 17:39:23 +0000 (10:39 -0700)] 
Log exported environnment variables with `-ldebug`

2 years agoINSTALLING.md fix
Krzysztof Kopyściński [Thu, 26 Mar 2020 08:57:10 +0000 (09:57 +0100)] 
INSTALLING.md fix

- corrected requiered version of Go
- second method of installation made easier

2 years agoBump version to 1.9.0-dev
Szymon Janc [Thu, 9 Apr 2020 12:27:56 +0000 (14:27 +0200)] 
Bump version to 1.9.0-dev

2 years agoFixes for 1.8 release
Szymon Janc [Mon, 23 Mar 2020 12:24:30 +0000 (13:24 +0100)] 
Fixes for 1.8 release

Updates dates and removes no longer bundled vendor/ libraries from
LICENSE file.

2 years agoApache Mynewt 1.8.0 release
Szymon Janc [Wed, 18 Mar 2020 13:47:11 +0000 (14:47 +0100)] 
Apache Mynewt 1.8.0 release

2 years agorun: Fix options parsing for newt run (#393)
Vipul Rahane [Wed, 8 Apr 2020 02:42:39 +0000 (19:42 -0700)] 
run: Fix options parsing for newt run (#393)

- Fixing parsing of encryption filenames and options for the run command

2 years agoRemoved unnecessary newt build
Stefan Diewald [Thu, 2 Apr 2020 16:26:41 +0000 (18:26 +0200)] 
Removed unnecessary newt build

Removed unnecessary newt build

Signed-off-by: Stefan Diewald <dwld@users.noreply.github.com>
2 years agoRemoved create-image for bootloader, added link to file structure
Stefan Diewald [Thu, 2 Apr 2020 07:13:36 +0000 (09:13 +0200)] 
Removed create-image for bootloader, added link to file structure

Removed create-image for the bootloader as commented by @ccollins476ad.
Added a link to the file structure overview in the mfg README.md

2 years agoUpdate documentation for mfg create
Stefan Diewald [Wed, 1 Apr 2020 13:40:57 +0000 (15:40 +0200)] 
Update documentation for mfg create

Update for the documentation of mfg create command
to match the current implementation.

Signed-off-by: Stefan Diewald <dwld@users.noreply.github.com>
2 years agoUse rc-tag-inference in inter-repo dependencies
Christopher Collins [Tue, 24 Mar 2020 23:54:37 +0000 (16:54 -0700)] 
Use rc-tag-inference in inter-repo dependencies

A repo can specify dependencies in its `repository.yml` file, e.g.,

    repo.deps:
        apache-mynewt-nimble:
            type: github
            user: apache
            repo: mynewt-nimble
            vers:
                mynewt_1_4_0_tag: 1.0.0

The `mynewt_1_4_0_tag` tag of *this repo* depends on nimble 1.0.0.  If
`mynewt_1_4_0_tag` does not exist, then `newt upgrade` would fail.

The tag-validity check that newt was doing here was too strict.  If the
specified tag doesn't exist, newt should attempt rc-tag-inference.  For
example, if `mynewt_1_4_0_tag` does not exist, newt should check for the
latest corresponding rc tag (e.g., `mynewt_1_4_0_rc1_tag`).  If one is
found, then the dependency list is valid after all.

Newt already applies this rc-tag-inference procedure when it actually
performs the upgrade.  However, the check that happens before the
upgrade was not using rc-tag-inference.  This commit adds
rc-tag-inference to this check.

2 years agodownloader: Return base commit if no rc tag
Christopher Collins [Tue, 24 Mar 2020 23:54:46 +0000 (16:54 -0700)] 
downloader: Return base commit if no rc tag

downloader.LatestRc() infers the latest "rc" tag given a base string
(e.g., "mynewt_1_8_0_tag" might resolve to "mynewt_1_8_0_rc3_tag").

If there are no rc tags for the given base, this function used to return
"".  This is error prone and it requires the caller to stash the base
string until he has inspected the return value.

This commit changes this function so that it returns the base string
unmodified if there are no rc tags.

2 years agonewt new: Infer latest "rc" tag for blinky
Christopher Collins [Wed, 18 Mar 2020 16:38:43 +0000 (09:38 -0700)] 
newt new: Infer latest "rc" tag for blinky

To prevent code churn during the release process, newt infers the latest
"rc" tag when updating a Mynewt repo (rather than forcing the maintainer
to update the non-rc tag each time a new release candidate is created).

This tag inference feature was applied to repos during `newt upgrade`.
It was not applied to the blinky repo during `newt new`.'

This commit adds tag inference to `newt new`.

2 years agoUpdate go.sym with missing checksums
Szymon Janc [Tue, 10 Mar 2020 16:42:40 +0000 (17:42 +0100)] 
Update go.sym with missing checksums

2 years agoupgrade: Don't warn on fixup to an equivalent URL
Christopher Collins [Fri, 6 Mar 2020 01:00:31 +0000 (17:00 -0800)] 
upgrade: Don't warn on fixup to an equivalent URL

If `project.yml` specifies a repo with a different URL than the current
`origin`, newt fixes the `origin` URL and produces a warning like this:

    WARNING: Repo's "origin" remote points to unexpected URL:
    git@github.com:apache/mynewt-nimble.git; correcting it to
    https://github.com/apache/mynewt-nimble.git.  Repo contents may be
    incorrect.

This commit suppresses the warning if the two URLs are "equivalent".
URLs are considered equivalent if:

1. The strings are identical after the optional ".git" suffixes are
   stripped,

       OR

2. One is a "git@" URL and the other is an "https://" URL for the same
   repo.  For example:
       git@github.com:apache/mynewt-core.git
       https://github.com/apache/mynewt-core

2 years agoFix skipping the copy of empty dirs on tree copies
Fabio Utzig [Thu, 5 Mar 2020 11:53:18 +0000 (08:53 -0300)] 
Fix skipping the copy of empty dirs on tree copies

The CopyDir implementation did not copy empty directories which was
resulting in a dirty repo after the tree copy with non-cloned submodules
(empty dirs) was performed.

The issue resulted from calling `MkdirAll` with the parent directory of
the current directory under copy, followed by a `ReadDir` which would
result in an empty list of files/dirs, skipping the directory creation
(by skipping the recursive tree copy).

Signed-off-by: Fabio Utzig <utzig@apache.org>
2 years agoRemove mcuboot submodule hack
Fabio Utzig [Thu, 5 Mar 2020 11:49:07 +0000 (08:49 -0300)] 
Remove mcuboot submodule hack

After the conditional submodule feature added with
905c71ce407f94da1f6812dd6b24cda885336548, the mcuboot repo was updated
to inform that Mynewt does not required cloning of submodules; the hack
is not required anymore.

Signed-off-by: Fabio Utzig <utzig@apache.org>
2 years agoRemove "final-atom" target specifier type
Christopher Collins [Mon, 2 Mar 2020 23:12:28 +0000 (15:12 -0800)] 
Remove "final-atom" target specifier type

Prior to this commit, newt allowed a target to be specified in any of
three ways:

1. Fully qualified name:
    `@myrepo/targets/blinky`

2. Implicit `targets` directory in local repo:
    `blinky` (resolves to `targets/blinky`)

3. Final atom in target package name:
    `slinky_sim` (could resolve to `extra/my_stuff/slinky_sim`)

This commit removes support for the third type of specifier.

This third type of specifies is actually just a buggy attempt to support
something else.  The intent was to allow the name of a target in a
different repo without requiring the `@repo-name` prefix.  The
implementation is buggy because it allows the user to omit more than
just the repo name.  It also applies to the top-level project when it is
only intended for targets in other repos.

Allowing this type of specifier is bad because it can lead to
ambiguities.  For example, if a project contains two targets:

    targets/arch1/blinky
    targets/arch2/blinky

then the command `newt build blinky` is ambiguous.  Currently, newt just
selects the target whose name comes first in a lexicographic sort
(arch1).

Rather than detect ambiguities, this commit just removes support for
this type of target specifier entirely.

2 years agoAdd repositories info to syscfg.h
Szymon Janc [Mon, 2 Mar 2020 11:05:25 +0000 (12:05 +0100)] 
Add repositories info to syscfg.h

This add basic repositories info to syscfg.h for easier reporting
of project version in runtime.

For each repository FOO two informative MYNEWT_VALs are created:
REPO_HASH_FOO and REPO_VERSION_FOO. Example:

 /*** Repository @apache-mynewt-core info */
 #ifndef MYNEWT_VAL_REPO_HASH_APACHE_MYNEWT_CORE
 #define MYNEWT_VAL_REPO_HASH_APACHE_MYNEWT_CORE ("26a9a5263b526f9869b8057a99be0759d601c8b7")
 #endif

 #ifndef MYNEWT_VAL_REPO_VERSION_APACHE_MYNEWT_CORE
 #define MYNEWT_VAL_REPO_VERSION_APACHE_MYNEWT_CORE ("0.0.1")
 #endif

 /*** Repository @apache-mynewt-mcumgr info */
 #ifndef MYNEWT_VAL_REPO_HASH_APACHE_MYNEWT_MCUMGR
 #define MYNEWT_VAL_REPO_HASH_APACHE_MYNEWT_MCUMGR ("ae4659b445b707409fb17d626c806de3ed284720")
 #endif

 #ifndef MYNEWT_VAL_REPO_VERSION_APACHE_MYNEWT_MCUMGR
 #define MYNEWT_VAL_REPO_VERSION_APACHE_MYNEWT_MCUMGR ("0.0.0")
 #endif

 /*** Repository @apache-mynewt-nimble info */
 #ifndef MYNEWT_VAL_REPO_HASH_APACHE_MYNEWT_NIMBLE
 #define MYNEWT_VAL_REPO_HASH_APACHE_MYNEWT_NIMBLE ("01b91ea01d35d1928fe17008d1a66917150d5231-dirty")
 #endif

 #ifndef MYNEWT_VAL_REPO_VERSION_APACHE_MYNEWT_NIMBLE
 #define MYNEWT_VAL_REPO_VERSION_APACHE_MYNEWT_NIMBLE ("0.0.0")
 #endif

2 years agomfg: Make external paths relative to project base
Christopher Collins [Mon, 2 Mar 2020 21:56:59 +0000 (13:56 -0800)] 
mfg: Make external paths relative to project base

An mfgimage's "raw" section specifies files to embed in the generated
binary.  Prior to this commit, paths were interpreted as relative to the
mfgimage package directory.  Now, paths are considered relative to the
project base.

2 years agoEmit `size` in mfg manifest target entries
Christopher Collins [Wed, 12 Feb 2020 23:50:23 +0000 (15:50 -0800)] 
Emit `size` in mfg manifest target entries

MfgManifestTarget.Size was recently added to the artifact library.

2 years agoAdd support for conditional submodules updates
Fabio Utzig [Fri, 14 Feb 2020 16:25:38 +0000 (13:25 -0300)] 
Add support for conditional submodules updates

This adds support for repos to inform which submodules are required for
a proper build on Mynewt. The main driver for this feature is that the
current `ext/mbedtls` on mcuboot is a submodule that is not required by
Mynewt builds, and the amount of submodules is going to grow in the
future, eg, https://github.com/JuulLabs-OSS/mcuboot/pull/653.

The way this works is `newt` is going to look for a "repo.submodules"
key inside the "repository.yml" file. This is a list of submodules to be
cloned. One of two things could happen:

1) If the key is no present `newt` is going to clone all submodules (to
   preserve compatibility).
2) If the key is found, each of the submodules declared will be cloned
   one by one.

For example, if "repository.yml" has the following contents:

```
repo.submodules: ""
```

In this case submodule cloning is skipped (with a verbose message
stating it).

```
repo.submodules:
    - "ext/mbetls"
    - "boot/cypress/somemodule"
```

This will clone the two modules declared but not other submodules that
might eventually exist.

This PR also makes cloning submodules recursive, so submodules inside
submodules are also cloned.

Signed-off-by: Fabio Utzig <utzig@apache.org>