<!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>Setting Up Go to Contribute to Newt and Newtmgr Tools - 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="Setting Up Go to Contribute to Newt and Newtmgr Tools">


        <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.12.0, Apache NimBLE 1.7.0 </a> released (April 4, 2024)
            </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_12_0/" >
    Version: 1.12.0
  </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" >
    Version: 1.2.0
  </option>
  <option value="/v1_1_0/os/introduction" >
    Version: 1.1.0
  </option>
  <option value="/v1_0_0/os/introduction" selected="selected" >
    Version: 1.0.0
  </option>
  <option value="/v0_9_0/os/introduction" >
    Version: 0.9.0
  </option>
</select></li>
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
          
  
  
    <li ><a href="../../os/introduction/">Mynewt Documentation</a>
  
  
    </li>

        
      
        
          
  
  
    <li><a href="
  ./
">Appendix</a>
  
  
    <ul>
          
              
                
  <li class="active">
    <a href="./">Setting Up Go to Contribute to Newt and Newtmgr Tools</a>
  </li>

              
          
              
                
  <li >
    <a href="../ide/">Using an IDE to Develop Mynewt Applications</a>
  </li>

              
          
              
                
  <li >
    <a href="../how_to_edit_docs/">Edit Docs</a>
  </li>

              
          
              
                
  <li >
    <a href="../answers/">FAQ</a>
  </li>

              
          
    </ul>
  
    </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>&raquo; Appendix</li>
        
      
      
        <li>&raquo; Setting Up Go to Contribute to Newt and Newtmgr Tools</li>
      
    
    
  </ul>
</div>
                        </div>
                        
                          
                        
                          
                        
                          
                            <div class="alert alert-warning">
                                <p>
                                    Version 1.0.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="contributing-to-newt-or-newtmgr-tools">Contributing to Newt or Newtmgr Tools</h2>
<p>Newt and Newtmgr are written in Go (golang). This guide shows you how to install Go and setup your environment to update and build the tools if you want to: </p>
<ul>
<li>Contribute to newt or newtmgr features or fix bugs.</li>
<li>Build the tools with latest updates from the master branch on a Linux platform.</li>
</ul>
<p>This guide shows you how to perform the following:</p>
<ol>
<li>Install Go on either Mac OS X or Linux. (Tasks that are specific to each platform are called out.)</li>
<li>Setup the Go environment.</li>
<li>Download the source, build, and install the newt or newtmgr tools.</li>
<li>Update and rebuild the tools. </li>
</ol>
<p><strong>Note:</strong> You will also need to read and follow the instructions from the <a href="/faq/answers/">FAQ</a> to set up your git repos to submit changes.</p>
<h3 id="step-1-installing-go">Step 1: Installing Go</h3>
<p>The latest master branch of newt and newtmgr requires GO version 1.6 or higher. You can skip this step and proceed to Step 2 if you already have Go version 1.6 or higher installed.</p>
<p><br></p>
<h4 id="installing-go-on-mac-os-x">Installing Go on Mac OS X</h4>
<p>If you do not have Homebrew installed, run the following command. You will be prompted for your sudo password.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ ruby -e &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&quot;
</code></pre></div>

<p>You can also extract (or <code>git clone</code>) Homebrew and install it to /usr/local.</p>
<p><br>
Use brew to install Go:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ brew install go
==&gt; 
...
... 
==&gt; *Summary*
🍺  //usr/local/Cellar/go/1.8.1: 7,030 files, 281.8MB, built in 1 minute 12 seconds
</code></pre></div>

