Prechádzať zdrojové kódy

Revert "Merge pull request #778 from Morganamilo/group-transactions"

This reverts commit 6cd47dd83c49689f0bd84c650feea9c71ed1aaf2, reversing
changes made to 16fddae8b6e5b0adb0265f4f8f44bff607394dcc.

Signed-off-by: Jguer <me@jguer.space>
Jguer 5 rokov pred
rodič
commit
2214bc0cb2
5 zmenil súbory, kde vykonal 76 pridanie a 143 odobranie
  1. 1 1
      clean.go
  2. 1 1
      cmd.go
  3. 0 2
      config.go
  4. 74 124
      install.go
  5. 0 15
      parser.go

+ 1 - 1
clean.go

@@ -45,7 +45,7 @@ func cleanRemove(pkgNames []string) (err error) {
 		return nil
 	}
 
-	arguments := cmdArgs.copyGlobal()
+	arguments := makeArguments()
 	arguments.addArg("R")
 	arguments.addTarget(pkgNames...)
 

+ 1 - 1
cmd.go

@@ -350,7 +350,7 @@ func displayNumberMenu(pkgS []string) (err error) {
 	}
 
 	include, exclude, _, otherExclude := parseNumberMenu(string(numberBuf))
-	arguments := cmdArgs.copyGlobal()
+	arguments := makeArguments()
 
 	isInclude := len(exclude) == 0 && len(otherExclude) == 0
 

+ 0 - 2
config.go

