Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/public-domain/tz Copy src/share/zoneinfo/tzdata2net...



details:   https://anonhg.NetBSD.org/src/rev/0280da038e7a
branches:  trunk
changeset: 331310:0280da038e7a
user:      apb <apb%NetBSD.org@localhost>
date:      Fri Aug 08 09:08:19 2014 +0000

description:
Copy src/share/zoneinfo/tzdata2netbsd (revision 1.5) to
src/external/public-domain/tz/tzdata2netbsd.

This is a verbatim copy, as part of moving the zoneinfo sources in the
NetBSD tree.  It will need to be edited before it works.

diffstat:

 external/public-domain/tz/tzdata2netbsd |  336 ++++++++++++++++++++++++++++++++
 1 files changed, 336 insertions(+), 0 deletions(-)

diffs (truncated from 340 to 300 lines):

diff -r b64715395a0b -r 0280da038e7a external/public-domain/tz/tzdata2netbsd
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/external/public-domain/tz/tzdata2netbsd   Fri Aug 08 09:08:19 2014 +0000
@@ -0,0 +1,336 @@
+# $NetBSD: tzdata2netbsd,v 1.1 2014/08/08 09:08:19 apb Exp $
+
+# For use by NetBSD developers when updating to new versions of tzdata.
+#
+# 0. Be in an up-to-date checkout of src/share/zoneinfo from NetBSD-current.
+# 1. Edit OLDVER and NEWVER below.
+# 3. Run this script.  You will be prompted for confirmation before
+#    anything major (such as a cvs operation).
+# 4. If something fails, abort the script and fix it.
+# 5. Re-run this script until you are happy.  It's designed to
+#    be re-run over and over, and later runs will try not to
+#    redo non-trivial work done by earlier runs.
+#
+
+OLDVER=2014e
+NEWVER=2014f
+
+# Uppercase variants of OLDVER and NEWVER
+OLDVER_UC="$( echo "${OLDVER}" | tr '[a-z]' '[A-Z]' )"
+NEWVER_UC="$( echo "${NEWVER}" | tr '[a-z]' '[A-Z]' )"
+
+# Tags for use with version control systems
+CVSOLDTAG="TZDATA${OLDVER_UC}"
+CVSNEWTAG="TZDATA${NEWVER_UC}"
+CVSBRANCHTAG="TZDATA"
+GITHUBTAG="${NEWVER}"
+
+# URLs for fetching distribution files, etc.
+DISTURL="ftp://ftp.iana.org/tz/releases/tzdata${NEWVER}.tar.gz";
+SIGURL="${DISTURL}.asc"
+NEWSURL="https://github.com/eggert/tz/raw/${GITHUBTAG}/NEWS";
+
+# Directories
+REPODIR="src/share/zoneinfo"   # relative to the NetSBD CVS repository
+WORKDIR="$(pwd)/update-work/${NEWVER}"
+EXTRACTDIR="${WORKDIR}/extract"
+
+# Files in the work directory
+DISTFILE="${WORKDIR}/${DISTURL##*/}"
+SIGFILE="${DISTFILE}.sig"
+NEWSFILE="${WORKDIR}/NEWS"
+NEWSTRIMFILE="${WORKDIR}/NEWS.trimmed"
+IMPORTMSGFILE="${WORKDIR}/import.msg"
+MERGSMSGFILE="${WORKDIR}/merge.msg"
+PGPVERIFYLOG="${WORKDIR}/pgpverify.log"
+
+DOIT()
+{
+       local really_do_it=false
+       local reply
+
+       echo "ABOUT TO DO:" "$(shell_quote "$@")"
+       read -p "Really do it? [yes/no/quit] " reply
+       case "${reply}" in
+       [yY]*)  really_do_it=true ;;
+       [nN]*)  really_do_it=false ;;
+       [qQ]*)
+               echo "Aborting"
+               return 1
+               ;;
+       esac
+       if $really_do_it; then
+               echo "REALLY DOING IT NOW..."
+               "$@"
+       else
+               echo "NOT REALLY DOING THE ABOVE COMMAND"
+       fi
+}
+
+# Quote args to make them safe in the shell.
+# Usage: quotedlist="$(shell_quote args...)"
+#
+# After building up a quoted list, use it by evaling it inside
+# double quotes, like this:
+#    eval "set -- $quotedlist"
+# or like this:
+#    eval "\$command $quotedlist \$filename"
+#
+shell_quote()
+{(
+       local result=''
+       local arg qarg
+       LC_COLLATE=C ; export LC_COLLATE # so [a-zA-Z0-9] works in ASCII
+       for arg in "$@" ; do
+               case "${arg}" in
+               '')
+                       qarg="''"
+                       ;;
+               *[!-./a-zA-Z0-9]*)
+                       # Convert each embedded ' to '\'',
+                       # then insert ' at the beginning of the first line,
+                       # and append ' at the end of the last line.
+                       # Finally, elide unnecessary '' pairs at the
+                       # beginning and end of the result and as part of
+                       # '\'''\'' sequences that result from multiple
+                       # adjacent quotes in he input.
+                       qarg="$(printf "%s\n" "$arg" | \
+                           ${SED:-sed} -e "s/'/'\\\\''/g" \
+                               -e "1s/^/'/" -e "\$s/\$/'/" \
+                               -e "1s/^''//" -e "\$s/''\$//" \
+                               -e "s/'''/'/g"
+                               )"
+                       ;;
+               *)
+                       # Arg is not the empty string, and does not contain
+                       # any unsafe characters.  Leave it unchanged for
+                       # readability.
+                       qarg="${arg}"
+                       ;;
+               esac
+               result="${result}${result:+ }${qarg}"
+       done
+       printf "%s\n" "$result"
+)}
+
+findcvsroot()
+{
+       [ -n "${CVSROOT}" ] && return 0
+       CVSROOT="$( cat ./CVS/Root )"
+       [ -n "${CVSROOT}" ] && return 0
+       echo >&2 "Failed to set CVSROOT value"
+       return 1
+}
+
+mkworkdir()
+{
+       mkdir -p "${WORKDIR}"
+}
+
+fetch()
+{
+       [ -f "${DISTFILE}" ] || ftp -o "${DISTFILE}" "${DISTURL}"
+       [ -f "${SIGFILE}" ] || ftp -o "${SIGFILE}" "${SIGURL}"
+       [ -f "${NEWSFILE}" ] || ftp -o "${NEWSFILE}" "${NEWSURL}"
+}
+
+checksig()
+{
+       { gpg --verify "${SIGFILE}" "${DISTFILE}"
+         echo gpg exit status $?
+       } 2>&1 | tee "${PGPVERIFYLOG}"
+
+       # The output should contain lines that match all the following regexps
+       #
+       while read line; do
+               if ! grep -q -e "^${line}\$" "${PGPVERIFYLOG}"; then
+                       echo >&2 "Failed to verify signature: ${line}"
+                       return 1
+               fi
+       done <<'EOF'
+gpg: Signature made .* using RSA key ID 62AA7E34
+gpg: Good signature from "Paul Eggert <eggert%cs.ucla.edu@localhost>"
+Primary key fingerprint: 7E37 92A9 D8AC F7D6 33BC  1588 ED97 E90E 62AA 7E34
+gpg exit status 0
+EOF
+}
+
+extract()
+{
+       [ -f "${EXTRACTDIR}/zone.tab" ] && return
+       mkdir -p "${EXTRACTDIR}"
+       tar -z -xf "${DISTFILE}" -C "${EXTRACTDIR}"
+}
+
+# Find the relevant part of the NEWS file for all releases between
+# OLDVER and NEWVER, and save them to NEWSTRIMFILE.
+#
+trimnews()
+{
+       [ -s "${NEWSTRIMFILE}" ] && return
+       awk -v oldver="${OLDVER}" -v newver="${NEWVER}" \
+           '
+               BEGIN {inrange = 0}
+               /^Release [0-9]+[a-z]+ - .*/ {
+                       # "Release <version> - <date>"
+                       inrange = ($2 > oldver && $2 <= newver)
+               }
+               // { if (inrange) print; }
+               ' \
+               <"${NEWSFILE}" >"${NEWSTRIMFILE}"
+}
+
+# Create IMPORTMSGFILE from NEWSTRIMFILE, by ignoring some sections,
+# keeping only the first sentence from paragraphs in other sections,
+# and changing the format.
+#
+# The result should be edited by hand before performing a cvs commit.
+# A message to that effect is inserted at the beginning of the file.
+#
+mkimportmsg()
+{
+       [ -s "${IMPORTMSGFILE}" ] && return
+       { cat <<EOF
+EDIT ME: Edit this file and then delete the lines marked "EDIT ME".
+EDIT ME: This file will be used as a log message for the "cvs commit" that
+EDIT ME: imports tzdata${NEWVER}.  The initial contents of this file were
+EDIT ME: generated from ${NEWSFILE}.
+EDIT ME: 
+EOF
+       awk -v oldver="${OLDVER}" -v newver="${NEWVER}" \
+           -v disturl="${DISTURL}" \
+           '
+               BEGIN {
+                       bullet = "  * ";
+                       indent = "    ";
+                       blankline = 0;
+                       goodsection = 0;
+                       havesentence = 0;
+                       print "Import tzdata"newver" from "disturl;
+               }
+               /^Release/ {
+                       # "Release <version> - <date>"
+                       ver = $2;
+                       date = gensub(".* - ", "", 1, $0);
+                       print "";
+                       print "Summary of changes in tzdata"ver \
+                               " ("date"):";
+               }
+               /^$/ { blankline = 1; havesentence = 0; }
+               /^  Changes affecting/ { goodsection = 0; }
+               /^  Changes affecting.*time/ { goodsection = 1; }
+               /^  Changes affecting.*data format/ { goodsection = 1; }
+               /^  Changes affecting.*documentation/ || \
+               /^  Changes affecting.*commentary/ {
+                       t = gensub("^ *", "", 1, $0);
+                       t = gensub("\\.*$", ".", 1, t);
+                       print bullet t;
+                       goodsection = 0;
+               }
+               /^    .*/ && goodsection {
+                       # In a paragraph in a "good" section.
+                       # Ignore leading spaces, and ignore anything
+                       # after the first sentence.
+                       # First line of paragraph gets a bullet.
+                       t = gensub("^ *", "", 1, $0);
+                       t = gensub("\\. .*", ".", 1, t);
+                       if (blankline) print bullet t;
+                       else if (! havesentence) print indent t;
+                       havesentence = (havesentence || (t ~ "\\.$"));
+               }
+               /./ { blankline = 0; }
+               ' \
+               <"${NEWSTRIMFILE}"
+       } >"${IMPORTMSGFILE}"
+}
+
+editimportmsg()
+{
+       if [ -s "${IMPORTMSGFILE}" ] \
+       && ! grep -q '^EDIT' "${IMPORTMSGFILE}"
+       then
+               return 0 # file has already been edited
+       fi
+       # Pass both IMPORTMSGFILE and NEWSFILE to the editor, so that the
+       # user can easily consult NEWSFILE while editing IMPORTMSGFILE.
+       vi "${IMPORTMSGFILE}" "${NEWSFILE}"
+}
+
+cvsimport()
+{
+       if ! [ -s "${IMPORTMSGFILE}" ] \
+       || grep -q '^EDIT' "${IMPORTMSGFILE}"
+       then
+               cat >&2 <<EOF
+The message file ${IMPORTMSGFILE}
+has not been properly edited.
+Not performing cvs import.
+EOF
+               return 1
+       fi
+       ( cd "${EXTRACTDIR}" &&
+         DOIT cvs -d "${CVSROOT}" import -m "$(cat "${IMPORTMSGFILE}")" \
+               "${REPODIR}" "${CVSBRANCHTAG}" "${CVSNEWTAG}"
+       )
+}
+
+cvsmerge()
+{
+       DOIT cvs -d "${CVSROOT}" update -j"${CVSOLDTAG}" -j"${CVSNEWTAG}"
+}
+
+resolveconflicts()
+{
+       cat <<EOF
+Resolve conflicts resulting from the cvs merge.
+exit 0 when done.  exit 1 to abort.
+EOF
+       nl='
+'
+       PS1="[inside ${0##*/}]${nl}${PS1}" sh -i
+}
+
+cvscommitmerge()
+{
+       if grep -l '^[<=>][<=>][<=>]' *
+       then



Home | Main Index | Thread Index | Old Index