summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rw-r--r--bin/SConsDoc.py16
-rw-r--r--bin/SConsExamples.py65
-rw-r--r--bin/import-test.py4
-rw-r--r--bin/linecount.py4
-rw-r--r--bin/restore.sh28
-rw-r--r--bin/scons-cdist272
-rw-r--r--bin/scons_dev_master.py23
-rw-r--r--bin/time-scons.py2
-rw-r--r--bin/update-release-info.py43
-rwxr-xr-xbin/upload-release-files.sh19
-rwxr-xr-xbin/xmlagenda.py6
11 files changed, 116 insertions, 366 deletions
diff --git a/bin/SConsDoc.py b/bin/SConsDoc.py
index cfb4e54..a6654c2 100644
--- a/bin/SConsDoc.py
+++ b/bin/SConsDoc.py
@@ -168,7 +168,7 @@ xsi = "http://www.w3.org/2001/XMLSchema-instance"
# Header comment with copyright
copyright_comment = """
-Copyright (c) 2001 - 2017 The SCons Foundation
+Copyright (c) 2001 - 2019 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -461,6 +461,8 @@ else:
return self.decorateWithHeader(t)
def validateXml(self, fpath, xmlschema_context):
+ retval = True
+
# Create validation context
validation_context = xmlschema_context.schemaNewValidCtxt()
# Set error/warning handlers
@@ -470,17 +472,19 @@ else:
doc = libxml2.readFile(fpath, None, libxml2.XML_PARSE_NOENT)
doc.xincludeProcessFlags(libxml2.XML_PARSE_NOENT)
err = validation_context.schemaValidateDoc(doc)
- # Cleanup
- doc.freeDoc()
- del validation_context
if err or eh.errors:
for e in eh.errors:
print(e.rstrip("\n"))
+ # import pdb; pdb.set_trace()
print("%s fails to validate" % fpath)
- return False
+ retval = False
- return True
+ # Cleanup
+ doc.freeDoc()
+ del validation_context
+
+ return retval
def findAll(self, root, tag, ns=None, xpath_context=None, nsmap=None):
if hasattr(root, 'xpathEval') and xpath_context:
diff --git a/bin/SConsExamples.py b/bin/SConsExamples.py
index 50c4c1a..7491c58 100644
--- a/bin/SConsExamples.py
+++ b/bin/SConsExamples.py
@@ -39,7 +39,7 @@
# env.Program('foo')
# </file>
# <file name="foo.c">
-# int main() { printf("foo.c\n"); }
+# int main(void) { printf("foo.c\n"); }
# </file>
# </scons_example>
#
@@ -305,6 +305,11 @@ def createAllExampleOutputs(dpath):
examples = readAllExampleInfos(dpath)
total = len(examples)
idx = 0
+
+ if len(sys.argv) > 1:
+ examples_to_run = sys.argv[1:]
+ examples = { k:v for k,v in examples.items() if k in examples_to_run }
+
for key, value in examples.items():
# Process all scons_output tags
print("%.2f%s (%d/%d) %s" % (float(idx + 1) * 100.0 / float(total),
@@ -411,8 +416,8 @@ def exampleNamesAreUnique(dpath):
#
# ###############################################################
-sys.path.append(os.path.join(os.getcwd(), 'QMTest'))
-sys.path.append(os.path.join(os.getcwd(), 'build', 'QMTest'))
+sys.path.append(os.path.join(os.getcwd(), 'testing/framework'))
+sys.path.append(os.path.join(os.getcwd(), 'build', 'testing/framework'))
scons_py = os.path.join('bootstrap', 'src', 'script', 'scons.py')
if not os.path.exists(scons_py):
@@ -657,21 +662,27 @@ SConscript('SConstruct')
"""
# "Commands" that we will execute in our examples.
-def command_scons(args, c, test, dict):
+def command_scons(args, command, test, values):
+ """
+ Fake scons command
+ """
save_vals = {}
delete_keys = []
try:
- ce = c.environment
+ ce = command.environment
except AttributeError:
pass
else:
- for arg in c.environment.split():
+ for arg in command.environment.split():
key, val = arg.split('=')
try:
save_vals[key] = os.environ[key]
except KeyError:
delete_keys.append(key)
os.environ[key] = val
+
+ test.write(test.workpath('WORK/SConstruct_created'), Stdin % values)
+
test.run(interpreter=sys.executable,
program=scons_py,
# We use ToolSurrogates to capture win32 output by "building"
@@ -681,7 +692,7 @@ def command_scons(args, c, test, dict):
# Visual C installed.
arguments='--warn=no-visual-c-missing -f - ' + ' '.join(args),
chdir=test.workpath('WORK'),
- stdin=Stdin % dict)
+ stdin=Stdin % values)
os.environ.update(save_vals)
for key in delete_keys:
del(os.environ[key])
@@ -698,7 +709,7 @@ def command_scons(args, c, test, dict):
# sys.stderr.write(err)
return lines
-def command_touch(args, c, test, dict):
+def command_touch(args, command, test, values):
if args[0] == '-t':
t = int(time.mktime(time.strptime(args[1], '%Y%m%d%H%M')))
times = (t, t)
@@ -714,7 +725,7 @@ def command_touch(args, c, test, dict):
os.utime(file, times)
return []
-def command_edit(args, c, test, dict):
+def command_edit(args, c, test, values):
if c.edit is None:
add_string = 'void edit(void) { ; }\n'
else:
@@ -728,7 +739,7 @@ def command_edit(args, c, test, dict):
open(file, 'wb').write(contents + add_string)
return []
-def command_ls(args, c, test, dict):
+def command_ls(args, c, test, values):
def ls(a):
try:
return [' '.join(sorted([x for x in os.listdir(a) if x[0] != '.']))]
@@ -743,7 +754,7 @@ def command_ls(args, c, test, dict):
else:
return ls(test.workpath('WORK'))
-def command_sleep(args, c, test, dict):
+def command_sleep(args, c, test, values):
time.sleep(int(args[0]))
CommandDict = {
@@ -754,17 +765,19 @@ CommandDict = {
'sleep' : command_sleep,
}
-def ExecuteCommand(args, c, t, dict):
+def ExecuteCommand(args, c, t, values):
try:
func = CommandDict[args[0]]
except KeyError:
- func = lambda args, c, t, dict: []
- return func(args[1:], c, t, dict)
+ func = lambda args, c, t, values: []
+ return func(args[1:], c, t, values)
def create_scons_output(e):
- # The real raison d'etre for this script, this is where we
- # actually execute SCons to fetch the output.
+ """
+ The real raison d'etre for this script, this is where we
+ actually execute SCons to fetch the output.
+ """
# Loop over all outputs for the example
for o in e.outputs:
@@ -837,37 +850,37 @@ def create_scons_output(e):
sroot = stf.newEtreeNode("screen", True)
curchild = None
content = ""
- for c in o.commands:
+ for command in o.commands:
content += Prompt[o.os]
if curchild is not None:
- if not c.output:
+ if not command.output:
# Append content as tail
curchild.tail = content
content = "\n"
# Add new child for userinput tag
curchild = stf.newEtreeNode("userinput")
- d = c.cmd.replace('__ROOT__', '')
+ d = command.cmd.replace('__ROOT__', '')
curchild.text = d
sroot.append(curchild)
else:
- content += c.output + '\n'
+ content += command.output + '\n'
else:
- if not c.output:
+ if not command.output:
# Add first text to root
sroot.text = content
content = "\n"
# Add new child for userinput tag
curchild = stf.newEtreeNode("userinput")
- d = c.cmd.replace('__ROOT__', '')
+ d = command.cmd.replace('__ROOT__', '')
curchild.text = d
sroot.append(curchild)
else:
- content += c.output + '\n'
+ content += command.output + '\n'
# Execute command and capture its output
- cmd_work = c.cmd.replace('__ROOT__', t.workpath('ROOT'))
+ cmd_work = command.cmd.replace('__ROOT__', t.workpath('ROOT'))
args = cmd_work.split()
- lines = ExecuteCommand(args, c, t, {'osname':o.os, 'tools':o.tools})
- if not c.output and lines:
+ lines = ExecuteCommand(args, command, t, {'osname':o.os, 'tools':o.tools})
+ if not command.output and lines:
ncontent = '\n'.join(lines)
ncontent = address_re.sub(r' at 0x700000&gt;', ncontent)
ncontent = engine_re.sub(r' File "bootstrap/src/engine/SCons/', ncontent)
diff --git a/bin/import-test.py b/bin/import-test.py
index 168208f..4fc4f06 100644
--- a/bin/import-test.py
+++ b/bin/import-test.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001 - 2017 The SCons Foundation
+# Copyright (c) 2001 - 2019 The SCons Foundation
#
# tree2test.py - turn a directory tree into TestSCons code
#
@@ -25,7 +25,7 @@
# """ triple-quotes will need to have their contents edited by hand.
#
-__revision__ = "bin/import-test.py rel_3.0.0:4395:8972f6a2f699 2017/09/18 12:59:24 bdbaddog"
+__revision__ = "bin/import-test.py 103260fce95bf5db1c35fb2371983087d85dd611 2019-07-13 18:25:30 bdbaddog"
import os.path
import sys
diff --git a/bin/linecount.py b/bin/linecount.py
index 75723d0..57a64e2 100644
--- a/bin/linecount.py
+++ b/bin/linecount.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001 - 2017 The SCons Foundation
+# Copyright (c) 2001 - 2019 The SCons Foundation
#
# Count statistics about SCons test and source files. This must be run
# against a fully-populated tree (for example, one that's been freshly
@@ -23,7 +23,7 @@
# interesting one for most purposes.
from __future__ import division, print_function
-__revision__ = "bin/linecount.py rel_3.0.0:4395:8972f6a2f699 2017/09/18 12:59:24 bdbaddog"
+__revision__ = "bin/linecount.py 103260fce95bf5db1c35fb2371983087d85dd611 2019-07-13 18:25:30 bdbaddog"
import os.path
diff --git a/bin/restore.sh b/bin/restore.sh
index 49c95bc..5fcdb08 100644
--- a/bin/restore.sh
+++ b/bin/restore.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env sh
#
-# Simple hack script to restore __revision__, __COPYRIGHT_, 3.0.0
+# Simple hack script to restore __revision__, __COPYRIGHT_, 3.0.5
# and other similar variables to what gets checked in to source. This
# comes in handy when people send in diffs based on the released source.
#
@@ -22,9 +22,9 @@ header() {
for i in `find $DIRS -name '*.py'`; do
header $i
ed $i <<EOF
-g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001 - 2017 The SCons Foundation/p
+g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001 - 2019 The SCons Foundation/p
w
-/^__revision__ = /s/= .*/= "bin/restore.sh rel_3.0.0:4395:8972f6a2f699 2017/09/18 12:59:24 bdbaddog"/p
+/^__revision__ = /s/= .*/= "bin/restore.sh 103260fce95bf5db1c35fb2371983087d85dd611 2019-07-13 18:25:30 bdbaddog"/p
w
q
EOF
@@ -33,9 +33,9 @@ done
for i in `find $DIRS -name 'scons.bat'`; do
header $i
ed $i <<EOF
-g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001 - 2017 The SCons Foundation/p
+g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001 - 2019 The SCons Foundation/p
w
-/^@REM src\/script\/scons.bat/s/@REM .* knight/@REM bin/restore.sh rel_3.0.0:4395:8972f6a2f699 2017/09/18 12:59:24 bdbaddog/p
+/^@REM src\/script\/scons.bat/s/@REM .* knight/@REM bin/restore.sh 103260fce95bf5db1c35fb2371983087d85dd611 2019-07-13 18:25:30 bdbaddog/p
w
q
EOF
@@ -44,13 +44,13 @@ done
for i in `find $DIRS -name '__init__.py' -o -name 'scons.py' -o -name 'sconsign.py'`; do
header $i
ed $i <<EOF
-/^__version__ = /s/= .*/= "3.0.0"/p
+/^__version__ = /s/= .*/= "3.0.5"/p
w
-/^__build__ = /s/= .*/= "rel_3.0.0:4395:8972f6a2f699"/p
+/^__build__ = /s/= .*/= "103260fce95bf5db1c35fb2371983087d85dd611"/p
w
-/^__buildsys__ = /s/= .*/= "ubuntu-16"/p
+/^__buildsys__ = /s/= .*/= "Williams-MBP-2"/p
w
-/^__date__ = /s/= .*/= "2017/09/18 12:59:24"/p
+/^__date__ = /s/= .*/= "2019-07-13 18:25:30"/p
w
/^__developer__ = /s/= .*/= "bdbaddog"/p
w
@@ -61,7 +61,7 @@ done
for i in `find $DIRS -name 'setup.py'`; do
header $i
ed $i <<EOF
-/^ *version = /s/= .*/= "3.0.0",/p
+/^ *version = /s/= .*/= "3.0.5",/p
w
q
EOF
@@ -70,11 +70,11 @@ done
for i in `find $DIRS -name '*.txt'`; do
header $i
ed $i <<EOF
-g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001 - 2017 The SCons Foundation/p
+g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001 - 2019 The SCons Foundation/p
w
-/# [^ ]* 0.96.[CD][0-9]* [0-9\/]* [0-9:]* knight$/s/.*/# bin/restore.sh rel_3.0.0:4395:8972f6a2f699 2017/09/18 12:59:24 bdbaddog/p
+/# [^ ]* 0.96.[CD][0-9]* [0-9\/]* [0-9:]* knight$/s/.*/# bin/restore.sh 103260fce95bf5db1c35fb2371983087d85dd611 2019-07-13 18:25:30 bdbaddog/p
w
-/Version [0-9][0-9]*\.[0-9][0-9]*/s//Version 3.0.0/p
+/Version [0-9][0-9]*\.[0-9][0-9]*/s//Version 3.0.5/p
w
q
EOF
@@ -83,7 +83,7 @@ done
for i in `find $DIRS -name '*.xml'`; do
header $i
ed $i <<EOF
-g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001 - 2017 The SCons Foundation/p
+g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001 - 2019 The SCons Foundation/p
w
q
EOF
diff --git a/bin/scons-cdist b/bin/scons-cdist
deleted file mode 100644
index 58b1bae..0000000
--- a/bin/scons-cdist
+++ /dev/null
@@ -1,272 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2005 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-PROG=`basename $0`
-NOARGFLAGS="afhlnqrstz"
-ARGFLAGS="p:"
-ALLFLAGS="${NOARGFLAGS}${ARGFLAGS}"
-USAGE="Usage: ${PROG} [-${NOARGFLAGS}] [-p project] change"
-
-HELP="$USAGE
-
- -a Update the latest Aegis baseline (aedist) file.
- -f Force update, skipping up-front sanity check.
- -h Print this help message and exit.
- -l Update the local CVS repository.
- -n Don't execute, just echo commands.
- -p project Set the Aegis project.
- -q Quiet, don't print commands before executing them.
- -r Rsync the Aegis repository to SourceForge.
- -s Update the sourceforge.net CVS repository.
- -t Update the tigris.org CVS repository.
- -z Update the latest .tar.gz and .zip files.
-"
-
-DO=""
-PRINT="echo"
-EXECUTE="eval"
-SANITY_CHECK="yes"
-
-while getopts $ALLFLAGS FLAG; do
- case $FLAG in
- a | l | r | s | t | z )
- DO="${DO}${FLAG}"
- ;;
- f )
- SANITY_CHECK="no"
- ;;
- h )
- echo "${HELP}"
- exit 0
- ;;
- n )
- EXECUTE=":"
- ;;
- p )
- AEGIS_PROJECT="${OPTARG}"
- ;;
- q )
- PRINT=":"
- ;;
- * )
- echo "FLAG = ${FLAG}" >&2
- echo "${USAGE}" >&2
- exit 1
- ;;
- esac
-done
-
-shift `expr ${OPTIND} - 1`
-
-if test "X$1" = "X"; then
- echo "${USAGE}" >&2
- exit 1
-fi
-
-if test "X${AEGIS_PROJECT}" = "X"; then
- echo "$PROG: No AEGIS_PROJECT set." >&2
- echo "${USAGE}" >&2
- exit 1
-fi
-
-if test "X$DO" = "X"; then
- DO="alrstz"
-fi
-
-cmd()
-{
- $PRINT "$*"
- $EXECUTE "$*"
-}
-
-CHANGE=$1
-
-if test "X${SANITY_CHECK}" = "Xyes"; then
- SCM="cvs"
- SCMROOT="/home/scons/CVSROOT/scons"
- DELTA=`aegis -l -ter cd ${CHANGE} | sed -n 's/.*, Delta \([0-9]*\)\./\1/p'`
- if test "x${DELTA}" = "x"; then
- echo "${PROG}: Could not find delta for change ${CHANGE}." >&2
- echo "Has this finished integrating? Change ${CHANGE} not distributed." >&2
- exit 1
- fi
- PREV_DELTA=`expr ${DELTA} - 1`
- COMMAND="scons-scmcheck -D ${PREV_DELTA} -d q -p ${AEGIS_PROJECT} -s ${SCM} ${SCMROOT}"
- $PRINT "${COMMAND}"
- OUTPUT=`${COMMAND}`
- if test "X${OUTPUT}" != "X"; then
- echo "${PROG}: ${SCMROOT} is not up to date:" >&2
- echo "${OUTPUT}" >& 2
- echo "Did you skip any changes? Change ${CHANGE} not distributed." >&2
- exit 1
- fi
-fi
-
-if test X$EXECUTE != "X:" -a "X$SSH_AGENT_PID" = "X"; then
- eval `ssh-agent`
- ssh-add
- trap 'eval `ssh-agent -k`; exit' 0 1 2 3 15
-fi
-
-cd
-
-BASELINE=`aesub -p ${AEGIS_PROJECT} -c ${CHANGE} '${Project trunk_name}'`
-
-TMPBLAE="/tmp/${BASELINE}.ae"
-TMPCAE="/tmp/${AEGIS_PROJECT}.C${CHANGE}.ae"
-
-# Original values for SourceForge.
-#SFLOGIN="stevenknight"
-#SFHOST="scons.sourceforge.net"
-#SFDEST="/home/groups/s/sc/scons/htdocs"
-
-SCONSLOGIN="scons"
-SCONSHOST="manam.pair.com"
-#SCONSDEST="public_html/production"
-SCONSDEST="public_ftp"
-
-#
-# Copy the baseline .ae to the constant location on SourceForge.
-#
-case "${DO}" in
-*a* )
- cmd "aedist -s -bl -p ${AEGIS_PROJECT} > ${TMPBLAE}"
- cmd "scp ${TMPBLAE} ${SCONSLOGIN}@${SCONSHOST}:${SCONSDEST}/${BASELINE}.ae"
- cmd "rm ${TMPBLAE}"
- ;;
-esac
-
-#
-# Copy the latest .tar.gz and .zip files to the constant location on
-# SourceForge.
-#
-case "${DO}" in
-*z* )
- BUILD_DIST=`aegis -p ${AEGIS_PROJECT} -cd -bl`/build/dist
- SCONS_SRC_TAR_GZ=`echo ${AEGIS_PROJECT} | sed 's/scons./scons-src-/'`*.tar.gz
- SCONS_SRC_ZIP=`echo ${AEGIS_PROJECT} | sed 's/scons./scons-src-/'`*.zip
- cmd "scp ${BUILD_DIST}/${SCONS_SRC_TAR_GZ} ${SCONSLOGIN}@${SCONSHOST}:${SCONSDEST}/scons-src-latest.tar.gz"
- cmd "scp ${BUILD_DIST}/${SCONS_SRC_ZIP} ${SCONSLOGIN}@${SCONSHOST}:${SCONSDEST}/scons-src-latest.zip"
-esac
-
-#
-# Sync Aegis tree with SourceForge.
-#
-# Cribbed and modified from Peter Miller's same-named script in
-# /home/groups/a/ae/aegis/aegis at SourceForge.
-#
-# Guide to what this does with rsync:
-#
-# --rsh=ssh use ssh for the transfer
-# -l copy symlinks as symlinks
-# -p preserve permissions
-# -r recursive
-# -t preserve times
-# -z compress data
-# --stats file transfer statistics
-# --exclude exclude files matching the pattern
-# --delete delete files that don't exist locally
-# --delete-excluded delete files that match the --exclude patterns
-# --progress show progress during the transfer
-# -v verbose
-#
-# We no longer use the --stats option.
-#
-case "${DO}" in
-*r* )
- LOCAL=/home/scons/scons
- REMOTE=/home/groups/s/sc/scons/scons
- cmd "/usr/bin/rsync --rsh='ssh -l stevenknight' \
- -l -p -r -t -z \
- --exclude build \
- --exclude '*,D' \
- --exclude '*.pyc' \
- --exclude aegis.log \
- --exclude '.sconsign*' \
- --delete --delete-excluded \
- --progress -v \
- ${LOCAL}/. scons.sourceforge.net:${REMOTE}/."
- ;;
-esac
-
-#
-# Sync the CVS tree with the local repository.
-#
-case "${DO}" in
-*l* )
- (
- export CVSROOT=/home/scons/CVSROOT/scons
- #cmd "ae2cvs -X -aegis -p ${AEGIS_PROJECT} -c ${CHANGE} -u $HOME/SCons/baldmt.com/scons"
- cmd "ae-cvs-ci ${AEGIS_PROJECT} ${CHANGE}"
- )
- ;;
-esac
-
-#
-# Sync the Subversion tree with Tigris.org.
-#
-case "${DO}" in
-*t* )
- (
- SVN=http://scons.tigris.org/svn/scons
- case ${AEGIS_PROJECT} in
- scons.0.96 )
- SVN_URL=${SVN}/branches/core
- ;;
- scons.0.96.513 )
- SVN_URL=${SVN}/branches/sigrefactor
- ;;
- * )
- echo "$PROG: Don't know SVN branch for '${AEGIS_PROJECT}'" >&2
- exit 1
- ;;
- esac
- SVN_CO_FLAGS="--username stevenknight"
- #cmd "ae2cvs -X -aegis -p ${AEGIS_PROJECT} -c ${CHANGE} -u $HOME/SCons/tigris.org/scons"
- cmd "ae-svn-ci ${AEGIS_PROJECT} ${CHANGE} ${SVN_URL} ${SVN_CO_FLAGS}"
- )
- ;;
-esac
-
-#
-# Sync the CVS tree with SourceForge.
-#
-case "${DO}" in
-*s* )
- (
- export CVS_RSH=ssh
- export CVSROOT=:ext:stevenknight@scons.cvs.sourceforge.net:/cvsroot/scons
- #cmd "ae2cvs -X -aegis -p ${AEGIS_PROJECT} -c ${CHANGE} -u $HOME/SCons/sourceforge.net/scons"
- cmd "ae-cvs-ci ${AEGIS_PROJECT} ${CHANGE}"
- )
- ;;
-esac
-
-#
-# Send the change .ae to the scons-aedist mailing list
-#
-# The subject requires editing by hand...
-#
-#aedist -s -p ${AEGIS_PROJECT} ${CHANGE} > ${TMPCAE}
-#aegis -l -p ${AEGIS_PROJECT} -c ${CHANGE} cd |
-# pine -attach_and_delete ${TMPCAE} scons-aedist@lists.sourceforge.net
diff --git a/bin/scons_dev_master.py b/bin/scons_dev_master.py
index 3d67cb5..4b1160f 100644
--- a/bin/scons_dev_master.py
+++ b/bin/scons_dev_master.py
@@ -11,11 +11,12 @@ import sys
from Command import CommandRunner, Usage
INITIAL_PACKAGES = [
- 'mercurial',
+ 'git',
]
INSTALL_PACKAGES = [
'wget',
+ 'xz-utils',
]
PYTHON_PACKAGES = [
@@ -41,6 +42,7 @@ BUILDING_PACKAGES = [
'python-epydoc',
'rpm',
'tar',
+ 'lynx'
# additional packages that Bill Deegan's web page suggests
#'docbook-to-man',
@@ -60,8 +62,7 @@ DOCUMENTATION_PACKAGES = [
'gcc-doc',
'pkg-config',
'python-doc',
- 'sun-java5-doc',
- 'sun-java6-doc',
+ 'openjdk-8-doc',
'swig-doc',
'texlive-doc',
]
@@ -73,18 +74,20 @@ TESTING_PACKAGES = [
'flex',
'g++',
'gcc',
- 'gcj',
+ # not on ubuntu 18.04
+ # 'gcj',
+ # 'hg',
'ghostscript',
-# 'libgcj7-dev',
'm4',
'openssh-client',
'openssh-server',
'python-profiler',
'python-all-dev',
+ 'python3-all-dev',
+ 'pypy-dev',
'rcs',
'rpm',
-# 'sun-java5-jdk',
- 'sun-java6-jdk',
+ 'openjdk-8-jdk',
'swig',
'texlive-base-bin',
'texlive-extra-utils',
@@ -131,7 +134,7 @@ Usage: scons_dev_master.py [-hnqy] [--password PASSWORD] [--username USER]
buildbot Install packages for running BuildBot
"""
- scons_url = 'https://bdbaddog@bitbucket.org/scons/scons'
+ scons_url = 'https://github.com/SCons/scons.git'
sudo = 'sudo'
password = '""'
username = 'guest'
@@ -180,13 +183,15 @@ Usage: scons_dev_master.py [-hnqy] [--password PASSWORD] [--username USER]
cmd.run('%(sudo)s apt-get %(yesflag)s upgrade')
elif arg == 'checkout':
cmd.run('%(sudo)s apt-get %(yesflag)s install %(initial_packages)s')
- cmd.run('hg clone" %(scons_url)s')
+ cmd.run('git clone" %(scons_url)s')
elif arg == 'building':
cmd.run('%(sudo)s apt-get %(yesflag)s install %(building_packages)s')
elif arg == 'docs':
cmd.run('%(sudo)s apt-get %(yesflag)s install %(doc_packages)s')
elif arg == 'testing':
cmd.run('%(sudo)s apt-get %(yesflag)s install %(testing_packages)s')
+ #TODO: maybe copy ipkg-build from openwrt git
+ #cmd.run('%(sudo)s wget https://raw.githubusercontent.com/openwrt/openwrt/master/scripts/ipkg-build SOMEWHERE')
elif arg == 'buildbot':
cmd.run('%(sudo)s apt-get %(yesflag)s install %(buildbot_packages)s')
elif arg == 'python-versions':
diff --git a/bin/time-scons.py b/bin/time-scons.py
index b7d8ef1..c5cd0cc 100644
--- a/bin/time-scons.py
+++ b/bin/time-scons.py
@@ -43,7 +43,7 @@ TimeSCons_revision = 4569
# The pieces of the TimeSCons infrastructure that are necessary to
# produce consistent timings, even when the rest of the tree is from
# an earlier revision that doesn't have these pieces.
-TimeSCons_pieces = ['QMTest', 'timings', 'runtest.py']
+TimeSCons_pieces = ['testing/framework', 'timings', 'runtest.py']
class CommandRunner(object):
diff --git a/bin/update-release-info.py b/bin/update-release-info.py
index a4096d1..de3d164 100644
--- a/bin/update-release-info.py
+++ b/bin/update-release-info.py
@@ -20,10 +20,10 @@ in various files:
- The RELEASE header line in src/CHANGES.txt and src/Announce.txt.
- The version string at the top of src/RELEASE.txt.
- The version string in the 'default_version' variable in SConstruct
- and QMTest/TestSCons.py.
- - The copyright years in SConstruct and QMTest/TestSCons.py.
+ and testing/framework/TestSCons.py.
+ - The copyright years in SConstruct and testing/framework/TestSCons.py.
- The month and year (used for documentation) in SConstruct.
- - The unsupported and deprecated Python floors in QMTest/TestSCons.py
+ - The unsupported and deprecated Python floors in testing/framework/TestSCons.py
and src/engine/SCons/Script/Main.py
- The version string in the filenames in README.
@@ -36,7 +36,7 @@ In 'post' mode, files are prepared for the next release cycle:
src/Announce.txt.
"""
#
-# Copyright (c) 2001 - 2017 The SCons Foundation
+# Copyright (c) 2001 - 2019 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -58,7 +58,7 @@ In 'post' mode, files are prepared for the next release cycle:
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from __future__ import print_function
-__revision__ = "bin/update-release-info.py rel_3.0.0:4395:8972f6a2f699 2017/09/18 12:59:24 bdbaddog"
+__revision__ = "bin/update-release-info.py 103260fce95bf5db1c35fb2371983087d85dd611 2019-07-13 18:25:30 bdbaddog"
import os
import sys
@@ -81,7 +81,10 @@ else:
# Get configuration information
config = dict()
-exec(open('ReleaseConfig').read(), globals(), config)
+with open('ReleaseConfig') as f:
+ releaseconfig = f.read()
+exec(releaseconfig, globals(), config)
+
try:
version_tuple = config['version_tuple']
@@ -152,7 +155,8 @@ class UpdateFile(object):
'''
if orig is None: orig = file
try:
- self.content = open(orig, 'r').read()
+ with open(orig, 'r') as f:
+ self.content = f.read()
except IOError:
# Couldn't open file; don't try to write anything in __del__
self.file = None
@@ -180,8 +184,8 @@ class UpdateFile(object):
# Determine the pattern to match a version
- _rel_types = '(alpha|beta|candidate|final)'
- match_pat = '\d+\.\d+\.\d+\.' + _rel_types + '\.(\d+|yyyymmdd)'
+ _rel_types = r'(alpha|beta|candidate|final)'
+ match_pat = r'\d+\.\d+\.\d+\.' + _rel_types + r'\.(\d+|yyyymmdd)'
match_rel = re.compile(match_pat)
def replace_version(self, replacement = version_string, count = 1):
@@ -198,14 +202,14 @@ class UpdateFile(object):
new_date = 'NEW DATE WILL BE INSERTED HERE'
else:
min = (time.daylight and time.altzone or time.timezone)//60
- hr = min//60
- min = -(min%60 + hr*100)
+ hr = min // 60
+ min = -(min % 60 + hr * 100)
new_date = (time.strftime('%a, %d %b %Y %X', release_date + (0,0,0))
+ ' %+.4d' % min)
- _days = '(Sun|Mon|Tue|Wed|Thu|Fri|Sat)'
- _months = '(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oce|Nov|Dec)'
- match_date = _days+', \d\d '+_months+' \d\d\d\d \d\d:\d\d:\d\d [+-]\d\d\d\d'
+ _days = r'(Sun|Mon|Tue|Wed|Thu|Fri|Sat)'
+ _months = r'(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oce|Nov|Dec)'
+ match_date = r''.join([_days, r', \d\d ', _months, r' \d\d\d\d \d\d:\d\d:\d\d [+-]\d\d\d\d'])
match_date = re.compile(match_date)
def replace_date(self, replacement = new_date, count = 1):
@@ -220,7 +224,8 @@ class UpdateFile(object):
'''
if self.file is not None and self.content != self.orig:
print('Updating ' + self.file + '...')
- open(self.file, 'w').write(self.content)
+ with open(self.file, 'w') as f:
+ f.write(self.content)
if mode == 'post':
# Set up for the next release series.
@@ -309,15 +314,15 @@ t.replace_assign('default_version', repr(version_string))
t = UpdateFile('README.rst')
if DEBUG: t.file = '/tmp/README.rst'
-t.sub('-' + t.match_pat + '\.', '-' + version_string + '.', count = 0)
+t.sub('-' + t.match_pat + r'\.', '-' + version_string + '.', count = 0)
for suf in ['tar', 'win32', 'zip', 'rpm', 'exe', 'deb']:
- t.sub('-(\d+\.\d+\.\d+)\.%s' % suf,
+ t.sub(r'-(\d+\.\d+\.\d+)\.%s' % suf,
'-%s.%s' % (version_string, suf),
count = 0)
-# Update QMTest/TestSCons.py
+# Update testing/framework/TestSCons.py
-t = UpdateFile(os.path.join('QMTest', 'TestSCons.py'))
+t = UpdateFile(os.path.join('testing','framework', 'TestSCons.py'))
if DEBUG: t.file = '/tmp/TestSCons.py'
t.replace_assign('copyright_years', repr(copyright_years))
t.replace_assign('default_version', repr(version_string))
diff --git a/bin/upload-release-files.sh b/bin/upload-release-files.sh
index c853bda..9a09206 100755
--- a/bin/upload-release-files.sh
+++ b/bin/upload-release-files.sh
@@ -19,17 +19,10 @@ SF_TOPDIR='/home/frs/project/scons'
cd build/dist
cp -f ../../src/CHANGES.txt ../../src/RELEASE.txt ../../src/Announce.txt ../../src/README.txt .
-cp scons-$VERSION.win32.exe scons-$VERSION-setup.exe
-cp scons-$VERSION.win-amd64.exe scons-$VERSION-amd64-setup.exe
-
set -x
# Upload main scons release files:
$RSYNC $RSYNCOPTS \
- scons-$VERSION-1.noarch.rpm \
- scons-$VERSION-1.src.rpm \
- scons-$VERSION-setup.exe \
- scons-$VERSION-amd64-setup.exe \
scons-$VERSION.tar.gz \
scons-$VERSION.zip \
Announce.txt CHANGES.txt RELEASE.txt \
@@ -42,12 +35,12 @@ $RSYNC $RSYNCOPTS \
Announce.txt CHANGES.txt RELEASE.txt \
$SF_USER@$SF_MACHINE:$SF_TOPDIR/scons-local/$VERSION/
-# Source packages:
+Source packages:
$RSYNC $RSYNCOPTS \
- scons-src-$VERSION.tar.gz \
- scons-src-$VERSION.zip \
- Announce.txt CHANGES.txt RELEASE.txt \
- $SF_USER@$SF_MACHINE:$SF_TOPDIR/scons-src/$VERSION/
+ scons-src-$VERSION.tar.gz \
+ scons-src-$VERSION.zip \
+ Announce.txt CHANGES.txt RELEASE.txt \
+ $SF_USER@$SF_MACHINE:$SF_TOPDIR/scons-src/$VERSION/
# Readme
$RSYNC $RSYNCOPTS \
@@ -80,7 +73,7 @@ ssh scons@scons.org "
cd ..
rm latest; ln -s $VERSION latest
rm production; ln -s $VERSION production
- for f in HTML PDF EPUB PS TEXT; do rm \$f; ln -s $VERSION/\$f \$f; done
+ for f in HTML PDF EPUB PS TEXT; do rm -f \$f; ln -s $VERSION/\$f \$f; done
"
echo '*****'
echo '***** Now manually update index.php, includes/versions.php and news-raw.xhtml on scons.org.'
diff --git a/bin/xmlagenda.py b/bin/xmlagenda.py
index fcfe53e..7091ee5 100755
--- a/bin/xmlagenda.py
+++ b/bin/xmlagenda.py
@@ -1,7 +1,9 @@
#!/usr/bin/env python
-# Query the scons.tigris.org database for the issues of interest.
-# The typical triage query is found on http://www.scons.org/wiki/BugParty
+# Query gihub issue tracker for the issues of interest.
+# The typical triage query is found on
+# https://github.com/scons/scons/wiki/BugParty
+# FIXME: this needs reworking for github, and wiki needs updating
# Download the issues from Issuezilla as XML; this creates a file
# named 'issues.xml'. Run this script in the dir containing