Skip to content

Commit 7729ec6

Browse files
committed
illumos/solaris support rebased onto main
1 parent 98aadba commit 7729ec6

File tree

14 files changed

+460
-7
lines changed

14 files changed

+460
-7
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: illumos-Cross
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- 'illumos-*'
8+
pull_request:
9+
branches:
10+
- '*'
11+
12+
jobs:
13+
build:
14+
runs-on: ubuntu-latest
15+
16+
if: "!contains(github.event.head_commit.message, '[ci skip]')"
17+
18+
steps:
19+
- name: Check out code
20+
uses: actions/checkout@v3
21+
with:
22+
fetch-depth: 0
23+
24+
- name: Set up Go
25+
uses: actions/setup-go@v4
26+
with:
27+
go-version-file: 'go.mod'
28+
check-latest: true
29+
id: go
30+
31+
- name: SunOS build script
32+
run: bash -x build.sh
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
name: "tagged-release"
3+
4+
on:
5+
push:
6+
tags:
7+
- "v*-sunos"
8+
9+
jobs:
10+
tagged-release:
11+
name: "SunOS Tagged Release"
12+
runs-on: "ubuntu-latest"
13+
14+
steps:
15+
- name: Check out code
16+
uses: actions/checkout@v3
17+
with:
18+
fetch-depth: 0
19+
20+
- name: Set up Go
21+
uses: actions/setup-go@v4
22+
with:
23+
go-version-file: 'go.mod'
24+
check-latest: true
25+
id: go
26+
27+
- name: SunOS build script
28+
run: bash -x build.sh
29+
30+
- name: Create Release
31+
uses: "marvinpinto/action-automatic-releases@latest"
32+
with:
33+
repo_token: "${{ secrets.GITHUB_TOKEN }}"
34+
prerelease: false
35+
files: |
36+
cmd/tailscaled/tailscale.xml
37+
sha256sums
38+
tailscaled-illumos
39+
tailscaled-solaris

AUTHORS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@
1515
# company that owns the rights to your contribution.
1616

1717
Tailscale Inc.
18+
Nahum Shalman <[email protected]>

build.sh

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/bin/bash
2+
3+
set -o xtrace
4+
set -o errexit
5+
6+
export TS_USE_TOOLCHAIN=true
7+
8+
# feature tags to use in our version of the "box" build
9+
BOX_TAGS="$(go run ./cmd/featuretags --min --add=osrouter,unixsocketidentity),ts_include_cli"
10+
11+
# This prevents illumos libc from leaking into Solaris binaries when built on illumos
12+
export CGO_ENABLED=0
13+
14+
fix_osabi () {
15+
if [[ $(uname -s) == SunOS ]]; then
16+
/usr/bin/elfedit \
17+
-e "ehdr:ei_osabi ELFOSABI_SOLARIS" \
18+
-e "ehdr:ei_abiversion EAV_SUNW_CURRENT" \
19+
"${1?}"
20+
else
21+
elfedit --output-osabi "Solaris" --output-abiversion "1" "${1?}"
22+
fi
23+
}
24+
25+
for GOOS in illumos solaris; do
26+
export GOOS
27+
TAGS=${BOX_TAGS} bash -x ./build_dist.sh ./cmd/tailscaled
28+
fix_osabi tailscaled
29+
mv tailscaled{,-${GOOS}}
30+
done
31+
32+
ln cmd/tailscaled/tailscale.xml .
33+
shasum -a 256 tailscaled-* tailscale.xml >sha256sums
34+
rm ./tailscale.xml
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?xml version='1.0'?>
2+
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
3+
<service_bundle type='manifest' name='export'>
4+
<service name='vpn/tailscale' type='service' version='0'>
5+
<create_default_instance enabled='true'/>
6+
<single_instance/>
7+
<dependency name='network' grouping='require_all' restart_on='error' type='service'>
8+
<service_fmri value='svc:/milestone/network:default'/>
9+
</dependency>
10+
<dependency name='filesystem' grouping='require_all' restart_on='error' type='service'>
11+
<service_fmri value='svc:/system/filesystem/local'/>
12+
</dependency>
13+
<method_context>
14+
<method_credential group='root' user='root'/>
15+
</method_context>
16+
<exec_method name='start' type='method' exec='/opt/local/sbin/tailscaled' timeout_seconds='60'>
17+
<method_context>
18+
<method_environment>
19+
<envvar name='SSL_CERT_FILE' value='/opt/tools/share/mozilla-rootcerts/cacert.pem'/>
20+
</method_environment>
21+
</method_context>
22+
</exec_method>
23+
<exec_method name='stop' type='method' exec=':kill' timeout_seconds='60'/>
24+
<property_group name='application' type='application'/>
25+
<property_group name='startd' type='framework'>
26+
<propval name='duration' type='astring' value='child'/>
27+
<propval name='ignore_error' type='astring' value='core,signal'/>
28+
</property_group>
29+
<stability value='Evolving'/>
30+
<template>
31+
<common_name>
32+
<loctext xml:lang='C'>Tailscale</loctext>
33+
</common_name>
34+
</template>
35+
</service>
36+
</service_bundle>

