| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| |
| |
| <!-- This is broken by doc revisioning. |
| --> |
| <link rel="shortcut icon" href="../../../../img/favicon.ico"> |
| |
| <title>Turn project into a Repo - Apache Mynewt</title> |
| |
| <link href="../../../../css/bootstrap-3.0.3.min.css" rel="stylesheet"> |
| <link rel="stylesheet" href="../../../../css/highlight.css"> |
| <link href="../../../../css/base.css" rel="stylesheet"> |
| <link href="../../../../css/custom.css" rel="stylesheet"> |
| <link href="../../../../css/v2.css" rel="stylesheet"> |
| <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet"> |
| <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"> |
| |
| <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> |
| <!--[if lt IE 9]> |
| <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> |
| <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> |
| <![endif]--> |
| |
| |
| <script> |
| (function(i, s, o, g, r, a, m) { |
| i["GoogleAnalyticsObject"] = r; |
| (i[r] = |
| i[r] || |
| function() { |
| (i[r].q = i[r].q || []).push(arguments); |
| }), |
| (i[r].l = 1 * new Date()); |
| (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]); |
| a.async = 1; |
| a.src = g; |
| m.parentNode.insertBefore(a, m); |
| })(window, document, "script", "//www.google-analytics.com/analytics.js", "ga"); |
| |
| ga("create", "UA-72162311-1", "auto"); |
| ga("send", "pageview"); |
| </script> |
| |
| </head> |
| |
| |
| <body class="Turn project into a Repo"> |
| |
| |
| <div class="container"> |
| <div class="row v2-main-banner"> |
| <a class="logo-cell" href="/"> |
| <img class="logo" src="/img/logo.png"> |
| </a> |
| <div class="tagline-cell"> |
| <h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4> |
| </div> |
| <div class="news-cell"> |
| <div class="well"> |
| <h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.11.0, Apache NimBLE 1.6.0 </a> released (September 7, 2023) |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| |
| |
| |
| |
| |
| <nav id="navbar" class="navbar navbar-inverse affix-top" data-spy="affix" data-offset-top="150" role="navigation"> |
| <div class="container"> |
| <!-- Collapsed navigation --> |
| <div class="navbar-header"> |
| <!-- Expander button --> |
| <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| |
| </div> |
| |
| <!-- Expanded navigation --> |
| <div class="navbar-collapse collapse"> |
| <!-- Main navigation --> |
| <ul class="nav navbar-nav navbar-right"> |
| <li |
| class="" |
| > |
| <a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a> |
| </li> |
| <li |
| class="important" |
| > |
| <a href="/quick-start/">Quick Start</a> |
| </li> |
| <li |
| class="" |
| > |
| <a href="/about/">About</a> |
| </li> |
| <li |
| class="" |
| > |
| <a href="/talks/">Talks</a> |
| </li> |
| <li |
| class="active" |
| > |
| <a href="/documentation/">Documentation</a> |
| </li> |
| <li |
| class="" |
| > |
| <a href="/download/">Download</a> |
| </li> |
| <li |
| class="" |
| > |
| <a href="/community/">Community</a> |
| </li> |
| <li |
| class="" |
| > |
| <a href="/events/">Events</a> |
| </li> |
| </ul> |
| |
| </div> |
| </div> |
| </nav> |
| |
| |
| |
| <div class="container"> |
| |
| <div class="row"> |
| <div class="col-md-3 v2-sidebar sidebar-container"><div id="docSidebar" class="hidden-print" role="complementary"> |
| <div class="top"> |
| <div role="search"> |
| <form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get"> |
| <div class="form-group"> |
| <input type="text" name="q" class="form-control" placeholder="Search documentation" /> |
| </div> |
| </form> |
| </div> |
| </div> |
| <ul class="toc-nav"> |
| <li class="doc-version"><select class="form-control" onchange="if (this.value) window.location.href=this.value"> |
| <option value="/latest"> |
| Version: master |
| </option> |
| <option value="/v1_11_0/" > |
| Version: 1.11.0 |
| </option> |
| <option value="/v1_10_0/" > |
| Version: 1.10.0 |
| </option> |
| <option value="/v1_9_0/" > |
| Version: 1.9.0 |
| </option> |
| <option value="/v1_8_0/" > |
| Version: 1.8.0 |
| </option> |
| <option value="/v1_7_0/" > |
| Version: 1.7.0 |
| </option> |
| <option value="/v1_6_0/" > |
| Version: 1.6.0 |
| </option> |
| <option value="/v1_5_0/" > |
| Version: 1.5.0 |
| </option> |
| <option value="/v1_4_0/" > |
| Version: 1.4.0 |
| </option> |
| <option value="/v1_3_0/os/introduction" > |
| Version: 1.3.0 |
| </option> |
| <option value="/v1_2_0/os/introduction" selected="selected" > |
| Version: 1.2.0 |
| </option> |
| <option value="/v1_1_0/os/introduction" > |
| Version: 1.1.0 |
| </option> |
| <option value="/v1_0_0/os/introduction" > |
| Version: 1.0.0 |
| </option> |
| <option value="/v0_9_0/os/introduction" > |
| Version: 0.9.0 |
| </option> |
| </select></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li ><a href="../../../introduction/">Mynewt Documentation</a> |
| |
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| <li ><a href="../../../get_started/get_started/">Basic Setup</a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| <li > |
| <a href="../../../get_started/vocabulary/">Concepts</a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li ><a href="../../tutorials/">Tutorials</a> |
| |
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| <li ><a href="../../blinky/">Project Blinky</a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li ><a href="../add_repos/">Work with repositories</a> |
| |
| |
| <ul> |
| |
| |
| |
| |
| |
| <li > |
| <a href="../upgrade_repo/">Upgrade a Repo</a> |
| </li> |
| |
| |
| |
| |
| |
| <li class="active"> |
| <a href="./">Turn project into a Repo</a> |
| </li> |
| |
| |
| |
| |
| |
| <li > |
| <a href="../private_repo/">Access a private Repo</a> |
| </li> |
| |
| |
| |
| </ul> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li ><a href="../../project-slinky/">Project Slinky for Remote Comms</a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li><a href=" |
| ../../ble_bare_bones/ |
| ">Bluetooth Low Energy</a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li><a href=" |
| ../../lora/lorawanapp/ |
| ">LoRa</a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li><a href=" |
| ../../event_queue/ |
| ">OS Fundamentals</a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li><a href=" |
| ../../add_newtmgr/ |
| ">Remote Device Management</a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li><a href=" |
| |
| |
| ../../sensors/sensors/ |
| |
| ">Sensors</a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li><a href=" |
| ../../segger_rtt/ |
| ">Tooling</a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li><a href=" |
| ../../codesize/ |
| ">Other</a> |
| |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li ><a href="../../../os_user_guide/">OS User Guide</a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li><a href=" |
| ../../../../network/ble/ble_intro/ |
| ">BLE User Guide</a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li ><a href="../../../../newt/newt_intro/">Newt Tool Guide</a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li ><a href="../../../../newtmgr/overview/">Newt Manager Guide</a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| <li > |
| <a href="../../../../known_issues/">Known Issues</a> |
| </li> |
| |
| |
| |
| </ul> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li><a href=" |
| ../../../../newt/install/prev_releases/ |
| ">Appendix</a> |
| |
| |
| </li> |
| |
| |
| |
| </ul> |
| </div></div> |
| |
| <div class="col-md-9" role="main"> |
| <div class="doc-header"> |
| <div role="navigation" aria-label="breadcrumbs navigation"> |
| <ul class="wy-breadcrumbs"> |
| <li><a href="/documentation/">Docs</a></li> |
| |
| |
| |
| <li>» <a href="os/tutorials/repo/add_repos/">Work with repositories</a></li> |
| |
| |
| |
| <li>» <a href="os/tutorials/tutorials/">Tutorials</a></li> |
| |
| |
| |
| <li>» <a href="os/introduction/">Mynewt Documentation</a></li> |
| |
| |
| |
| <li>» Turn project into a Repo</li> |
| |
| |
| |
| <li class="wy-breadcrumbs-aside"> |
| |
| <a href="https://github.com/apache/mynewt-site/blob/master/docs/os/tutorials/repo/create_repo.md" |
| class="icon icon-github"> Edit on GitHub</a> |
| |
| </li> |
| |
| </ul> |
| </div> |
| </div> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <div class="alert alert-warning"> |
| <p> |
| Version 1.2.0 is not the most recent version of the Apache Mynewt |
| documentation. Click <a href="/latest">here</a> to read the latest |
| version. |
| </p> |
| </div> |
| |
| |
| |
| <h2 id="create-a-repo-out-of-a-project">Create a Repo out of a Project</h2> |
| <p>In order to create a repository out of a project, all you need to do is create a <code>repository.yml</code> file, and check it into the master branch of your project.</p> |
| <p><strong>NOTE:</strong> Currently only github source control service is supported by our package management system, but support for plain git will be added soon.</p> |
| <p>The repository.yml defines all versions of the repository and the corresponding source control tags that these versions correspond to. As an example, if the repository.yml file has the following content, it means there is one version of the apache-mynewt-core operating system available, which is <code>0.0.0</code> (implying we haven't released yet!). Such a version number corresponds to the "develop" branch in this repository. <code>0-latest</code> would also resolved to this same <code>0.0.0</code> version. The next section explains the versioning system a bit more.</p> |
| <div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ more repository.yml |
| repo.name: apache-mynewt-core |
| repo.versions: |
| "0.0.0": "develop" |
| "0-latest": "0.0.0" |
| </code></pre></div> |
| |
| <p><br></p> |
| <h3 id="where-should-the-repositoryyml-file-be">Where should the repository.yml file be?</h3> |
| <p>The <code>repository.yml</code> file lives only in the master branch of the git |
| repository. <code>Newt</code> will always fetch this file from the master branch and then |
| use that to resolve the actual branch required depending on the version |
| specified in the project. <strong>Special care should be taken to ensure that this |
| file exists only in the master branch.</strong></p> |
| <p>Here is the <code>repository.yml</code> file from a certain snapshot of apache-Mynewt-core:</p> |
| <div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>repo.name: apache-mynewt-core |
| repo.versions: |
| "0.7.9": "Mynewt_0_8_0_b2_tag" |
| "0-latest": "0.7.9" |
| "0.8-latest": "0.7.9" |
| </code></pre></div> |
| |
| <p><br></p> |
| <p>It contains the following:</p> |
| <ul> |
| <li><strong>repo.name</strong> The external name that is used to include the library in |
| your <code>project.yml</code> file. This is the name you include in the <code>project.repositories</code> |
| variable when adding this repository to your project.</li> |
| <li><strong>repo.versions</strong> A description of what versions to give the user depending |
| on the settings in their <code>project.yml</code> file. See below for a thorough description |
| on versioning. Its a flexible mapping between version numbers and git branches.</li> |
| </ul> |
| <p><br></p> |
| <h3 id="repo-version-specification">Repo Version Specification</h3> |
| <p>The version field argument for a repo has the following format:</p> |
| <div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><major_num>.<minor_num>.<revision_num> |
| </code></pre></div> |
| |
| <p>or</p> |
| <div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><major_num>.<minor_num>-<stability string> |
| </code></pre></div> |
| |
| <p>or </p> |
| <div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><major_num>-<stability string> |
| </code></pre></div> |
| |
| <p><br></p> |
| <p>The stability string can be one of 3 pre-defined stability values.</p> |
| <ol> |
| <li>stable -- A stable release version of the repository</li> |
| <li>dev -- A development version from the repository</li> |
| <li>latest -- The latest from the repository</li> |
| </ol> |
| <p>In your <code>project.yml</code> file you can specify different combinations of |
| the version number and stability value. For example:</p> |
| <ul> |
| <li><code>1-latest</code> -- The latest version with major number 1</li> |
| <li><code>1.2-stable</code> -- The latest stable version with major and minor number 1.2</li> |
| <li><code>1.2-dev</code> -- The development version from 1.2</li> |
| <li><code>1.1.1</code> -- a specific version 1.1.1</li> |
| </ul> |
| <p>You <strong>cannot</strong> specify a stability string with a fully numbered version, e.g.</p> |
| <div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>1.2.8-stable |
| </code></pre></div> |
| |
| <p><br></p> |
| <h3 id="repo-version-resolution">Repo Version Resolution</h3> |
| <p>A <code>repository.yml</code> file contains information to match this version request |
| into a git branch to fetch for your project.</p> |
| <p>It's up to you as the repository maintainer to map these to actual github branches of the repository. For example, let's say in a fictitious repository the following are defined.</p> |
| <div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>repo.versions: |
| "0.8.0": "xxx_branch_0_8_0" |
| "1.0.0": "xxx_branch_1_0_0" |
| "1.0.2": "xxx_branch_1_0_2" |
| "1.1.1": "xxx_branch_1_1_0" |
| "1.1.2": "xxx_branch_1_1_2" |
| "1.2.0": "xxx_branch_1_2_0" |
| "1.2.1": "xxx_branch_1_2_1" |
| "1.2-dev": "1.2.1" |
| "1-dev": "1.2-dev" |
| "1.2-stable": "1.2.0" |
| "0-latest": "0.8.0" |
| "1-latest": "1-dev" |
| .... |
| </code></pre></div> |
| |
| <p>When the <code>project.yml</code> file asks for <code>1.2-stable</code> it will be resolved to version |
| <code>1.2.0</code> which in turn will resolve to a specific branch <code>xxx_branch_1_2_0</code>. This is the branch that <code>newt</code> will fetch into the project with that <code>project.yml</code> file.</p> |
| <p><br></p> |
| <h3 id="dependencies-on-other-repos">Dependencies on other repos</h3> |
| <p>Repositories can also have dependencies on other repositories. These |
| dependencies should be listed out on a per-tag basis. So, for example, |
| if apache-mynewt-core were to depend on sterlys-little-repo, you might |
| have the following directives in the repository.yml:</p> |
| <div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>develop.repositories: |
| sterlys-little-repo: |
| type: github |
| vers: 0.8-latest |
| user: sterlinghughes |
| repo: sterlys-little-repo |
| </code></pre></div> |
| |
| <p><br></p> |
| <p>This would tell Newt that for anything that resolves to the develop |
| branch, this repository requires the sterlys-little-repo repository. </p> |
| <p>Dependencies are resolved circularly by the newt tool, and every dependent repository is placed as a sibling in the repos directory. Currently, if two repositories have the same name, they will conflict and bad things will happen.</p> |
| <p>When a repository is installed to the repos/ directory, the current |
| version of that repository is written to the "project.state" file. The |
| project state file contains the currently installed version of any given |
| repository. This way, the current set of repositories can be recreated |
| from the project.state file reliably, whereas the project.yml file can |
| have higher level directives (i.e. include 0.8-stable.)</p> |
| <h3 id="resolving-dependencies">Resolving dependencies</h3> |
| <p>At the moment, all dependencies must match, otherwise newt will provide |
| an error. As an example, if you have a set of dependencies such that:</p> |
| <div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>apache-mynewt-core depends on sterlys-little-repo 0.6-stable |
| apache-mynewt-core depends on sterlys-big-repo 0.5.1 |
| sterlys-big-repo-0.5.1 depends on sterlys-little-repo 0.6.2 |
| </code></pre></div> |
| |
| <p><br></p> |
| <p>where 0.6-stable is 0.6.3, the newt tool will try and resolve the dependency to |
| sterlys-little-repo. It will notice that there are two conflicting |
| versions of the same repository, and not perform installation.</p> |
| <p>In the future Newt will be smarter about loading in all dependencies, |
| and then looking to satisfy those dependencies to the best match of all |
| potential options.</p> |
| |
| <div class="row"> |
| |
| |
| |
| |
| <ul class="nav nav-pills" style="margin-bottom: 10px"> |
| <li> |
| |
| </li> |
| <li class="pull-right"> |
| |
| </li> |
| </ul> |
| </div> |
| <footer class="row"> |
| <div class="col-xs-12"> |
| |
| <p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p> |
| |
| </div> |
| <div class="col-xs-12"> |
| <div class="logos"> |
| <a href="https://www.apache.org/"> |
| <img src="/img/asf_logo_wide_small.png" alt="Apache" title="Apache"> |
| </a> |
| <p> |
| Copyright © 2015-2021 The Apache Software Foundation.<br> |
| <small class="footnote"> |
| Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt |
| project logo are either registered trademarks or trademarks of the Apache |
| Software Foundation in the United States and other countries. |
| </small> |
| </p> |
| <a href=""> |
| <img src="https://www.countit.com/images/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" /> |
| </a> |
| </div> |
| </div> |
| <a href="https://www.apache.org/licenses/"> |
| <button class="button-footer-asf"> |
| License |
| </button> |
| </a> |
| <a href="https://www.apache.org/foundation/sponsorship.html"> |
| <button class="button-footer-asf"> |
| Sponsorship |
| </button> |
| </a> |
| <a href="https://www.apache.org/foundation/thanks.html"> |
| <button class="button-footer-asf"> |
| Thanks |
| </button> |
| </a> |
| <a href="https://www.apache.org/security/"> |
| <button class="button-footer-asf"> |
| Security |
| </button> |
| </a> |
| <a href="https://apache.org/events/current-event"> |
| <button class="button-footer-asf"> |
| ASF Events |
| </button> |
| </a> |
| </footer> |
| </div> |
| </div> |
| |
| |
| </div> |
| |
| <script src="../../../../js/jquery-1.10.2.min.js"></script> |
| <script src="../../../../js/bootstrap-3.0.3.min.js"></script> |
| <script src="../../../../js/highlight.pack.js"></script> |
| <script src="../../../../js/base.js"></script> |
| <script src="../../../../js/custom.js"></script> |
| <script src="search/main.js"></script> |
| |
| </body> |
| </html> |