Skip to Content.
Sympa Menu

sm-commit - [SM-Commit] GIT changes to master sorcery by Jaka Kranjc (ea4eef83b030867136cbaccac67608dcc6a9c1b9)

sm-commit AT lists.ibiblio.org

Subject: Source Mage code commit list

List archive

Chronological Thread  
  • From: Jaka Kranjc <scm AT sourcemage.org>
  • To: sm-commit AT lists.ibiblio.org
  • Subject: [SM-Commit] GIT changes to master sorcery by Jaka Kranjc (ea4eef83b030867136cbaccac67608dcc6a9c1b9)
  • Date: Fri, 16 Sep 2011 10:05:22 -0500

GIT changes to master sorcery by Jaka Kranjc <lynxlynxlynx AT sourcemage.org>:

ChangeLog | 3 ++
var/lib/sorcery/modules/build_api/api2 | 1
var/lib/sorcery/modules/libstage | 34
++++++++++++++++++++++++++++++++-
3 files changed, 37 insertions(+), 1 deletion(-)

New commits:
commit ea4eef83b030867136cbaccac67608dcc6a9c1b9
Author: Jaka Kranjc <lynxlynxlynx AT sourcemage.org>
Commit: Jaka Kranjc <lynxlynxlynx AT sourcemage.org>

libstage: ensure hardlinks are preserved #15981

commit 4e8d3d624411f7726af2c892b8e41ddfc0cd687f
Author: Jaka Kranjc <lynxlynxlynx AT sourcemage.org>
Commit: Jaka Kranjc <lynxlynxlynx AT sourcemage.org>

api2: added shebang, so i get syntax highlighting :)

diff --git a/ChangeLog b/ChangeLog
index 6790e00..8377145 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+2011-09-16 Jaka Kranjc <lynxlynxlynx AT sourcemage.org>
+ * libstage: ensure hardlinks are preserved #15981
+
2011-09-15 Jaka Kranjc <lynxlynxlynx AT sourcemage.org>
* gaze, sorcery, cabal: merged a similar file display function
* libmisc: added xz and 7z support to display_file
diff --git a/var/lib/sorcery/modules/build_api/api2
b/var/lib/sorcery/modules/build_api/api2
index 79911fa..2c2792a 100755
--- a/var/lib/sorcery/modules/build_api/api2
+++ b/var/lib/sorcery/modules/build_api/api2
@@ -1,3 +1,4 @@
+#!/bin/bash
#---------------------------------------------------------------------
##
##=head1 SYNOPSIS
diff --git a/var/lib/sorcery/modules/libstage
b/var/lib/sorcery/modules/libstage
index 875515b..77048d9 100755
--- a/var/lib/sorcery/modules/libstage
+++ b/var/lib/sorcery/modules/libstage
@@ -13,6 +13,27 @@
function transfer_staged_spell()
{
stage_install_ordinary
+
+ # restore any hardlinks, since they were copied over normally
+ local hlist
+ if [[ -n $CAST_TMPDIR ]]; then
+ hlist="$CAST_TMPDIR/hardlinks"
+ else
+ hlist="$TMP_DIR/hardlinks"
+ fi
+ if [[ -s $hlist ]]; then
+ local inode last_inode filename last_filename
+ sort "$hlist" |
+ while read inode filename; do
+ if [[ $last_inode == $inode ]]; then
+ ln -f "$last_filename" "$filename"
+ fi
+ last_filename="$filename"
+ last_inode=$inode
+ done
+ rm -f "$hlist"
+ fi
+
lock_file "$CONFIG_STAGE_DIRECTORY/$SPELL"
mkdir -p "$CONFIG_STAGE_DIRECTORY/$SPELL/current"
stage_install_configs
@@ -107,10 +128,12 @@ function stage_install_directory()
function stage_install_file()
{
local FILE=$1
- local stat=( $(stat --printf "%a\n%U\n%G\n"
"$STAGE_DIRECTORY/TRANSL/$FILE" ) )
+ local stat=( $(stat --printf "%a\n%U\n%G\n%h\n%i\n"
"$STAGE_DIRECTORY/TRANSL/$FILE" ) )
local PERMISSION=${stat[0]}
local OWNER=${stat[1]}
local GROUP=${stat[2]}
+ local link_count=${stat[3]}
+ local inode=${stat[4]}
local SAVE="$CONFIG_STAGE_DIRECTORY/$SPELL/current/$FILE"
message "${FILE_COLOR}$PERMISSION $OWNER:$GROUP $FILE${DEFAULT_COLOR}"
case $2 in
@@ -131,6 +154,15 @@ function stage_install_file()
;;
*)
cp -fdp "$STAGE_DIRECTORY/TRANSL/$FILE" "${INSTALL_ROOT}/$FILE"
+ # we can't fix symlinks now, since the other file is often not on the
system yet
+ # doing it later in TRANSFER also avoids the search for matching inodes
+ if [[ $link_count != 1 ]]; then
+ if [[ -n $CAST_TMPDIR ]]; then
+ echo "$inode ${INSTALL_ROOT}/$FILE" >> "$CAST_TMPDIR/hardlinks"
+ else
+ echo "$inode ${INSTALL_ROOT}/$FILE" >> "$TMP_DIR/hardlinks"
+ fi
+ fi
;;
esac
}



  • [SM-Commit] GIT changes to master sorcery by Jaka Kranjc (ea4eef83b030867136cbaccac67608dcc6a9c1b9), Jaka Kranjc, 09/16/2011

Archive powered by MHonArc 2.6.24.

Top of Page