xbps: update to 0.21.

This commit is contained in:
Juan RP 2013-03-11 16:04:40 +01:00
parent f10294ab5d
commit 6a46026262
12 changed files with 4 additions and 514 deletions

View file

@ -1,51 +0,0 @@
From 42e0f19bbead36cae4e4a71f02c2e08a0aa2cd8c Mon Sep 17 00:00:00 2001
From: Juan RP <xtraeme@gmail.com>
Date: Fri, 1 Feb 2013 12:41:27 +0100
Subject: [PATCH] Fix package conflicts detection (regression from
b9136c61c95698a).
---
NEWS | 3 +++
lib/package_conflicts.c | 9 ++++++++-
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/lib/package_conflicts.c b/lib/package_conflicts.c
index 709a921..dd07677 100644
--- lib/package_conflicts.c
+++ lib/package_conflicts.c
@@ -50,10 +50,12 @@ xbps_pkg_find_conflicts(struct xbps_handle *xhp,
trans_cflicts = prop_dictionary_get(xhp->transd, "conflicts");
prop_dictionary_get_cstring_nocopy(pkg_repod, "pkgver", &repopkgver);
- iter = prop_array_iterator(trans_cflicts);
+ iter = prop_array_iterator(pkg_cflicts);
assert(iter);
+
while ((obj = prop_object_iterator_next(iter))) {
cfpkg = prop_string_cstring_nocopy(obj);
+
/*
* Check if current pkg conflicts with an installed package.
*/
@@ -61,6 +63,9 @@ xbps_pkg_find_conflicts(struct xbps_handle *xhp,
(pkgd = xbps_pkgdb_get_virtualpkg(xhp, cfpkg))) {
prop_dictionary_get_cstring_nocopy(pkgd,
"pkgver", &pkgver);
+ xbps_dbg_printf(xhp, "found conflicting installed "
+ "pkg %s with pkg in transaction %s\n", pkgver,
+ repopkgver);
buf = xbps_xasprintf("%s conflicts with "
"installed pkg %s", repopkgver, pkgver);
prop_array_add_cstring(trans_cflicts, buf);
@@ -74,6 +79,8 @@ xbps_pkg_find_conflicts(struct xbps_handle *xhp,
(pkgd = xbps_find_virtualpkg_in_array(xhp, unsorted, cfpkg))) {
prop_dictionary_get_cstring_nocopy(pkgd,
"pkgver", &pkgver);
+ xbps_dbg_printf(xhp, "found conflicting pkgs in "
+ "transaction %s <-> %s\n", pkgver, repopkgver);
buf = xbps_xasprintf("%s conflicts with "
"%s in transaction", repopkgver, pkgver);
prop_array_add_cstring(trans_cflicts, buf);
--
1.8.1.1

View file

@ -1,27 +0,0 @@
From bdcdb9f1a042c7e542d23ae5790ae5a1925904c8 Mon Sep 17 00:00:00 2001
From: Juan RP <xtraeme@gmail.com>
Date: Fri, 1 Feb 2013 13:40:27 +0100
Subject: [PATCH] xbps_fetch_file: don't check for file truncation if server
answers with invalid info.
---
NEWS | 3 +++
lib/download.c | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/lib/download.c b/lib/download.c
index d73de87..090591d 100644
--- lib/download.c
+++ lib/download.c
@@ -249,7 +249,7 @@ xbps_fetch_file(struct xbps_handle *xhp, const char *uri, const char *flags)
errno = EIO;
rv = -1;
goto out;
- } else if ((bytes_dload + url->offset) != url_st.size) {
+ } else if (url_st.size > 0 && ((bytes_dload + url->offset) != url_st.size)) {
xbps_dbg_printf(xhp, "file %s is truncated\n", filename);
errno = EIO;
rv = -1;
--
1.8.1.1

View file

@ -1,38 +0,0 @@
From fa1d543dfae2383745d4789e51874a33ef6b7179 Mon Sep 17 00:00:00 2001
From: Juan RP <xtraeme@gmail.com>
Date: Sat, 2 Feb 2013 14:34:55 +0100
Subject: [PATCH] Ignore package conflicts against themselves, due to virtual
packages.
---
NEWS | 3 +++
lib/package_conflicts.c | 6 ++++++
2 files changed, 9 insertions(+)
diff --git a/lib/package_conflicts.c b/lib/package_conflicts.c
index dd07677..658fdd6 100644
--- lib/package_conflicts.c
+++ lib/package_conflicts.c
@@ -63,6 +63,9 @@ xbps_pkg_find_conflicts(struct xbps_handle *xhp,
(pkgd = xbps_pkgdb_get_virtualpkg(xhp, cfpkg))) {
prop_dictionary_get_cstring_nocopy(pkgd,
"pkgver", &pkgver);
+ if (strcmp(pkgver, repopkgver) == 0)
+ continue;
+
xbps_dbg_printf(xhp, "found conflicting installed "
"pkg %s with pkg in transaction %s\n", pkgver,
repopkgver);
@@ -79,6 +82,9 @@ xbps_pkg_find_conflicts(struct xbps_handle *xhp,
(pkgd = xbps_find_virtualpkg_in_array(xhp, unsorted, cfpkg))) {
prop_dictionary_get_cstring_nocopy(pkgd,
"pkgver", &pkgver);
+ if (strcmp(pkgver, repopkgver) == 0)
+ continue;
+
xbps_dbg_printf(xhp, "found conflicting pkgs in "
"transaction %s <-> %s\n", pkgver, repopkgver);
buf = xbps_xasprintf("%s conflicts with "
--
1.8.1.1

View file

@ -1,63 +0,0 @@
From 0812ef2c354d3dc1c1d99d7e4120c1905829f83f Mon Sep 17 00:00:00 2001
From: Juan RP <xtraeme@gmail.com>
Date: Sat, 2 Feb 2013 18:15:00 +0100
Subject: [PATCH] Properly fix fa1d543dfae2383745d4789e51874a33ef6b7179.
---
lib/package_conflicts.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/lib/package_conflicts.c b/lib/package_conflicts.c
index bae522d..d66b8b3 100644
--- lib/package_conflicts.c
+++ lib/package_conflicts.c
@@ -40,7 +40,7 @@ xbps_pkg_find_conflicts(struct xbps_handle *xhp,
prop_dictionary_t pkgd;
prop_object_t obj;
prop_object_iterator_t iter;
- const char *cfpkg, *repopkgver, *pkgver;
+ const char *cfpkg, *repopkgver, *pkgver, *pkgname, *repopkgname;
char *buf;
pkg_cflicts = prop_dictionary_get(pkg_repod, "conflicts");
@@ -49,6 +49,7 @@ xbps_pkg_find_conflicts(struct xbps_handle *xhp,
trans_cflicts = prop_dictionary_get(xhp->transd, "conflicts");
prop_dictionary_get_cstring_nocopy(pkg_repod, "pkgver", &repopkgver);
+ prop_dictionary_get_cstring_nocopy(pkg_repod, "pkgname", &repopkgname);
iter = prop_array_iterator(pkg_cflicts);
assert(iter);
@@ -62,10 +63,12 @@ xbps_pkg_find_conflicts(struct xbps_handle *xhp,
if ((pkgd = xbps_pkgdb_get_pkg(xhp, cfpkg)) ||
(pkgd = xbps_pkgdb_get_virtualpkg(xhp, cfpkg))) {
prop_dictionary_get_cstring_nocopy(pkgd,
- "pkgver", &pkgver);
- if (strcmp(pkgver, repopkgver) == 0)
+ "pkgname", &pkgname);
+ if (strcmp(pkgname, repopkgname) == 0)
continue;
+ prop_dictionary_get_cstring_nocopy(pkgd,
+ "pkgver", &pkgver);
xbps_dbg_printf(xhp, "found conflicting installed "
"pkg %s with pkg in transaction %s\n", pkgver,
repopkgver);
@@ -81,10 +84,12 @@ xbps_pkg_find_conflicts(struct xbps_handle *xhp,
if ((pkgd = xbps_find_pkg_in_array(unsorted, cfpkg)) ||
(pkgd = xbps_find_virtualpkg_in_array(xhp, unsorted, cfpkg))) {
prop_dictionary_get_cstring_nocopy(pkgd,
- "pkgver", &pkgver);
- if (strcmp(pkgver, repopkgver) == 0)
+ "pkgname", &pkgname);
+ if (strcmp(pkgname, repopkgname) == 0)
continue;
+ prop_dictionary_get_cstring_nocopy(pkgd,
+ "pkgver", &pkgver);
xbps_dbg_printf(xhp, "found conflicting pkgs in "
"transaction %s <-> %s\n", pkgver, repopkgver);
buf = xbps_xasprintf("%s conflicts with "
--
1.8.1.1

View file

@ -1,27 +0,0 @@
From a8e8e8fd5d59663a0472676ce40b66c4143b9f34 Mon Sep 17 00:00:00 2001
From: Juan RP <xtraeme@gmail.com>
Date: Mon, 4 Feb 2013 16:35:15 +0100
Subject: [PATCH] xbps_remove_pkg: ignore ELOOP in realpath() when checking
symlinks.
Probably it is a broken symlink, so we don't have to care about it.
---
lib/package_remove.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/package_remove.c b/lib/package_remove.c
index 4e69e82..78ddd7b 100644
--- lib/package_remove.c
+++ lib/package_remove.c
@@ -170,7 +170,7 @@ xbps_remove_pkg_files(struct xbps_handle *xhp,
* point, so we will only remove dangling symlinks.
*/
if (realpath(path, buf) == NULL) {
- if (errno != ENOENT) {
+ if (errno != ENOENT && errno != ELOOP) {
free(path);
rv = errno;
break;
--
1.8.1.1

View file

@ -1,32 +0,0 @@
From 6c96fe32ccff435d42ff19ef8c7755beb25bfd97 Mon Sep 17 00:00:00 2001
From: Juan RP <xtraeme@gmail.com>
Date: Tue, 5 Feb 2013 09:32:43 +0100
Subject: [PATCH 1/2] lib/initend.c: print dbg msg about successful vpkg conf
files read.
---
lib/initend.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/initend.c b/lib/initend.c
index 6f66ded..e38edc1 100644
--- lib/initend.c
+++ lib/initend.c
@@ -108,12 +108,13 @@ config_inject_vpkgs(struct xbps_handle *xh)
path = xbps_xasprintf("%s/%s", vpkgdir, dp->d_name);
fp = fopen(path, "r");
assert(fp);
- free(path);
if (cfg_parse_fp(xh->cfg, fp) != 0) {
xbps_error_printf("Failed to parse "
"vpkg conf file %s:\n", dp->d_name);
}
fclose(fp);
+ xbps_dbg_printf(xh, "Injected vpkgs from %s\n", path);
+ free(path);
}
}
closedir(dirp);
--
1.8.1.1

View file

@ -1,64 +0,0 @@
From d8769c487352df81cf89f3ae2898e38933d2026f Mon Sep 17 00:00:00 2001
From: Juan RP <xtraeme@gmail.com>
Date: Tue, 5 Feb 2013 12:10:24 +0100
Subject: [PATCH 2/2] Workaround fix for 'xbps-install -yf xbps <-> xbps-git'.
---
NEWS | 3 +++
include/xbps_api.h.in | 4 ++--
lib/package_unpack.c | 5 +++--
lib/transaction_commit.c | 2 +-
lib/transaction_package_replace.c | 3 +--
5 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/lib/package_unpack.c b/lib/package_unpack.c
index 8e78e59..3708951 100644
--- lib/package_unpack.c
+++ lib/package_unpack.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2008-2012 Juan Romero Pardines.
+ * Copyright (c) 2008-2013 Juan Romero Pardines.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -491,7 +491,8 @@ unpack_archive(struct xbps_handle *xhp,
* - Package with "softreplace" keyword.
*/
old_filesd = xbps_pkgdb_get_pkg_metadata(xhp, pkgname);
- assert(prop_object_type(old_filesd) == PROP_TYPE_DICTIONARY);
+ if (old_filesd == NULL)
+ goto out1;
obsoletes = xbps_find_pkg_obsoletes(xhp, old_filesd, filesd);
for (i = 0; i < prop_array_count(obsoletes); i++) {
diff --git a/lib/transaction_commit.c b/lib/transaction_commit.c
index dd7b7b6..84c079a 100644
--- lib/transaction_commit.c
+++ lib/transaction_commit.c
@@ -264,7 +264,7 @@ xbps_transaction_commit(struct xbps_handle *xhp)
else
install = true;
- if (update) {
+ if (update && xbps_pkgdb_get_pkg(xhp, pkgname)) {
/*
* Update a package: execute pre-remove
* action if found before unpacking.
diff --git a/lib/transaction_package_replace.c b/lib/transaction_package_replace.c
index 98f43a5..052eff3 100644
--- lib/transaction_package_replace.c
+++ lib/transaction_package_replace.c
@@ -92,8 +92,7 @@ xbps_transaction_package_replace(struct xbps_handle *xhp)
* package that should be replaced is also in the
* transaction and it's going to be updated.
*/
- if ((reppkgd = xbps_find_pkg_in_array(unsorted, curpkgname)) ||
- (reppkgd = xbps_find_virtualpkg_in_array(xhp, unsorted, curpkgname))) {
+ if ((reppkgd = xbps_find_pkg_in_array(unsorted, curpkgname))) {
xbps_dbg_printf(xhp,
"found replaced pkg "
"in transaction\n");
--
1.8.1.1

View file

@ -1,43 +0,0 @@
From 7d8f0bb686b587203a6533bba4f4764ed6f51d5f Mon Sep 17 00:00:00 2001
From: Juan RP <xtraeme@gmail.com>
Date: Sat, 2 Feb 2013 01:31:20 +0100
Subject: [PATCH 01/11] lib/compat/vasprintf.c: make this build and fix
sign-compare warnings.
---
lib/compat/vasprintf.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/compat/vasprintf.c b/lib/compat/vasprintf.c
index d73892e..3d86aee 100644
--- lib/compat/vasprintf.c
+++ lib/compat/vasprintf.c
@@ -32,6 +32,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
+#include "compat.h"
int HIDDEN
vasprintf(char **ret, const char *fmt, va_list ap)
@@ -54,7 +55,7 @@ vasprintf(char **ret, const char *fmt, va_list ap)
return -1;
}
- if (retval < len) {
+ if (retval < (int)len) {
new_buf = realloc(buf, retval + 1);
if (new_buf == NULL)
*ret = buf;
@@ -71,7 +72,7 @@ vasprintf(char **ret, const char *fmt, va_list ap)
return -1;
}
retval = vsnprintf(buf, len, fmt, ap);
- if (retval != len - 1) {
+ if (retval != (int)len - 1) {
free(buf);
*ret = NULL;
return -1;
--
1.8.1.1

View file

@ -1,47 +0,0 @@
From 178a6b58ae0a06e9d424f7879bafb4e8a26879e4 Mon Sep 17 00:00:00 2001
From: Juan RP <xtraeme@gmail.com>
Date: Thu, 7 Feb 2013 17:49:28 +0100
Subject: [PATCH 09/10] Remove another transaction obj from pkgdb and make
xbps-pkgdb catch it.
---
bin/xbps-pkgdb/check_pkg_unneeded.c | 5 ++++-
include/xbps_api.h.in | 2 +-
lib/package_register.c | 1 +
3 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/bin/xbps-pkgdb/check_pkg_unneeded.c b/bin/xbps-pkgdb/check_pkg_unneeded.c
index 8354b52..1379f4a 100644
--- bin/xbps-pkgdb/check_pkg_unneeded.c
+++ bin/xbps-pkgdb/check_pkg_unneeded.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2012 Juan Romero Pardines.
+ * Copyright (c) 2013 Juan Romero Pardines.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -56,5 +56,8 @@ check_pkg_unneeded(struct xbps_handle *xhp, const char *pkgname, void *arg)
if (prop_dictionary_get(pkgd, "transaction"))
prop_dictionary_remove(pkgd, "transaction");
+ if (prop_dictionary_get(pkgd, "skip-obsoletes"))
+ prop_dictionary_remove(pkgd, "skip-obsoletes");
+
return 0;
}
diff --git a/lib/package_register.c b/lib/package_register.c
index d78d0be..3ab6dd9 100644
--- lib/package_register.c
+++ lib/package_register.c
@@ -161,6 +161,7 @@ xbps_register_pkg(struct xbps_handle *xhp, prop_dictionary_t pkgrd, bool flush)
*/
prop_dictionary_remove(pkgd, "remove-and-update");
prop_dictionary_remove(pkgd, "transaction");
+ prop_dictionary_remove(pkgd, "skip-obsoletes");
if (!xbps_pkgdb_replace_pkg(xhp, pkgd, pkgname, flush)) {
xbps_dbg_printf(xhp,
--
1.8.1.1

View file

@ -1,72 +0,0 @@
From 2b5d3bb8f4676afe9dee4eef13858c3c5088716c Mon Sep 17 00:00:00 2001
From: Juan RP <xtraeme@gmail.com>
Date: Thu, 7 Feb 2013 18:50:55 +0100
Subject: [PATCH 10/10] libxbps: when resolving deps, ignore all of them that
depend on the origin pkg.
---
NEWS | 3 +++
include/xbps_api.h.in | 2 +-
lib/rindex_pkgdeps.c | 18 +++++++++++++++++-
lib/transaction_sortdeps.c | 7 ++++++-
4 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/lib/rindex_pkgdeps.c b/lib/rindex_pkgdeps.c
index f69749c..efa19c4 100644
--- lib/rindex_pkgdeps.c
+++ lib/rindex_pkgdeps.c
@@ -158,7 +158,7 @@ find_repo_deps(struct xbps_handle *xhp,
prop_array_t curpkgrdeps;
pkg_state_t state;
size_t x;
- const char *reqpkg, *pkgver_q, *reason = NULL;
+ const char *reqpkg, *reqpkgname, *pkgver_q, *reason = NULL;
char *pkgname;
int rv = 0;
@@ -317,6 +317,22 @@ find_repo_deps(struct xbps_handle *xhp,
}
prop_dictionary_get_cstring_nocopy(curpkgd,
"pkgver", &pkgver_q);
+ prop_dictionary_get_cstring_nocopy(curpkgd,
+ "pkgname", &reqpkgname);
+ /*
+ * Check dependency validity.
+ */
+ pkgname = xbps_pkg_name(curpkg);
+ assert(pkgname);
+ if (strcmp(pkgname, reqpkgname) == 0) {
+ xbps_dbg_printf_append(xhp, "[ignoring wrong dependency "
+ "%s (depends on itself)]\n",
+ reqpkg);
+ free(pkgname);
+ continue;
+ }
+ free(pkgname);
+
/*
* Check if package has matched conflicts.
*/
diff --git a/lib/transaction_sortdeps.c b/lib/transaction_sortdeps.c
index dd346fb..c3aa4bb 100644
--- lib/transaction_sortdeps.c
+++ lib/transaction_sortdeps.c
@@ -205,9 +205,14 @@ again:
rv = EINVAL;
break;
}
+ if ((xbps_match_virtual_pkg_in_dict(curpkgd, str, true)) ||
+ (xbps_match_virtual_pkg_in_dict(curpkgd, str, false))) {
+ xbps_dbg_printf_append(xhp, "ignore wrong "
+ "dependency %s (depends on itself)\n", str);
+ continue;
+ }
prop_dictionary_get_cstring_nocopy(curpkgd,
"transaction", &tract);
-
lpd = pkgdep_alloc(curpkgd, str);
if (pdn == NULL) {
--
1.8.1.1

View file

@ -1,43 +0,0 @@
From 5471c7f46c5717264cfb7f761c29a2cf84bf68cc Mon Sep 17 00:00:00 2001
From: Juan RP <xtraeme@gmail.com>
Date: Wed, 20 Feb 2013 14:52:01 +0100
Subject: [PATCH] Add libarchive compat definitions for 3.1.2.
---
include/xbps_api_impl.h | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/include/xbps_api_impl.h b/include/xbps_api_impl.h
index c5782f4..08987d1 100644
--- include/xbps_api_impl.h
+++ include/xbps_api_impl.h
@@ -55,6 +55,26 @@
#define __UNCONST(a) ((void *)(unsigned long)(const void *)(a))
#endif
+/* libarchive compat */
+#if ARCHIVE_VERSION_NUMBER >= 3000000
+
+#define archive_read_support_compression_gzip(x) \
+ archive_read_support_filter_gzip(x)
+
+#define archive_read_support_compression_bzip2(x) \
+ archive_read_support_filter_bzip2(x)
+
+#define archive_read_support_compression_xz(x) \
+ archive_read_support_filter_xz(x)
+
+#define archive_read_finish(x) \
+ archive_read_free(x)
+
+#define archive_compression_name(x) \
+ archive_filter_name(x, 0)
+
+#endif
+
__BEGIN_DECLS
/**
--
1.8.1.1

View file

@ -1,12 +1,12 @@
# Template file for 'xbps'
pkgname=xbps
version=0.20
revision=10
version=0.21
revision=1
build_style=configure
configure_args="--prefix=/ --exec-prefix=/usr --sbindir=/usr/sbin
--enable-static --enable-debug --enable-tests"
depends="xbps-triggers"
makedepends="which pkg-config proplib-devel>=0.6.2 openssl-devel
makedepends="which pkg-config proplib-devel>=0.6.3 openssl-devel
libfetch-devel libarchive-devel>=3.1.2 confuse-devel atf-devel"
conf_files="/etc/xbps/xbps.conf"
subpackages="libxbps libxbps-devel xbps-static xbps-tests"
@ -16,13 +16,10 @@ maintainer="Juan RP <xtraeme@gmail.com>"
homepage="http://code.google.com/p/xbps"
license="Simplified BSD"
distfiles="http://xbps.googlecode.com/files/xbps-$version.tar.gz"
checksum=91e0ae3c6cf807e1f66e45d84c1913d9d87c0eb201ae9c07bc3b4425beba401f
checksum=eeacf20277479975f113198e97e031e8a9960bf567c7ab1fd227a4c6f5ddeae9
if [ -n "$XBPS_CROSS_TRIPLET" ]; then
makedepends="which pkg-config"
crossmakedepends="proplib-devel>=0.6.2 openssl-devel libfetch-devel
libarchive-devel>=3.1.2 confuse-devel atf-devel"
pre_build() {
sed -i "s|-L\$(LIBDIR)|-L/usr/${XBPS_CROSS_TRIPLET}/lib|g" config.mk
}
fi