cmd/tailscaled/tailscale.xml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version='1.0'?>
2+
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
3+
<service_bundle type='manifest' name='export'>
4+
<service name='vpn/tailscale' type='service' version='0'>
5+
<create_default_instance enabled='true'/>
6+
<single_instance/>
7+
<dependency name='network' grouping='require_all' restart_on='error' type='service'>
8+
<service_fmri value='svc:/milestone/network:default'/>
9+
</dependency>
10+
<dependency name='filesystem' grouping='require_all' restart_on='error' type='service'>
11+
<service_fmri value='svc:/system/filesystem/local'/>
12+
</dependency>
13+
<method_context>
14+
<method_credential group='root' user='root'/>
15+
</method_context>
16+
<exec_method name='start' type='method' exec='/usr/local/sbin/tailscaled' timeout_seconds='60'/>
17+
<exec_method name='stop' type='method' exec=':kill' timeout_seconds='60'/>
18+
<property_group name='application' type='application'/>
19+
<property_group name='startd' type='framework'>
20+
<propval name='duration' type='astring' value='child'/>
21+
<propval name='ignore_error' type='astring' value='core,signal'/>
22+
</property_group>
23+
<stability value='Evolving'/>
24+
<template>
25+
<common_name>
26+
<loctext xml:lang='C'>Tailscale</loctext>
27+
</common_name>
28+
</template>
29+
</service>
30+
</service_bundle>

cmd/tailscaled/tailscaled.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ import (
6767
// defaultTunName returns the default tun device name for the platform.
6868
func defaultTunName() string {
6969
switch runtime.GOOS {
70-
case "openbsd":
70+
case "openbsd", "illumos", "solaris":
7171
return "tun"
7272
case "windows":
7373
return "Tailscale"
@@ -77,7 +77,7 @@ func defaultTunName() string {
7777
return "utun"
7878
case "plan9":
7979
return "auto"
80-
case "aix", "solaris", "illumos":
80+
case "aix":
8181
return "userspace-networking"
8282
case "linux":
8383
if buildfeatures.HasSynology && buildfeatures.HasNetstack && distro.Get() == distro.Synology {

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,3 +428,5 @@ require (
428428
)
429429

430430
tool github.com/stacklok/frizbee
431+
432+
replace github.com/tailscale/wireguard-go => github.com/nshalman/wireguard-go v0.0.20200321-0.20250731001858-998473505459

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -778,6 +778,8 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK
778778
github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs=
779779
github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk=
780780
github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c=
781+
github.com/nshalman/wireguard-go v0.0.20200321-0.20250731001858-998473505459 h1:g7boEoqgzfIkRvh/a/pRDNANjCvqk+8GI3CeLJB0kwU=
782+
github.com/nshalman/wireguard-go v0.0.20200321-0.20250731001858-998473505459/go.mod h1:BOm5fXUBFM+m9woLNBoxI9TaBXXhGNP50LX/TGIvGb4=
781783
github.com/nunnatsa/ginkgolinter v0.16.1 h1:uDIPSxgVHZ7PgbJElRDGzymkXH+JaF7mjew+Thjnt6Q=
782784
github.com/nunnatsa/ginkgolinter v0.16.1/go.mod h1:4tWRinDN1FeJgU+iJANW/kz7xKN5nYRAOfJDQUS9dOQ=
783785
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
@@ -1000,8 +1002,6 @@ github.com/tailscale/web-client-prebuilt v0.0.0-20250124233751-d4cd19a26976 h1:U
10001002
github.com/tailscale/web-client-prebuilt v0.0.0-20250124233751-d4cd19a26976/go.mod h1:agQPE6y6ldqCOui2gkIh7ZMztTkIQKH049tv8siLuNQ=
10011003
github.com/tailscale/wf v0.0.0-20240214030419-6fbb0a674ee6 h1:l10Gi6w9jxvinoiq15g8OToDdASBni4CyJOdHY1Hr8M=
10021004
github.com/tailscale/wf v0.0.0-20240214030419-6fbb0a674ee6/go.mod h1:ZXRML051h7o4OcI0d3AaILDIad/Xw0IkXaHM17dic1Y=
1003-
github.com/tailscale/wireguard-go v0.0.0-20250716170648-1d0488a3d7da h1:jVRUZPRs9sqyKlYHHzHjAqKN+6e/Vog6NpHYeNPJqOw=
1004-
github.com/tailscale/wireguard-go v0.0.0-20250716170648-1d0488a3d7da/go.mod h1:BOm5fXUBFM+m9woLNBoxI9TaBXXhGNP50LX/TGIvGb4=
10051005
github.com/tailscale/xnet v0.0.0-20240729143630-8497ac4dab2e h1:zOGKqN5D5hHhiYUp091JqK7DPCqSARyUfduhGUY8Bek=
10061006
github.com/tailscale/xnet v0.0.0-20240729143630-8497ac4dab2e/go.mod h1:orPd6JZXXRyuDusYilywte7k094d7dycXXU5YnWsrwg=
10071007
github.com/tc-hib/winres v0.2.1 h1:YDE0FiP0VmtRaDn7+aaChp1KiF4owBiJa5l964l5ujA=

net/tstun/tstun_stub.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright (c) Tailscale Inc & AUTHORS
22
// SPDX-License-Identifier: BSD-3-Clause
33

4-
//go:build aix || solaris || illumos
4+
//go:build aix
55

66
package tstun
77

0 commit comments

Comments
 (0)