Skip to content
This repository was archived by the owner on May 27, 2023. It is now read-only.

Commit 1a91e2f

Browse files
add support for reset using old-glibc
1 parent ebdc722 commit 1a91e2f

File tree

3 files changed

+105
-10
lines changed

3 files changed

+105
-10
lines changed

build/linux/x86_64/Linux-x86_64-lpmx

44.8 KB
Binary file not shown.

container/container.go

Lines changed: 82 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ func (server *RPC) RPCDelete(req Request, res *Response) error {
148148
return nil
149149
}
150150

151-
func Init(reset bool, deppath string) *Error {
151+
func Init(reset bool, deppath string, useOldGlibc bool) *Error {
152152
currdir, err := GetConfigDir()
153153
if err != nil {
154154
return err
@@ -157,7 +157,7 @@ func Init(reset bool, deppath string) *Error {
157157
config := fmt.Sprintf("%s/.lpmxsys", currdir)
158158

159159
//delete everything
160-
if reset {
160+
if reset || useOldGlibc {
161161
_, cerr := RemoveAll(config)
162162
if cerr != nil {
163163
return cerr
@@ -212,10 +212,19 @@ func Init(reset bool, deppath string) *Error {
212212
deppath = fmt.Sprintf("%s/dependency.tar.gz", sys.RootDir)
213213
}
214214
if !FileExist(deppath) {
215-
yaml := fmt.Sprintf("%s/distro.management.yml", sys.RootDir)
216-
err = DownloadFilefromGithubPlus(dist, release, "dependency.tar.gz", SETTING_URL, sys.RootDir, yaml)
217-
if err != nil {
218-
return err
215+
if useOldGlibc {
216+
gen_url := fmt.Sprintf("%s/default.dependency.tar.gz", SETTING_URL)
217+
fmt.Printf("Downloading default.dependency.tar.gz from %s\n", gen_url)
218+
err = DirectDownloadFilefromGithub("dependency.tar.gz", gen_url, sys.RootDir)
219+
if err != nil {
220+
return err
221+
}
222+
} else {
223+
yaml := fmt.Sprintf("%s/distro.management.yml", sys.RootDir)
224+
err = DownloadFilefromGithubPlus(dist, release, "dependency.tar.gz", SETTING_URL, sys.RootDir, yaml)
225+
if err != nil {
226+
return err
227+
}
219228
}
220229
}
221230

@@ -274,6 +283,72 @@ func Init(reset bool, deppath string) *Error {
274283
return nil
275284
}
276285

286+
func Reset(useOldGlibc bool) *Error {
287+
currdir, err := GetConfigDir()
288+
if err != nil {
289+
return err
290+
}
291+
config := fmt.Sprintf("%s/.lpmxsys", currdir)
292+
293+
if ok, pid, _ := GetProcessIdByName("memcached"); ok {
294+
fmt.Println("stopping memcached instance...")
295+
err := KillProcessByPid(pid)
296+
if err != nil {
297+
return err
298+
}
299+
}
300+
301+
var sys Sys
302+
sys.RootDir = config
303+
err = unmarshalObj(sys.RootDir, &sys)
304+
if err != nil {
305+
return err
306+
}
307+
308+
//download memcached related files based on host os info
309+
dist, release, cerr := GetHostOSInfo()
310+
if cerr != nil {
311+
dist = "default"
312+
release = "default"
313+
}
314+
315+
if dist == "" {
316+
dist = "default"
317+
}
318+
319+
if release == "" {
320+
release = "default"
321+
}
322+
323+
deppath := fmt.Sprintf("%s/dependency.tar.gz", sys.RootDir)
324+
if FileExist(deppath) {
325+
RemoveFile(deppath)
326+
}
327+
328+
if useOldGlibc {
329+
gen_url := fmt.Sprintf("%s/default.dependency.tar.gz", SETTING_URL)
330+
fmt.Printf("Downloading default.dependency.tar.gz from %s\n", gen_url)
331+
err = DirectDownloadFilefromGithub("dependency.tar.gz", gen_url, sys.RootDir)
332+
if err != nil {
333+
return err
334+
}
335+
} else {
336+
yaml := fmt.Sprintf("%s/distro.management.yml", sys.RootDir)
337+
err = DownloadFilefromGithubPlus(dist, release, "dependency.tar.gz", SETTING_URL, sys.RootDir, yaml)
338+
if err != nil {
339+
return err
340+
}
341+
}
342+
343+
fmt.Println("Uncompressing downloaded dependency.tar.gz")
344+
err = Untar(deppath, sys.RootDir)
345+
if err != nil {
346+
return err
347+
}
348+
349+
return nil
350+
}
351+
277352
func Uninstall() *Error {
278353
currdir, err := GetConfigDir()
279354
if err != nil {
@@ -1769,7 +1844,7 @@ func SkopeoLoad(name, dir string) *Error {
17691844

17701845
//check if folder exists
17711846
adir, derr := filepath.Abs(dir)
1772-
if derr!= nil {
1847+
if derr != nil {
17731848
cerr := ErrNew(derr, fmt.Sprintf("could not parse the absolute path: %s", adir))
17741849
return cerr
17751850
}

main.go

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ var (
2020
)
2121

2222
const (
23-
VERSION = "alpha-1.8"
23+
VERSION = "alpha-1.8.1"
2424
)
2525

2626
func checkCompleteness() *Error {
@@ -49,13 +49,14 @@ func checkCompleteness() *Error {
4949
func main() {
5050
var InitReset bool
5151
var InitDep string
52+
var InitUseOldGlibc bool
5253
var initCmd = &cobra.Command{
5354
Use: "init",
5455
Short: "init the lpmx itself",
5556
Long: "init command is the basic command of lpmx, which is used for initializing lpmx system",
5657
Args: cobra.ExactArgs(0),
5758
Run: func(cmd *cobra.Command, args []string) {
58-
err := Init(InitReset, InitDep)
59+
err := Init(InitReset, InitDep, InitUseOldGlibc)
5960
if err != nil {
6061
LOGGER.Fatal(err.Error())
6162
return
@@ -69,6 +70,7 @@ func main() {
6970
}
7071
initCmd.Flags().BoolVarP(&InitReset, "reset", "r", false, "initialize by force(optional)")
7172
initCmd.Flags().StringVarP(&InitDep, "dependency", "d", "", "dependency tar ball(optional)")
73+
initCmd.Flags().BoolVarP(&InitUseOldGlibc, "use-old-glibc", "g", false, "use old glibc veresion(optional)")
7274

7375
var ListName string
7476
var listCmd = &cobra.Command{
@@ -1031,6 +1033,24 @@ func main() {
10311033
},
10321034
}
10331035

1036+
var ResetUseOldGlibc bool
1037+
var resetCmd = &cobra.Command{
1038+
Use: "reset",
1039+
Short: "reset dependencies",
1040+
Long: "reset necessary libraries of lpmx",
1041+
Args: cobra.ExactArgs(0),
1042+
Run: func(cmd *cobra.Command, args []string) {
1043+
err := Reset(ResetUseOldGlibc)
1044+
if err != nil {
1045+
LOGGER.Error(err.Error())
1046+
return
1047+
} else {
1048+
LOGGER.Info("DONE")
1049+
}
1050+
},
1051+
}
1052+
resetCmd.Flags().BoolVarP(&ResetUseOldGlibc, "use-old-glibc", "g", false, "use old glibc veresion(optional)")
1053+
10341054
var versionCmd = &cobra.Command{
10351055
Use: "version",
10361056
Short: "show the version of LPMX",
@@ -1045,6 +1065,6 @@ func main() {
10451065
Use: "lpmx",
10461066
Short: "lpmx rootless container",
10471067
}
1048-
rootCmd.AddCommand(initCmd, destroyCmd, listCmd, setCmd, resumeCmd, getCmd, dockerCmd, singularityCmd, exposeCmd, uninstallCmd, versionCmd, downloadCmd, updateCmd)
1068+
rootCmd.AddCommand(initCmd, destroyCmd, listCmd, setCmd, resumeCmd, getCmd, dockerCmd, singularityCmd, exposeCmd, uninstallCmd, versionCmd, downloadCmd, updateCmd, resetCmd)
10491069
rootCmd.Execute()
10501070
}

0 commit comments

Comments
 (0)