diff --git a/src/unix/vpkEnv.Mod b/src/unix/vpkEnv.Mod index 378b0c9..ceab822 100644 --- a/src/unix/vpkEnv.Mod +++ b/src/unix/vpkEnv.Mod @@ -81,15 +81,34 @@ BEGIN Strings.Append("/", path); END mkPkgDirPath; -PROCEDURE mkBldDirPath*(VAR prefix, builddir: ARRAY OF CHAR); +PROCEDURE mkBldDir*(VAR prefix: ARRAY OF CHAR): StringList.pstring; +VAR + builddir: StringList.pstring; + ln : INTEGER; BEGIN - COPY(prefix, builddir); - createIfNotThere(builddir); - Strings.Append("/", builddir); - Strings.Append(vpkSettings.vpkBldDir, builddir); - createIfNotThere(builddir); - Strings.Append("/", builddir); -END mkBldDirPath; + ln := 3 + Strings.Length(prefix) + Strings.Length(vpkSettings.vpkBldDir); + NEW(builddir, ln); + COPY(prefix, builddir^); + createIfNotThere(builddir^); + Strings.Append("/", builddir^); + Strings.Append(vpkSettings.vpkBldDir, builddir^); + createIfNotThere(builddir^); + Strings.Append("/", builddir^); + RETURN builddir +END mkBldDir; + +PROCEDURE mkCmd*(VAR p0, p1: ARRAY OF CHAR): StringList.pstring; +VAR + cmd: StringList.pstring; + ln: INTEGER; +BEGIN + ln := 2 + Strings.Length(p0) + Strings.Length(p1); + NEW(cmd, ln); + COPY(p0, cmd^); + Strings.Append(" ", cmd^); + Strings.Append(p1, cmd^); + RETURN cmd +END mkCmd; PROCEDURE setConfFileName; VAR diff --git a/src/vpkInstaller.Mod b/src/vpkInstaller.Mod index fbfd6e6..69f04da 100644 --- a/src/vpkInstaller.Mod +++ b/src/vpkInstaller.Mod @@ -58,11 +58,10 @@ VAR keys, values: StringList.TStringList; k, v: StringList.pstring; b: BOOLEAN; - builddir: ARRAY 512 OF CHAR; - cmd, srcPath: StringList.pstring; - chdirRes: INTEGER; + builddir, cmd, srcPath: StringList.pstring; + res: INTEGER; BEGIN - vpkEnv.mkBldDirPath(prefix, builddir); + builddir := vpkEnv.mkBldDir(prefix); b := FALSE; depTree := resolve(package); i := 0; @@ -76,19 +75,20 @@ BEGIN REPEAT k := keys.GetString(keys, j); v := values.GetString(values, j); - Out.Int(j, 0); Out.String(": "); Out.String(k^); Out.Ln; - Out.Int(j, 0); Out.String(": "); Out.String(v^); Out.Ln; - chdirRes := Platform.Chdir(builddir); - IF chdirRes # 0 THEN - Out.String("failed to change directory to "); Out.String(builddir); Out.Ln; Out.String("this should never happen."); Out.Ln; HALT(66); + res := Platform.Chdir(builddir^); + IF res # 0 THEN + Out.String("failed to change directory to "); Out.String(builddir^); Out.Ln; Out.String("this should never happen."); Out.Ln; HALT(66); END; srcPath := vpkEnv.getSrcRelPath(dep.name^, v^); Out.String(srcPath^); Out.Ln; + cmd := vpkEnv.mkCmd(k^, srcPath^); + Out.String(cmd^); + res := Platform.System(cmd^); + IF res # 0 THEN Out.String("failed to run build command"); Out.Ln END; INC(j) UNTIL j = keys.Count - 1; ELSE Out.String("no build info found for the package: "); Out.String(dep.name^); Out.Ln; - HALT(67); END; INC(i); UNTIL i = depTree.Count; diff --git a/src/vpkSettings.Mod b/src/vpkSettings.Mod index 26f7635..1bce707 100644 --- a/src/vpkSettings.Mod +++ b/src/vpkSettings.Mod @@ -18,7 +18,8 @@ CONST rmtTypGemiVal* = "gemini"; rmtTreeKey* = "path"; bldType* = "Build"; - defTreeVal* = "https://github.com/vishaps/vipackTree"; + (*defTreeVal* = "https://github.com/vishaps/vipackTree";*) + defTreeVal* = "git@github.com:vishaps/vipackTree"; confTreeVal* = defTreeVal; defTypVal* = rmtTypGitVal;