From 21d5dedfddb290da4e9beafe3e28abcdee1b7091 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Thu, 24 Jun 2010 10:06:36 -0500 Subject: repo-add: try symlink, then hardlink, then copy for DB file We were seeing some issues when trying to create our new database alias using symlinks on certain filesystems (see FS#19907). Have a fallback method in place where we first try a symlink, then a hard link, then just copy the database if all else fails. Signed-off-by: Dan McGee --- scripts/repo-add.sh.in | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in index 7bde6007..2838f817 100644 --- a/scripts/repo-add.sh.in +++ b/scripts/repo-add.sh.in @@ -487,7 +487,10 @@ if (( success )); then [[ -f $REPO_DB_FILE ]] && mv -f "$REPO_DB_FILE" "${REPO_DB_FILE}.old" [[ -f $tmpdir/$filename ]] && mv "$tmpdir/$filename" "$REPO_DB_FILE" - ln -sf "$REPO_DB_FILE" "${REPO_DB_FILE%.tar.*}" + dblink="${REPO_DB_FILE%.tar.*}" + ln -sf "$REPO_DB_FILE" "$dblink" 2>/dev/null || \ + ln -f "$REPO_DB_FILE" "$dblink" 2>/dev/null || \ + cp "$REPO_DB_FILE" "$dblink" else msg "$(gettext "No packages modified, nothing to do.")" exit 1 -- cgit v1.2.3-70-g09d2 From d7c98d4e45f614495399636bf02bc718e4a90ab8 Mon Sep 17 00:00:00 2001 From: Thomas Bächler Date: Mon, 28 Jun 2010 13:31:59 +0200 Subject: makepkg: Only check regular files in $srcdir check The 'grep -R' in the $srcdir check would not only grep regular files, but also devices, symlinks (that might potentially point outside of $pkgdir), pipes and so on. Use find to ensure only regular files are examined. This should fix https://bugs.archlinux.org/task/19975 Signed-off-by: Allan McRae --- scripts/makepkg.sh.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 2699f637..c4c9866c 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -980,7 +980,7 @@ check_package() { done # check for references to the build directory - if grep -R "${srcdir}" "${pkgdir}" &>/dev/null; then + if find "${pkgdir}" -type f -exec grep -q "${srcdir}" {} +; then warning "$(gettext "Package contains reference to %s")" "\$srcdir" fi } -- cgit v1.2.3-70-g09d2 From 8b23aa172f6229dd82c381704d4802d9747e118b Mon Sep 17 00:00:00 2001 From: Andres P Date: Fri, 25 Jun 2010 18:46:45 -0430 Subject: makepkg: remove bash4-only parameter expansion in check_sanity Signed-off-by: Andres P Signed-off-by: Allan McRae --- scripts/makepkg.sh.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index c4c9866c..6ad83f0b 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -1250,7 +1250,7 @@ check_sanity() { # evaluate any bash variables used eval file=${file} if [[ ! -f $file ]]; then - error "$(gettext "%s file (%s) does not exist.")" "${i^}" "$file" + error "$(gettext "%s file (%s) does not exist.")" "$i" "$file" return 1 fi done -- cgit v1.2.3-70-g09d2 From 0ea52e3a4f698ce3b1c90881a2b2eaa56625f261 Mon Sep 17 00:00:00 2001 From: Allan McRae Date: Wed, 30 Jun 2010 13:29:26 +1000 Subject: makepkg: try standard paths for coreutils du Attempt to find "du" from coreutils in the standard paths and if not revert to the version in the users PATH. Using the full path prevents issues such as FS#19932, where a different and incompatible version of du is put earlier in the users path. Signed-off-by: Allan McRae --- configure.ac | 1 + scripts/Makefile.am | 1 + scripts/makepkg.sh.in | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 4faf20d9..7d4e60f8 100644 --- a/configure.ac +++ b/configure.ac @@ -210,6 +210,7 @@ esac AM_CONDITIONAL([CYGWIN], test "x$host_os_cygwin" = "xyes") AM_CONDITIONAL([DARWIN], test "x$host_os_darwin" = "xyes") +AC_PATH_PROGS([DUPATH], [du], [du], [/usr/bin$PATH_SEPARATOR/bin] ) AC_SUBST(SIZECMD) AC_SUBST(SEDINPLACE) AC_SUBST(STRIP_BINARIES) diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 330acb98..0fde3345 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -42,6 +42,7 @@ edit = sed \ -e 's|@BUILDSCRIPT[@]|$(BUILDSCRIPT)|g' \ -e 's|@SIZECMD[@]|$(SIZECMD)|g' \ -e 's|@SEDINPLACE[@]|$(SEDINPLACE)|g' \ + -e 's|@DUPATH[@]|$(DUPATH)|g' \ -e 's|@configure_input[@]|Generated from $@.in; do not edit by hand.|g' ## All the scripts depend on Makefile so that they are rebuilt when the diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 6ad83f0b..f3c72172 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -902,7 +902,7 @@ write_pkginfo() { else local packager="Unknown Packager" fi - local size="$(du -sk)" + local size="$(@DUPATH@ -sk)" size="$(( ${size%%[^0-9]*} * 1024 ))" msg2 "$(gettext "Generating .PKGINFO file...")" -- cgit v1.2.3-70-g09d2