Sfoglia il codice sorgente

Merge pull request #192 from Morganamilo/fixdeps

Correctly mark packages as dependencies
J Guerreiro 7 anni fa
parent
commit
2c2cb22d6a
2 ha cambiato i file con 64 aggiunte e 9 eliminazioni
  1. 33 0
      cmd.go
  2. 31 9
      install.go

+ 33 - 0
cmd.go

@@ -2,6 +2,7 @@ package main
 
 import (
 	"bufio"
+	"bytes"
 	"encoding/json"
 	"errors"
 	"fmt"
@@ -692,6 +693,38 @@ func passToPacman(args *arguments) error {
 	return err
 }
 
+//passToPacman but return the output instead of showing the user
+func passToPacmanCapture(args *arguments) (string, string, error) {
+	var outbuf, errbuf bytes.Buffer
+	var cmd *exec.Cmd
+	argArr := make([]string, 0)
+
+	if args.needRoot() {
+		argArr = append(argArr, "sudo")
+	}
+
+	argArr = append(argArr, config.PacmanBin)
+	argArr = append(argArr, cmdArgs.formatGlobals()...)
+	argArr = append(argArr, args.formatArgs()...)
+	if config.NoConfirm {
+		argArr = append(argArr, "--noconfirm")
+	}
+
+	argArr = append(argArr, "--")
+
+	argArr = append(argArr, args.formatTargets()...)
+
+	cmd = exec.Command(argArr[0], argArr[1:]...)
+	cmd.Stdout = &outbuf
+	cmd.Stderr = &errbuf
+
+	err := cmd.Run()
+	stdout := outbuf.String()
+	stderr := errbuf.String()
+
+	return stdout, stderr, err
+}
+
 // passToMakepkg outsources execution to makepkg binary without modifications.
 func passToMakepkg(dir string, args ...string) (err error) {
 

+ 31 - 9
install.go

@@ -16,7 +16,7 @@ import (
 // Install handles package installs
 func install(parser *arguments) error {
 	removeMake := false
-	aur, repo, err := packageSlices(parser.targets.toSlice())
+	aurTargets, repoTargets, err := packageSlices(parser.targets.toSlice())
 	if err != nil {
 		return err
 	}
@@ -25,7 +25,7 @@ func install(parser *arguments) error {
 	var dc *depCatagories
 
 	//fmt.Println(greenFg(arrow), greenFg("Resolving Dependencies"))
-	requestTargets := append(aur, repo...)
+	requestTargets := append(aurTargets, repoTargets...)
 
 	//remotenames: names of all non repo packages on the system
 	_, _, _, remoteNames, err := filterPackages()
@@ -45,7 +45,7 @@ func install(parser *arguments) error {
 		requestTargets = append(requestTargets, remoteNames...)
 	}
 
-	if len(aur) > 0 || parser.existsArg("u", "sysupgrade") && len(remoteNames) > 0 {
+	if len(aurTargets) > 0 || parser.existsArg("u", "sysupgrade") && len(remoteNames) > 0 {
 		fmt.Println(boldCyanFg("::"), boldFg("Querying AUR..."))
 	}
 	dt, err := getDepTree(requestTargets)
@@ -105,9 +105,9 @@ func install(parser *arguments) error {
 		arguments.addTarget(pkg.Name())
 	}
 
-	for _, pkg := range repo {
-		arguments.addTarget(pkg)
-	}
+	//for _, pkg := range repoTargets {
+		//arguments.addTarget(pkg)
+	//}
 
 	if len(dc.Aur) == 0 && len(arguments.targets) == 0 {
 		fmt.Println("There is nothing to do")
@@ -124,6 +124,24 @@ func install(parser *arguments) error {
 		if err != nil {
 			return fmt.Errorf("Error installing repo packages.")
 		}
+
+
+		depArguments := makeArguments()
+		depArguments.addArg("D", "asdeps")
+
+		for _, pkg := range dc.Repo {
+			depArguments.addTarget(pkg.Name())
+		}
+		for _, pkg := range repoTargets {
+			depArguments.delTarget(pkg)
+		}
+
+		if len(depArguments.targets) > 0 {
+			_, stderr, err := passToPacmanCapture(depArguments)
+			if err != nil {
+				return fmt.Errorf("%s%s", stderr, err)
+			}
+		}
 	}
 
 	if hasAur {
@@ -208,8 +226,12 @@ func install(parser *arguments) error {
 
 			oldValue := config.NoConfirm
 			config.NoConfirm = true
-			passToPacman(removeArguments)
+			err = passToPacman(removeArguments)
 			config.NoConfirm = oldValue
+
+			if err != nil {
+				return err
+			}
 		}
 
 		if config.CleanAfter {
@@ -473,9 +495,9 @@ func buildInstallPkgBuilds(pkgs []*rpc.Pkg, srcinfos map[string]*gopkg.PKGBUILD,
 
 		updateVSCdb(bases[pkg.PackageBase], srcinfo)
 		if len(depArguments.targets) > 0 {
-			err = passToPacman(depArguments)
+			_, stderr, err := passToPacmanCapture(depArguments)
 			if err != nil {
-				return err
+				return fmt.Errorf("%s%s", stderr, err)
 			}
 		}
 		config.NoConfirm = oldConfirm