Commit d8afbd0e authored by guinux's avatar guinux

fix #449

parent d80d9c8f
......@@ -59,7 +59,7 @@ namespace Pamac {
private string[] to_build;
private bool sysupgrade;
private UpdateInfos[] to_build_infos;
private GLib.List<string> aur_pkgbases_to_build;
private GenericSet<string?> aur_pkgbases_to_build;
private GenericSet<string?> aur_desc_list;
private GenericSet<string?> already_checked_aur_dep;
private HashTable<string, string> to_install_as_dep;
......@@ -99,7 +99,7 @@ namespace Pamac {
public SystemDaemon () {
alpm_config = new AlpmConfig ("/etc/pacman.conf");
aur_pkgbases_to_build = new GLib.List<string> ();
aur_pkgbases_to_build = new GenericSet<string?> (str_hash, str_equal);
aur_desc_list = new GenericSet<string?> (str_hash, str_equal);
already_checked_aur_dep = new GenericSet<string?> (str_hash, str_equal);
to_install_as_dep = new HashTable<string, string> (str_hash, str_equal);
......@@ -515,7 +515,6 @@ namespace Pamac {
foreach (unowned string pkgname in temporary_ignorepkgs) {
alpm_handle.remove_ignorepkg (pkgname);
}
temporary_ignorepkgs = {};
}
private AlpmPackage initialise_pkg_struct (Alpm.Package? alpm_pkg) {
......@@ -913,7 +912,7 @@ namespace Pamac {
to_load = {};
to_build = to_build_;
to_build_infos = {};
aur_pkgbases_to_build = new GLib.List<string> ();
aur_pkgbases_to_build.remove_all ();
if (downloading_updates) {
cancellable.cancel ();
// let time to cancel download updates
......@@ -1215,7 +1214,7 @@ namespace Pamac {
lockfile = GLib.File.new_for_path (alpm_handle.lockfile);
// fake aur db
alpm_handle.register_syncdb ("aur", 0);
// add to_build in to_install for the fake trans prpeapre
// add to_build in to_install for the fake trans prepare
foreach (unowned string name in to_build) {
to_install += name;
// check if we need to remove debug package to avoid dep problem
......@@ -1306,7 +1305,7 @@ namespace Pamac {
if (db != null) {
if (db.name == "aur") {
// it is a aur pkg to build
aur_pkgbases_to_build.append (trans_pkg.pkgbase);
aur_pkgbases_to_build.add (trans_pkg.pkgbase);
var infos = UpdateInfos () {
name = trans_pkg.name,
old_version = "",
......@@ -1385,7 +1384,7 @@ namespace Pamac {
to_load = to_load_;
to_build = to_build_;
to_build_infos = {};
aur_pkgbases_to_build = new GLib.List<string> ();
aur_pkgbases_to_build.remove_all ();
sysupgrade = false;
if (downloading_updates) {
cancellable.cancel ();
......
......@@ -1142,27 +1142,38 @@ namespace Pamac {
status = yield spawn_in_term ({"git", "clone", "https://aur.archlinux.org/%s.git".printf (pkgname)}, builddir);
if (status == 0) {
string pkgdir = "%s/%s".printf (builddir, pkgname);
status = yield spawn_in_term ({"makepkg", "-c"}, pkgdir);
status = yield spawn_in_term ({"makepkg", "-cf"}, pkgdir);
building = false;
if (status == 0) {
foreach (unowned string aurpkg in aur_pkgs_to_install) {
string standard_output;
try {
Process.spawn_command_line_sync ("find %s -name %s".printf (pkgdir, "'%s-*.pkg.tar*'".printf (aurpkg)),
out standard_output,
null,
out status);
if (status == 0) {
foreach (unowned string path in standard_output.split ("\n")) {
if (path != "" && !(path in built_pkgs)) {
built_pkgs += path;
// get built pkgs path
var launcher = new SubprocessLauncher (SubprocessFlags.STDOUT_PIPE);
launcher.set_cwd (pkgdir);
try {
Subprocess process = launcher.spawnv ({"makepkg", "--packagelist"});
yield process.wait_async (null);
if (process.get_if_exited ()) {
status = process.get_exit_status ();
}
if (status == 0) {
var dis = new DataInputStream (process.get_stdout_pipe ());
string? line;
// Read lines until end of file (null) is reached
while ((line = dis.read_line ()) != null) {
var file = GLib.File.new_for_path (line);
string filename = file.get_basename ();
string name_version_release = filename.slice (0, filename.last_index_of_char ('-'));
string name_version = name_version_release.slice (0, name_version_release.last_index_of_char ('-'));
string name = name_version.slice (0, name_version.last_index_of_char ('-'));
if (name in aur_pkgs_to_install) {
if (!(line in built_pkgs)) {
built_pkgs += line;
}
}
}
} catch (SpawnError e) {
stderr.printf ("SpawnError: %s\n", e.message);
status = 1;
}
} catch (Error e) {
stderr.printf ("Error: %s\n", e.message);
status = 1;
}
}
}
......@@ -1173,13 +1184,11 @@ namespace Pamac {
}
}
building = false;
if (status == 0) {
if (built_pkgs.length > 0) {
no_confirm_commit = true;
show_in_term ("");
stop_progressbar_pulse ();
start_trans_prepare (flags, {}, {}, built_pkgs, {});
}
if (status == 0 && built_pkgs.length > 0) {
no_confirm_commit = true;
show_in_term ("");
stop_progressbar_pulse ();
start_trans_prepare (flags, {}, {}, built_pkgs, {});
} else {
important_details_outpout (true);
to_load.remove_all ();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment