1
0
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:
Darren Shepherd 2015-09-25 00:01:47 -07:00
commit 0ac4c783f9
4 changed files with 40 additions and 28 deletions

4
Godeps/Godeps.json generated
View File

@ -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",

View File

@ -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 {

View File

@ -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 $@

View File

@ -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 {