diff --git a/srcpkgs/xbps/patches/0001-Fix-31-and-add-new-test-case-to-reproduce-it.patch b/srcpkgs/xbps/patches/0001-Fix-31-and-add-new-test-case-to-reproduce-it.patch new file mode 100644 index 00000000000..069c76cd4d3 --- /dev/null +++ b/srcpkgs/xbps/patches/0001-Fix-31-and-add-new-test-case-to-reproduce-it.patch @@ -0,0 +1,102 @@ +From 8c47021ec3d57601d0df55eed186a1ab94fd28e8 Mon Sep 17 00:00:00 2001 +From: Juan RP +Date: Tue, 25 Feb 2014 22:55:39 +0100 +Subject: [PATCH] Fix #31 and add new test case to reproduce it. + +--- + NEWS | 2 ++ + lib/package_unpack.c | 2 +- + tests/xbps/libxbps/common/Kyuafile | 1 + + tests/xbps/libxbps/shell/Makefile | 1 + + tests/xbps/libxbps/shell/issue31_test.sh | 42 ++++++++++++++++++++++++++++++++ + 5 files changed, 47 insertions(+), 1 deletion(-) + create mode 100644 tests/xbps/libxbps/shell/issue31_test.sh + +diff --git a/lib/package_unpack.c b/lib/package_unpack.c +index 84565af..d935ef5 100644 +--- lib/package_unpack.c ++++ lib/package_unpack.c +@@ -364,7 +364,7 @@ unpack_archive(struct xbps_handle *xhp, + if (!force && (entry_type == AE_IFREG)) { + buf = strchr(entry_pname, '.') + 1; + assert(buf != NULL); +- if (file_exists) { ++ if (file_exists && S_ISREG(st.st_mode)) { + /* + * Handle configuration files. Check if current + * entry is a configuration file and take action +diff --git a/tests/xbps/libxbps/common/Kyuafile b/tests/xbps/libxbps/common/Kyuafile +index 5548494..7361066 100644 +--- tests/xbps/libxbps/common/Kyuafile ++++ tests/xbps/libxbps/common/Kyuafile +@@ -11,6 +11,7 @@ atf_test_program{name="find_pkg_obsoletes_test"} + atf_test_program{name="issue6_test"} + atf_test_program{name="issue18_test"} + atf_test_program{name="issue20_test"} ++atf_test_program{name="issue31_test"} + atf_test_program{name="conf_files_test"} + atf_test_program{name="remove_test"} + atf_test_program{name="replace_test"} +diff --git a/tests/xbps/libxbps/shell/Makefile b/tests/xbps/libxbps/shell/Makefile +index 2c6fe25..e0ef1ea 100644 +--- tests/xbps/libxbps/shell/Makefile ++++ tests/xbps/libxbps/shell/Makefile +@@ -3,6 +3,7 @@ TOPDIR = ../../../.. + + TESTSHELL = conf_files_test issue6_test issue18_test issue20_test remove_test + TESTSHELL+= replace_test installmode_test obsoletefiles_test ++TESTSHELL+= issue31_test + + include ../Makefile.inc + include $(TOPDIR)/mk/test.mk +diff --git a/tests/xbps/libxbps/shell/issue31_test.sh b/tests/xbps/libxbps/shell/issue31_test.sh +new file mode 100644 +index 0000000..83eeaad +--- /dev/null ++++ tests/xbps/libxbps/shell/issue31_test.sh +@@ -0,0 +1,42 @@ ++#! /usr/bin/env atf-sh ++ ++# xbps issue #31. ++# How to reproduce it: ++# Generate pkg A-0.1_1: ++# /dir/dir/foo ++# Install pkg A. ++# Generate pkg A-0.2_1: ++# /dir/foo ++# Update pkg A to 0.2_1 ++ ++atf_test_case issue31 ++ ++issue31_head() { ++ atf_set "descr" "xbps issue #31 (https://github.com/xtraeme/xbps/issues/31)" ++} ++ ++issue31_body() { ++ mkdir -p pkg_A/usr/share/licenses/chromium/license.html ++ echo random > pkg_A/usr/share/licenses/chromium/license.html/eula.html ++ xbps-create -A noarch -n A-0.1_1 -s "pkg A" pkg_A ++ atf_check_equal $? 0 ++ xbps-rindex -a *.xbps ++ atf_check_equal $? 0 ++ ++ xbps-install -r root -C null.conf --repository=$PWD -y A ++ atf_check_equal $? 0 ++ ++ mkdir -p pkg_B/usr/share/licenses/chromium ++ echo "morerandom" > pkg_B/usr/share/licenses/chromium/license.html ++ xbps-create -A noarch -n A-0.2_1 -s "pkg A" pkg_B ++ atf_check_equal $? 0 ++ xbps-rindex -a A-0.2_1.noarch.xbps ++ atf_check_equal $? 0 ++ ++ xbps-install -r root -C null.conf --repository=$PWD -yuvd A ++ atf_check_equal $? 0 ++} ++ ++atf_init_test_cases() { ++ atf_add_test_case issue31 ++} +-- +1.9.0 + diff --git a/srcpkgs/xbps/template b/srcpkgs/xbps/template index a1a0401ed98..4021c4b9a5f 100644 --- a/srcpkgs/xbps/template +++ b/srcpkgs/xbps/template @@ -1,7 +1,7 @@ # Template file for 'xbps' pkgname=xbps version=0.32 -revision=1 +revision=2 bootstrap=yes conf_files="/etc/xbps/xbps.conf" replaces="xbps>=0"