@@ -47,7 +47,6 @@ type Configuration struct {
 	TarBin             string `json:"tarbin"`
 	ReDownload         string `json:"redownload"`
 	ReBuild            string `json:"rebuild"`
-	BatchInstall       bool   `json:"batchinstall"`
 	AnswerClean        string `json:"answerclean"`
 	AnswerDiff         string `json:"answerdiff"`
 	AnswerEdit         string `json:"answeredit"`
@@ -166,7 +165,6 @@ func defaultSettings() *Configuration {
 		RequestSplitN:      150,
 		ReDownload:         "no",
 		ReBuild:            "no",
-		BatchInstall:       false,
 		AnswerClean:        "",
 		AnswerDiff:         "",
 		AnswerEdit:         "",

+ 74 - 124
install.go

@@ -13,38 +13,6 @@ import (
 	gosrc "github.com/Morganamilo/go-srcinfo"
 )
 
-func asdeps(parser *arguments, pkgs []string) error {
-	if len(pkgs) == 0 {
-		return nil
-	}
-
-	parser = parser.copyGlobal()
-	parser.addArg("D", "asdeps")
-	parser.addTarget(pkgs...)
-	_, stderr, err := capture(passToPacman(parser))
-	if err != nil {
-		return fmt.Errorf("%s%s", stderr, err)
-	}
-
-	return nil
-}
-
-func asexp(parser *arguments, pkgs []string) error {
-	if len(pkgs) == 0 {
-		return nil
-	}
-
-	parser = parser.copyGlobal()
-	parser.addArg("D", "asexplicit")
-	parser.addTarget(pkgs...)
-	_, stderr, err := capture(passToPacman(parser))
-	if err != nil {
-		return fmt.Errorf("%s%s", stderr, err)
-	}
-
-	return nil
-}
-
 // Install handles package installs
 func install(parser *arguments) (err error) {
 	var incompatible stringSet
@@ -314,27 +282,36 @@ func install(parser *arguments) (err error) {
 			return fmt.Errorf("Error installing repo packages")
 		}
 
-		deps := make([]string, 0)
-		exp := make([]string, 0)
+		depArguments := makeArguments()
+		depArguments.addArg("D", "asdeps")
+		expArguments := makeArguments()
+		expArguments.addArg("D", "asexplicit")
 
-		for _, pkg := range dp.Repo {
+		for _, pkg := range do.Repo {
 			if !dp.Explicit.get(pkg.Name()) && !localNamesCache.get(pkg.Name()) && !remoteNamesCache.get(pkg.Name()) {
-				deps = append(deps, pkg.Name())
+				depArguments.addTarget(pkg.Name())
 				continue
 			}
 
 			if parser.existsArg("asdeps", "asdep") && dp.Explicit.get(pkg.Name()) {
-				deps = append(deps, pkg.Name())
+				depArguments.addTarget(pkg.Name())
 			} else if parser.existsArg("asexp", "asexplicit") && dp.Explicit.get(pkg.Name()) {
-				exp = append(exp, pkg.Name())
+				expArguments.addTarget(pkg.Name())
 			}
 		}
 
-		if err = asdeps(parser, deps); err != nil {
-			return err
+		if len(depArguments.targets) > 0 {
+			_, stderr, err := capture(passToPacman(depArguments))
+			if err != nil {
+				return fmt.Errorf("%s%s", stderr, err)
+			}
 		}
-		if err = asexp(parser, exp); err != nil {
-			return err
+
+		if len(expArguments.targets) > 0 {
+			_, stderr, err := capture(passToPacman(expArguments))
+			if err != nil {
+				return fmt.Errorf("%s%s", stderr, err)
+			}
 		}
 	}
 
@@ -916,81 +893,11 @@ func downloadPkgbuildsSources(bases []Base, incompatible stringSet) (err error)
 }
 
 func buildInstallPkgbuilds(dp *depPool, do *depOrder, srcinfos map[string]*gosrc.Srcinfo, parser *arguments, incompatible stringSet, conflicts mapStringSet) error {
-	arguments := parser.copy()
-	arguments.clearTargets()
-	arguments.op = "U"
-	arguments.delArg("confirm")
-	arguments.delArg("noconfirm")
-	arguments.delArg("c", "clean")
-	arguments.delArg("q", "quiet")
-	arguments.delArg("q", "quiet")
-	arguments.delArg("y", "refresh")
-	arguments.delArg("u", "sysupgrade")
-	arguments.delArg("w", "downloadonly")
-
-	deps := make([]string, 0)
-	exp := make([]string, 0)
-	oldConfirm := config.NoConfirm
-	config.NoConfirm = true
-
-	doInstall := func() error {
-		if len(arguments.targets) == 0 {
-			return nil
-		}
-
-		err := show(passToPacman(arguments))
-		if err != nil {
-			return err
-		}
-
-		err = saveVCSInfo()
-		if err != nil {
-			fmt.Fprintln(os.Stderr, err)
-		}
-
-		if err = asdeps(parser, deps); err != nil {
-			return err
-		}
-		if err = asexp(parser, exp); err != nil {
-			return err
-		}
-
-		config.NoConfirm = oldConfirm
-
-		arguments.clearTargets()
-		deps = make([]string, 0)
-		exp = make([]string, 0)
-		config.NoConfirm = true
-		return nil
-	}
-
 	for _, base := range do.Aur {
-		var err error
 		pkg := base.Pkgbase()
 		dir := filepath.Join(config.BuildDir, pkg)
 		built := true
 
-		satisfied := true
-	all:
-		for _, pkg := range base {
-			for _, deps := range [3][]string{pkg.Depends, pkg.MakeDepends, pkg.CheckDepends} {
-				for _, dep := range deps {
-					if _, err := dp.LocalDB.PkgCache().FindSatisfier(dep); err != nil {
-						satisfied = false
-						fmt.Printf("%s not satisfied, flushing install queue", dep)
-						break all
-					}
-				}
-			}
-		}
-
-		if !satisfied || !config.BatchInstall {
-			err = doInstall()
-			if err != nil {
-				return err
-			}
-		}
-
 		srcinfo := srcinfos[pkg]
 
 		args := []string{"--nobuild", "-fC"}
@@ -1000,7 +907,7 @@ func buildInstallPkgbuilds(dp *depPool, do *depOrder, srcinfos map[string]*gosrc
 		}
 
 		//pkgver bump
-		err = show(passToMakepkg(dir, args...))
+		err := show(passToMakepkg(dir, args...))
 		if err != nil {
 			return fmt.Errorf("Error making: %s", base.String())
 		}
@@ -1064,20 +971,43 @@ func buildInstallPkgbuilds(dp *depPool, do *depOrder, srcinfos map[string]*gosrc
 			}
 		}
 
+		arguments := parser.copy()
+		arguments.clearTargets()
+		arguments.op = "U"
+		arguments.delArg("confirm")
+		arguments.delArg("noconfirm")
+		arguments.delArg("c", "clean")
+		arguments.delArg("q", "quiet")
+		arguments.delArg("q", "quiet")
+		arguments.delArg("y", "refresh")
+		arguments.delArg("u", "sysupgrade")
+		arguments.delArg("w", "downloadonly")
+
+		oldConfirm := config.NoConfirm
+
 		//conflicts have been checked so answer y for them
 		if config.UseAsk {
 			ask, _ := strconv.Atoi(cmdArgs.globals["ask"])
 			uask := alpm.QuestionType(ask) | alpm.QuestionTypeConflictPkg
 			cmdArgs.globals["ask"] = fmt.Sprint(uask)
 		} else {
+			conflict := false
 			for _, split := range base {
 				if _, ok := conflicts[split.Name]; ok {
-					config.NoConfirm = false
-					break
+					conflict = true
 				}
 			}
+
+			if !conflict {
+				config.NoConfirm = true
+			}
 		}
 
+		depArguments := makeArguments()
+		depArguments.addArg("D", "asdeps")
+		expArguments := makeArguments()
+		expArguments.addArg("D", "asexplicit")
+
 		//remotenames: names of all non repo packages on the system
 		_, _, localNames, remoteNames, err := filterPackages()
 		if err != nil {
@@ -1096,15 +1026,24 @@ func buildInstallPkgbuilds(dp *depPool, do *depOrder, srcinfos map[string]*gosrc
 			}
 
 			arguments.addTarget(pkgdest)
-			if parser.existsArg("asdeps", "asdep") {
-				deps = append(deps, split.Name)
-			} else if parser.existsArg("asexplicit", "asexp") {
-				exp = append(exp, split.Name)
-			} else if !dp.Explicit.get(split.Name) && !localNamesCache.get(split.Name) && !remoteNamesCache.get(split.Name) {
-				deps = append(deps, split.Name)
+			if !dp.Explicit.get(split.Name) && !localNamesCache.get(split.Name) && !remoteNamesCache.get(split.Name) {
+				depArguments.addTarget(split.Name)
+			}
+
+			if dp.Explicit.get(split.Name) {
+				if parser.existsArg("asdeps", "asdep") {
+					depArguments.addTarget(split.Name)
+				} else if parser.existsArg("asexplicit", "asexp") {
+					expArguments.addTarget(split.Name)
+				}
 			}
 		}
 
+		err = show(passToPacman(arguments))
+		if err != nil {
+			return err
+		}
+
 		var mux sync.Mutex
 		var wg sync.WaitGroup
 		for _, pkg := range base {
@@ -1113,9 +1052,20 @@ func buildInstallPkgbuilds(dp *depPool, do *depOrder, srcinfos map[string]*gosrc
 		}
 
 		wg.Wait()
+
+		err = saveVCSInfo()
+		if err != nil {
+			fmt.Fprintln(os.Stderr, err)
+		}
+
+		if len(depArguments.targets) > 0 {
+			_, stderr, err := capture(passToPacman(depArguments))
+			if err != nil {
+				return fmt.Errorf("%s%s", stderr, err)
+			}
+		}
+		config.NoConfirm = oldConfirm
 	}
 
-	err := doInstall()
-	config.NoConfirm = oldConfirm
-	return err
+	return nil
 }

+ 0 - 15
parser.go

@@ -88,15 +88,6 @@ func makeArguments() *arguments {
 	}
 }
 
-func (parser *arguments) copyGlobal() (cp *arguments) {
-	cp = makeArguments()
-	for k, v := range parser.globals {
-		cp.globals[k] = v
-	}
-
-	return
-}
-
 func (parser *arguments) copy() (cp *arguments) {
 	cp = makeArguments()
 
@@ -449,8 +440,6 @@ func isArg(arg string) bool {
 	case "rebuildall":
 	case "rebuildtree":
 	case "norebuild":
-	case "batchinstall":
-	case "nobatchinstall":
 	case "answerclean":
 	case "noanswerclean":
 	case "answerdiff":
@@ -557,10 +546,6 @@ func handleConfig(option, value string) bool {
 		config.ReBuild = "tree"
 	case "norebuild":
 		config.ReBuild = "no"
-	case "batchinstall":
-		config.BatchInstall = true
-	case "nobatchinstall":
-		config.BatchInstall = false
 	case "answerclean":
 		config.AnswerClean = value
 	case "noanswerclean":