Compare commits

...
44 Commits
Author SHA1 Message Date
josh 8b85b70ea9 add svn_runner module 2020-01-07 15:59:31 -05:00
josh bb20d3bf38 add rscons 2019-12-30 14:49:35 -05:00
josh ca1829b0ef remove old content for D branch 2019-12-30 14:48:11 -05:00
josh cc1393cb7a add st alias for status 2018-03-08 22:33:52 -05:00
josh 68cd8c27cc update ignore logic to allow paths to start with /, end with /, and include / in the middle 2018-03-06 23:19:42 -05:00
josh 96010f2590 checkout: accept wc_path optional argument 2018-03-06 22:56:28 -05:00
josh d96141f57d Show elapsed time 2018-02-27 21:21:28 -05:00
josh 0330206e55 load a local config file 2018-02-27 21:04:33 -05:00
josh 67beb1dece Hold a @config in Application 2018-02-27 20:42:41 -05:00
josh 090daf39a0 Add Application class 2018-02-27 20:18:06 -05:00
josh 6f55b3ddae Change Svi::Cli to a class 2018-02-27 19:52:28 -05:00
josh d9334aa224 add Config class and initial status handler 2018-02-24 22:28:10 -05:00
josh f1ed0cb50f checkout: specify checkout directory if URL ends with /trunk 2018-02-24 21:09:59 -05:00
josh 8a795ce265 checkout: ignore 'U'pdate line, show number of files/directories checked out 2018-02-24 20:51:04 -05:00
josh 0a1ddbfd3f add initial checkout handler 2018-02-24 20:36:39 -05:00
josh 7af56e8363 get gem files from Dir[] instead of git ls-files 2018-02-24 20:36:17 -05:00
josh ee08d9d13e add C.screen_width and C.screen_height methods 2018-02-14 16:37:15 -05:00
josh 66517921ab link with curses library 2018-02-14 11:54:45 -05:00
josh 957f7ec0fd SvnRunner: add --non-interactive when not interactive 2018-02-12 21:35:38 -05:00
josh 94c38ade8f SvnRunner.run_svn should be a class method 2018-02-12 21:22:26 -05:00
josh 50529580c0 Begin parsing arguments and add checkout command handler 2018-02-12 21:11:32 -05:00
josh 85157bc8f2 depend on yawpa 2018-02-12 20:45:55 -05:00
josh 05ada6c504 extconf.rb: error out if curses.h is not found 2018-02-12 20:43:07 -05:00
josh 7a820a99ea add C extension 2018-02-12 20:29:20 -05:00
josh a63adda1a8 gemspec: replace a couple TODO's 2018-02-12 20:20:08 -05:00
josh 83075fd21d rename bin to exe; apparently that is where Ruby executables go now 2018-02-12 20:19:53 -05:00
josh 5cedd30df6 add bin/svi and lib/svi/cli.rb 2018-02-12 20:18:12 -05:00
josh 432bd7458e rearchitect as a gem
embedding Ruby in C did not go so well
2018-02-12 20:13:44 -05:00
josh 9188bb42e2 add initial SvnRunner.run_svn() 2018-02-07 17:08:50 -05:00
josh c6be5a46a2 add yawpa 2018-02-06 22:07:43 -05:00
josh 723b910fa3 set $ARGS global value 2018-02-06 21:50:16 -05:00
josh 9f306cfbb5 add SvnRunner module 2018-02-06 21:42:02 -05:00
josh f91f98aae4 rename ruby_protect_eval_string() 2018-02-06 21:41:09 -05:00
josh c84fbddaca move ruby share files under share/svi/lib 2018-02-06 21:35:19 -05:00
josh ea585d0f5b set $SHARE_DIR 2018-02-06 21:31:20 -05:00
josh 1ac247400d read bootstrap file relative to exe path 2018-02-06 21:15:17 -05:00
josh b7b587fb8f move Ruby bootstrapping to bootstrap.rb 2018-02-06 20:21:41 -05:00
josh 7c5a2ebe3a print exception class 2018-01-29 17:15:28 -05:00
josh 53ac0a2963 add initial share/svi/svi.rb 2018-01-29 17:11:24 -05:00
josh 4f3fe36d90 add Ruby bootstrapping code 2018-01-29 17:01:14 -05:00
josh e82c661d50 Remove SvnRunner in preparation to use Ruby 2018-01-29 16:19:26 -05:00
josh e3c11407c3 install share files under ${PREFIX}/share/svi 2018-01-29 16:16:39 -05:00
josh 8777e3f758 add several Makefile targets to redirect to waf 2018-01-29 16:13:36 -05:00
josh 4a16e49672 require ruby development package 2018-01-25 14:10:33 -05:00
13 changed files with 77 additions and 326 deletions

No files matched your search

