Skip to content

Commit f96d341

Browse files
committed
v2.0.0-alpha.0; add --print-semver=(major|minor|patch)
Signed-off-by: Akihiro Suda <[email protected]>
1 parent ecfe592 commit f96d341

File tree

37 files changed

+174
-143
lines changed

37 files changed

+174
-143
lines changed

Makefile

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ clean:
1010
$(RM) -r bin/ _artifact/
1111

1212
bin/rootlesskit: $(GO_FILES)
13-
$(GO) build -o $@ -v github.com/rootless-containers/rootlesskit/cmd/rootlesskit
13+
$(GO) build -o $@ -v ./cmd/rootlesskit
1414

1515
bin/rootlessctl: $(GO_FILES)
16-
$(GO) build -o $@ -v github.com/rootless-containers/rootlesskit/cmd/rootlessctl
16+
$(GO) build -o $@ -v ./cmd/rootlessctl
1717

1818
bin/rootlesskit-docker-proxy: $(GO_FILES)
19-
$(GO) build -o $@ -v github.com/rootless-containers/rootlesskit/cmd/rootlesskit-docker-proxy
19+
$(GO) build -o $@ -v ./cmd/rootlesskit-docker-proxy
2020

2121
.PHONY: cross
2222
cross:

README.md

+40-35
Original file line numberDiff line numberDiff line change
@@ -154,78 +154,83 @@ USAGE:
154154
rootlesskit [global options] [arguments...]
155155

156156
VERSION:
157-
1.1.0
157+
2.0.0-alpha.0
158158

159159
DESCRIPTION:
160160
RootlessKit is a Linux-native implementation of "fake root" using user_namespaces(7).
161-
161+
162162
Web site: https://github.com/rootless-containers/rootlesskit
163-
163+
164164
Examples:
165165
# spawn a shell with a new user namespace and a mount namespace
166166
rootlesskit bash
167-
167+
168168
# make /etc writable
169169
rootlesskit --copy-up=/etc bash
170-
170+
171171
# set mount propagation to rslave
172172
rootlesskit --propagation=rslave bash
173-
173+
174174
# create a network namespace with slirp4netns, and expose 80/tcp on the namespace as 8080/tcp on the host
175175
rootlesskit --copy-up=/etc --net=slirp4netns --disable-host-loopback --port-driver=builtin -p 127.0.0.1:8080:80/tcp bash
176-
176+
177177
Note: RootlessKit requires /etc/subuid and /etc/subgid to be configured by the real root user.
178178
See https://rootlesscontaine.rs/getting-started/common/ .
179179

