git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [GUILT] add FreeBSD support

From
ZLZheng Liu <gnehzuil.liu@gmail.com>
Date
Aug 20, 2013, 07:44 UTC
Message-ID
<20130820074415.GA27247@gmail.com>
In-Reply-To
<20130809152046.GL22686@poseidon.cudanet.local>
Hi Josef,
On Fri, Aug 09, 2013 at 11:20:46AM -0400, Josef 'Jeff' Sipek wrote:
Show 22 quoted lines
> On Fri, Aug 09, 2013 at 11:04:45PM +0800, gnehzuil.liu wrote:
> > ?? 2013-8-9??????10:46??Josef 'Jeff' Sipek <jeffpc@josefsipek.net> д????
> > 
> > > On Fri, Aug 09, 2013 at 08:32:28PM +0800, Zheng Liu wrote:
> > >> From: Zheng Liu <gnehzuil.liu@gmail.com>
> > >> 
> > >> Currently guilt doesn't support FreeBSD platform.  This commit tries to
> > >> add this support.  The file called 'os.FreeBSD' is copied from os.Darwin
> > >> due to these two platforms have almost the same command tools.
> > > 
> > > Out of curiosity, is it identical?  I eyeballed it, and they do look
> > > identical.  There's probably a better way to do this whole os-specific
> > > thing, but this will work well enough for now.
> > 
> > Yes, it is identical.  Sorry, I am a newbie for guilt, but I am happy to
> > improve this os-specific thing.    Any idea?
> 
> So, I'm a bit torn between some "build-time" checking that generates
> something like an "os" file based on what it detects and something that
> happens at runtime.  I like that currently there's nothing to do - you just
> clone the repo and you're set.  At the same time, the more code can be
> avoided executing the faster (in theory) guilt gets.

Sorry for the late reply. I did a simple experiment that tries to fold all os.* files into one file and uses a if statement to export functions according to different platforms. But frankly I don't like this because it is not very clearly. So IMHO we'd better add a 'os.FreeBSD' file to support FreeBSD platform.

I attach the patch in this mail. It is not very mature. If you think it is worthwhile improving this patch. Please review it. All feedbacks are always welcome.

Regards,
                                                - Zheng
---
 Makefile            |   2 +-
 guilt               |   8 ++--
 os                  | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 os.Darwin           |  70 ---------------------------
 os.Linux            |  57 ----------------------
 os.SunOS            |  57 ----------------------
 regression/scaffold |   4 +-
 7 files changed, 141 insertions(+), 191 deletions(-)
 create mode 100644 os
 delete mode 100644 os.Darwin
 delete mode 100644 os.Linux
 delete mode 100644 os.SunOS
diff --git a/Makefile b/Makefile
index b38c1e4..395abc1 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@ PREFIX?=/usr/local
 DESTDIR?=
 INSTALL?=install
 
-OSFILES = $(filter-out $(wildcard *~),$(wildcard os.*))
+OSFILES = os
 SCRIPTS = $(filter-out $(wildcard *~),$(wildcard guilt-*))
 
 .PHONY: all 
diff --git a/guilt b/guilt
index e9b2aab..718bed0 100755
--- a/guilt
+++ b/guilt
@@ -906,10 +906,10 @@ pager="more"
 
 UNAME_S=`uname -s`
 
-if [ -r "$GUILT_PATH/os.$UNAME_S" ]; then
-	. "$GUILT_PATH/os.$UNAME_S"
-elif [ -r "$GUILT_PATH/../lib/guilt/os.$UNAME_S" ]; then
-	. "$GUILT_PATH/../lib/guilt/os.$UNAME_S"
+if [ -r "$GUILT_PATH/os" ]; then
+	. "$GUILT_PATH/os"
+elif [ -r "$GUILT_PATH/../lib/guilt/os" ]; then
+	. "$GUILT_PATH/../lib/guilt/os"
 else
 	die "Unsupported operating system: $UNAME_S"
 fi
