diff options
Diffstat (limited to 'building.html')
| -rw-r--r-- | building.html | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/building.html b/building.html new file mode 100644 index 0000000..cae8984 --- /dev/null +++ b/building.html @@ -0,0 +1,120 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <link rel="stylesheet" href="css/simple.css"> + <link rel="stylesheet" href="css/screen.css"> + <title>Building - Documentation</title> +</head> +<body> + <header> + <h1>Documentation</h1> + + <p>eduVPN for Linux</p> + + + <nav> + + <a href="index.html">About</a> + + <a href="building.html">Building</a> + + <a href="testing.html">Testing</a> + + <a href="building-client.html">Building a client</a> + + <a href="apidocs.html">API Docs</a> + + </nav> + + </header> + <main> + + <aside> + + <ul> + + <li class="nav-item" data-level="2"><a href="#building-the-go-library" class="nav-link">Building the Go library</a> + <ul class="nav flex-column"> + <li class="nav-item" data-level="3"><a href="#dependencies" class="nav-link">Dependencies</a> + <ul class="nav flex-column"> + </ul> + </li> + <li class="nav-item" data-level="3"><a href="#commands" class="nav-link">Commands</a> + <ul class="nav flex-column"> + </ul> + </li> + </ul> + </li> + + <li class="nav-item" data-level="2"><a href="#python-wrapper" class="nav-link">Python wrapper</a> + <ul class="nav flex-column"> + </ul> + </li> + + <li class="nav-item" data-level="2"><a href="#notes-on-building-for-release" class="nav-link">Notes on building for release</a> + <ul class="nav flex-column"> + <li class="nav-item" data-level="3"><a href="#package-formats" class="nav-link">Package formats</a> + <ul class="nav flex-column"> + </ul> + </li> + </ul> + </li> + </ul> + </aside> + + <h1 id="building">Building<a class="headerlink" href="#building" title="Permanent link">#</a></h1> +<p>This section contains the instruction on how to build the library and associated wrappers. We first explain how to build the Go library and then further explain the wrapper specific building process. As the Python wrapper is the only wrapper at the moment, this only consists of this wrapper language for now.</p> +<h2 id="building-the-go-library">Building the Go library<a class="headerlink" href="#building-the-go-library" title="Permanent link">#</a></h2> +<p>To build the Go library, you need the dependencies for your system installed. We will go over the needed dependencies for Linux. Afterwards, we explain the basic commands to build the library.</p> +<h3 id="dependencies">Dependencies<a class="headerlink" href="#dependencies" title="Permanent link">#</a></h3> +<h4 id="linux">Linux<a class="headerlink" href="#linux" title="Permanent link">#</a></h4> +<p>To build the Go shared library using Linux you need the following dependencies:</p> +<ul> +<li><a href="https://go.dev/doc/install">Go</a> 1.18 or later</li> +<li><a href="https://gcc.gnu.org/">Gcc</a></li> +<li><a href="https://www.gnu.org/software/make/">GNU Make</a></li> +<li>Dependencies for the Python wrapper if you want to build that as well</li> +</ul> +<h3 id="commands">Commands<a class="headerlink" href="#commands" title="Permanent link">#</a></h3> +<p>Before we can begin building the wrapper code, we need to build the Go code as a shared library. This section will tell you how to do so.</p> +<p>To build the shared library for the current platform issue the following command in the root directory:</p> +<pre><code class="language-bash">make +</code></pre> +<p>The shared library will be output in <code>lib/</code>.</p> +<h4 id="cleaning">Cleaning<a class="headerlink" href="#cleaning" title="Permanent link">#</a></h4> +<p>To clean build the library and wrapper, issue the following command in the root directory:</p> +<pre><code class="language-bash">make clean +</code></pre> +<h2 id="python-wrapper">Python wrapper<a class="headerlink" href="#python-wrapper" title="Permanent link">#</a></h2> +<p>To build the python wrapper issue the following command (in the root directory of the eduvpn-common project):</p> +<pre><code class="language-bash">make -C wrappers/python +</code></pre> +<p>This uses the makefile in <code>wrappers/python/Makefile</code> to build the python file into a wheel placed in <code>wrappers/python/dist/eduvpncommon-[version]-py3-none-[platform].whl</code>. Where version is the version of the library and platform is your current platform. </p> +<p>The wheel can be installed with <code>pip</code>:</p> +<pre><code class="language-bash">pip install ./wrappers/python/dist/eduvpncommon-[version]-py3-none-[platform].whl +</code></pre> +<h2 id="notes-on-building-for-release">Notes on building for release<a class="headerlink" href="#notes-on-building-for-release" title="Permanent link">#</a></h2> +<p>To build for release, make sure you obtain the tarball artifacts in the release (ending with <code>.tar.xz</code>) at <a href="https://codeberg.org/eduVPN/eduvpn-common/releases">https://codeberg.org/eduVPN/eduvpn-common/releases</a>.</p> +<p>These are signed with minisign and gpg keys, make sure to verify these signatures using the public keys available here: <a href="https://codeberg.org/eduVPN/eduvpn-common/src/branch/main/keys">https://codeberg.org/eduVPN/eduvpn-common/src/branch/main/keys</a>, they are also available externally: +- <a href="https://app.eduvpn.org/linux/v4/deb/app+linux@eduvpn.org.asc">https://app.eduvpn.org/linux/v4/deb/app+linux@eduvpn.org.asc</a> +- <a href="https://git.sr.ht/~jwijenbergh/python3-eduvpn-common.rpm/tree/main/item/SOURCES/minisign-CA9409316AC93C07.pub">https://git.sr.ht/~jwijenbergh/python3-eduvpn-common.rpm/tree/main/item/SOURCES/minisign-CA9409316AC93C07.pub</a></p> +<p>To build for release, make sure to extract the tarball, and then build:</p> +<pre><code class="language-bash">make +</code></pre> +<p>To upload the releases to Codeberg, run:</p> +<pre><code class="language-bash">./make_release.sh +</code></pre> +<p>For pre-releases:</p> +<pre><code class="language-bash">./make_release.sh -p +</code></pre> +<h3 id="package-formats">Package formats<a class="headerlink" href="#package-formats" title="Permanent link">#</a></h3> +<p>We support the following additional package formats: RPM (Linux, Fedora), Deb (Linux, Debian derivatives) and Pip. These are build in the CI and for production build on a separate non-public host.</p> + </main> + + <footer> + <p>Documentation - eduVPN for Linux</p> + </footer> +</body> +</html>
\ No newline at end of file |
