Author: stefanct
Date: Thu Sep 12 17:48:39 2013
New Revision: 1742
URL: http://flashrom.org/trac/flashrom/changeset/1742

Log:
BSD refinements.

Make it easier to compile flashrom under NetBSD and DragonFlyBSD:
 - Use /usr/pkg/ as prefix for includes and linking
 - Use pciutils as include path for the right(tm) libpci

Also, fix date handling in getrevision.sh to work with the various formats for
invoking 'date'. This also uses svn's info --xml output instead of the regular 
one.

Signed-off-by: Stefan Tauner <stefan.tau...@student.tuwien.ac.at>
Tested-by: Idwer Vollering <vid...@gmail.com>
Acked-by: Stefan Tauner <stefan.tau...@student.tuwien.ac.at>

Modified:
   trunk/Makefile
   trunk/README
   trunk/hwaccess.h
   trunk/util/getrevision.sh

Modified: trunk/Makefile
==============================================================================
--- trunk/Makefile      Thu Sep 12 17:48:35 2013        (r1741)
+++ trunk/Makefile      Thu Sep 12 17:48:39 2013        (r1742)
@@ -98,6 +98,16 @@
 LDFLAGS += -L/usr/local/lib
 endif
 
+ifeq ($(TARGET_OS), NetBSD)
+CPPFLAGS += -I/usr/pkg/include
+LDFLAGS += -L/usr/pkg/lib
+endif
+
+ifeq ($(TARGET_OS), DragonFlyBSD)
+CPPFLAGS += -I/usr/pkg/include
+LDFLAGS += -L/usr/pkg/lib
+endif
+
 ifeq ($(TARGET_OS), DOS)
 EXEC_SUFFIX := .exe
 CPPFLAGS += -I$(DOSLIBS_BASE)/libgetopt
@@ -743,7 +753,11 @@
 define LIBPCI_TEST
 /* Avoid a failing test due to libpci header symbol shadowing breakage */
 #define index shadow_workaround_index
+#if !defined __NetBSD__ && !defined __DragonFly__
 #include <pci/pci.h>
+#else
+#include <pciutils/pci.h>
+#endif
 struct pci_access *pacc;
 int main(int argc, char **argv)
 {

Modified: trunk/README
==============================================================================
--- trunk/README        Thu Sep 12 17:48:35 2013        (r1741)
+++ trunk/README        Thu Sep 12 17:48:39 2013        (r1742)
@@ -80,11 +80,9 @@
 
  gmake LDFLAGS="-L$pathtolibpci" CC="gcc -I$pathtopciheaders" CFLAGS=-O2
 
-To compile on NetBSD or DragonFly BSD, use:
+To compile on NetBSD or DragonFly BSD (with pciutils, libftdi, libusb 
installed in /usr/pkg/), use:
 
- ln -s /usr/pkg/include/pciutils pci
- gmake CPPFLAGS="-I. -I/usr/pkg/include" \
-       LDFLAGS="-L/usr/pkg/lib -Wl,-rpath-link,/usr/pkg/lib"
+ gmake
 
 To compile on OpenBSD, use:
 

Modified: trunk/hwaccess.h
==============================================================================
--- trunk/hwaccess.h    Thu Sep 12 17:48:35 2013        (r1741)
+++ trunk/hwaccess.h    Thu Sep 12 17:48:39 2013        (r1742)
@@ -37,7 +37,13 @@
  * or as builtin.
  */
 #define index shadow_workaround_index
+
+#if !defined (__NetBSD__) && !defined (__DragonFly__)
 #include <pci/pci.h>
+#else
+#include <pciutils/pci.h>
+#endif
+
 #undef index
 #endif
 

Modified: trunk/util/getrevision.sh
==============================================================================
--- trunk/util/getrevision.sh   Thu Sep 12 17:48:35 2013        (r1741)
+++ trunk/util/getrevision.sh   Thu Sep 12 17:48:39 2013        (r1742)
@@ -110,15 +110,33 @@
 timestamp() {
        local t
 
+       # date syntaxes are manifold:
+       # gnu           date [-d input]... [+FORMAT]
+       # netbsd        date [-ajnu] [-d date] [-r seconds] [+format] 
[[[[[[CC]yy]mm]dd]HH]MM[.SS]]
+       # freebsd       date [-jnu]  [-d dst] [-r seconds] [-f fmt date | 
[[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format] [...]
+       # dragonflybsd  date [-jnu]  [-d dst] [-r seconds] [-f fmt date | 
[[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format] [...]
+       # openbsd       date [-aju]  [-d dst] [-r seconds] [+format] 
[[[[[[cc]yy]mm]dd]HH]MM[.SS]] [...]
        if svn_is_file_tracked "$2" ; then
                if svn_has_local_changes "$2"; then
                        t=$(date -u "$1")
                else
-                       # No local changes, get date of the last log record.
-                       local last_commit_date="$(svn info "$2" | \
-                                                 grep '^Last Changed Date:' | \
-                                                 awk '{print $4" "$5" "$6}')"
-                       t=$(date -d "${last_commit_date}" -u "$1")
+                       # No local changes, get date of the last log record. 
Subversion provides that in
+                       # ISO 8601 format when using the --xml switch. The sed 
call extracts that ignoring any
+                       # fractional parts started by a comma or a dot.
+                       local last_commit_date="$(svn info --xml "$2"| \
+                                                 sed -n -e 
's/<date>\([^,\.]*\)\([\.,].*\)*Z<\/date>/\1Z/p')"
+
+                       case $(uname) in
+                       # Most BSD dates do not support parsing date values 
from user input with -d but all of
+                       # them support parsing the syntax with 
[[[[[[cc]yy]mm]dd]HH]MM[.ss]]. We have to
+                       # transform the ISO8601 date first though.
+                       NetBSD|OpenBSD|DragonFly|FreeBSD)
+                               last_commit_date="$(echo ${last_commit_date} | \
+                                  sed -n -e 
's/\(....\)-\(..\)-\(..\)T\(..\):\(..\):\(..\)Z/\1\2\3\4\5\.\6/p')"
+                               t=$(date -u -j "${last_commit_date}" "$1" 
2>/dev/null);;
+                       *)
+                               t=$(date -u -d "${last_commit_date}" "$1" 
2>/dev/null);;
+                       esac
                fi
        elif git_is_file_tracked "$2" ; then
                # are there local changes?
@@ -126,12 +144,22 @@
                        t=$(date -u "${1}")
                else
                        # No local changes, get date of the last commit
-                       t=$(date -d "$(git log --pretty=format:"%cD" -1 -- 
"$2")" -u "$1")
+                       case $(uname) in
+                       # Most BSD dates do not support parsing date values 
from user input with -d but all of
+                       # them support parsing epoch seconds with -r. Thanks to 
git we can easily use that:
+                       NetBSD|OpenBSD|DragonFly|FreeBSD)
+                               t=$(date -u -r "$(git log --pretty=format:%ct 
-1 -- $2)"  "$1" 2>/dev/null);;
+                       *)
+                               t=$(date -d "$(git log --pretty=format:%cD -1 
-- $2)" -u "$1" 2>/dev/null);;
+                       esac
                fi
        else
                t=$(date -u "$1")
        fi
 
+       if [ -z "$t" ]; then
+               echo "Warning: Could not determine timestamp." 2>/dev/null
+       fi
        echo "${t}"
 }
 

_______________________________________________
flashrom mailing list
flashrom@flashrom.org
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to