mirror of
https://gitdl.cn/https://github.com/chakralinux/core.git
synced 2025-02-04 02:27:13 +08:00
118 lines
3.0 KiB
Diff
118 lines
3.0 KiB
Diff
diff --git a/backends/alpm/pk-backend-alpm.c b/backends/alpm/pk-backend-alpm.c
|
|
index ba993f0..4cc9af2 100644
|
|
--- a/backends/alpm/pk-backend-alpm.c
|
|
+++ b/backends/alpm/pk-backend-alpm.c
|
|
@@ -22,8 +22,10 @@
|
|
*/
|
|
|
|
#include <config.h>
|
|
+#include <locale.h>
|
|
#include <glib/gstdio.h>
|
|
#include <sys/utsname.h>
|
|
+#include <pk-backend-spawn.h>
|
|
|
|
#include "pk-backend-alpm.h"
|
|
#include "pk-backend-databases.h"
|
|
@@ -194,6 +196,66 @@ pk_backend_logcb (pmloglevel_t level, const gchar *format, va_list args)
|
|
g_free (output);
|
|
}
|
|
|
|
+static void
|
|
+pk_backend_initialize_environment (PkBackend *self)
|
|
+{
|
|
+ gchar *value;
|
|
+
|
|
+ g_return_if_fail (self != NULL);
|
|
+
|
|
+ value = pk_backend_get_locale (self);
|
|
+ if (value != NULL) {
|
|
+ setlocale (LC_ALL, value);
|
|
+ g_free (value);
|
|
+ }
|
|
+
|
|
+ value = pk_backend_get_proxy_http (self);
|
|
+ if (value != NULL) {
|
|
+ gchar *uri = pk_backend_spawn_convert_uri (value);
|
|
+ g_setenv ("http_proxy", uri, TRUE);
|
|
+ g_free (uri);
|
|
+ g_free (value);
|
|
+ }
|
|
+
|
|
+ value = pk_backend_get_proxy_https (self);
|
|
+ if (value != NULL) {
|
|
+ gchar *uri = pk_backend_spawn_convert_uri (value);
|
|
+ g_setenv ("https_proxy", uri, TRUE);
|
|
+ g_free (uri);
|
|
+ g_free (value);
|
|
+ }
|
|
+
|
|
+ value = pk_backend_get_proxy_ftp (self);
|
|
+ if (value != NULL) {
|
|
+ gchar *uri = pk_backend_spawn_convert_uri (value);
|
|
+ g_setenv ("ftp_proxy", uri, TRUE);
|
|
+ g_free (uri);
|
|
+ g_free (value);
|
|
+ }
|
|
+
|
|
+ value = pk_backend_get_proxy_socks (self);
|
|
+ if (value != NULL) {
|
|
+ gchar *uri = pk_backend_spawn_convert_uri (value);
|
|
+ g_setenv ("socks_proxy", uri, TRUE);
|
|
+ g_free (uri);
|
|
+ g_free (value);
|
|
+ }
|
|
+
|
|
+ value = pk_backend_get_no_proxy (self);
|
|
+ if (value != NULL) {
|
|
+ g_setenv ("no_proxy", value, TRUE);
|
|
+ g_free (value);
|
|
+ }
|
|
+
|
|
+ value = pk_backend_get_pac (self);
|
|
+ if (value != NULL) {
|
|
+ gchar *uri = pk_backend_spawn_convert_uri (value);
|
|
+ g_setenv ("pac", uri, TRUE);
|
|
+ g_free (uri);
|
|
+ g_free (value);
|
|
+ }
|
|
+}
|
|
+
|
|
static gboolean
|
|
pk_backend_initialize_alpm (PkBackend *self, GError **error)
|
|
{
|
|
@@ -260,6 +322,8 @@ pk_backend_initialize (PkBackend *self)
|
|
|
|
g_return_if_fail (self != NULL);
|
|
|
|
+ pk_backend_initialize_environment (self);
|
|
+
|
|
if (!pk_backend_initialize_alpm (self, &error) ||
|
|
!pk_backend_initialize_databases (self, &error) ||
|
|
!pk_backend_initialize_groups (self, &error)) {
|
|
@@ -380,3 +444,11 @@ pk_backend_finish (PkBackend *self, GError *error)
|
|
pk_backend_thread_finished (self);
|
|
return (error == NULL);
|
|
}
|
|
+
|
|
+void
|
|
+pk_backend_transaction_start (PkBackend *self)
|
|
+{
|
|
+ g_return_if_fail (self != NULL);
|
|
+
|
|
+ pk_backend_initialize_environment (self);
|
|
+}
|
|
diff --git a/backends/alpm/pk-backend-transaction.c b/backends/alpm/pk-backend-transaction.c
|
|
index fdb840e..a4a712f 100644
|
|
--- a/backends/alpm/pk-backend-transaction.c
|
|
+++ b/backends/alpm/pk-backend-transaction.c
|
|
@@ -280,8 +280,8 @@ pk_backend_install_ignorepkg (PkBackend *self, pmpkg_t *pkg, gint *result)
|
|
}
|
|
|
|
static void
|
|
-pk_backend_select_provider (PkBackend *self, pmdepend_t *dep,
|
|
- const alpm_list_t *providers)
|
|
+pk_backend_select_provider (PkBackend *self, const alpm_list_t *providers,
|
|
+ pmdepend_t *dep)
|
|
{
|
|
gchar *output;
|
|
|