diff --git a/os b/os
new file mode 100644
index 0000000..6d1bc01
--- /dev/null
+++ b/os
@@ -0,0 +1,134 @@
+UNAME_S=`uname -s`
+
+if [ $UNAME_S == 'FreeBSD' ] || [ $UNAME_S == 'Darwin' ]; then
+	# usage: touch_date <unix ts> <file>
+	touch_date()
+	{
+		touch -t `date -r $1 +%Y%m%d%H%M.%S` "$2"
+	}
+
+	# usage: last_modified <file>
+	last_modified()
+	{
+		stat -f "%m" "$1"
+	}
+
+	# usage: format_last_modified <file>
+	format_last_modified()
+	{
+		stat -f "%Sm" -t "%Y-%m-%d %H:%M:%S %z" "$1"
+	}
+
+	# usage: head_n [count]
+	head_n()
+	{
+		if [ "$1" -gt 0 ]; then
+			head -n "$1"
+		fi
+	}
+
+	# usage: sha1 [file]
+	sha1()
+	{
+		if [ $# = 1 ]
+		then
+			openssl dgst -sha1 "$1" | sed "s,SHA1.\(.*\).= \(.*\),\2  \1,"
+		else
+			openssl dgst -sha1 | sed 's,\(.*= \)*\(.*\),\2  -,'
+		fi
+	}
+
+	# usage: cp_a <src> <dst>
+	cp_a()
+	{
+		cp -pR "$1" "$2"
+	}
+
+	# usage: _tac
+	_tac()
+	{
+		sed -e '1!G;h;$!d'
+	}
+
+	_seq()
+	{
+		(
+			if [ $# -eq 1 ]
+			then
+				/usr/bin/jot $1
+			elif [ $# -eq 2 ]
+			then
+				n1=$((${2} - ${1} + 1))
+				n2=$1
+				/usr/bin/jot $n1 $n2
+			elif [ $# -eq 3 ]
+			then
+				num1=$1
+				incr=$2
+				num2=$3
+				/usr/bin/awk -v n1=$num1 -v n2=$num2 -v add=$incr 'BEGIN{ for(i=n1; i<=n2; i+=add) print i;}' | /usr/bin/sed -E '/e/s/^.+e.+$/0/'
+			fi
+		)
+		return 0
+	}
+elif [ $UNAME_S == 'Linux' ] || [ $UNAME_S == 'SunOS' ]; then
+	# usage: touch_date <unix ts> <file>
+	touch_date()
+	{
+		touch -d @$1 "$2"
+	}
+
+	# usage: last_modified <file>
+	last_modified()
+	{
+		stat -c "%Y" "$1"
+	}
+
+	# usage: format_last_modified <file>
+	format_last_modified()
+	{
+		# must strip nano-second part otherwise git gets very
+		# confused, and makes up strange timestamps from the past
+		# (chances are it decides to interpret it as a unix
+		# timestamp).
+		stat -c "%y" "$1" | sed -e '
+	s/^\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\) \([0-9]\{2\}\):\([0-9]\{2\}\):\([0-9]\{2\}\)\.[0-9]* \(.*\)$/\1-\2-\3 \4:\5:\6 \7/'
+	}
+
+	# usage: head_n [count]
+	head_n()
+	{
+		head -n "$1"
+	}
+
+	# usage: sha1 [file]
+	sha1()
+	{
+		if [ $# = 1 ]
+		then
+			sha1sum "$1"
+		else
+			sha1sum
+		fi
+	}
+
+	# usage: cp_a <src> <dst>
+	cp_a()
+	{
+		cp -a "$1" "$2"
+	}
+
+	# usage: _tac
+	_tac()
+	{
+		tac
+	}
+
+	_seq()
+	{
+		seq "$@"
+		return $?
+	}
+else
+	die "Unsupported operating system: $UNAME_S"
+fi
diff --git a/os.Darwin b/os.Darwin
deleted file mode 100644
index 3f23121..0000000
--- a/os.Darwin
+++ /dev/null
@@ -1,70 +0,0 @@
-# usage: touch_date <unix ts> <file>
-touch_date()
-{
-	touch -t `date -r $1 +%Y%m%d%H%M.%S` "$2"
-}
-
-# usage: last_modified <file>
-last_modified()
-{
-	stat -f "%m" "$1"
-}
-
-# usage: format_last_modified <file>
-format_last_modified()
-{
-	stat -f "%Sm" -t "%Y-%m-%d %H:%M:%S %z" "$1"
-}
-
-# usage: head_n [count]
-head_n()
-{
-	if [ "$1" -gt 0 ]; then
-		head -n "$1"
-	fi
-}
-
-# usage: sha1 [file]
-sha1()
-{
-	if [ $# = 1 ]
-	then
-		openssl dgst -sha1 "$1" | sed "s,SHA1.\(.*\).= \(.*\),\2  \1,"
-	else
-		openssl dgst -sha1 | sed 's,\(.*= \)*\(.*\),\2  -,'
-	fi
-}
-
-# usage: cp_a <src> <dst>
-cp_a()
-{
-	cp -pR "$1" "$2"
-}
-
-# usage: _tac
-_tac()
-{
-	sed -e '1!G;h;$!d'
-}
-
-_seq()
-{
-	(
-		if [ $# -eq 1 ]
-		then
-			/usr/bin/jot $1
-		elif [ $# -eq 2 ]
-		then
-			n1=$((${2} - ${1} + 1))
-			n2=$1
-			/usr/bin/jot $n1 $n2
-		elif [ $# -eq 3 ]
-		then
-			num1=$1
-			incr=$2
-			num2=$3
-			/usr/bin/awk -v n1=$num1 -v n2=$num2 -v add=$incr 'BEGIN{ for(i=n1; i<=n2; i+=add) print i;}' | /usr/bin/sed -E '/e/s/^.+e.+$/0/'
-		fi
-	)
-	return 0
-}
diff --git a/os.Linux b/os.Linux
deleted file mode 100644
index aaebf88..0000000
--- a/os.Linux
+++ /dev/null
@@ -1,57 +0,0 @@
-# usage: touch_date <unix ts> <file>
-touch_date()
-{
-	touch -d @$1 "$2"
-}
-
-# usage: last_modified <file>
-last_modified()
-{
-	stat -c "%Y" "$1"
-}
-
-# usage: format_last_modified <file>
-format_last_modified()
-{
-	# must strip nano-second part otherwise git gets very
-	# confused, and makes up strange timestamps from the past
-	# (chances are it decides to interpret it as a unix
-	# timestamp).
-	stat -c "%y" "$1" | sed -e '
-s/^\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\) \([0-9]\{2\}\):\([0-9]\{2\}\):\([0-9]\{2\}\)\.[0-9]* \(.*\)$/\1-\2-\3 \4:\5:\6 \7/'
-}
-
-# usage: head_n [count]
-head_n()
-{
-	head -n "$1"
-}
-
-# usage: sha1 [file]
-sha1()
-{
-	if [ $# = 1 ]
-	then
-		sha1sum "$1"
-	else
-		sha1sum
-	fi
-}
-
-# usage: cp_a <src> <dst>
-cp_a()
-{
-	cp -a "$1" "$2"
-}
-
-# usage: _tac
-_tac()
-{
-	tac
-}
-
-_seq()
-{
-	seq "$@"
-	return $?
-}
diff --git a/os.SunOS b/os.SunOS
deleted file mode 100644
index aaebf88..0000000
--- a/os.SunOS
+++ /dev/null
@@ -1,57 +0,0 @@
-# usage: touch_date <unix ts> <file>
-touch_date()
-{
-	touch -d @$1 "$2"
-}
-
-# usage: last_modified <file>
-last_modified()
-{
-	stat -c "%Y" "$1"
-}
-
-# usage: format_last_modified <file>
-format_last_modified()
-{
-	# must strip nano-second part otherwise git gets very
-	# confused, and makes up strange timestamps from the past
-	# (chances are it decides to interpret it as a unix
-	# timestamp).
-	stat -c "%y" "$1" | sed -e '
-s/^\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\) \([0-9]\{2\}\):\([0-9]\{2\}\):\([0-9]\{2\}\)\.[0-9]* \(.*\)$/\1-\2-\3 \4:\5:\6 \7/'
-}
-
-# usage: head_n [count]
-head_n()
-{
-	head -n "$1"
-}
-
-# usage: sha1 [file]
-sha1()
-{
-	if [ $# = 1 ]
-	then
-		sha1sum "$1"
-	else
-		sha1sum
-	fi
-}
-
-# usage: cp_a <src> <dst>
-cp_a()
-{
-	cp -a "$1" "$2"
-}
-
-# usage: _tac
-_tac()
-{
-	tac
-}
-
-_seq()
-{
-	seq "$@"
-	return $?
-}
diff --git a/regression/scaffold b/regression/scaffold
index 546d8c6..4d4613b 100644
--- a/regression/scaffold
+++ b/regression/scaffold
@@ -25,8 +25,8 @@ function die
 
 UNAME_S=`uname -s`
 
-if [ -r "$REG_DIR/../os.$UNAME_S" ]; then
-	. "$REG_DIR/../os.$UNAME_S"
+if [ -r "$REG_DIR/../os" ]; then
+	. "$REG_DIR/../os"
 else
 	die "Unsupported operating system: $UNAME_S"
 fi
-- 
1.8.3.4
Previous: Josef 'Jeff' SipekNext: Josef 'Jeff' Sipek
Message 5 of 7 in “[GUILT] add FreeBSD support”
  1. Zheng LiuAug 9, 2013
  2. Josef 'Jeff' SipekAug 9, 2013
  3. gnehzuil.liuAug 9, 2013
  4. Josef 'Jeff' SipekAug 9, 2013
  5. Zheng LiuAug 20, 2013
  6. Josef 'Jeff' SipekAug 20, 2013
  7. Zheng LiuAug 21, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.