Changeset View
Changeset View
Standalone View
Standalone View
head/en_US.ISO8859-1/books/porters-handbook/special/chapter.xml
Show First 20 Lines • Show All 1,205 Lines • ▼ Show 20 Lines | [...]</screen> | ||||
<para>This snippet demonstrates the use of | <para>This snippet demonstrates the use of | ||||
<application>Meson</application> for a port.</para> | <application>Meson</application> for a port.</para> | ||||
<programlisting>USES= meson | <programlisting>USES= meson | ||||
MESON_ARGS= -Dfoo=enabled</programlisting> | MESON_ARGS= -Dfoo=enabled</programlisting> | ||||
</example> | </example> | ||||
</sect2> | </sect2> | ||||
<sect2 xml:id="using-go"> | |||||
<title>Building <application>Go</application> applications</title> | |||||
<para>For ports that use <application>Go</application>, | |||||
define <literal>USES=go</literal>. Refer to <xref | |||||
linkend="uses-go" /> for a list of variables that can be | |||||
set to control the build process.</para> | |||||
<example xml:id="go-ex1"> | |||||
<title>Creating a Port for a Go Modules Based | |||||
Application</title> | |||||
<para>Creating a Go based port is a five stage process. | |||||
First we need to provide a ports template that fetches the | |||||
application distribution file:</para> | |||||
<programlisting>PORTNAME= ghq | |||||
DISTVERSIONPREFIX= v | |||||
DISTVERSION= 0.12.5 | |||||
CATEGORIES= devel | |||||
MAINTAINER= tobik@FreeBSD.org | |||||
COMMENT= Remote repository management made easy | |||||
USES= go:modules | |||||
USE_GITHUB= yes | |||||
GH_ACCOUNT= motemen | |||||
.include <bsd.port.mk></programlisting> | |||||
<para>Generate an initial | |||||
<filename>distinfo</filename>:</para> | |||||
<screen>&prompt.user; <userinput>make makesum</userinput> | |||||
===> License MIT accepted by the user | |||||
=> motemen-ghq-v0.12.5_GH0.tar.gz doesn't seem to exist in /usr/ports/distfiles/. | |||||
=> Attempting to fetch https://codeload.github.com/motemen/ghq/tar.gz/v0.12.5?dummy=/motemen-ghq-v0.12.5_GH0.tar.gz | |||||
fetch: https://codeload.github.com/motemen/ghq/tar.gz/v0.12.5?dummy=/motemen-ghq-v0.12.5_GH0.tar.gz: size of remote file is not known | |||||
motemen-ghq-v0.12.5_GH0.tar.gz 32 kB 177 kBps 00s</screen> | |||||
<para>Now the distribution file is ready to use and we can | |||||
extract the required Go module dependencies. This step | |||||
requires having | |||||
<package role="port">ports-mgmt/modules2tuple</package> | |||||
installed:</para> | |||||
<screen>&prompt.user; <userinput>make gomod-vendor</userinput> | |||||
[...] | |||||
GH_TUPLE= \ | |||||
Songmu:gitconfig:v0.0.2:songmu_gitconfig/vendor/github.com/Songmu/gitconfig \ | |||||
daviddengcn:go-colortext:186a3d44e920:daviddengcn_go_colortext/vendor/github.com/daviddengcn/go-colortext \ | |||||
go-yaml:yaml:v2.2.2:go_yaml_yaml/vendor/gopkg.in/yaml.v2 \ | |||||
golang:net:3ec191127204:golang_net/vendor/golang.org/x/net \ | |||||
golang:sync:112230192c58:golang_sync/vendor/golang.org/x/sync \ | |||||
golang:xerrors:3ee3066db522:golang_xerrors/vendor/golang.org/x/xerrors \ | |||||
motemen:go-colorine:45d19169413a:motemen_go_colorine/vendor/github.com/motemen/go-colorine \ | |||||
urfave:cli:v1.20.0:urfave_cli/vendor/github.com/urfave/cli</screen> | |||||
<para>The output of this command needs to be pasted directly | |||||
into the Makefile:</para> | |||||
<programlisting>PORTNAME= ghq | |||||
DISTVERSIONPREFIX= v | |||||
DISTVERSION= 0.12.5 | |||||
CATEGORIES= devel | |||||
MAINTAINER= tobik@FreeBSD.org | |||||
COMMENT= Remote repository management made easy | |||||
USES= go:modules | |||||
USE_GITHUB= yes | |||||
GH_ACCOUNT= motemen | |||||
GH_TUPLE= Songmu:gitconfig:v0.0.2:songmu_gitconfig/vendor/github.com/Songmu/gitconfig \ | |||||
daviddengcn:go-colortext:186a3d44e920:daviddengcn_go_colortext/vendor/github.com/daviddengcn/go-colortext \ | |||||
go-yaml:yaml:v2.2.2:go_yaml_yaml/vendor/gopkg.in/yaml.v2 \ | |||||
golang:net:3ec191127204:golang_net/vendor/golang.org/x/net \ | |||||
golang:sync:112230192c58:golang_sync/vendor/golang.org/x/sync \ | |||||
golang:xerrors:3ee3066db522:golang_xerrors/vendor/golang.org/x/xerrors \ | |||||
motemen:go-colorine:45d19169413a:motemen_go_colorine/vendor/github.com/motemen/go-colorine \ | |||||
urfave:cli:v1.20.0:urfave_cli/vendor/github.com/urfave/cli | |||||
.include <bsd.port.mk></programlisting> | |||||
<para><filename>distinfo</filename> needs to be regenerated to | |||||
contain all the distribution files:</para> | |||||
<screen>&prompt.user; <userinput>make makesum</userinput> | |||||
=> Songmu-gitconfig-v0.0.2_GH0.tar.gz doesn't seem to exist in /usr/ports/distfiles/. | |||||
=> Attempting to fetch https://codeload.github.com/Songmu/gitconfig/tar.gz/v0.0.2?dummy=/Songmu-gitconfig-v0.0.2_GH0.tar.gz | |||||
fetch: https://codeload.github.com/Songmu/gitconfig/tar.gz/v0.0.2?dummy=/Songmu-gitconfig-v0.0.2_GH0.tar.gz: size of remote file is not known | |||||
Songmu-gitconfig-v0.0.2_GH0.tar.gz 5662 B 936 kBps 00s | |||||
=> daviddengcn-go-colortext-186a3d44e920_GH0.tar.gz doesn't seem to exist in /usr/ports/distfiles/. | |||||
=> Attempting to fetch https://codeload.github.com/daviddengcn/go-colortext/tar.gz/186a3d44e920?dummy=/daviddengcn-go-colortext-186a3d44e920_GH0.tar.gz | |||||
fetch: https://codeload.github.com/daviddengcn/go-colortext/tar.gz/186a3d44e920?dummy=/daviddengcn-go-colortext-186a3d44e920_GH0.tar.gz: size of remote file is not known | |||||
daviddengcn-go-colortext-186a3d44e920_GH0.tar. 4534 B 1098 kBps 00s | |||||
[...]</screen> | |||||
<para>The port is now ready for a test build and further | |||||
adjustments like creating a plist, writing a description, | |||||
adding license information, options, etc. as normal.</para> | |||||
<para>If you are not testing your port in a clean environment | |||||
like with <application>Poudriere</application>, remember to | |||||
run <command>make clean</command> before any testing. | |||||
</para> | |||||
</example> | |||||
</sect2> | |||||
</sect1> | </sect1> | ||||
<sect1 xml:id="using-autotools"> | <sect1 xml:id="using-autotools"> | ||||
<title>Using GNU Autotools</title> | <title>Using GNU Autotools</title> | ||||
<para>If a port needs any of the GNU Autotools software, add | <para>If a port needs any of the GNU Autotools software, add | ||||
<literal>USES=autoreconf</literal>. See <xref | <literal>USES=autoreconf</literal>. See <xref | ||||
linkend="uses-autoreconf"/> for more information.</para> | linkend="uses-autoreconf"/> for more information.</para> | ||||
▲ Show 20 Lines • Show All 6,107 Lines • Show Last 20 Lines |