~evarlast/ubuntu/utopic/mongodb/upstart-workaround-debian-bug-718702

« back to all changes in this revision

Viewing changes to src/third_party/run_if_newer.js

  • Committer: Package Import Robot
  • Author(s): James Page, James Page, Robie Basak
  • Date: 2013-05-29 17:44:42 UTC
  • mfrom: (44.1.7 sid)
  • Revision ID: package-import@ubuntu.com-20130529174442-z0a4qmoww4y0t458
Tags: 1:2.4.3-1ubuntu1
[ James Page ]
* Merge from Debian unstable, remaining changes:
  - Enable SSL support:
    + d/control: Add libssl-dev to BD's.
    + d/rules: Enabled --ssl option.
    + d/mongodb.conf: Add example SSL configuration options.
  - d/mongodb-server.mongodb.upstart: Add upstart configuration.
  - d/rules: Don't strip binaries during scons build for Ubuntu.
  - d/control: Add armhf to target archs.
  - d/p/SConscript.client.patch: fixup install of client libraries.
  - d/p/0010-install-libs-to-usr-lib-not-usr-lib64-Closes-588557.patch:
    Install libraries to lib not lib64.
* Dropped changes:
  - d/p/arm-support.patch: Included in Debian.
  - d/p/double-alignment.patch: Included in Debian.
  - d/rules,control: Debian also builds with avaliable system libraries
    now.
* Fix FTBFS due to gcc and boost upgrades in saucy:
  - d/p/0008-ignore-unused-local-typedefs.patch: Add -Wno-unused-typedefs
    to unbreak building with g++-4.8.
  - d/p/0009-boost-1.53.patch: Fixup signed/unsigned casting issue.

[ Robie Basak ]
* d/p/0011-Use-a-signed-char-to-store-BSONType-enumerations.patch: Fixup
  build failure on ARM due to missing signed'ness of char cast.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// run_if_newer.js
 
2
 
 
3
/*   Copyright 2012 10gen Inc.
 
4
*
 
5
*    Licensed under the Apache License, Version 2.0 (the "License");
 
6
*    you may not use this file except in compliance with the License.
 
7
*    You may obtain a copy of the License at
 
8
*
 
9
*    http://www.apache.org/licenses/LICENSE-2.0
 
10
*
 
11
*    Unless required by applicable law or agreed to in writing, software
 
12
*    distributed under the License is distributed on an "AS IS" BASIS,
 
13
*    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
14
*    See the License for the specific language governing permissions and
 
15
*    limitations under the License.
 
16
*/
 
17
 
 
18
// This JavaScript file is run under Windows Script Host from the Visual Studio build.
 
19
// It compares the timestamps of a set of "input" files with the timestamps of a set of "output"
 
20
// files and runs a specified command if any "input" file is newer than any of the "output" files.
 
21
//
 
22
// Usage:
 
23
//  cscript run_if_newer.js /path:"basepath" /input:"filelist" /output:"filelist" /command:"runthis"
 
24
 
 
25
function quitWithMessage(message) {
 
26
        WScript.Echo("Error in call to \"" + WScript.ScriptName + "\": " + message);
 
27
        WScript.Quit(1);
 
28
}
 
29
 
 
30
function checkArguments(requiredArguments) {
 
31
    for (var i = 0, len = requiredArguments.length; i < len; ++i) {
 
32
        var argName = requiredArguments[i];
 
33
        if (!WScript.Arguments.Named.Exists(argName)) {
 
34
            quitWithMessage("missing \"/" + argName + ":\" argument");
 
35
        }
 
36
        if (WScript.Arguments.Named.Item(argName).length == 0) {
 
37
            quitWithMessage("empty \"/" + argName + ":\" argument");
 
38
        }
 
39
    }
 
40
    if (WScript.Arguments.Named.length != requiredArguments.length) {
 
41
        quitWithMessage("extra named argument found");
 
42
    }
 
43
    if (WScript.Arguments.Unnamed.length != 0) {
 
44
        quitWithMessage("extra unnamed argument found");
 
45
    }
 
46
}
 
47
 
 
48
function runIfNewer(fso, shell, inputFiles, outputFiles, commandLine) {
 
49
    var runCommand = false;
 
50
    var outputFileDate = new Date(2037, 11, 31);
 
51
    for (var i = 0, len = outputFiles.length; i < len; ++i) {
 
52
        var thisFileName = outputFiles[i];
 
53
        if (!fso.FileExists(thisFileName)) {
 
54
            runCommand = true;
 
55
            break;
 
56
        }
 
57
        var fileDate = fso.GetFile(thisFileName).DateLastModified;
 
58
        if (fileDate < outputFileDate) {
 
59
            outputFileDate = fileDate;
 
60
        }
 
61
    }
 
62
    for ( var i = 0, len = inputFiles.length; i < len; ++i ) {
 
63
        thisFileName = inputFiles[i];
 
64
        if (!fso.FileExists(thisFileName)) {
 
65
            quitWithMessage("input file \"" + thisFileName + "\" does not exist");
 
66
        }
 
67
        if (fso.GetFile(thisFileName).DateLastModified >= outputFileDate) {
 
68
            runCommand = true;
 
69
        }
 
70
    }
 
71
    if (runCommand) {
 
72
        var execObject = shell.Exec(commandLine);
 
73
        while (execObject.Status == 0) {
 
74
            WScript.Sleep(100);
 
75
        }
 
76
    }
 
77
};
 
78
 
 
79
checkArguments(["path", "input", "output", "command"]);
 
80
 
 
81
var shell = new ActiveXObject("WScript.Shell");
 
82
shell.CurrentDirectory = WScript.Arguments.Named.Item("path");
 
83
 
 
84
var fso = new ActiveXObject("Scripting.FileSystemObject");
 
85
runIfNewer(fso,
 
86
           shell,
 
87
           WScript.Arguments.Named.Item("input").split(","),
 
88
           WScript.Arguments.Named.Item("output").split(","),
 
89
           WScript.Arguments.Named.Item("command"));