mirror of
https://github.com/rancher/os.git
synced 2025-07-16 08:05:51 +00:00
Merge pull request #582 from ibuildthecloud/fix-symlink
Fix symlinking docker.dist in custom consoles
This commit is contained in:
commit
0ac4c783f9
4
Godeps/Godeps.json
generated
4
Godeps/Godeps.json
generated
@ -363,8 +363,8 @@
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/rancher/docker-from-scratch",
|
||||
"Comment": "v1.8.2-1",
|
||||
"Rev": "500f0babfdbfcd55fbdbf6690e4508ceb7323474"
|
||||
"Comment": "v1.8.2-1-2-g5852c65",
|
||||
"Rev": "5852c65f66b6a5e850811dc9782d3b7400531fee"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/rancher/netconf",
|
||||
|
27
Godeps/_workspace/src/github.com/rancher/docker-from-scratch/scratch.go
generated
vendored
27
Godeps/_workspace/src/github.com/rancher/docker-from-scratch/scratch.go
generated
vendored
@ -23,6 +23,7 @@ const (
|
||||
iptables = "/sbin/iptables"
|
||||
modprobe = "/sbin/modprobe"
|
||||
systemdRoot = "/sys/fs/cgroup/systemd/user.slice"
|
||||
distSuffix = ".dist"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -189,7 +190,7 @@ func execDocker(config *Config, docker, cmd string, args []string) (*exec.Cmd, e
|
||||
err := cmd.Start()
|
||||
return cmd, err
|
||||
} else {
|
||||
err := syscall.Exec(docker, append([]string{cmd}, args...), env)
|
||||
err := syscall.Exec(expand(docker), append([]string{cmd}, args...), env)
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
@ -481,15 +482,27 @@ func setupSystemd(config *Config) error {
|
||||
return ioutil.WriteFile(path.Join(systemdRoot, "cgroup.procs"), []byte(strconv.Itoa(os.Getpid())+"\n"), 0644)
|
||||
}
|
||||
|
||||
func expand(bin string) string {
|
||||
expanded, err := exec.LookPath(bin)
|
||||
if err == nil {
|
||||
return expanded
|
||||
}
|
||||
return bin
|
||||
}
|
||||
|
||||
func setupBin(config *Config, bin string) error {
|
||||
if _, err := os.Stat(bin); os.IsNotExist(err) {
|
||||
dist := bin + ".dist"
|
||||
if _, err := os.Stat(dist); err == nil {
|
||||
return os.Symlink(dist, bin)
|
||||
}
|
||||
expanded, err := exec.LookPath(bin)
|
||||
if err == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return nil
|
||||
expanded, err = exec.LookPath(bin + distSuffix)
|
||||
if err != nil {
|
||||
// Purposely not returning error
|
||||
return nil
|
||||
}
|
||||
|
||||
return CreateSymlink(expanded, expanded[:len(expanded)-len(distSuffix)])
|
||||
}
|
||||
|
||||
func setupLogging(config *Config) error {
|
||||
|
@ -1,11 +1,12 @@
|
||||
include build.conf
|
||||
FORCE_PULL := 0
|
||||
DEV_BUILD := 0
|
||||
GODEP := godep
|
||||
|
||||
|
||||
bin/rancheros:
|
||||
mkdir -p $(dir $@)
|
||||
godep go build -tags netgo -installsuffix netgo -ldflags "-X github.com/rancherio/os/config.VERSION $(VERSION) -linkmode external -extldflags -static" -o $@
|
||||
$(GODEP) go build -tags netgo -installsuffix netgo -ldflags "-X github.com/rancherio/os/config.VERSION $(VERSION) -linkmode external -extldflags -static" -o $@
|
||||
strip --strip-all $@
|
||||
|
||||
|
||||
|
@ -72,26 +72,23 @@ type result struct {
|
||||
Pid int `json:"Pid"`
|
||||
}
|
||||
|
||||
func expand(first, second string, args []string) ([]string, error) {
|
||||
var err error
|
||||
func findProgram(searchPaths ...string) string {
|
||||
prog := ""
|
||||
|
||||
prog, err = exec.LookPath(first)
|
||||
if err != nil {
|
||||
prog, err = exec.LookPath(second)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
for _, i := range searchPaths {
|
||||
var err error
|
||||
prog, err = exec.LookPath(i)
|
||||
if err == nil {
|
||||
break
|
||||
}
|
||||
prog = i
|
||||
}
|
||||
|
||||
return append([]string{prog}, args...), nil
|
||||
return prog
|
||||
}
|
||||
|
||||
func runNsenter(pid int) error {
|
||||
args, err := expand(userDocker, "", []string{"main"})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
args := []string{findProgram(userDocker), "main"}
|
||||
|
||||
r, w, err := os.Pipe()
|
||||
if err != nil {
|
||||
@ -227,14 +224,15 @@ func main(cfg *config.CloudConfig) error {
|
||||
}
|
||||
}
|
||||
|
||||
args, err := expand("docker-init", "docker", args)
|
||||
if err != nil {
|
||||
return err
|
||||
prog := findProgram("docker-init", "dockerlaunch", "docker")
|
||||
if strings.Contains(prog, "dockerlaunch") {
|
||||
args = append([]string{prog, "docker"}, args...)
|
||||
} else {
|
||||
args = append([]string{prog}, args...)
|
||||
}
|
||||
|
||||
log.Infof("Running %v", args)
|
||||
err = syscall.Exec(args[0], args, dockerCfg.AppendEnv())
|
||||
return err
|
||||
return syscall.Exec(args[0], args, dockerCfg.AppendEnv())
|
||||
}
|
||||
|
||||
func switchCgroup(src, target int) error {
|
||||
|
Loading…
Reference in New Issue
Block a user