180180
OPTIONS:
181-
Misc:
181+
Misc:
182182
--debug debug mode (default: false)
183-
--help, -h show help (default: false)
184-
--version, -v print the version (default: false)
185-
186-
Mount:
183+
--print-semver value print a version component as a decimal integer [major, minor, patch]
184+
--help, -h show help
185+
--version, -v print the version
186+
187+
Mount:
187188
--copy-up value [ --copy-up value ] mount a filesystem and copy-up the contents. e.g. "--copy-up=/etc" (typically required for non-host network)
188189
--copy-up-mode value copy-up mode [tmpfs+symlink]
189190
--propagation value mount propagation [rprivate, rslave]
190-
191-
Network:
192-
--net value network driver [host, slirp4netns, vpnkit, lxc-user-nic(experimental)]
193-
--mtu value MTU for non-host network (default: 65520 for slirp4netns, 1500 for others) (default: 0)
194-
--cidr value CIDR for slirp4netns network (default: 10.0.2.0/24)
195-
--ifname value Network interface name (default: tap0 for slirp4netns and vpnkit, eth0 for lxc-user-nic)
191+
192+
Network:
193+
--net value network driver [host, pasta(experimental), slirp4netns, vpnkit, lxc-user-nic(experimental)]
194+
--mtu value MTU for non-host network (default: 65520 for pasta and slirp4netns, 1500 for others) (default: 0)
195+
--cidr value CIDR for pasta and slirp4netns networks (default: 10.0.2.0/24)
196+
--ifname value Network interface name (default: tap0 for pasta, slirp4netns, and vpnkit; eth0 for lxc-user-nic)
196197
--disable-host-loopback prohibit connecting to 127.0.0.1:* on the host namespace (default: false)
197-
--ipv6 enable IPv6 routing. Unrelated to port forwarding. Only supported for slirp4netns. (experimental) (default: false)
198-
199-
Network [lxc-user-nic]:
198+
--ipv6 enable IPv6 routing. Unrelated to port forwarding. Only supported for pasta and slirp4netns. (experimental) (default: false)
199+
--detach-netns detach network namespaces (default: false)
200+
201+
Network [lxc-user-nic]:
200202
--lxc-user-nic-binary value path of lxc-user-nic binary for --net=lxc-user-nic
201203
--lxc-user-nic-bridge value lxc-user-nic bridge name
202-
203-
Network [slirp4netns]:
204+
205+
Network [pasta]:
206+
--pasta-binary value path of pasta binary for --net=pasta
207+
208+
Network [slirp4netns]:
204209
--slirp4netns-binary value path of slirp4netns binary for --net=slirp4netns
205210
--slirp4netns-sandbox value enable slirp4netns sandbox (experimental) [auto, true, false] (the default is planned to be "auto" in future)
206211
--slirp4netns-seccomp value enable slirp4netns seccomp (experimental) [auto, true, false] (the default is planned to be "auto" in future)
207-
208-
Network [vpnkit]:
212+
213+
Network [vpnkit]:
209214
--vpnkit-binary value path of VPNKit binary for --net=vpnkit
210-
211-
Port:
212-
--port-driver value port driver for non-host network. [none, builtin, slirp4netns]
215+
216+
Port:
217+
--port-driver value port driver for non-host network. [none, implicit (for pasta), builtin, slirp4netns]
213218
--publish value, -p value [ --publish value, -p value ] publish ports. e.g. "127.0.0.1:8080:80/tcp"
214-
215-
Process:
219+
220+
Process:
216221
--pidns create a PID namespace (default: false)
217222
--cgroupns create a cgroup namespace (default: false)
218223
--utsns create a UTS namespace (default: false)
219224
--ipcns create an IPC namespace (default: false)
220225
--reaper value enable process reaper. Requires --pidns. [auto,true,false]
221226
--evacuate-cgroup2 value evacuate processes into the specified subgroup. Requires --pidns and --cgroupns
222-
223-
State:
227+
228+
State:
224229
--state-dir value state directory
225-
226-
SubID:
230+
231+
SubID:
227232
--subid-source value the source of the subids. "dynamic" executes /usr/bin/getsubids. "static" reads /etc/{subuid,subgid}. [auto,dynamic,static]
228-
233+
229234
```
230235

231236
## State directory

cmd/rootlessctl/main.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import (
99
"github.com/sirupsen/logrus"
1010
"github.com/urfave/cli/v2"
1111

12-
"github.com/rootless-containers/rootlesskit/pkg/api/client"
13-
"github.com/rootless-containers/rootlesskit/pkg/version"
12+
"github.com/rootless-containers/rootlesskit/v2/pkg/api/client"
13+
"github.com/rootless-containers/rootlesskit/v2/pkg/version"
1414
)
1515

1616
func main() {

cmd/rootlessctl/port.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import (
1111

1212
"github.com/urfave/cli/v2"
1313

14-
"github.com/rootless-containers/rootlesskit/pkg/port"
15-
"github.com/rootless-containers/rootlesskit/pkg/port/portutil"
14+
"github.com/rootless-containers/rootlesskit/v2/pkg/port"
15+
"github.com/rootless-containers/rootlesskit/v2/pkg/port/portutil"
1616
)
1717

1818
var listPortsCommand = cli.Command{

cmd/rootlesskit-docker-proxy/main.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ import (
1515
"strings"
1616
"syscall"
1717

18-
"github.com/rootless-containers/rootlesskit/pkg/api"
19-
"github.com/rootless-containers/rootlesskit/pkg/api/client"
20-
"github.com/rootless-containers/rootlesskit/pkg/port"
18+
"github.com/rootless-containers/rootlesskit/v2/pkg/api"
19+
"github.com/rootless-containers/rootlesskit/v2/pkg/api/client"
20+
"github.com/rootless-containers/rootlesskit/v2/pkg/port"
2121
"github.com/sirupsen/logrus"
2222
)
2323

cmd/rootlesskit/main.go

+35-12
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,22 @@ import (
1010
"strings"
1111
"syscall"
1212

13+
"github.com/Masterminds/semver/v3"
1314
"github.com/sirupsen/logrus"
1415
"github.com/urfave/cli/v2"
1516

16-
"github.com/rootless-containers/rootlesskit/pkg/child"
17-
"github.com/rootless-containers/rootlesskit/pkg/common"
18-
"github.com/rootless-containers/rootlesskit/pkg/copyup/tmpfssymlink"
19-
"github.com/rootless-containers/rootlesskit/pkg/network/lxcusernic"
20-
"github.com/rootless-containers/rootlesskit/pkg/network/pasta"
21-
"github.com/rootless-containers/rootlesskit/pkg/network/slirp4netns"
22-
"github.com/rootless-containers/rootlesskit/pkg/network/vpnkit"
23-
"github.com/rootless-containers/rootlesskit/pkg/parent"
24-
"github.com/rootless-containers/rootlesskit/pkg/port/builtin"
25-
"github.com/rootless-containers/rootlesskit/pkg/port/portutil"
26-
slirp4netns_port "github.com/rootless-containers/rootlesskit/pkg/port/slirp4netns"
27-
"github.com/rootless-containers/rootlesskit/pkg/version"
17+
"github.com/rootless-containers/rootlesskit/v2/pkg/child"
18+
"github.com/rootless-containers/rootlesskit/v2/pkg/common"
19+
"github.com/rootless-containers/rootlesskit/v2/pkg/copyup/tmpfssymlink"
20+
"github.com/rootless-containers/rootlesskit/v2/pkg/network/lxcusernic"
21+
"github.com/rootless-containers/rootlesskit/v2/pkg/network/pasta"
22+
"github.com/rootless-containers/rootlesskit/v2/pkg/network/slirp4netns"
23+
"github.com/rootless-containers/rootlesskit/v2/pkg/network/vpnkit"
24+
"github.com/rootless-containers/rootlesskit/v2/pkg/parent"
25+
"github.com/rootless-containers/rootlesskit/v2/pkg/port/builtin"
26+
"github.com/rootless-containers/rootlesskit/v2/pkg/port/portutil"
27+
slirp4netns_port "github.com/rootless-containers/rootlesskit/v2/pkg/port/slirp4netns"
28+
"github.com/rootless-containers/rootlesskit/v2/pkg/version"
2829
)
2930

3031
func main() {
@@ -72,6 +73,10 @@ See https://rootlesscontaine.rs/getting-started/common/ .
7273
Usage: "debug mode",
7374
Destination: &debug,
7475
}, CategoryMisc),
76+
Categorize(&cli.StringFlag{
77+
Name: "print-semver",
78+
Usage: "print a version component as a decimal integer [major, minor, patch]",
79+
}, CategoryMisc),
7580
Categorize(&cli.StringFlag{
7681
Name: "state-dir",
7782
Usage: "state directory",
@@ -222,9 +227,27 @@ OPTIONS:
222227
Formatter: logrus.StandardLogger().Formatter,
223228
}
224229
logrus.SetFormatter(formatter)
230+
225231
return nil
226232
}
227233
app.Action = func(clicontext *cli.Context) error {
234+
if s := clicontext.String("print-semver"); s != "" {
235+
sv, err := semver.NewVersion(version.Version)
236+
if err != nil {
237+
return fmt.Errorf("failed to parse version %q: %w", version.Version, err)
238+
}
239+
switch s {
240+
case "major":
241+
fmt.Fprintln(clicontext.App.Writer, sv.Major())
242+
case "minor":
243+
fmt.Fprintln(clicontext.App.Writer, sv.Minor())
244+
case "patch":
245+
fmt.Fprintln(clicontext.App.Writer, sv.Patch())
246+
default:
247+
return fmt.Errorf("expected --print-semver=(major|minor|patch), got %q", s)
248+
}
249+
return nil
250+
}
228251
if clicontext.NArg() < 1 {
229252
return errors.New("no command specified")
230253
}

go.mod

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
module github.com/rootless-containers/rootlesskit
1+
module github.com/rootless-containers/rootlesskit/v2
22

33
go 1.19
44

55
require (
6+
github.com/Masterminds/semver/v3 v3.2.1
67
github.com/containernetworking/plugins v1.3.0
78
github.com/gofrs/flock v0.8.1
89
github.com/google/uuid v1.3.0

go.sum

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0=
2+
github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
13
github.com/containernetworking/cni v1.1.2 h1:wtRGZVv7olUHMOqouPpn3cXJWpJgM6+EUl31EQbXALQ=
24
github.com/containernetworking/plugins v1.3.0 h1:QVNXMT6XloyMUoO2wUOqWTC1hWFV62Q6mVDp5H1HnjM=
35
github.com/containernetworking/plugins v1.3.0/go.mod h1:Pc2wcedTQQCVuROOOaLBPPxrEXqqXBFt3cZ+/yVg6l0=

pkg/api/client/client.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ import (
77
"fmt"
88
"net/http"
99

10-
"github.com/rootless-containers/rootlesskit/pkg/api"
11-
"github.com/rootless-containers/rootlesskit/pkg/port"
12-
"github.com/rootless-containers/rootlesskit/pkg/httputil"
10+
"github.com/rootless-containers/rootlesskit/v2/pkg/api"
11+
"github.com/rootless-containers/rootlesskit/v2/pkg/port"
12+
"github.com/rootless-containers/rootlesskit/v2/pkg/httputil"
1313
)
1414

1515
type Client interface {

pkg/api/router/router.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import (
99
"strconv"
1010

1111
"github.com/gorilla/mux"
12-
"github.com/rootless-containers/rootlesskit/pkg/api"
13-
"github.com/rootless-containers/rootlesskit/pkg/port"
14-
"github.com/rootless-containers/rootlesskit/pkg/httputil"
15-
"github.com/rootless-containers/rootlesskit/pkg/version"
12+
"github.com/rootless-containers/rootlesskit/v2/pkg/api"
13+
"github.com/rootless-containers/rootlesskit/v2/pkg/port"
14+
"github.com/rootless-containers/rootlesskit/v2/pkg/httputil"
15+
"github.com/rootless-containers/rootlesskit/v2/pkg/version"
1616
)
1717

1818
// NetworkDriver is implemented by network.ParentDriver

pkg/child/child.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ import (
1414
"time"
1515

1616
"github.com/containernetworking/plugins/pkg/ns"
17-
"github.com/rootless-containers/rootlesskit/pkg/common"
18-
"github.com/rootless-containers/rootlesskit/pkg/copyup"
19-
"github.com/rootless-containers/rootlesskit/pkg/messages"
20-
"github.com/rootless-containers/rootlesskit/pkg/network"
21-
"github.com/rootless-containers/rootlesskit/pkg/port"
22-
"github.com/rootless-containers/rootlesskit/pkg/sigproxy"
23-
sigproxysignal "github.com/rootless-containers/rootlesskit/pkg/sigproxy/signal"
17+
"github.com/rootless-containers/rootlesskit/v2/pkg/common"
18+
"github.com/rootless-containers/rootlesskit/v2/pkg/copyup"
19+
"github.com/rootless-containers/rootlesskit/v2/pkg/messages"
20+
"github.com/rootless-containers/rootlesskit/v2/pkg/network"
21+
"github.com/rootless-containers/rootlesskit/v2/pkg/port"
22+
"github.com/rootless-containers/rootlesskit/v2/pkg/sigproxy"
23+
sigproxysignal "github.com/rootless-containers/rootlesskit/v2/pkg/sigproxy/signal"
2424
"github.com/sirupsen/logrus"
2525
"golang.org/x/sys/unix"
2626
)

pkg/copyup/tmpfssymlink/tmpfssymlink.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88

99
"golang.org/x/sys/unix"
1010

11-
"github.com/rootless-containers/rootlesskit/pkg/copyup"
11+
"github.com/rootless-containers/rootlesskit/v2/pkg/copyup"
1212
)
1313

1414
func NewChildDriver() copyup.ChildDriver {

pkg/messages/messages.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"io"
66
"reflect"
77

8-
"github.com/rootless-containers/rootlesskit/pkg/lowlevelmsgutil"
8+
"github.com/rootless-containers/rootlesskit/v2/pkg/lowlevelmsgutil"
99
"github.com/sirupsen/logrus"
1010
)
1111

pkg/network/lxcusernic/lxcusernic.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ import (
1616

1717
"github.com/sirupsen/logrus"
1818

19-
"github.com/rootless-containers/rootlesskit/pkg/api"
20-
"github.com/rootless-containers/rootlesskit/pkg/common"
21-
"github.com/rootless-containers/rootlesskit/pkg/messages"
22-
"github.com/rootless-containers/rootlesskit/pkg/network"
19+
"github.com/rootless-containers/rootlesskit/v2/pkg/api"
20+
"github.com/rootless-containers/rootlesskit/v2/pkg/common"
21+
"github.com/rootless-containers/rootlesskit/v2/pkg/messages"
22+
"github.com/rootless-containers/rootlesskit/v2/pkg/network"
2323
)
2424

2525
func NewParentDriver(binary string, mtu int, bridge, ifname string) (network.ParentDriver, error) {

pkg/network/network.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package network
33
import (
44
"context"
55

6-
"github.com/rootless-containers/rootlesskit/pkg/api"
7-
"github.com/rootless-containers/rootlesskit/pkg/messages"
6+
"github.com/rootless-containers/rootlesskit/v2/pkg/api"
7+
"github.com/rootless-containers/rootlesskit/v2/pkg/messages"
88
)
99

1010
// ParentDriver is called from the parent namespace

pkg/network/parentutils/parentutils.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"os"
66
"strconv"
77

8-
"github.com/rootless-containers/rootlesskit/pkg/common"
8+
"github.com/rootless-containers/rootlesskit/v2/pkg/common"
99
)
1010

1111
func PrepareTap(childPID int, childNetNsPath string, tap string) error {

pkg/network/pasta/pasta.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ import (
1212

1313
"github.com/sirupsen/logrus"
1414

15-
"github.com/rootless-containers/rootlesskit/pkg/api"
16-
"github.com/rootless-containers/rootlesskit/pkg/common"
17-
"github.com/rootless-containers/rootlesskit/pkg/messages"
18-
"github.com/rootless-containers/rootlesskit/pkg/network"
19-
"github.com/rootless-containers/rootlesskit/pkg/network/iputils"
20-
"github.com/rootless-containers/rootlesskit/pkg/network/parentutils"
15+
"github.com/rootless-containers/rootlesskit/v2/pkg/api"
16+
"github.com/rootless-containers/rootlesskit/v2/pkg/common"
17+
"github.com/rootless-containers/rootlesskit/v2/pkg/messages"
18+
"github.com/rootless-containers/rootlesskit/v2/pkg/network"
19+
"github.com/rootless-containers/rootlesskit/v2/pkg/network/iputils"
20+
"github.com/rootless-containers/rootlesskit/v2/pkg/network/parentutils"
2121
)
2222

2323
// NewParentDriver instantiates new parent driver.

0 commit comments

Comments
 (0)