mirror of
https://github.com/rancher/os.git
synced 2025-07-18 00:51:04 +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",
|
"ImportPath": "github.com/rancher/docker-from-scratch",
|
||||||
"Comment": "v1.8.2-1",
|
"Comment": "v1.8.2-1-2-g5852c65",
|
||||||
"Rev": "500f0babfdbfcd55fbdbf6690e4508ceb7323474"
|
"Rev": "5852c65f66b6a5e850811dc9782d3b7400531fee"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/rancher/netconf",
|
"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"
|
iptables = "/sbin/iptables"
|
||||||
modprobe = "/sbin/modprobe"
|
modprobe = "/sbin/modprobe"
|
||||||
systemdRoot = "/sys/fs/cgroup/systemd/user.slice"
|
systemdRoot = "/sys/fs/cgroup/systemd/user.slice"
|
||||||
|
distSuffix = ".dist"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -189,7 +190,7 @@ func execDocker(config *Config, docker, cmd string, args []string) (*exec.Cmd, e
|
|||||||
err := cmd.Start()
|
err := cmd.Start()
|
||||||
return cmd, err
|
return cmd, err
|
||||||
} else {
|
} else {
|
||||||
err := syscall.Exec(docker, append([]string{cmd}, args...), env)
|
err := syscall.Exec(expand(docker), append([]string{cmd}, args...), env)
|
||||||
return nil, err
|
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)
|
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 {
|
func setupBin(config *Config, bin string) error {
|
||||||
if _, err := os.Stat(bin); os.IsNotExist(err) {
|
expanded, err := exec.LookPath(bin)
|
||||||
dist := bin + ".dist"
|
if err == nil {
|
||||||
if _, err := os.Stat(dist); err == nil {
|
return nil
|
||||||
return os.Symlink(dist, bin)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
func setupLogging(config *Config) error {
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
include build.conf
|
include build.conf
|
||||||
FORCE_PULL := 0
|
FORCE_PULL := 0
|
||||||
DEV_BUILD := 0
|
DEV_BUILD := 0
|
||||||
|
GODEP := godep
|
||||||
|
|
||||||
|
|
||||||
bin/rancheros:
|
bin/rancheros:
|
||||||
mkdir -p $(dir $@)
|
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 $@
|
strip --strip-all $@
|
||||||
|
|
||||||
|
|
||||||
|
@ -72,26 +72,23 @@ type result struct {
|
|||||||
Pid int `json:"Pid"`
|
Pid int `json:"Pid"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func expand(first, second string, args []string) ([]string, error) {
|
func findProgram(searchPaths ...string) string {
|
||||||
var err error
|
|
||||||
prog := ""
|
prog := ""
|
||||||
|
|
||||||
prog, err = exec.LookPath(first)
|
for _, i := range searchPaths {
|
||||||
if err != nil {
|
var err error
|
||||||
prog, err = exec.LookPath(second)
|
prog, err = exec.LookPath(i)
|
||||||
}
|
if err == nil {
|
||||||
if err != nil {
|
break
|
||||||
return nil, err
|
}
|
||||||
|
prog = i
|
||||||
}
|
}
|
||||||
|
|
||||||
return append([]string{prog}, args...), nil
|
return prog
|
||||||
}
|
}
|
||||||
|
|
||||||
func runNsenter(pid int) error {
|
func runNsenter(pid int) error {
|
||||||
args, err := expand(userDocker, "", []string{"main"})
|
args := []string{findProgram(userDocker), "main"}
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
r, w, err := os.Pipe()
|
r, w, err := os.Pipe()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -227,14 +224,15 @@ func main(cfg *config.CloudConfig) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
args, err := expand("docker-init", "docker", args)
|
prog := findProgram("docker-init", "dockerlaunch", "docker")
|
||||||
if err != nil {
|
if strings.Contains(prog, "dockerlaunch") {
|
||||||
return err
|
args = append([]string{prog, "docker"}, args...)
|
||||||
|
} else {
|
||||||
|
args = append([]string{prog}, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Infof("Running %v", args)
|
log.Infof("Running %v", args)
|
||||||
err = syscall.Exec(args[0], args, dockerCfg.AppendEnv())
|
return syscall.Exec(args[0], args, dockerCfg.AppendEnv())
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func switchCgroup(src, target int) error {
|
func switchCgroup(src, target int) error {
|
||||||
|
Loading…
Reference in New Issue
Block a user