From 568bc969819cb97064909bd62a7d268977662a78 Mon Sep 17 00:00:00 2001 From: Juan RP Date: Sun, 15 Nov 2015 09:28:21 +0100 Subject: [PATCH] xbps{,-static}: sync with git master for alternatives bugfixes. --- srcpkgs/xbps-static/template | 2 +- ...ith-unexisten.patch => alternatives.patch} | 86 ++++++++++--------- srcpkgs/xbps/template | 2 +- 3 files changed, 47 insertions(+), 43 deletions(-) rename srcpkgs/xbps/patches/{0001-alternatives-fix-creation-of-symlinks-with-unexisten.patch => alternatives.patch} (57%) diff --git a/srcpkgs/xbps-static/template b/srcpkgs/xbps-static/template index a4a76e0c177..1ab62083636 100644 --- a/srcpkgs/xbps-static/template +++ b/srcpkgs/xbps-static/template @@ -3,7 +3,7 @@ # NOTE: keep this package synchronized with "srcpkgs/xbps". pkgname=xbps-static version=0.50 -revision=3 +revision=4 build_style=configure short_desc="The XBPS package system utilities - static binaries" maintainer="Juan RP " diff --git a/srcpkgs/xbps/patches/0001-alternatives-fix-creation-of-symlinks-with-unexisten.patch b/srcpkgs/xbps/patches/alternatives.patch similarity index 57% rename from srcpkgs/xbps/patches/0001-alternatives-fix-creation-of-symlinks-with-unexisten.patch rename to srcpkgs/xbps/patches/alternatives.patch index eb1ffc08ea9..d92dbe3e82a 100644 --- a/srcpkgs/xbps/patches/0001-alternatives-fix-creation-of-symlinks-with-unexisten.patch +++ b/srcpkgs/xbps/patches/alternatives.patch @@ -1,19 +1,5 @@ -From b3c7d27c6b9ffddda9914a9110680df91c6b17ff Mon Sep 17 00:00:00 2001 -From: Juan RP -Date: Sat, 14 Nov 2015 07:26:27 +0100 -Subject: [PATCH 1/2] alternatives: fix creation of symlinks with unexistent - dirs. - -If an alternative needs to create /usr/bin/foo, and /usr/bin -does not exist, this directory must be created prior to create -the symlink. ---- - lib/package_alternatives.c | 24 +++++++++++++++++++++++- - tests/xbps/xbps-alternatives/main.sh | 8 ++++---- - 2 files changed, 27 insertions(+), 5 deletions(-) - diff --git a/lib/package_alternatives.c b/lib/package_alternatives.c -index e4d94e3..510b536 100644 +index e4d94e3..08a8e5b 100644 --- lib/package_alternatives.c +++ lib/package_alternatives.c @@ -150,7 +150,7 @@ create_symlinks(struct xbps_handle *xhp, xbps_array_t a, const char *grname) @@ -25,37 +11,58 @@ index e4d94e3..510b536 100644 char *l, *lnk, *tgt = NULL; const char *tgt0; int rv; -@@ -171,12 +171,34 @@ create_symlinks(struct xbps_handle *xhp, xbps_array_t a, const char *grname) - xbps_dbg_printf(xhp, "failed to create symlink" - "target dir '%s' for group '%s': %s\n", - tgt, grname, strerror(errno)); -+ free(tgt_dup); - free(tgt); - free(l); - return rv; +@@ -164,19 +164,44 @@ create_symlinks(struct xbps_handle *xhp, xbps_array_t a, const char *grname) + tgt_dup = strdup(tgt0); + assert(tgt_dup); + tgt_dir = dirname(tgt_dup); +- tgt = xbps_xasprintf("%s%s", xhp->rootdir, tgt_dir); +- if (xbps_mkpath(tgt, 0755) != 0) { +- if (errno != EEXIST) { +- rv = errno; +- xbps_dbg_printf(xhp, "failed to create symlink" +- "target dir '%s' for group '%s': %s\n", +- tgt, grname, strerror(errno)); +- free(tgt); +- free(l); +- return rv; ++ if (strcmp(tgt_dir, ".")) { ++ tgt = xbps_xasprintf("%s%s", xhp->rootdir, tgt_dir); ++ if (xbps_mkpath(tgt, 0755) != 0) { ++ if (errno != EEXIST) { ++ rv = errno; ++ xbps_dbg_printf(xhp, "failed to create " ++ "target dir '%s' for group '%s': %s\n", ++ tgt, grname, strerror(errno)); ++ free(tgt_dup); ++ free(tgt); ++ free(l); ++ return rv; ++ } } ++ free(tgt); } - free(tgt); +- free(tgt); + /* always create link dir, for dangling symlinks */ + lnk_dup = strdup(l); + assert(lnk_dup); + lnk_dir = dirname(lnk_dup); -+ lnk = xbps_xasprintf("%s%s", xhp->rootdir, lnk_dir); -+ if (xbps_mkpath(lnk, 0755) != 0) { -+ if (errno != EEXIST) { -+ rv = errno; -+ xbps_dbg_printf(xhp, "failed to create symlink" -+ "dir '%s' for group '%s': %s\n", -+ lnk, grname, strerror(errno)); -+ free(tgt_dup); -+ free(tgt); -+ free(lnk_dup); -+ free(lnk); -+ free(l); -+ return rv; ++ if (strcmp(lnk_dir, ".")) { ++ lnk = xbps_xasprintf("%s%s", xhp->rootdir, lnk_dir); ++ if (xbps_mkpath(lnk, 0755) != 0) { ++ if (errno != EEXIST) { ++ rv = errno; ++ xbps_dbg_printf(xhp, "failed to create symlink" ++ "dir '%s' for group '%s': %s\n", ++ lnk, grname, strerror(errno)); ++ free(tgt_dup); ++ free(lnk_dup); ++ free(lnk); ++ free(l); ++ return rv; ++ } + } ++ free(lnk); + } -+ free(lnk); + free(lnk_dup); if (l[0] != '/') { @@ -86,6 +93,3 @@ index e636894..facd290 100644 rv=0 fi echo "A lnk: $lnk" --- -2.6.3 - diff --git a/srcpkgs/xbps/template b/srcpkgs/xbps/template index 22005a2001d..f57e418a7fb 100644 --- a/srcpkgs/xbps/template +++ b/srcpkgs/xbps/template @@ -1,7 +1,7 @@ # Template file for 'xbps' pkgname=xbps version=0.50 -revision=3 +revision=4 bootstrap=yes build_style=configure short_desc="The XBPS package system utilities"