+2 -2
View File
@@ -1,3 +1,3 @@
/.lock-waf* /.rscons*
/.waf*
/build/ /build/
/svi
-2
View File
@@ -1,2 +0,0 @@
all:
./waf build
+10
View File
@@ -0,0 +1,10 @@
configure do
check_d_compiler
end
build do
Environment.new do |env|
env["D_IMPORT_PATH"] << "src"
env.Program("svi", glob("src/**/*.d"))
end
end
Vendored
-2
View File
@@ -1,2 +0,0 @@
#!/bin/sh
exec ./waf configure "$@"
Executable
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env ruby
script = File.join(File.dirname(__FILE__), ".rscons-2.0.2-0b68dc7ecc5c1af24c17e903a52e8b90.rb")
unless File.exists?(script)
if File.read(__FILE__, mode: "rb") =~ /^#==>(.*)/
require "zlib"
require "base64"
encoded_compressed = $1
unescaped_compressed = Base64.decode64(encoded_compressed)
inflated = Zlib::Inflate.inflate(unescaped_compressed)
File.open(script, "wb") do |fh|
fh.write(inflated)
end
else
raise "Could not decompress."
end
end
load script
if __FILE__ == $0
Rscons::Cli.run(ARGV)
end
#==>eJztfWtzE8mS6Hd+RdNwoGVkGebcsxuhwYM9tplhFzBhwxxOCI9Wllp2HyS1trvlxzXa334zs15Zj27JYObObqwjZlDXIysrKysrKysr68H9rUVZbJ1ms610dhEVi9Pre9N8tJik0VE5zGflvSiS37uzMoOvKBpOBmUZPX8elelkTClRdHRwfPA+2o7iT2nv6TSWqaN0HF0WWZUmWd6ONqZpWQ7O0pbMhfy8P8wneQEVRWudwXw+yYaDKstnHcgdQJuiiK6TjXW1ziybvNAZFjhZ9wU0bJpLZyP9O19UiG4cgstADhdFkc4qgyb2kzeZllmRjmrzZZc76WB4DvCjL9MvLJdanXaysj94kRxXRTY7a1nZUTTJZmkJgKedEihTJfGnWdyONp8Fy1Ez/cusOu9ns1F6RS1iTjvKvjgVqG3Mi+5bdLDy7e5DQau/gTqCsE/WKeiSdlUNPnpec9gRLzdUAzqVRc8lucrs/6bRZvRszc67g+thUV9gFR+t1Ukc+zU66aakk9KlzXBQptHUSbw8T2dRF4bgR57qcjjN8B//+mzqoiKqnxVpOvtxZfUfaqpfp5NJfvnjqup/ral+OlmkHPua6v+npvoUpuqsGvy4ovrfaqoPrwezNVr/l5rql+cgKVeT7l/r+p5PRnzwQtWf1Q8cVueDV1O9buCwOh+8muq1AwfV+eDVVK8bOKzOB6+met3AYXU+eDXV6wYOq/PBq6neNHCr2KZu1Iq0TKsGngnJGU8+WN/213pisEb8cVCOEPrmdVE2OV2zJ/x3lneEUgIwFFiTPy+yi0GlcEUNJqhLAIJHH37+R//d6933Lw+P3kTb/xVtTQHRyy2GQnLw9rde/P7g6E18Em3DUF5VaTGNW9GjR9FfLnvjbJxHw/NBMRhC+vE8HWaDyUknmw0ni1GKDXbKalB1xtX1nKlNDi2hVFVdvwj0Vf0S/+L/8b8i/c8FMEkUA+vEnrYntLtdo4cRhEFVFf3BcAjDBkzQ9VUzp8CsX50X6WBUhjIv0uI0l12gLCyZYsagEBWQ7Nksq4AcsETL3uxooMDYH6ps0hmlSE5Yyvt2e1AWQUGx3wbFcVp1ZumlysjnaUH9wmwn73SRTUb9skrnkPf0HichYqSrJvm85cMz46ayeeVigdVk2XZUDotsXrUNzH4+JyiYpNC7WepmgA+Kql9l0xTS38M/HG8BDDLEj0BXQVvXX4rRF1UZxccIF9g2evzgRpdYPoZxiR7cqHaWMfI7H7YoKi6ibc1ypE+4DUgZFRNVufjCqpK84m8xmwBrRHsgDFKgIvR1Nkx7MXDkODtbSPqMBtUgPjGp6Sg+sWa/hZGcGmNFnM5gUeVY1VOgcGAM0LhxaMrFKXx0o/EApqArkgJ6VhQ9LCtg7aIjqP2uyP+ZDqtouiir6DSNTF+icVaU0OhgNooUqlFWRqOsHJxO0pGv+Lla6woxjtSxqR5FNDKJ10/eMa9TxUVNK2Kwh5N0YGmplOAW0tTmBVViE0KiPhCl8hrSiU5h4qfJxGJAHHLBll8z3ALuYhaArBPrhLXNDx9mn2f55cy03Y34NOSQzXAboptJSXwj8e51Bd4n9v44LDsQwcG8BAbcFiU2uazRhQS6jowY5tP5BESwEBZYfhklD25INI/zYjqo+hI4AUvkR2vZUh0zXZFsxSXmWVr1Z+lV1TdiOSCoQQl4Fqxa5TAOrK5aGg5mF1mRz6ag03RS87vswCxcDNOEAW+RagI61mICDAKFjZIiEqMnmNphjcBaNh3A0jU7C67Btn6BqKo5aDH6aXqWGT525eJ4kE1Ix5tOYdhLVC2inpGFSuIRZJ1a222tgln9i6hj8yLHRTuoRilRApQYLtLoZ2ztoChQ7fwJOqDLod1IKlyS+du0y2xDoY7UA9tSk23THtfMtGc1RETC8bk+RAoBFWxK8cwO8DRwRZmIuWx6LdJNx0VpGMX8Iu2LzET8Y9B6CfRHLgeemfbHTrahkQA1Al1rWOVFlurGQQuqopsvAyDBl+hUmCGeA9UG9HNpkFN1r2vw0/mJ/mWwxLmjllbEWGNy/SJUHIRJsp8VwBwV4WqKgEzoPe48bkePO53HJ0C76Zzrm1GE1YopVOCVJF+ADGrQTFV/iD/uccbiQ+2K9sbhFpMREIECVLBOkdAFtR7B28jGBlJ44ItxokvUDT5CLGr7xZc8a/5bGpLRB+UvmDXAcMlcKBP92WCadvWs56kK3DBHYqnGDuco/5tFjoJmMBzqzY8cWAav29UfL0E2wT9rzP54j49KJIRaXCcJiCKuOMCeAYlh/UukemMI6BHbXZpvITOqYvGtIsObjOkVMHX5wisoVtojBIZqOayrVCCkgn+DIBI9+p8mhzza6bph8n1PyaV22+H99c+DMhuyJVlzqdn1JsF9IO5r08ra2SYCdre7f/By98Pr9/29w7fH748+7L1/dfi2/9vu0avdn18fHCsQk3yAuoMrEe/bAoHPnN5J8jm9dlDoQdJJUPGC/ED5jpdlN7GNGe3oYjAJNQQdhhyv2mA+h88EshZp6TYYyOR106s5aE+IUpGOE/EPKHlXVTHoS+sBcIACKlI4k5qS7jmURKBuC6DwE1LcgAkdVE0G09PRoA/zGvHpgU7WpWO3NiHUpf+fMBQ74V4xMDYhgNMGZX+aVuf5KOqK5UzqlSCJLWCacHNEvz+eDM5AocH/K8SBKPRNtrDf7yedjdZDYw2TWVF5nk4mycNnvpgiGX+zlF+XeUGWnmMsTx/yCMxqs/ycobGGFCteMXgUhjnWURhgjADY4ATg4R/KsKAWLJgMaggSUzNAL2Jkrk0XFz1IPom+fLF0dZPxxHC428Y5DMIkXd0GSrjBhLgxAjUcf3siEtlkAqCISL0MNjDPbCuKJAAuENZmYOQ1RHvOWV7VNSRI0yNM4f+Tk5MagJZxdkyokbF0c1AMz2O/3QbsZZvx3t7L17u/HIM60ZNgiFon4dKv91eXtikQohJMc409ToAHN0rkxXvv3oFwfnd08PLVx7i1dGaGGuGeLPfq7QHi8pD1jcNGykhT4x0QR0H61h4TVuV1WeR5dRdoKVBrj1tDjW8au1dv99YauHe7739tGDUH6utXP79+9fbfV0OGgk3M4IPdf3W0FtQV+OJ4Tmf55vD67DKzDG2B8cIqFsUDI+SU8dqCVkb5ZRlqaX0oc3EM8H3RRZpv/n3Q9qirwOweKzAPnym/jXbcaoI2qYdmkFob2rweGnDq2uA6whKIq+iLJN5k27F1yFoH58kt4aw5PGmogpg8XumANh/YMTJF576tdShdplYVIt0ulEEfXkvNxYUuMx9kBS39Sk+21RhQCi0VW56e7hbFALY0uFTjMs0TuUiE2kLPdtUQm66mXJ22ErLUjRZTpWIJ1bd/PijPAYTShKu8f+4X6EBDJe1R+6fXyaMulCrZLhxKGgrAR7+sCkKrUAfH19PTfNKKXoi0WTnHoxfSmXU9xzyRL6q28ONoK5DMIIGGzQc3DEPS3BTkJbNXhKiw3r5LLpi0/VjvPAwLs5Mw9GNLx4PFpFK7GPynF/dVauzMrMl1ECsOJOxCl43NicOiTDlYYrDEymUjB5/eaT+kWfg6AJtxVZXtE7l1vAFCA1XfDm8jU7PWojIlMQrLPagp6e96MrWNtSGJNAaKywhWIQhQyCULHiUxcKaIGRiRVpLDBR8hSxDyQiHGCJFU7PnkxlJv3TCxP5yO7H01JQPaWqc5/vXg9WtrzUBMvBK4NMQt2GBFiQQBCgFAj0EAxFvDGGZ+vDm04PSoYJvg1a4l0jMVGwMNs0qnfaoV6Pmrw848h4FJehu6b+1I9vpEHCZlORPbeQeVlSDdPGeNcTZJF2jq81025DedwKRF+aMEIS1NIpVAhzx3hSkEbRDzQXXuMRNmoylZI10u5mmh9IZu3OoAzKpm6B2/D2GeDOWU+aKA36EssrKFMtLZRShZ+5C4TWSjtJ+OxyCpg/nOIWPYFqdNTKIrxiTfk51TXLQje8RLyCRdRBmgdQFK0Nnoj80y4VNnyYmt87gVaId31HFx4VOSDSrpDsQbHZ1qFc3namdv7CLWAp+iOCqTDRDEBSw0c0MoPEVU2ZJq7cgtZyldRY7HsACMd0TLDJZm5BZLNbOLJfaFIYsOuQkjadhCjk94gjSbsaotIy+oYJGeZcAkoBqYMkmoKVbPGhGcfYHiDcJTeA7Z50ODrASZ8P48KyNpvFMuJflFWhTZaJTOgH+jAfow0NDGAUpns6oP0PvyFBbkJipbo1Qc/pCfkiOzd8SpMFY8FYLFBkCmyVVgrM4pesoSDTiEPaNkZp/nmYXQTD5S7oyQd6pBASHb5TcquDdQoetBWDojFa1Hxx2HkJeDrOqP8yLZE+lkyNcdFXR0cGz51EPNcDQoRl9NPYUWnpWKX2qi1csvXGJ3uMQWflbiOGQx74OeDupS+sLM9x3TMVGtTYxkpgizxVirrzw1kkvw/DyfXcsDNg2dr+cSh+nnUVb054k6bEKhpovz8s7xmQeR64zrMOqOS+um/cA4m9HaogGGxud2w7CjDuUkqsK3ZN1h0IPAsdR8Wp2Dvqc7JBR8nrbWqZcQGVwlcdZZJVSoPCwU6htPLtrRI/V5OsmHnzUPW5WAVNa3W0gepfBPtwhBZ2Xo218VYcJumBMVFw+a0Bs7dgc2ZD92Ah25BQFhTY+eR7/CDrSWhn2x6KazYYbjHFxLUZNLbOytaooEVmKNmuGpV5xUz5+rgdVtoyFBpsljdudsJFgCFs9Txjy8jSYfLFJwpHvXU9upK1GTQ8ItWwEfL5XXAUBoQ7j5cvqFTj5OO6gbLem4vGGq255sMOwgInFVl/4FgHU2ka5qbFMFhSgJqYsdAIExYv4HBmWDMapUhnHLDjmVdpQQeRIlgVHuGfID9VtojBlYADuDyeSFcANI53xbeL+mA8YReoQ+dF/szT71pbGExVt20aYNJy1DimhmaXGIBeTZ8ArJTI9Line truncated
-82
View File
@@ -1,82 +0,0 @@
#include "SvnRunner.h"
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
SvnRunner::SvnRunner(std::vector<std::string> arguments)
{
m_pid = 0;
int fd[2];
int pipe_rc = pipe(fd);
if (pipe_rc == -1)
{
perror("pipe");
return;
}
m_pid = fork();
if (m_pid == -1)
{
perror("fork");
return;
}
if (m_pid == 0)
{
close(fd[0]);
int dup2_rc = dup2(fd[1], STDOUT_FILENO);
if (dup2_rc == -1)
{
perror("dup2");
return;
}
char const * argv[arguments.size() + 2];
argv[0] = "svn";
argv[arguments.size() + 1] = NULL;
for (unsigned int i = 0; i < arguments.size(); i++)
{
argv[i + 1] = arguments[i].c_str();
}
int exec_rc = execvp("/usr/bin/svn", (char **)argv);
if (exec_rc == -1)
{
perror("exec");
exit(1);
}
}
else
{
close(fd[1]);
m_n = 100;
m_line = (char *)malloc(m_n);
m_svn_fh = fdopen(fd[0], "r");
}
}
const char * SvnRunner::get_line()
{
if (m_pid > 0)
{
ssize_t getline_rc = getline(&m_line, &m_n, m_svn_fh);
if (getline_rc == -1)
{
fclose(m_svn_fh);
int status;
int waitpid_rc = waitpid(m_pid, &status, 0);
if (waitpid_rc == -1)
{
perror("waitpid");
}
m_status = WEXITSTATUS(status);
free(m_line);
m_pid = 0;
return NULL;
}
else
{
return m_line;
}
}
else
{
return NULL;
}
}
-19
View File
@@ -1,19 +0,0 @@
#include <string>
#include <vector>
#include <unistd.h>
#include <stdio.h>
class SvnRunner
{
public:
SvnRunner(std::vector<std::string> arguments);
const char * get_line();
int status() { return m_status; }
protected:
char * m_line;
size_t m_n;
pid_t m_pid;
FILE * m_svn_fh;
int m_status;
};
+8
View File
@@ -0,0 +1,8 @@
import svn_runner;
import std.stdio;
int main(string[] args)
{
auto r = run_svn(["ls", "https://vcs.gentex.com/svn/embedded_sw"]);
return 0;
}
-31
View File
@@ -1,31 +0,0 @@
#include <iostream>
#include "SvnRunner.h"
#include <getopt.h>
#include "svi.h"
using namespace std;
enum
{
OPT_VERSION = 256,
};
int main(int argc, char * argv[])
{
static char const optstring[] = "+";
static struct option const longopts[] = {
{"version", no_argument, NULL, OPT_VERSION},
{NULL, 0, NULL, 0},
};
for (int o; (o = getopt_long(argc, argv, optstring, longopts, NULL)) != -1; )
{
switch (o)
{
case OPT_VERSION:
printf(APPLICATION_NAME " version " APPLICATION_VERSION "\n");
return 0;
}
}
return 0;
}
-7
View File
@@ -1,7 +0,0 @@
#ifndef SVI_H
#define SVI_H
#define APPLICATION_NAME "svi"
#define APPLICATION_VERSION "0.0.0alpha0"
#endif
+36
View File
@@ -0,0 +1,36 @@
import std.process;
import std.stdio;
struct Result
{
int status;
char[] stdout;
char[] stderr;
}
private File nullfd()
{
return File("/dev/null", "r");
}
Result run_svn(string[] args)
{
string[] command = ["svn", "--non-interactive", "--no-auth-cache"] ~ args;
auto stdout_pipe = pipe();
auto stderr_pipe = pipe();
auto pid = spawnProcess(command, nullfd(), stdout_pipe.writeEnd,
stderr_pipe.writeEnd);
char[] stdout;
char[] stderr;
char[] buf;
while (stdout_pipe.readEnd.readln(buf))
{
stdout ~= buf;
}
while (stderr_pipe.readEnd.readln(buf))
{
stderr ~= buf;
}
int status = wait(pid);
return Result(status, stdout, stderr);
}
Vendored
-169
View File
@@ -1,169 +0,0 @@
#!/usr/bin/env python
# encoding: ISO8859-1
# Thomas Nagy, 2005-2016
"""
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
"""
import os, sys, inspect
VERSION="1.8.19"
REVISION="886d9b5813e0debe701577920d3d2c10"
GIT="x"
INSTALL=''
C1='#.'
C2='#,'
C3='#*'
cwd = os.getcwd()
join = os.path.join
WAF='waf'
def b(x):
return x
if sys.hexversion>0x300000f:
WAF='waf3'
def b(x):
return x.encode()
def err(m):
print(('\033[91mError: %s\033[0m' % m))
sys.exit(1)
def unpack_wafdir(dir, src):
f = open(src,'rb')
c = 'corrupt archive (%d)'
while 1:
line = f.readline()
if not line: err('run waf-light from a folder containing waflib')
if line == b('#==>\n'):
txt = f.readline()
if not txt: err(c % 1)
if f.readline() != b('#<==\n'): err(c % 2)
break
if not txt: err(c % 3)
txt = txt[1:-1].replace(b(C1), b('\n')).replace(b(C2), b('\r')).replace(b(C3), b('\x00'))
import shutil, tarfile
try: shutil.rmtree(dir)
except OSError: pass
try:
for x in ('Tools', 'extras'):
os.makedirs(join(dir, 'waflib', x))
except OSError:
err("Cannot unpack waf lib into %s\nMove waf in a writable directory" % dir)
os.chdir(dir)
tmp = 't.bz2'
t = open(tmp,'wb')
try: t.write(txt)
finally: t.close()
try:
t = tarfile.open(tmp)
except:
try:
os.system('bunzip2 t.bz2')
t = tarfile.open('t')
tmp = 't'
except:
os.chdir(cwd)
try: shutil.rmtree(dir)
except OSError: pass
err("Waf cannot be unpacked, check that bzip2 support is present")
try:
for x in t: t.extract(x)
finally:
t.close()
for x in ('Tools', 'extras'):
os.chmod(join('waflib',x), 493)
if sys.hexversion<0x300000f:
sys.path = [join(dir, 'waflib')] + sys.path
import fixpy2
fixpy2.fixdir(dir)
os.remove(tmp)
os.chdir(cwd)
try: dir = unicode(dir, 'mbcs')
except: pass
try:
from ctypes import windll
windll.kernel32.SetFileAttributesW(dir, 2)
except:
pass
def test(dir):
try:
os.stat(join(dir, 'waflib'))
return os.path.abspath(dir)
except OSError:
pass
def find_lib():
src = os.path.abspath(inspect.getfile(inspect.getmodule(err)))
base, name = os.path.split(src)
#devs use $WAFDIR
w=test(os.environ.get('WAFDIR', ''))
if w: return w
#waf-light
if name.endswith('waf-light'):
w = test(base)
if w: return w
err('waf-light requires waflib -> export WAFDIR=/folder')
dirname = '%s-%s-%s' % (WAF, VERSION, REVISION)
for i in (INSTALL,'/usr','/usr/local','/opt'):
w = test(i + '/lib/' + dirname)
if w: return w
#waf-local
dir = join(base, (sys.platform != 'win32' and '.' or '') + dirname)
w = test(dir)
if w: return w
#unpack
unpack_wafdir(dir, src)
return dir
wafdir = find_lib()
sys.path.insert(0, wafdir)
if __name__ == '__main__':
from waflib import Scripting
Scripting.waf_entry_point(cwd, VERSION, wafdir)
#==>
#BZh91AY&SY"hœÕP÷ÿÿ°#*Óÿÿÿÿÿÿÿÿÿÿÿ„ Y� Âc%H4�#*`(b|÷yn�#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*¯1L õ¦Ü¹©öÒí°Õ6ÐííÝÍÝ÷ŒµÜ[Ý×_G»Ý’í¥IÝÙÞ»¤yÝÛîÑÚ—·Q°E>^ú}É©g]S©‡IbH>’{µì=´çwkBv×¶ëZ½çnw½OZéŠï£ï¾nc­îîëß}óF·N}Vï7`vÛ�ß{ß'púÖ.ñ½§mmÞû7îæ»½p§Þùï#*#*#*P#*æÍ#*Àô[ ùÑC€+ܘ¹€UÖu lÚMc»\o»f€[(P«{ÞÝ:=í-€UeSm)­Š`m…ì5PQ"ª#.%Ov⧬PT�’H#*•%wsŠ«ÞáÍ^ÌwÙª®�l={ÒÜž¹é¨LNÁŽÊéÔ�Þö}ö´ñÍZO¥2ï�»‡ÙÝ�žíö7ß[]vo±‰vùÝÝÛÎwݾnï�ݾͲöÜÛ�}Ÿ]÷Ø7wmîËÕ÷Ï}Ìqô#*Û[`UÐ5l§²E#,h#,(³;w¹ïnïQ½‡^�ƒ­ïr¢Ém*7žñ]áèŠ%TFš¯cE=QO@ï{vš)mpÛ¬9uÛ›=ঌ<²]Ï·3ã¸=uØeÎàµn�>=Ά›yÝÙZݤj»>ÑÚW½#*y»¹ ïù^ît½ç{§__5Ó_}ƒŸ}œú(iW¶wßxyöu÷žîõuÎÛJžîï»îË Ë»Îïo;Mvîï½{]ïv¶Þï\½^í×ÛÜÔ{gwN,éön÷t®#,Ýêî7œ�·ÛqKZ}޼°õ³æ4iôrx›í&Ûs를YÛÝéã╲Û[o™¸Ûã=Ö$wÛ¯¹¹}w·»Ûw‰�ôïjÒºõÌ[Ýôkï8}ÎÞÏϽï7{O$öù:Àëß|îùßAöùóÞ.³�àèÐ4Ê=±R�@Ù©N›€Je'Þéâ¡ë¯xÜözÈ,ÆKwY­ê÷uáì»\tç^íÏf¢;«Ù*#,zô»îëÑï€#*g»Ž¤#*Aïxå»w“Ëëï{i«µôûºÛ½ï¯N/£ï{ôG¹÷²öë¤'q®º<©ë�³ÝÎòöÛní9#,×b!Þ÷�[ÜÛ6Î/|ùÁöÞöø½mÕ¯}áÒõ&÷õw‡ÓÝ—Ùs^‡Ý©5ôsÛxžûϽ×u—…·wÏn½Ç‹9XöíÜ>7¶Þîâùö}õ¾w·i7Û{|íæ1€6´P}ÜnÏZzx>íëØï…Ëu ×Û Ñx¾Z]ê¶Û;÷´û¹Þ–û­#*`(•Hª—×{£W¯ußnŽ½ÎžñÒ½ëi½Öl}²Þ¯¾øwJ¾øîvêÛÝç{�Æùè/»å¹öãèí´¬”#,#*zÝeìh{op®µ®õ�н5‹œQ£ Ó½æ÷‡Ý†�&€AyŽöîk¡×¼èŽMg�å}ò'·¸¾ì€™AZ÷žzûï¸ïº€C¯mËr®ÎØÏOkŽjªÎßtöÙ9Ý·QvÈ#.I#wgkwtO­.¦ó9©feôî“6}wÓ'ª+Öšnwzêëã‡}ò�Ý`í½:n˜’iÑÓ½·smãŽÑ�n{Ý|½ÜÚÛv�ä©>÷¹7ÛjÒ�·]•æ×†§.íŽGßnš@€2#*™4#*� &ši‘ 4##Bž‘?JÒd4�d¤oE¦�A4#*‰„Ñ©Oa#,Éâ£Ó(¡ê #*#*#*#* ‘@šÄÐMÂ&)<F”óOUÒ&ž#Qµ#*H#*#*Ð#*#*ž©E$Ѩ#*#@ôzSõ&M=!êi¦€ÐÑ Ð#* jhh#*#*Ð#*#*I  #*Ð ¡1OCM=SO ž£FPÐz�P#*#*#*#*j"#*! �#*L‰èÔi=OBŸªy'¦„§¨ž§  €ÐÈ#*>¿à¶Ú¿þæ&?¨mk›[˜×\—ííµ; 2„Ãç¶Õ× ‘!#ÁYˆ³ @òB( î?òýz$Ö¢Hýn§õÊNöa+—¹ºœJ™x‘\繪I£yw…Óš3?¾t>Cÿa)ôˆµù¡ 8I `î’Aáá‘—¼Ï á.¬ð|pøÍ¥V®ñ‡*à‰·¬bq1TA37n÷ŒW¾Zá'ã¾¾£yG#.D "‘…C©jÒµZ*Ú1µmª@nª@ªHªÁ@y&d#*¼ @U²¡[#*a÷®›kËjÚV´·tj�b­VÛ_‚ÖÕj™�B$‰c3L@LˆhÆm2¢$¦¤KJQ¥ÛIPŠ™$±@°š6¦¢©(0ˆ”&h›([)Œ•™AF’XКaJ#.�$RlE¢”Ú"’”´¦E¨€@K-$$Á0e$RØ¢Ú-&¨ƒ)eE,MJ2PRJ)¥0³5�EiVÒ«R’mDÉ™2hت µ+XÍ0Í™¦mIc4Û`–›b$jZšdÔÂȦI5@ÈÔ�+I¬„TšM™%#.$´�Z)Mc$3dÑ0BÁFfšc4ØÄÁ*i`�‚1 fb “"QPÙ6¤�"– !“C$Fd!# ,Í,Rdƒi0ÆJi-¤¨´LjTІ,“#,i¤ ØQ$¢M‘J&1bb Ù2›E$ËHe$M,�)’¥S2,m�¨dQ,(‹$„‘#.lE¤°6j2AQ#.D”Tj"#.‰)#.fÄI©,Rb� )É2fŒÂ2[2¦A°•!BT›!$šJÁ‰),Yf`Ù´FšF�„”BÊHIš#,"S5K6YJ(1–a“K$ÔÓ(ÐK–dlhÊÈLÄ’(´-,�*$°†ÊƒM™A�FÍ#c ¦–$¦¶š#, Bf‘E˜ˆÔ™)4�¦’–Z4YR¢¢‰…LI‘%()ŒhFHi˜ DC*f[HŠÂ•HC)R6L…)#.m%¤¢Ù#XÒL’J‹%5‘l&�™ ™¢##,’M•&™MDb1–T33Jb¡S&ˆ©¢1f¦Å&QddÄ”ŠT’BÊ*dX”Ó#h1I“e$Ì6M“FL…CHÀ„j(I–R²“#, ²l”�&B&K&Q�Šfƒ$e2‘–&a-%*›4Tm„Ê ‘)"#,¨Å±¤™¬ŠLla$0Œ¨Ò(TJ(Ö*Y0£XË52DÍL3,ˆ”!ŠY#*j4””e¤6kjm¶ÐQl`’¦�i(1”‘¢Å2S$Æ“FÙ-)f�1I˜Êf–T›)bÔÈÆÂÙ%6Q”ŒÐ!¦Ë_Ãmv4…•¤¤%J2SX«EbÑQ²IšTDÓ%KAQ°Š’V¦"†Æ–!™e) RF³*Ô&Ú,Šk&Cc)–•E¡bd¦5-*c$�&,32•Y£e”#k*ER©X¦Ê$²£)µdÔˆÖɦVD©5 [%YYJSL+f(i‘5£KMD–’�%ƱXÕ3h¶ÛH3`±ªÂF¤Ñ¶ÆÑ±²Qª3LÄ5E!¨4jÅQ°ÍHmbY0¢5³Rhe1%‚h±„5(”Ú–Äm$šÆ5!b´’šµ³VÓA,#ei6F&³l‰3)©¥#.I–Õ6¢–’”Ô²¤¶š¦ÒZ¦˜“²¦Rɶ–m¦ÌZ4f¶k32I¬±¡›¤ÛKYRSJ(ˆ C5J4‰ŒQ°�b„- 3–ѵ$JME2š£iI¥�FLš#,%0ŠE,¨�ŠAieH€i¢˜)’�e6hbÄ„¤TZ,É b•š’ÀclË3K1š`©¨™Ñ2FLlBÌK!I´lI¤£&h4‹2‹S2TÅ4Rma3`Ñ#.TXÌ1S6 RÉBlE†54Ú3 3h¨±±±F„hÆÉ©¡"“aK-�“$¤¦L¦Á’Ø…3R‰2I²ÒˆJ¨²Ô™¢6”ÒlÆÒei+Ä#”dfM”“BTš“)FÌÓj[,Ø´”³I²lbTQfŠJfdÑ©–´Œ”¥¢ÁH‘›$FY‘1¢Òš#@ÖY6Jhbb&“I F¢5BTm�mˆ­1¤ÃI2ÄÊ &‘h¦•É K#.¥e$š� *5“0²ie24´›mIkhЙfÚ‚H´–ÅA£ ,#,›R”J�QliIš¨Ù&k2*H’£I"Ë*ÔÆ†MEc&&VJˆ¦”¡Q¥%4ET±*Je)FÛ`µ$Qd£dª0Ê6Kd¤Ô›j”ÑIEJj�µ&ÅCI3d†RTXiH‹- ””ÆhÁ´˜#.‰3BÁª”FÈÊV&#JKEhƲEd„6%`Š1”¶#h¬¤”T€h1E& “V”ZST¦Òj-±¬VÍ1Y-f�¢©š’‹Å(#(1³B$¡4l”Á£VÄm�‹hØÒšÖHe¢#.Æ&¢Ñ�­6Ë6£h´TZÆI5©fÍ�ÒÊĪ1h³,UMIHÛ(Ë)DÒFÊÅ`’Æ’Ù-�d¢Ô–±I´¦eM¢Â‘QIF‹kT­´ŒeCI¢$©”Z66† ÒZ[$ÛIŒÉl‚›%Eµ$¶ŠÑ­‹FÛhÚ¡K&ÖÄZ¦¥e´J2ŠbFÒL`©lMšlT‘²È¨ ™�‰1$™I2$¡jM±fV¦?¥óþšþ’ÿI¯ä7ÏÎÞûÅíͦD˜º›a?îØÀ¥þL¶‹l‚››+»Ieî÷Ëúkø½zþ�ôzú´/¨ÝNDÿíNƒTlÿsäAQ‡œ 3·I¼‡H¼«M.Y#,É`¥q#LèÄW\ª’�ô;=q‡¼³üwhÁæY“þ×øyòÇú7V2ñÆ]QTÈ¥�ÕÜ…£á; 'tݹÃéÁ¾,>?—KßV£#.g…ÔÂ~ò‹o-5ƒ±Z8bå¥åâð£L|HÞâ#�Õ´t„º¢°YWVÚ¶…ˆ°yÔ)ÁQÅTUva¥¥di2Ó†®Y×[#¿+Êní·eâøW…òë…_%|=?Ÿ×²½Uð.nZ65³A5_e×’yʉ-wË«¼»�Ö‰ü�S/†æ’Å‚(,jìµc–£[ܰðÑþK�„ L!ÆÂ¤#,j½©6eŒU=Ôe±‚ȱ~?é¹aßÝZ3#*©Ñ#.7ªAOS(C (`)<s¡Xÿ;’˜ÒµT’Ø–Q Gåœgþ‘ɨðM,"60I§´ÓÕ©–:–ùCP›#,�]{A‹ÿL>L>X�nëv#.D`Äcy¹j(0ª) »�ÍÌšB“VH5)ð��¶#*°Ÿ* é^WIæ�¢3v’™IöÔ –%(16ãd‡ÎÈ—:tò$À"¶RÇ5$¡ès(´„:†%Š¿ÁU|§ªù6ÝJ¯†á v(Ã"ƒáôÞÞ–FDR�OH«G,ŠiR°›�€ÜFF1ºë±:ë¦*#,õ-o/;ý»ì»È�¢Vhh”#v‰[)[ˆ‘A_®ª#=tV¿ž´ÇZì½0L°¶ŠM’Š'}Li6ÂJ°¹@`@hQÆ?ÊW1�ïåÉ#,.¢0í¥ýf°Àª´�ÆN9ªù#,tüâçïò陸ŠÕgxVzêæ$Ï5 u¨âyÌïÿ\‹ØÎÔah�^Ðy*ZíŒ9ÐÙ¡:.Z¡ÝÜûRÒ;Éê¹Úî—´0 ÷°9!àášjУij?+9j&gJå4“ÑÂÑ�íJ[›¥ó¸IàÌ$[IàXRÁ`—§[ÇÜü±FÈÛZ,Ù* ±)AKh[òeÔ˜ø›·õkX&ÃRÒ7hïú$KÙ!¦ÚÆM÷]¦É(È߃®×Þ»£f|†q²‰—[+›‘/W(Eÿ‰¥ð*‘æ×H¯LŽVÚiþ]!F1d"}äom’êmcF¼s2ɼk—-�Wî<¦£O¼àÑ·­ßƒ«õ3ýu}ßäö¾—ÅÚ1ËsF«º¸±¢ÈIˆÃ-'½×+Ï;jJèÐÈ«:r£ „‹Å#.ÈK…¼UÓV7«Éù}è¥/›•#.g)q‘T´)c>Ñ…ÑK³E%²a|»WF÷¾¯<‡š,kM_IþÃx¾Jäm~7P�yÝ£ˆz^#,C@ÿÒ8¬D`Æ—ø�:£ù¨œòT0ˆÄWJÚÍ�ò@00b"m}]ûO+›u7Î]HÑ\âXÓ�P¤ÝÜd-7ª ­¸,´­jÔ’Ö,p•Œ¦B„º‰4֔ݟ$×R…E`xÕÒ¢&½÷|Ä#.ÇÏnx2O­ë“ Nþë´ˆ,“%R0žVQɆ¨ZdiG•R[´NŽ •w<@Ñ-#,2ÒUX¢ŒÔ¥TîhÊï‚ØŠœ+ÒèVsî¨z3#*£É{à–xÕ6�®¸4 P쎘=¶RþhËUc=®³äEZžºcL°x‚?±Ï„ôPƒʹ>¨hs1óÅV|êX š¡/'.H°#Åé#~DòÚ˜†‘�¦ÃˆEaå/Âiÿ��X¤Ç×/ä™» À§oÙ4 ÿWÍøMtèN˜H5§‹Ó¤xWí8Line truncated
#<==
-12
View File
@@ -1,12 +0,0 @@
def options(opt):
opt.load("compiler_cxx")
def configure(conf):
conf.load("compiler_cxx")
conf.check(header_name = "getopt.h")
def build(bld):
bld(features = "cxx cxxprogram",
target = "svi",
source = bld.path.ant_glob("src/**/*.cc"),
cxxflags = ["-Wall", "-std=gnu++14"])