<p>You can also download the Go package directly from (https://golang.org/dl/) instead of brewing it. Install it in /usr/local directory.</p>
<p><br></p>
<h4 id="installing-go-on-linux">Installing Go on Linux</h4>
<p>Use apt-get to install Go: </p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$sudo apt-get update
$sudo apt-get install golang 
Reading package lists... Done
Building dependency tree       
Reading state information... Done

      ...

The following NEW packages will be installed:
  golang
0 upgraded, 1 newly installed, 0 to remove and 43 not upgraded.
Need to get 0 B/2,812 B of archives.
After this operation, 10.2 kB of additional disk space will be used.
Selecting previously unselected package golang.
(Reading database ... 244990 files and directories currently installed.)
Preparing to unpack .../golang_2%3a1.6.1+1ubuntu2_all.deb ...
Unpacking golang (2:1.6.1+1ubuntu2) ...
Setting up golang (2:1.6.1+1ubuntu2) ...
$ go version
go version go1.6.3 linux/amd64
</code></pre></div>

<p><br></p>
<h3 id="step-2-setting-up-your-go-environment">Step 2: Setting Up Your Go Environment</h3>
<p>This section describes the Go environment and how to setup a Go workspace. If you already have a Go workspace for your other Go projects, you can skip this step and proceed to Step 3.</p>
<p>Go provides an environment to compile Go code, construct Go packages,  and import Go code.  You will use Go commands to import the newt or newtmgr package repository into your local Go environment.  The Go language environment dictates a specific directory structure, or workspace in Go parlance. It must contain three sibling directories with the names <strong>src</strong>, <strong>pkg</strong> and <strong>bin</strong>: </p>
<ul>
<li>src contains Go source files organized into packages (one package per directory)</li>
<li>pkg contains package objects</li>
<li>bin contains the Go application executables that Go builds and installs.</li>
</ul>
<p>The <strong>GOPATH</strong> environment variable specifies the location of your workspace.  To setup this workspace environment, create a <strong>dev</strong> directory and then a <strong>go</strong> directory under it. Set the GOPATH environment variable to this directory where you will clone the newt and newtmgr repositories.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ cd $HOME
$ mkdir -p dev/go  
$ cd dev/go
$ export GOPATH=`pwd`
</code></pre></div>

<p><br>
Add the following export statements to your ~/.bash_profile file and source the file:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>export GOPATH=$HOME/dev/go
export PATH=$GOPATH/bin:$PATH
</code></pre></div>

<p><br></p>
<h3 id="step-3-downloading-the-source-and-installing-the-tools">Step 3: Downloading the Source and Installing the Tools</h3>
<p>Newt and newtmgr are individual Go packages and have their own git repositories. You can download the source and install one or both tools.</p>
<p>We use the <code>go get</code> command to download the source, build, and install the binary in the <strong>$GOPATH/bin</strong> directory. </p>
<p><br></p>
<h4 id="downloading-and-installing-the-newt-tool">Downloading and Installing the Newt Tool</h4>
<p>The newt Go package is <strong>mynewt.apache.org/newt/newt</strong> and is stored in the <a href="https://github.com/apache/incubator-mynewt-newt">Apache Mynewt newt tool repository mirrored on github</a>. </p>
<p>Download the newt package source and install the tool:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$cd $GOPATH
$go get mynewt.apache.org/newt/newt
$cd $GOPATH/src/mynewt.apache.org/newt
$ls 
DISCLAIMER      RELEASE_NOTES.md    util
INSTALLING.md       build.sh        viper
LICENSE         newt            yaml
NOTICE          newtmgr
README.md       newtvm
$git status
On branch master
Your branch is up-to-date with &#39;origin/master&#39;.

nothing to commit, working directory clean
</code></pre></div>

<p><br>
<strong>Note:</strong> The source code under the <strong>newtmgr</strong> directory is no longer used or updated. The current <strong>newtmgr</strong> source has its own Git repository.</p>
<p><br>
Check that the newt binary is installed and you are using the one from ** $GOPATH/bin**:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ls $GOPATH/bin/newt
~/dev/go/bin/newt
$which newt
~/dev/go/bin/newt
$newt version
Apache Newt (incubating) version: 1.0.0-dev
</code></pre></div>

<p><br></p>
<h4 id="downloading-and-installing-the-newtmgr-tool">Downloading and Installing the Newtmgr Tool</h4>
<p>The newtmgr Go package is <strong>mynewt.apache.org/newtmgr/newtmgr</strong>. It is stored in the <a href="https://github.com/apache/incubator-mynewt-newtmgr">Apache Mynewt newtmgr tool repository mirrored on github</a>.</p>
<p>Download the newtmgr package and install the tool:</p>
<p><strong>Note:</strong> <code>-ldflags -s</code> must be passed to the <code>go get</code> command.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$cd $GOPATH
$go get -ldflags -s mynewt.apache.org/newtmgr/newtmgr
$cd $GOPATH/src/mynewt.apache.org/newtmgr
$ls
DISCLAIMER  NOTICE      newtmgr
LICENSE     README.md   nmxact
$git status
On branch master
Your branch is up-to-date with &#39;origin/master&#39;.

nothing to commit, working directory clean
</code></pre></div>

<p><br>
Check that the newtmgr binary is installed and you are using the one from <strong>$GOPATH/bin</strong>:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ls $GOPATH/bin/newtmgr
~/dev/go/bin/newtmgr
$which newtmgr
~/dev/go/bin/newtmgr
</code></pre></div>

<p><br></p>
<h3 id="step-4-updating-and-rebuilding-the-tools">Step 4: Updating and Rebuilding the Tools:</h3>
<p>This section shows you how to rebuild the newt and newtmgr tools with the latest updates from the master branch or after you have made changes in your branch. </p>
<p>Here is the general procedure to rebuild either the newt or newtmgr tool. The only difference is the directory where you will be executing the commands from. You will need to repeat the procedure to rebuild both tools.</p>
<ol>
<li>Change to the directory where the local Git repository for the tool is installed.</li>
<li>Pull the latest changes from the master branch. If you made changes you will need to rebase with <strong>origin master</strong> (See <a href="/faq/answers/">FAQ</a>).</li>
<li>Build and install the tool.</li>
</ol>
<p><br>
Change to the directory where the source for the tool is installed.</p>
<p>For the  <strong>newt</strong> tool:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$cd $GOPATH/src/mynewt.apache.org/newt/newt
</code></pre></div>

<p>For the <strong>newtmgr</strong> tool:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$cd $GOPATH/src/mynewt.apache.org/newtmgr/newtmgr
</code></pre></div>

<p><br>
After you change to the specific tool directory, get the latest updates from the master branch.  If you made changes and need to rebase with the origin, add the <code>--rebase origin master</code> arguments to the  <code>git pull</code> command:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$git pull 
</code></pre></div>

<p><br>
Build and install the tool. The updated binary will be installed in the <strong>$GOPATH/bin</strong> directory: </p>
<p>(<strong>Note:</strong> <code>-ldflags -s</code> must be passed to the <code>go install</code> command if you are rebuilding newtmgr)</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$go install
</code></pre></div>

<p>You can run the <code>ls -l</code> command to check the modification time for the binary to ensure the new version is installed. </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 (incubating) 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>