Browse Source

port to pacman 4.2

pull/15/head
guinux 8 years ago
parent
commit
61f1bec6a5
  1. 167
      src/alpm_config.vala
  2. 10
      src/aur.vala
  3. 51
      src/common.vala
  4. 335
      src/daemon.vala
  5. 100
      src/manager_window.vala
  6. 4
      src/packages_model.vala
  7. 32
      src/pamac_config.vala
  8. 204
      src/transaction.vala
  9. 6
      src/updater_window.vala
  10. 14
      util/alpm-util.c
  11. 15
      util/alpm-util.h
  12. 1044
      vapi/libalpm.vapi

167
src/alpm_config.vala

@ -20,16 +20,19 @@
namespace Alpm {
class Repo {
public string name;
public SigLevel siglevel;
public Signature.Level siglevel;
public DB.Usage usage;
public string[] urls;
public Repo (string name) {
this.name = name;
usage = 0;
urls = {};
}
}
public class Config {
string conf_path;
string rootdir;
string dbpath;
string gpgdir;
@ -43,22 +46,33 @@ namespace Alpm {
string[] ignorepkg;
string[] noextract;
string[] noupgrade;
string[] holdpkg;
string[] syncfirst;
SigLevel defaultsiglevel;
SigLevel localfilesiglevel;
SigLevel remotefilesiglevel;
string[] priv_holdpkg;
string[] priv_syncfirst;
public string[] holdpkg;
public string[] syncfirst;
Signature.Level defaultsiglevel;
Signature.Level localfilesiglevel;
Signature.Level remotefilesiglevel;
Repo[] repo_order;
public unowned Handle? handle;
string[] priv_ignore_pkgs;
public string[] ignore_pkgs;
public Config (string path) {
conf_path = path;
handle = null;
reload ();
}
public void reload () {
rootdir = "/";
dbpath = "/var/lib/pacman";
gpgdir = "/etc/pacman.d/gnupg/";
logfile = "/var/log/pacman.log";
arch = Posix.utsname().machine;
cachedir = {"/var/cache/pacman/pkg/"};
holdpkg = {};
syncfirst = {};
priv_holdpkg = {};
priv_syncfirst = {};
ignoregroup = {};
ignorepkg = {};
noextract = {};
@ -66,46 +80,41 @@ namespace Alpm {
usesyslog = 0;
checkspace = 0;
deltaratio = 0.7;
defaultsiglevel = SigLevel.PACKAGE | SigLevel.PACKAGE_OPTIONAL | SigLevel.DATABASE | SigLevel.DATABASE_OPTIONAL;
localfilesiglevel = SigLevel.USE_DEFAULT;
remotefilesiglevel = SigLevel.USE_DEFAULT;
defaultsiglevel = Signature.Level.PACKAGE | Signature.Level.PACKAGE_OPTIONAL | Signature.Level.DATABASE | Signature.Level.DATABASE_OPTIONAL;
localfilesiglevel = Signature.Level.USE_DEFAULT;
remotefilesiglevel = Signature.Level.USE_DEFAULT;
repo_order = {};
// parse conf file
parse_file (path);
}
public string[] get_syncfirst () {
return syncfirst;
}
public string[] get_holdpkg () {
return holdpkg;
parse_file (conf_path);
get_handle ();
get_ignore_pkgs ();
}
public string[] get_ignore_pkgs () {
string[] ignore_pkgs = {};
public void get_ignore_pkgs () {
priv_ignore_pkgs = {};
unowned Group? group = null;
Handle? handle = this.get_handle ();
if (handle != null) {
foreach (string name in ignorepkg)
ignore_pkgs += name;
priv_ignore_pkgs += name;
foreach (string grp_name in ignoregroup) {
group = handle.localdb.get_group (grp_name);
if (group != null) {
foreach (unowned Package found_pkg in group.packages)
ignore_pkgs += found_pkg.name;
priv_ignore_pkgs += found_pkg.name;
}
}
}
return ignore_pkgs;
ignore_pkgs = priv_ignore_pkgs;
}
public Handle? get_handle () {
public void get_handle () {
Alpm.Errno error;
Handle? handle = new Handle (rootdir, dbpath, out error);
if (handle != null)
Handle.release (handle);
handle = Handle.new (rootdir, dbpath, out error);
if (handle == null) {
stderr.printf ("Failed to initialize alpm library" + " (%s)\n".printf(Alpm.strerror (error)));
return handle;
return;
}
// define options
handle.gpgdir = gpgdir;
@ -130,11 +139,13 @@ namespace Alpm {
// register dbs
foreach (Repo repo in repo_order) {
unowned DB db = handle.register_syncdb (repo.name, repo.siglevel);
foreach (string url in repo.urls) {
foreach (string url in repo.urls)
db.add_server (url.replace ("$repo", repo.name).replace ("$arch", handle.arch));
}
if (repo.usage == 0)
db.usage = DB.Usage.ALL;
else
db.usage = repo.usage;
}
return handle;
}
public void parse_file (string path, string? section = null) {
@ -193,11 +204,11 @@ namespace Alpm {
remotefilesiglevel = merge_siglevel (defaultsiglevel, define_siglevel (remotefilesiglevel, _value));
else if (_key == "HoldPkg") {
foreach (string name in _value.split (" ")) {
holdpkg += name;
priv_holdpkg += name;
}
} else if (_key == "SyncFirst") {
foreach (string name in _value.split (" ")) {
syncfirst += name;
priv_syncfirst += name;
}
} else if (_key == "CacheDir") {
foreach (string dir in _value.split (" ")) {
@ -227,6 +238,8 @@ namespace Alpm {
_repo.urls += _value;
else if (_key == "SigLevel")
_repo.siglevel = define_siglevel (defaultsiglevel, _value);
else if (_key == "Usage")
_repo.usage = define_usage (_value);
}
}
}
@ -234,10 +247,30 @@ namespace Alpm {
} catch (GLib.Error e) {
GLib.stderr.printf("%s\n", e.message);
}
holdpkg = priv_holdpkg;
syncfirst = priv_syncfirst;
}
}
public DB.Usage define_usage (string conf_string) {
DB.Usage usage = 0;
foreach (string directive in conf_string.split(" ")) {
if (directive == "Sync") {
usage |= DB.Usage.SYNC;
} else if (directive == "Search") {
usage |= DB.Usage.SEARCH;
} else if (directive == "Install") {
usage |= DB.Usage.INSTALL;
} else if (directive == "Upgrade") {
usage |= DB.Usage.UPGRADE;
} else if (directive == "All") {
usage |= DB.Usage.ALL;
}
}
return usage;
}
public SigLevel define_siglevel (SigLevel default_level, string conf_string) {
public Signature.Level define_siglevel (Signature.Level default_level, string conf_string) {
foreach (string directive in conf_string.split(" ")) {
bool affect_package = false;
bool affect_database = false;
@ -249,71 +282,71 @@ namespace Alpm {
}
if ("Never" in directive) {
if (affect_package) {
default_level &= ~SigLevel.PACKAGE;
default_level |= SigLevel.PACKAGE_SET;
default_level &= ~Signature.Level.PACKAGE;
default_level |= Signature.Level.PACKAGE_SET;
}
if (affect_database) default_level &= ~SigLevel.DATABASE;
if (affect_database) default_level &= ~Signature.Level.DATABASE;
}
else if ("Optional" in directive) {
if (affect_package) {
default_level |= SigLevel.PACKAGE;
default_level |= SigLevel.PACKAGE_OPTIONAL;
default_level |= SigLevel.PACKAGE_SET;
default_level |= Signature.Level.PACKAGE;
default_level |= Signature.Level.PACKAGE_OPTIONAL;
default_level |= Signature.Level.PACKAGE_SET;
}
if (affect_database) {
default_level |= SigLevel.DATABASE;
default_level |= SigLevel.DATABASE_OPTIONAL;
default_level |= Signature.Level.DATABASE;
default_level |= Signature.Level.DATABASE_OPTIONAL;
}
}
else if ("Required" in directive) {
if (affect_package) {
default_level |= SigLevel.PACKAGE;
default_level &= ~SigLevel.PACKAGE_OPTIONAL;
default_level |= SigLevel.PACKAGE_SET;
default_level |= Signature.Level.PACKAGE;
default_level &= ~Signature.Level.PACKAGE_OPTIONAL;
default_level |= Signature.Level.PACKAGE_SET;
}
if (affect_database) {
default_level |= SigLevel.DATABASE;
default_level &= ~SigLevel.DATABASE_OPTIONAL;
default_level |= Signature.Level.DATABASE;
default_level &= ~Signature.Level.DATABASE_OPTIONAL;
}
}
else if ("TrustedOnly" in directive) {
if (affect_package) {
default_level &= ~SigLevel.PACKAGE_MARGINAL_OK;
default_level &= ~SigLevel.PACKAGE_UNKNOWN_OK;
default_level |= SigLevel.PACKAGE_TRUST_SET;
default_level &= ~Signature.Level.PACKAGE_MARGINAL_OK;
default_level &= ~Signature.Level.PACKAGE_UNKNOWN_OK;
default_level |= Signature.Level.PACKAGE_TRUST_SET;
}
if (affect_database) {
default_level &= ~SigLevel.DATABASE_MARGINAL_OK;
default_level &= ~SigLevel.DATABASE_UNKNOWN_OK;
default_level &= ~Signature.Level.DATABASE_MARGINAL_OK;
default_level &= ~Signature.Level.DATABASE_UNKNOWN_OK;
}
}
else if ("TrustAll" in directive) {
if (affect_package) {
default_level |= SigLevel.PACKAGE_MARGINAL_OK;
default_level |= SigLevel.PACKAGE_UNKNOWN_OK;
default_level |= SigLevel.PACKAGE_TRUST_SET;
default_level |= Signature.Level.PACKAGE_MARGINAL_OK;
default_level |= Signature.Level.PACKAGE_UNKNOWN_OK;
default_level |= Signature.Level.PACKAGE_TRUST_SET;
}
if (affect_database) {
default_level |= SigLevel.DATABASE_MARGINAL_OK;
default_level |= SigLevel.DATABASE_UNKNOWN_OK;
default_level |= Signature.Level.DATABASE_MARGINAL_OK;
default_level |= Signature.Level.DATABASE_UNKNOWN_OK;
}
}
else GLib.stderr.printf("unrecognized siglevel: %s\n", conf_string);
}
default_level &= ~SigLevel.USE_DEFAULT;
default_level &= ~Signature.Level.USE_DEFAULT;
return default_level;
}
public SigLevel merge_siglevel (SigLevel base_level, SigLevel over_level) {
if ((over_level & SigLevel.USE_DEFAULT) != 0) over_level = base_level;
public Signature.Level merge_siglevel (Signature.Level base_level, Signature.Level over_level) {
if ((over_level & Signature.Level.USE_DEFAULT) != 0) over_level = base_level;
else {
if ((over_level & SigLevel.PACKAGE_SET) == 0) {
over_level |= base_level & SigLevel.PACKAGE;
over_level |= base_level & SigLevel.PACKAGE_OPTIONAL;
if ((over_level & Signature.Level.PACKAGE_SET) == 0) {
over_level |= base_level & Signature.Level.PACKAGE;
over_level |= base_level & Signature.Level.PACKAGE_OPTIONAL;
}
if ((over_level & SigLevel.PACKAGE_TRUST_SET) == 0) {
over_level |= base_level & SigLevel.PACKAGE_MARGINAL_OK;
over_level |= base_level & SigLevel.PACKAGE_UNKNOWN_OK;
if ((over_level & Signature.Level.PACKAGE_TRUST_SET) == 0) {
over_level |= base_level & Signature.Level.PACKAGE_MARGINAL_OK;
over_level |= base_level & Signature.Level.PACKAGE_UNKNOWN_OK;
}
}
return over_level;

10
src/aur.vala

@ -28,7 +28,7 @@ namespace AUR {
const string aur_url_id = "/packages.php?setlang=en&ID=";
public Json.Array search (string[] needles) {
Json.Array prev_inter = new Json.Array ();
var prev_inter = new Json.Array ();
string uri = rpc_url + rpc_search + Uri.escape_string (needles[0]);
var session = new Soup.Session ();
var message = new Soup.Message ("GET", uri);
@ -46,8 +46,8 @@ namespace AUR {
if (length == 1)
return prev_inter;
int i = 1;
Json.Array inter = new Json.Array ();
Json.Array found = new Json.Array ();
var inter = new Json.Array ();
var found = new Json.Array ();
while (i < length) {
inter = new Json.Array ();
uri = rpc_url + rpc_search + Uri.escape_string (needles[i]);
@ -60,8 +60,8 @@ namespace AUR {
} catch (Error e) {
print (e.message);
}
foreach (Json.Node prev_inter_node in prev_inter.get_elements ()) {
foreach (Json.Node found_node in found.get_elements ()) {
foreach (var prev_inter_node in prev_inter.get_elements ()) {
foreach (var found_node in found.get_elements ()) {
if (strcmp (prev_inter_node.get_object ().get_string_member ("Name"),
found_node.get_object ().get_string_member ("Name")) == 0) {
inter.add_element (prev_inter_node);

51
src/common.vala

@ -28,8 +28,7 @@ namespace Pamac {
public enum Mode {
MANAGER,
UPDATER,
NO_CONFIRM
UPDATER
}
public struct ErrorInfos {
@ -57,13 +56,11 @@ public int pkgcmp (Alpm.Package pkg1, Alpm.Package pkg2) {
return strcmp (pkg1.name, pkg2.name);
}
public unowned Alpm.List<Alpm.Package?> search_all_dbs (Alpm.Handle handle, Alpm.List<string?> needles) {
unowned Alpm.List<Alpm.Package?> syncpkgs = null;
unowned Alpm.List<Alpm.Package?> result = null;
public Alpm.List<unowned Alpm.Package?> search_all_dbs (Alpm.Handle handle, Alpm.List<string?> needles) {
var syncpkgs = new Alpm.List<unowned Alpm.Package?> ();
var result = handle.localdb.search (needles);
result = handle.localdb.search (needles);
foreach (unowned Alpm.DB db in handle.syncdbs) {
foreach (var db in handle.syncdbs) {
if (syncpkgs.length == 0)
syncpkgs = db.search (needles);
else {
@ -77,12 +74,12 @@ public unowned Alpm.List<Alpm.Package?> search_all_dbs (Alpm.Handle handle, Alpm
return result;
}
public unowned Alpm.List<Alpm.Package?> group_pkgs_all_dbs (Alpm.Handle handle, string grp_name) {
unowned Alpm.List<Alpm.Package?> result = null;
public Alpm.List<unowned Alpm.Package?> group_pkgs_all_dbs (Alpm.Handle handle, string grp_name) {
var result = new Alpm.List<unowned Alpm.Package?> ();
unowned Alpm.Group? grp = handle.localdb.get_group (grp_name);
if (grp != null) {
foreach (unowned Alpm.Package pkg in grp.packages)
foreach (var pkg in grp.packages)
result.add (pkg);
}
@ -93,13 +90,12 @@ public unowned Alpm.List<Alpm.Package?> group_pkgs_all_dbs (Alpm.Handle handle,
return result;
}
public unowned Alpm.List<Alpm.Package?> get_all_pkgs (Alpm.Handle handle) {
unowned Alpm.List<Alpm.Package?> syncpkgs = null;
unowned Alpm.List<Alpm.Package?> result = null;
public Alpm.List<unowned Alpm.Package?> get_all_pkgs (Alpm.Handle handle) {
var syncpkgs = new Alpm.List<unowned Alpm.Package?> ();
var result = new Alpm.List<unowned Alpm.Package?> ();
result = handle.localdb.pkgcache.copy ();
foreach (unowned Alpm.DB db in handle.syncdbs) {
foreach (var db in handle.syncdbs) {
if (syncpkgs.length == 0)
syncpkgs = db.pkgcache.copy ();
else {
@ -115,7 +111,7 @@ public unowned Alpm.List<Alpm.Package?> get_all_pkgs (Alpm.Handle handle) {
public unowned Alpm.Package? get_syncpkg (Alpm.Handle handle, string name) {
unowned Alpm.Package? pkg = null;
foreach (unowned Alpm.DB db in handle.syncdbs) {
foreach (var db in handle.syncdbs) {
pkg = db.get_pkg (name);
if (pkg != null)
break;
@ -128,10 +124,10 @@ public Pamac.UpdatesInfos[] get_syncfirst_updates (Alpm.Handle handle, string[]
Pamac.UpdatesInfos[] syncfirst_infos = {};
unowned Alpm.Package? pkg = null;
unowned Alpm.Package? candidate = null;
foreach (string name in syncfirst) {
foreach (var name in syncfirst) {
pkg = Alpm.find_satisfier (handle.localdb.pkgcache, name);
if (pkg != null) {
candidate = Alpm.sync_newversion (pkg, handle.syncdbs);
candidate = pkg.sync_newversion (handle.syncdbs);
if (candidate != null) {
infos.name = candidate.name;
infos.version = candidate.version;
@ -149,10 +145,10 @@ public Pamac.UpdatesInfos[] get_repos_updates (Alpm.Handle handle, string[] igno
unowned Alpm.Package? candidate = null;
Pamac.UpdatesInfos infos = Pamac.UpdatesInfos ();
Pamac.UpdatesInfos[] updates = {};
foreach (unowned Alpm.Package local_pkg in handle.localdb.pkgcache) {
foreach (var local_pkg in handle.localdb.pkgcache) {
// continue only if the local pkg is not in IgnorePkg or IgnoreGroup
if ((local_pkg.name in ignore_pkgs) == false) {
candidate = Alpm.sync_newversion (local_pkg, handle.syncdbs);
candidate = local_pkg.sync_newversion (handle.syncdbs);
if (candidate != null) {
infos.name = candidate.name;
infos.version = candidate.version;
@ -173,18 +169,18 @@ public Pamac.UpdatesInfos[] get_aur_updates (Alpm.Handle handle, string[] ignore
Pamac.UpdatesInfos infos = Pamac.UpdatesInfos ();
Pamac.UpdatesInfos[] aur_updates = {};
// get local pkgs
foreach (unowned Alpm.Package local_pkg in handle.localdb.pkgcache) {
foreach (var local_pkg in handle.localdb.pkgcache) {
// continue only if the local pkg is not in IgnorePkg or IgnoreGroup
if ((local_pkg.name in ignore_pkgs) == false) {
// check updates from AUR only for local packages
foreach (unowned Alpm.DB db in handle.syncdbs) {
foreach (var db in handle.syncdbs) {
sync_pkg = Alpm.find_satisfier (db.pkgcache, local_pkg.name);
if (sync_pkg != null)
break;
}
if (sync_pkg == null) {
// check update from AUR only if no package from dbs will replace it
candidate = Alpm.sync_newversion (local_pkg, handle.syncdbs);
candidate = local_pkg.sync_newversion (handle.syncdbs);
if (candidate == null) {
local_pkgs += local_pkg.name;
}
@ -192,12 +188,13 @@ public Pamac.UpdatesInfos[] get_aur_updates (Alpm.Handle handle, string[] ignore
}
}
// get aur updates
Json.Array aur_pkgs = AUR.multiinfo (local_pkgs);
var aur_pkgs = AUR.multiinfo (local_pkgs);
int cmp;
unowned Json.Object pkg_info;
string version;
string name;
foreach (Json.Node node in aur_pkgs.get_elements ()) {
unowned Json.Object pkg_info = node.get_object ();
foreach (var node in aur_pkgs.get_elements ()) {
pkg_info = node.get_object ();
version = pkg_info.get_string_member ("Version");
name = pkg_info.get_string_member ("Name");
cmp = Alpm.pkg_vercmp (version, handle.localdb.get_pkg (name).version);

335
src/daemon.vala

@ -29,10 +29,7 @@ MainLoop loop;
namespace Pamac {
[DBus (name = "org.manjaro.pamac")]
public class Daemon : Object {
string[] syncfirst;
string[] holdpkg;
string[] ignorepkg;
Handle? handle;
Alpm.Config alpm_config;
public uint64 previous_percent;
int force_refresh;
bool emit_refreshed_signal;
@ -40,7 +37,7 @@ namespace Pamac {
public Mutex provider_mutex;
public int? choosen_provider;
public signal void emit_event (uint event, string[] details);
public signal void emit_event (uint primary_event, uint secondary_event, string[] details);
public signal void emit_providers (string depend, string[] providers);
public signal void emit_progress (uint progress, string pkgname, int percent, uint n_targets, uint current_target);
public signal void emit_download (string filename, uint64 xfered, uint64 total);
@ -51,25 +48,22 @@ namespace Pamac {
public signal void emit_trans_committed (ErrorInfos error);
public Daemon () {
alpm_config = new Alpm.Config ("/etc/pacman.conf");
}
private void init_alpm_config () {
var alpm_config = new Alpm.Config ("/etc/pacman.conf");
syncfirst = alpm_config.get_syncfirst ();
holdpkg = alpm_config.get_holdpkg ();
ignorepkg = alpm_config.get_ignore_pkgs ();
handle = alpm_config.get_handle ();
if (handle == null) {
private void refresh_handle () {
alpm_config.get_handle ();
if (alpm_config.handle == null) {
ErrorInfos err = ErrorInfos ();
err.str = _("Failed to initialize alpm library");
emit_trans_committed (err);
} else {
handle.eventcb = (EventCallBack) cb_event;
handle.progresscb = (ProgressCallBack) cb_progress;
handle.questioncb = (QuestionCallBack) cb_question;
handle.dlcb = (DownloadCallBack) cb_download;
handle.totaldlcb = (TotalDownloadCallBack) cb_totaldownload;
handle.logcb = (LogCallBack) cb_log;
alpm_config.handle.eventcb = (EventCallBack) cb_event;
alpm_config.handle.progresscb = (ProgressCallBack) cb_progress;
alpm_config.handle.questioncb = (QuestionCallBack) cb_question;
alpm_config.handle.dlcb = (DownloadCallBack) cb_download;
alpm_config.handle.totaldlcb = (TotalDownloadCallBack) cb_totaldownload;
alpm_config.handle.logcb = (LogCallBack) cb_log;
}
previous_percent = 0;
}
@ -106,10 +100,10 @@ namespace Pamac {
null
);
if (result.get_is_authorized ()) {
init_alpm_config ();
unowned Package? pkg = handle.localdb.get_pkg (pkgname);
refresh_handle ();
unowned Package? pkg = alpm_config.handle.localdb.get_pkg (pkgname);
if (pkg != null)
pkg.reason = (PkgReason) reason;
pkg.reason = (Package.Reason) reason;
}
} catch (GLib.Error e) {
stderr.printf ("%s\n", e.message);
@ -117,12 +111,12 @@ namespace Pamac {
}
private int refresh_real () {
init_alpm_config ();
refresh_handle ();
ErrorInfos err = ErrorInfos ();
string[] details = {};
int success = 0;
int ret;
foreach (var db in handle.syncdbs) {
foreach (var db in alpm_config.handle.syncdbs) {
ret = db.update (force_refresh);
if (ret >= 0) {
success++;
@ -132,7 +126,7 @@ namespace Pamac {
// fail later with unresolved deps, but that should be rare, and would be expected
if (success == 0) {
err.str = _("Failed to synchronize any databases");
details += Alpm.strerror (handle.errno ());
details += Alpm.strerror (alpm_config.handle.errno ());
err.details = details;
}
if (emit_refreshed_signal)
@ -151,16 +145,16 @@ namespace Pamac {
}
public UpdatesInfos[] get_updates () {
init_alpm_config ();
refresh_handle ();
var pamac_config = new Pamac.Config ("/etc/pamac.conf");
UpdatesInfos[] updates = {};
updates = get_syncfirst_updates (handle, syncfirst);
updates = get_syncfirst_updates (alpm_config.handle, alpm_config.syncfirst);
if (updates.length != 0) {
return updates;
} else {
updates = get_repos_updates (handle, ignorepkg);
updates = get_repos_updates (alpm_config.handle, alpm_config.ignore_pkgs);
if (pamac_config.enable_aur) {
UpdatesInfos[] aur_updates = get_aur_updates (handle, ignorepkg);
UpdatesInfos[] aur_updates = get_aur_updates (alpm_config.handle, alpm_config.ignore_pkgs);
foreach (var infos in aur_updates)
updates += infos;
}
@ -169,13 +163,13 @@ namespace Pamac {
}
public ErrorInfos trans_init (TransFlag transflags) {
init_alpm_config ();
refresh_handle ();
ErrorInfos err = ErrorInfos ();
string[] details = {};
int ret = handle.trans_init (transflags);
int ret = alpm_config.handle.trans_init (transflags);
if (ret == -1) {
err.str = _("Failed to init transaction");
details += Alpm.strerror (handle.errno ());
details += Alpm.strerror (alpm_config.handle.errno ());
err.details = details;
}
return err;
@ -184,10 +178,10 @@ namespace Pamac {
public ErrorInfos trans_sysupgrade (int enable_downgrade) {
ErrorInfos err = ErrorInfos ();
string[] details = {};
int ret = handle.trans_sysupgrade (enable_downgrade);
int ret = alpm_config.handle.trans_sysupgrade (enable_downgrade);
if (ret == -1) {;
err.str = _("Failed to prepare transaction");
details += Alpm.strerror (handle.errno ());
details += Alpm.strerror (alpm_config.handle.errno ());
err.details = details;
}
return err;
@ -197,8 +191,8 @@ namespace Pamac {
ErrorInfos err = ErrorInfos ();
string[] details = {};
unowned Package? pkg = null;
pkg = handle.find_dbs_satisfier (handle.syncdbs, pkgname);
//foreach (var db in handle.syncdbs) {
pkg = alpm_config.handle.find_dbs_satisfier (alpm_config.handle.syncdbs, pkgname);
//foreach (var db in alpm_config.handle.syncdbs) {
//pkg = find_satisfier (db.pkgcache, pkgname);
//if (pkg != null)
//break;
@ -209,9 +203,9 @@ namespace Pamac {
err.details = details;
return err;
}
int ret = handle.trans_add_pkg (pkg);
int ret = alpm_config.handle.trans_add_pkg (pkg);
if (ret == -1) {
Alpm.Errno errno = handle.errno ();
Alpm.Errno errno = alpm_config.handle.errno ();
if (errno == Errno.TRANS_DUP_TARGET || errno == Errno.PKG_IGNORED)
// just skip duplicate or ignored targets
return err;
@ -228,16 +222,16 @@ namespace Pamac {
public ErrorInfos trans_load_pkg (string pkgpath) {
ErrorInfos err = ErrorInfos ();
string[] details = {};
Package* pkg = handle.load_file (pkgpath, 1, handle.localfilesiglevel);
Package* pkg = alpm_config.handle.load_file (pkgpath, 1, alpm_config.handle.localfilesiglevel);
if (pkg == null) {
err.str = _("Failed to prepare transaction");
details += "%s: %s".printf (pkgpath, Alpm.strerror (handle.errno ()));
details += "%s: %s".printf (pkgpath, Alpm.strerror (alpm_config.handle.errno ()));
err.details = details;
return err;
} else {
int ret = handle.trans_add_pkg (pkg);
int ret = alpm_config.handle.trans_add_pkg (pkg);
if (ret == -1) {
Alpm.Errno errno = handle.errno ();
Alpm.Errno errno = alpm_config.handle.errno ();
if (errno == Errno.TRANS_DUP_TARGET || errno == Errno.PKG_IGNORED)
// just skip duplicate or ignored targets
return err;
@ -257,17 +251,17 @@ namespace Pamac {
public ErrorInfos trans_remove_pkg (string pkgname) {
ErrorInfos err = ErrorInfos ();
string[] details = {};
unowned Package? pkg = handle.localdb.get_pkg (pkgname);
unowned Package? pkg = alpm_config.handle.localdb.get_pkg (pkgname);
if (pkg == null) {
err.str = _("Failed to prepare transaction");
details += _("target not found: %s").printf (pkgname);
err.details = details;
return err;
}
int ret = handle.trans_remove_pkg (pkg);
int ret = alpm_config.handle.trans_remove_pkg (pkg);
if (ret == -1) {
err.str = _("Failed to prepare transaction");
details += "%s: %s".printf (pkg.name, Alpm.strerror (handle.errno ()));
details += "%s: %s".printf (pkg.name, Alpm.strerror (alpm_config.handle.errno ()));
err.details = details;
}
return err;
@ -277,9 +271,9 @@ namespace Pamac {
ErrorInfos err = ErrorInfos ();
string[] details = {};
Alpm.List<void*> err_data = null;
int ret = handle.trans_prepare (out err_data);
int ret = alpm_config.handle.trans_prepare (out err_data);
if (ret == -1) {
Alpm.Errno errno = handle.errno ();
Alpm.Errno errno = alpm_config.handle.errno ();
err.str = _("Failed to prepare transaction");
string detail = Alpm.strerror (errno);
switch (errno) {
@ -289,6 +283,7 @@ namespace Pamac {
foreach (void *i in err_data) {
char *pkgname = i;
details += _("package %s does not have a valid architecture").printf (pkgname);
delete pkgname;
}
break;
case Errno.UNSATISFIED_DEPS:
@ -298,6 +293,7 @@ namespace Pamac {
DepMissing *miss = i;
string depstring = miss->depend.compute_string ();
details += _("%s: requires %s").printf (miss->target, depstring);
delete miss;
}
break;
case Errno.CONFLICTING_DEPS:
@ -307,10 +303,11 @@ namespace Pamac {
Conflict *conflict = i;
detail = _("%s and %s are in conflict").printf (conflict->package1, conflict->package2);
// only print reason if it contains new information
if (conflict->reason.mod != DepMod.ANY) {
if (conflict->reason.mod != Depend.Mode.ANY) {
detail += " (%s)".printf (conflict->reason.compute_string ());
}
details += detail;
delete conflict;
}
break;
default:
@ -322,8 +319,8 @@ namespace Pamac {
} else {
// Search for holdpkg in target list
bool found_locked_pkg = false;
foreach (var pkg in handle.trans_to_remove ()) {
if (pkg.name in holdpkg) {
foreach (var pkg in alpm_config.handle.trans_to_remove ()) {
if (pkg.name in alpm_config.holdpkg) {
details += _("%s needs to be removed but it is a locked package").printf (pkg.name);
found_locked_pkg = true;
break;
@ -357,7 +354,7 @@ namespace Pamac {
public UpdatesInfos[] trans_to_add () {
UpdatesInfos info = UpdatesInfos ();
UpdatesInfos[] infos = {};
foreach (var pkg in handle.trans_to_add ()) {
foreach (var pkg in alpm_config.handle.trans_to_add ()) {
info.name = pkg.name;
info.version = pkg.version;
// if pkg was load from a file, pkg.db is null
@ -375,7 +372,7 @@ namespace Pamac {
public UpdatesInfos[] trans_to_remove () {
UpdatesInfos info = UpdatesInfos ();
UpdatesInfos[] infos = {};
foreach (var pkg in handle.trans_to_remove ()) {
foreach (var pkg in alpm_config.handle.trans_to_remove ()) {
info.name = pkg.name;
info.version = pkg.version;
info.db_name = pkg.db.name;
@ -390,29 +387,30 @@ namespace Pamac {
ErrorInfos err = ErrorInfos ();
string[] details = {};
Alpm.List<void*> err_data = null;
int ret = handle.trans_commit (out err_data);
int ret = alpm_config.handle.trans_commit (out err_data);
if (ret == -1) {
Alpm.Errno errno = handle.errno ();
Alpm.Errno errno = alpm_config.handle.errno ();
err.str = _("Failed to commit transaction");
string detail = Alpm.strerror (errno);
switch (errno) {
case Alpm.Errno.FILE_CONFLICTS:
detail += ":";
details += detail;
//TransFlag flags = handle.trans_get_flags ();
//TransFlag flags = alpm_config.handle.trans_get_flags ();
//if ((flags & TransFlag.FORCE) != 0) {
//details += _("unable to %s directory-file conflicts").printf ("--force");
//}
foreach (void *i in err_data) {
FileConflict *conflict = i;
switch (conflict->type) {
case FileConflictType.TARGET:
case FileConflict.Type.TARGET:
details += _("%s exists in both %s and %s").printf (conflict->file, conflict->target, conflict->ctarget);
break;
case FileConflictType.FILESYSTEM:
case FileConflict.Type.FILESYSTEM:
details += _("%s: %s already exists in filesystem").printf (conflict->target, conflict->file);
break;
}
delete conflict;
}
break;
case Alpm.Errno.PKG_INVALID:
@ -424,6 +422,7 @@ namespace Pamac {
foreach (void *i in err_data) {
char *filename = i;
details += _("%s is invalid or corrupted").printf (filename);
delete filename;
}
break;
default:
@ -470,13 +469,13 @@ namespace Pamac {
}
public int trans_release () {
return handle.trans_release ();
return alpm_config.handle.trans_release ();
}
public void trans_cancel () {
handle.trans_interrupt ();
handle.trans_release ();
init_alpm_config ();
alpm_config.handle.trans_interrupt ();
alpm_config.handle.trans_release ();
refresh_handle ();
}
public void quit () {
@ -502,127 +501,120 @@ private void write_log_file (string event) {
}
}
private void cb_event (Event event, void *data1, void *data2) {
private void cb_event (Event.Data data) {
string[] details = {};
switch (event) {
case Event.ADD_START:
case Event.REMOVE_START:
case Event.REINSTALL_START:
unowned Package pkg = (Package) data1;
details += pkg.name;
details += pkg.version;
break;
case Event.ADD_DONE:
unowned Package pkg = (Package) data1;
string log = "Installed %s (%s)\n".printf (pkg.name, pkg.version);
write_log_file (log);
uint secondary_type = 0;
switch (data.type) {
case Event.Type.PACKAGE_OPERATION_START:
switch (data.package_operation_operation) {
case Package.Operation.REMOVE:
details += data.package_operation_oldpkg.name;
details += data.package_operation_oldpkg.version;
secondary_type = (uint) Package.Operation.REMOVE;
break;
case Package.Operation.INSTALL:
details += data.package_operation_newpkg.name;
details += data.package_operation_newpkg.version;
secondary_type = (uint) Package.Operation.INSTALL;
break;
case Package.Operation.REINSTALL:
details += data.package_operation_newpkg.name;
details += data.package_operation_newpkg.version;
secondary_type = (uint) Package.Operation.REINSTALL;
break;
case Package.Operation.UPGRADE:
details += data.package_operation_oldpkg.name;
details += data.package_operation_oldpkg.version;
details += data.package_operation_newpkg.version;
secondary_type = (uint) Package.Operation.UPGRADE;
break;
case Package.Operation.DOWNGRADE:
details += data.package_operation_oldpkg.name;
details += data.package_operation_oldpkg.version;
details += data.package_operation_newpkg.version;
secondary_type = (uint) Package.Operation.DOWNGRADE;
break;
}
break;
case Event.REMOVE_DONE:
unowned Package pkg = (Package) data1;
string log = "Removed %s (%s)\n".printf (pkg.name, pkg.version);
write_log_file (log);
case Event.Type.PACKAGE_OPERATION_DONE:
switch (data.package_operation_operation) {
case Package.Operation.INSTALL:
string log = "Installed %s (%s)\n".printf (data.package_operation_newpkg.name, data.package_operation_newpkg.version);
write_log_file (log);
break;
case Package.Operation.REMOVE:
string log = "Removed %s (%s)\n".printf (data.package_operation_oldpkg.name, data.package_operation_oldpkg.version);
write_log_file (log);
break;
case Package.Operation.REINSTALL:
string log = "Reinstalled %s (%s)\n".printf (data.package_operation_newpkg.name, data.package_operation_newpkg.version);
write_log_file (log);
break;
case Package.Operation.UPGRADE:
string log = "Upgraded %s (%s -> %s)\n".printf (data.package_operation_oldpkg.name, data.package_operation_oldpkg.version, data.package_operation_newpkg.version);
write_log_file (log);
break;
case Package.Operation.DOWNGRADE:
string log = "Downgraded %s (%s -> %s)\n".printf (data.package_operation_oldpkg.name, data.package_operation_oldpkg.version, data.package_operation_newpkg.version);
write_log_file (log);
break;
}
break;
case Event.REINSTALL_DONE:
unowned Package pkg = (Package) data1;
string log = "Reinstalled %s (%s)\n".printf (pkg.name, pkg.version);
write_log_file (log);
case Event.Type.DELTA_PATCH_START:
details += data.delta_patch_delta.to;
details += data.delta_patch_delta.delta;
break;
case Event.UPGRADE_START:
case Event.DOWNGRADE_START:
unowned Package new_pkg = (Package) data1;
unowned Package old_pkg = (Package) data2;
details += old_pkg.name;
details += old_pkg.version;
details += new_pkg.version;
case Event.Type.SCRIPTLET_INFO:
details += data.scriptlet_info_line;
write_log_file (data.scriptlet_info_line);
break;
case Event.UPGRADE_DONE:
unowned Package new_pkg = (Package) data1;
unowned Package old_pkg = (Package) data2;
string log = "Upgraded %s (%s -> %s)\n".printf (old_pkg.name, old_pkg.version, new_pkg.version);
write_log_file (log);
case Event.Type.PKGDOWNLOAD_START:
details += data.pkgdownload_file;
break;
case Event.DOWNGRADE_DONE:
unowned Package new_pkg = (Package) data1;
unowned Package old_pkg = (Package) data2;
string log = "Downgraded %s (%s -> %s)\n".printf (old_pkg.name, old_pkg.version, new_pkg.version);
write_log_file (log);
case Event.Type.OPTDEP_REMOVAL:
details += data.optdep_removal_pkg.name;
details += data.optdep_removal_optdep.compute_string ();
break;
case Event.DELTA_PATCH_START:
unowned string string1 = (string) data1;
unowned string string2 = (string) data2;
details += string1;
details += string2;
case Event.Type.DATABASE_MISSING:
details += data.database_missing_dbname;
break;
case Event.SCRIPTLET_INFO:
unowned string info = (string) data1;
details += info;
write_log_file (info);
case Event.Type.PACNEW_CREATED:
details += data.pacnew_created_file;
break;
case Event.OPTDEP_REQUIRED:
unowned Package pkg = (Package) data1;
Depend *depend = data2;
details += pkg.name;
details += depend->compute_string ();
case Event.Type.PACSAVE_CREATED:
details += data.pacsave_created_file;
break;
case Event.DATABASE_MISSING:
unowned string db_name = (string) data1;
details += db_name;
case Event.Type.PACORIG_CREATED:
details += data.pacorig_created_file;
break;
//~ case Event.CHECKDEPS_START:
//~ case Event.CHECKDEPS_DONE:
//~ case Event.FILECONFLICTS_START:
//~ case Event.FILECONFLICTS_DONE:
//~ case Event.RESOLVEDEPS_START:
//~ case Event.RESOLVEDEPS_DONE:
//~ case Event.INTERCONFLICTS_START:
//~ case Event.INTERCONFLICTS_DONE:
//~ case Event.INTEGRITY_START:
//~ case Event.INTEGRITY_DONE:
//~ case Event.KEYRING_START:
//~ case Event.KEYRING_DONE:
//~ case Event.KEY_DOWNLOAD_START:
//~ case Event.KEY_DOWNLOAD_DONE:
//~ case Event.LOAD_START:
//~ case Event.LOAD_DONE:
//~ case Event.DELTA_INTEGRITY_START:
//~ case Event.DELTA_INTEGRITY_DONE:
//~ case Event.DELTA_PATCHES_START:
//~ case Event.DELTA_PATCHES_DONE:
//~ case Event.DELTA_PATCH_DONE:
//~ case Event.DELTA_PATCH_FAILED:
//~ case Event.RETRIEVE_START:
//~ case Event.DISKSPACE_START:
//~ case Event.DISKSPACE_DONE:
default:
break;
}
pamac_daemon.emit_event ((uint) event, details);
pamac_daemon.emit_event ((uint) data.type, secondary_type, details);
}
private void cb_question (Question question, void *data1, void *data2, void *data3, out int response) {
switch (question) {
case Question.INSTALL_IGNOREPKG:
private void cb_question (Question.Data data) {
switch (data.type) {
case Question.Type.INSTALL_IGNOREPKG:
// Do not install package in IgnorePkg/IgnoreGroup
response = 0;
data.install_ignorepkg_install = 0;
break;
case Question.REPLACE_PKG:
case Question.Type.REPLACE_PKG:
// Auto-remove conflicts in case of replaces
response = 1;
data.replace_replace = 1;
break;
case Question.CONFLICT_PKG:
case Question.Type.CONFLICT_PKG:
// Auto-remove conflicts
response = 1;
data.conflict_remove = 1;
break;
case Question.REMOVE_PKGS:
case Question.Type.REMOVE_PKGS:
// Do not upgrade packages which have unresolvable dependencies
response = 1;
data.remove_pkgs_skip = 1;
break;
case Question.SELECT_PROVIDER:
unowned Alpm.List<Package?> providers = (Alpm.List<Package?>) data1;
Depend *depend = data2;
string depend_str = depend->compute_string ();
case Question.Type.SELECT_PROVIDER:
string depend_str = data.select_provider_depend.compute_string ();
string[] providers_str = {};
foreach (var pkg in providers) {
foreach (unowned Package pkg in data.select_provider_providers) {
providers_str += pkg.name;
}
pamac_daemon.provider_cond = Cond ();
@ -633,41 +625,28 @@ private void cb_question (Question question, void *data1, void *data2, void *dat
while (pamac_daemon.choosen_provider == null) {
pamac_daemon.provider_cond.wait (pamac_daemon.provider_mutex);
}
response = pamac_daemon.choosen_provider;
data.select_provider_use_index = pamac_daemon.choosen_provider;
pamac_daemon.provider_mutex.unlock ();
break;
case Question.CORRUPTED_PKG:
case Question.Type.CORRUPTED_PKG:
// Auto-remove corrupted pkgs in cache
response = 1;
data.corrupted_remove = 1;
break;
case Question.IMPORT_KEY:
PGPKey *key = data1;
case Question.Type.IMPORT_KEY:
// Do not get revoked key
if (key->revoked == 1) response = 0;
if (data.import_key_key.revoked == 1)
data.import_key_import = 0;
// Auto get not revoked key
else response = 1;
else
data.import_key_import = 1;
break;
default:
response = 0;
data.any_answer = 0;
break;
}
}
private void cb_progress (Progress progress, string pkgname, int percent, uint n_targets, uint current_target) {
//~ switch (progress) {
//~ case Progress.ADD_START:
//~ case Progress.UPGRADE_START:
//~ case Progress.DOWNGRADE_START:
//~ case Progress.REINSTALL_START:
//~ case Progress.REMOVE_START:
//~ case Progress.CONFLICTS_START:
//~ case Progress.DISKSPACE_START:
//~ case Progress.INTEGRITY_START:
//~ case Progress.KEYRING_START:
//~ case Progress.LOAD_START:
//~ default:
//~ break;
//~ }
if ((uint64) percent != pamac_daemon.previous_percent) {
pamac_daemon.previous_percent = (uint64) percent;
pamac_daemon.emit_progress ((uint) progress, pkgname, percent, n_targets, current_target);

100
src/manager_window.vala

@ -204,7 +204,7 @@ namespace Pamac {
public void show_all_pkgs () {
this.get_window ().set_cursor (new Gdk.Cursor (Gdk.CursorType.WATCH));
populate_packages_list (get_all_pkgs (transaction.handle));
populate_packages_list (get_all_pkgs (transaction.alpm_config.handle));
this.get_window ().set_cursor (null);
}
@ -214,9 +214,9 @@ namespace Pamac {
TreeSelection selection;
selection = repos_treeview.get_selection ();
selection.changed.disconnect (on_repos_treeview_selection_changed);
foreach (unowned DB db in transaction.handle.syncdbs) {
foreach (var db in transaction.alpm_config.handle.syncdbs) {
repos_list.insert_with_values (out iter, -1, 0, db.name);
foreach (unowned Group grp in db.groupcache) {
foreach (var grp in db.groupcache) {
if ((grp.name in grps) == false) {
grps += grp.name;
}
@ -266,7 +266,7 @@ namespace Pamac {
licenses.append (dgettext (null, "Licenses"));
licenses.append (":");
if (pkg.alpm_pkg != null) {
foreach (unowned string license in pkg.alpm_pkg.licenses) {
foreach (var license in pkg.alpm_pkg.licenses) {
licenses.append (" ");
licenses.append (license);
}
@ -299,7 +299,7 @@ namespace Pamac {
if (len != 0) {
unowned Depend optdep = list.nth_data (0);
unowned Alpm.Package? satisfier = find_satisfier (
transaction.handle.localdb.pkgcache,
transaction.alpm_config.handle.localdb.pkgcache,
optdep.name);
string optdep_str = optdep.compute_string ();
if (satisfier != null)
@ -311,7 +311,7 @@ namespace Pamac {
while (i < len) {
optdep = list.nth_data (i);
satisfier = find_satisfier (
transaction.handle.localdb.pkgcache,
transaction.alpm_config.handle.localdb.pkgcache,
optdep.name);
optdep_str = optdep.compute_string ();
if (satisfier != null)
@ -320,20 +320,21 @@ namespace Pamac {
i++;
}
}
if (pkg.origin == PkgFrom.LOCALDB) {
Alpm.List<string?> str_list = pkg.compute_requiredby ();
len = str_list.length;
if (pkg.origin == Alpm.Package.From.LOCALDB) {
Alpm.List<string?> *str_list = pkg.compute_requiredby ();
len = str_list->length;
if (len != 0) {
deps_list.insert_with_values (out iter, -1,
0, dgettext (null, "Required By") + ":",
1, str_list.nth_data (0));
1, str_list->nth_data (0));
i = 1;
while (i < len) {
deps_list.insert_with_values (out iter, -1,
1, str_list.nth_data (i));
1, str_list->nth_data (i));
i++;
}
}
Alpm.List.free_all (str_list);
}
list = pkg.provides;
len = list.length;
@ -379,7 +380,7 @@ namespace Pamac {
public void set_details_list (Alpm.Package pkg) {
details_list.clear ();
TreeIter iter;
if (pkg.origin == PkgFrom.SYNCDB) {
if (pkg.origin == Alpm.Package.From.SYNCDB) {
details_list.insert_with_values (out iter, -1,
0, dgettext (null, "Repository") + ":",
1, pkg.db.name);
@ -401,16 +402,16 @@ namespace Pamac {
details_list.insert_with_values (out iter, -1,
0, dgettext (null, "Packager") + ":",
1, pkg.packager);
if (pkg.origin == PkgFrom.LOCALDB) {
if (pkg.origin == Alpm.Package.From.LOCALDB) {
GLib.Time time = GLib.Time.local ((time_t) pkg.installdate);
string strtime = time.format ("%a %d %b %Y %X %Z");
details_list.insert_with_values (out iter, -1,
0, dgettext (null, "Install Date") + ":",
1, strtime);
string reason;
if (pkg.reason == PkgReason.EXPLICIT)
if (pkg.reason == Alpm.Package.Reason.EXPLICIT)
reason = dgettext (null, "Explicitly installed");
else if (pkg.reason == PkgReason.EXPLICIT)
else if (pkg.reason == Alpm.Package.Reason.EXPLICIT)
reason = dgettext (null, "Installed as a dependency for another package");
else
reason = dgettext (null, "Unknown");
@ -418,12 +419,12 @@ namespace Pamac {
0, dgettext (null, "Install Reason") + ":",
1, reason);
}
if (pkg.origin == PkgFrom.SYNCDB) {
if (pkg.origin == Alpm.Package.From.SYNCDB) {
details_list.insert_with_values (out iter, -1,
0, dgettext (null, "Signatures") + ":",
1, pkg.base64_sig != null ? "Yes" : "No");
}
if (pkg.origin == PkgFrom.LOCALDB) {
if (pkg.origin == Alpm.Package.From.LOCALDB) {
unowned Alpm.List<Backup?> backup_list = pkg.backup;
len = backup_list.length;
if (len != 0) {
@ -442,7 +443,7 @@ namespace Pamac {
public void set_files_list (Alpm.Package pkg) {
StringBuilder text = new StringBuilder ();
foreach (unowned Alpm.File file in pkg.files) {
foreach (var file in pkg.files) {
if (text.len != 0)
text.append ("\n");
text.append ("/");
@ -451,12 +452,12 @@ namespace Pamac {
files_textview.buffer.set_text (text.str, (int) text.len);
}
public async unowned Alpm.List<Alpm.Package?> search_pkgs (string search_string, out Json.Array aur_pkgs) {
unowned Alpm.List<string?> needles = null;
public async Alpm.List<Alpm.Package?> search_pkgs (string search_string, out Json.Array aur_pkgs) {
Alpm.List<string?> needles = null;
string[] splitted = search_string.split (" ");
foreach (unowned string part in splitted)
needles.add (part);
unowned Alpm.List<Alpm.Package?> pkgs = search_all_dbs (transaction.handle, needles);
Alpm.List<unowned Alpm.Package?> pkgs = search_all_dbs (transaction.alpm_config.handle, needles);
if (search_aur_button.get_active()) {
if (aur_results.contains (search_string)) {
aur_pkgs = aur_results.get (search_string);
@ -531,7 +532,7 @@ namespace Pamac {
set_details_list (pkg.alpm_pkg);
deps_scrolledwindow.visible = true;
details_scrolledwindow.visible = true;
if (pkg.alpm_pkg.origin == PkgFrom.LOCALDB) {
if (pkg.alpm_pkg.origin == Alpm.Package.From.LOCALDB) {
set_files_list (pkg.alpm_pkg);
files_scrolledwindow.visible = true;
} else {
@ -561,7 +562,7 @@ namespace Pamac {
packages_list.get_value (iter, 3, out val);
string db_name = val.get_string ();
if (db_name == "local") {
if ((name in transaction.holdpkg) == false) {
if ((name in transaction.alpm_config.holdpkg) == false) {
transaction.to_remove.insert (name, name);
}
} else if (db_name == "AUR") {
@ -587,7 +588,7 @@ namespace Pamac {
if (pkg.repo == "AUR")
transaction.to_build.insert (pkg.name, pkg.name);
else {
find_pkg = transaction.handle.localdb.get_pkg (pkg.name);
find_pkg = transaction.alpm_config.handle.localdb.get_pkg (pkg.name);
if (find_pkg == null)
transaction.to_add.insert (pkg.name, pkg.name);
}
@ -608,7 +609,7 @@ namespace Pamac {
void on_remove_item_activate () {
foreach (Pamac.Package pkg in selected_pkgs) {
if ((pkg.name in transaction.holdpkg) == false) {
if ((pkg.name in transaction.alpm_config.holdpkg) == false) {
if (pkg.repo == "local")
transaction.to_remove.insert (pkg.name, pkg.name);
}
@ -637,8 +638,8 @@ namespace Pamac {
foreach (Pamac.Package pkg in pkgs) {
var choose_dep_dialog = new ChooseDependenciesDialog (this);
nb = 0;
foreach (unowned Depend opt_dep in pkg.alpm_pkg.optdepends) {
found = find_satisfier (transaction.handle.localdb.pkgcache, opt_dep.compute_string ());
foreach (var opt_dep in pkg.alpm_pkg.optdepends) {
found = find_satisfier (transaction.alpm_config.handle.localdb.pkgcache, opt_dep.compute_string ());
if (found == null) {
choose_dep_dialog.deps_list.insert_with_values (out iter, -1,
0, false,
@ -678,9 +679,8 @@ namespace Pamac {
void on_explicitly_installed_item_activate () {
foreach (Pamac.Package pkg in selected_pkgs) {
transaction.set_pkgreason (pkg.name, PkgReason.EXPLICIT);
transaction.set_pkgreason (pkg.name, Alpm.Package.Reason.EXPLICIT);
}
transaction.refresh_alpm_config ();
refresh_packages_list ();
}
@ -743,17 +743,17 @@ namespace Pamac {
if (optdepends.length != 0) {
uint nb = 0;
unowned Alpm.Package? found;
foreach (unowned Depend opt_dep in optdepends) {
found = find_satisfier (transaction.handle.localdb.pkgcache, opt_dep.compute_string ());
foreach (var opt_dep in optdepends) {
found = find_satisfier (transaction.alpm_config.handle.localdb.pkgcache, opt_dep.compute_string ());
if (found == null)
nb += 1;
}
if (nb != 0)
install_optional_deps_item.set_sensitive (true);
}
if (clicked_pkg.alpm_pkg.reason == PkgReason.DEPEND)
if (clicked_pkg.alpm_pkg.reason == Alpm.Package.Reason.DEPEND)
explicitly_installed_item.set_sensitive (true);
find_pkg = get_syncpkg (transaction.handle, clicked_pkg.name);
find_pkg = get_syncpkg (transaction.alpm_config.handle, clicked_pkg.name);
if (find_pkg != null) {
if (pkg_vercmp (find_pkg.version, clicked_pkg.version) == 0)
reinstall_item.set_sensitive (true);
@ -855,7 +855,7 @@ namespace Pamac {
Gtk.main_iteration ();
search_pkgs.begin (search_string, (obj, res) => {
Json.Array aur_pkgs;
unowned Alpm.List<Alpm.Package?> pkgs = search_pkgs.end (res, out aur_pkgs);
Alpm.List<Alpm.Package?> pkgs = search_pkgs.end (res, out aur_pkgs);
if (pkgs.length != 0 || aur_pkgs.get_length () != 0) {
// add search string in search_list if needed
bool found = false;
@ -922,7 +922,7 @@ namespace Pamac {
string search_string = val.get_string ();
search_pkgs.begin (search_string, (obj, res) => {
Json.Array aur_pkgs;
unowned Alpm.List<Alpm.Package?> pkgs = search_pkgs.end (res, out aur_pkgs);
Alpm.List<Alpm.Package?> pkgs = search_pkgs.end (res, out aur_pkgs);
populate_packages_list (pkgs, aur_pkgs);
});
}
@ -940,7 +940,7 @@ namespace Pamac {
GLib.Value val;
model.get_value (iter, 0, out val);
string grp_name = val.get_string ();
unowned Alpm.List<Alpm.Package?> pkgs = group_pkgs_all_dbs (transaction.handle, grp_name);
Alpm.List<Alpm.Package?> pkgs = group_pkgs_all_dbs (transaction.alpm_config.handle, grp_name);
populate_packages_list (pkgs);
}
}
@ -957,29 +957,29 @@ namespace Pamac {
GLib.Value val;
model.get_value (iter, 0, out val);
string state = val.get_string ();
unowned Alpm.List<Alpm.Package?> pkgs = null;
var pkgs = new Alpm.List<unowned Alpm.Package?> ();
unowned Alpm.Package? find_pkg = null;
if (state == dgettext (null, "To install")) {
foreach (string name in transaction.to_add.get_keys ()) {
find_pkg = transaction.handle.localdb.get_pkg (name);
find_pkg = transaction.alpm_config.handle.localdb.get_pkg (name);
if (find_pkg != null)
pkgs.add (find_pkg);
else {
find_pkg = get_syncpkg (transaction.handle, name);
find_pkg = get_syncpkg (transaction.alpm_config.handle, name);
if (find_pkg != null)
pkgs.add (find_pkg);
}
}
} else if (state == dgettext (null, "To remove")) {
foreach (string name in transaction.to_remove.get_keys ()) {
find_pkg = transaction.handle.localdb.get_pkg (name);
find_pkg = transaction.alpm_config.handle.localdb.get_pkg (name);
if (find_pkg != null)
pkgs.add (find_pkg);
}
} else if (state == dgettext (null, "Installed")) {
pkgs = transaction.handle.localdb.pkgcache;
pkgs = transaction.alpm_config.handle.localdb.pkgcache.copy ();
} else if (state == dgettext (null, "Uninstalled")) {
foreach (unowned DB db in transaction.handle.syncdbs) {
foreach (var db in transaction.alpm_config.handle.syncdbs) {
if (pkgs.length == 0)
pkgs = db.pkgcache.copy ();
else {
@ -987,8 +987,8 @@ namespace Pamac {
}
}
} else if (state == dgettext (null, "Orphans")) {
foreach (unowned Alpm.Package pkg in transaction.handle.localdb.pkgcache) {
if (pkg.reason == PkgReason.DEPEND) {
foreach (var pkg in transaction.alpm_config.handle.localdb.pkgcache) {
if (pkg.reason == Alpm.Package.Reason.DEPEND) {
if (pkg.compute_requiredby().length == 0)
pkgs.add (pkg);
}
@ -1010,19 +1010,19 @@ namespace Pamac {
GLib.Value val;
model.get_value (iter, 0, out val);
string repo = val.get_string ();
unowned Alpm.List<Alpm.Package?> pkgs = null;
var pkgs = new Alpm.List<unowned Alpm.Package?> ();
unowned Alpm.Package? find_pkg = null;
if (repo == dgettext (null, "local")) {
foreach (unowned Alpm.Package pkg in transaction.handle.localdb.pkgcache) {
find_pkg = get_syncpkg (transaction.handle, pkg.name);
foreach (var pkg in transaction.alpm_config.handle.localdb.pkgcache) {
find_pkg = get_syncpkg (transaction.alpm_config.handle, pkg.name);
if (find_pkg == null)
pkgs.add (pkg);
}
} else {
foreach (unowned DB db in transaction.handle.syncdbs) {
foreach (var db in transaction.alpm_config.handle.syncdbs) {
if (db.name == repo) {
foreach (unowned Alpm.Package pkg in db.pkgcache) {
find_pkg = transaction.handle.localdb.get_pkg (pkg.name);
foreach (var pkg in db.pkgcache) {
find_pkg = transaction.alpm_config.handle.localdb.get_pkg (pkg.name);
if (find_pkg != null)
pkgs.add (find_pkg);
else

4
src/packages_model.vala

@ -33,7 +33,7 @@ namespace Pamac {
unowned Json.Object pkg_info;
string name;
bool found;
foreach (Json.Node node in aur_pkgs.get_elements ()) {
foreach (var node in aur_pkgs.get_elements ()) {
pkg_info = node.get_object ();
name = pkg_info.get_string_member ("Name");
// add only the packages which are not already in the list
@ -84,7 +84,7 @@ namespace Pamac {
case 1:
val = Value (typeof (Object));
if (pkg.alpm_pkg != null) {
if (pkg.name in manager_window.transaction.holdpkg)
if (pkg.name in manager_window.transaction.alpm_config.holdpkg)
val.set_object (manager_window.locked_icon);
else if (pkg.repo == "local") {
if (manager_window.transaction.to_add.contains (pkg.name))

32
src/pamac_config.vala

@ -19,19 +19,19 @@
namespace Pamac {
public class Config: Object {
string conf_path;
public uint64 refresh_period;
public bool enable_aur;
public bool recurse;
public string conf_path;
public Config (string path) {
this.conf_path = path;
conf_path = path;
// set default options
this.refresh_period = 4;
this.enable_aur = false;
this.recurse = false;
refresh_period = 4;
enable_aur = false;
recurse = false;
// parse conf file
this.parse_include_file (conf_path);
parse_include_file (conf_path);
}
public void parse_include_file (string path) {
@ -55,11 +55,11 @@ namespace Pamac {
if (splitted[1] != null)
_value = splitted[1].strip ();
if (_key == "RefreshPeriod")
this.refresh_period = uint64.parse (_value);
refresh_period = uint64.parse (_value);