Get rid of svnversion.

This commit is contained in:
Nicolas Auvray 2024-08-20 19:10:54 +02:00
parent 459ffa18cf
commit b698558102
41 changed files with 35 additions and 831 deletions

View File

@ -277,9 +277,9 @@ function hideRemaining(parentName, start = 0)
function getBuildString() function getBuildString()
{ {
return sprintf(translate("Build: %(buildDate)s (%(revision)s)"), { return sprintf(translate("Build: %(buildDate)s (%(version)s)"), {
"buildDate": Engine.GetBuildDate(), "buildDate": Engine.GetBuildDate(),
"revision": Engine.GetBuildRevision() "version": Engine.GetBuildVersion()
}); });
} }

View File

@ -6,7 +6,7 @@
<translatableAttribute id="caption">Alpha XXVII: Agni</translatableAttribute> <translatableAttribute id="caption">Alpha XXVII: Agni</translatableAttribute>
</object> </object>
<!-- Displays build date and revision number--> <!-- Displays build date and build version-->
<object <object
name="buildTimeLabel" name="buildTimeLabel"
type="text" type="text"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,6 @@
@ECHO OFF
REM Generate a Unicode string constant from git's output, including branch
REM name and an abbreviated commit hash, and write it to build_version.txt
FOR /F %%b IN ('git branch --show-current') DO SET branch=%%b
FOR /F %%h IN ('git rev-parse --short^=5 HEAD') DO SET hash=%%h
ECHO L"%branch%, %hash%" > build_version.txt

View File

@ -1,6 +0,0 @@
@ECHO OFF
REM Generate a Unicode string constant from svnversion's output and
REM write it to svn_revision.txt
FOR /F "tokens=*" %%i IN ('..\bin\svnversion ..\..\source -n') DO SET output=%%i
SET output=L"%output%"
ECHO %output% > svn_revision.txt

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2010 Wildfire Games. /* Copyright (C) 2024 Wildfire Games.
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the * a copy of this software and associated documentation files (the
@ -22,6 +22,6 @@
#include "precompiled.h" #include "precompiled.h"
wchar_t svn_revision[] = wchar_t build_version[] =
#include "../../build/svn_revision/svn_revision.txt" #include "../../build/build_version/build_version.txt"
; ;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2010 Wildfire Games. /* Copyright (C) 2024 Wildfire Games.
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the * a copy of this software and associated documentation files (the
@ -20,4 +20,4 @@
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
extern wchar_t svn_revision[]; extern wchar_t build_version[];

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2023 Wildfire Games. /* Copyright (C) 2024 Wildfire Games.
* This file is part of 0 A.D. * This file is part of 0 A.D.
* *
* 0 A.D. is free software: you can redistribute it and/or modify * 0 A.D. is free software: you can redistribute it and/or modify
@ -17,7 +17,7 @@
#include "precompiled.h" #include "precompiled.h"
#include "lib/svn_revision.h" #include "lib/build_version.h"
#include "lib/external_libraries/libsdl.h" #include "lib/external_libraries/libsdl.h"
#include "lib/posix/posix_utsname.h" #include "lib/posix/posix_utsname.h"
#include "lib/timer.h" #include "lib/timer.h"
@ -328,7 +328,7 @@ void RunHardwareDetection(bool writeSystemInfoBeforeDetection, Renderer::Backend
Script::SetProperty(rq, settings, "build_opengles", CONFIG2_GLES); Script::SetProperty(rq, settings, "build_opengles", CONFIG2_GLES);
Script::SetProperty(rq, settings, "build_datetime", std::string(__DATE__ " " __TIME__)); Script::SetProperty(rq, settings, "build_datetime", std::string(__DATE__ " " __TIME__));
Script::SetProperty(rq, settings, "build_revision", std::wstring(svn_revision)); Script::SetProperty(rq, settings, "build_version", std::wstring(build_version));
Script::SetProperty(rq, settings, "build_msc", (int)MSC_VERSION); Script::SetProperty(rq, settings, "build_msc", (int)MSC_VERSION);
Script::SetProperty(rq, settings, "build_icc", (int)ICC_VERSION); Script::SetProperty(rq, settings, "build_icc", (int)ICC_VERSION);

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2021 Wildfire Games. /* Copyright (C) 2024 Wildfire Games.
* This file is part of 0 A.D. * This file is part of 0 A.D.
* *
* 0 A.D. is free software: you can redistribute it and/or modify * 0 A.D. is free software: you can redistribute it and/or modify
@ -22,7 +22,7 @@
#include "Pyrogenesis.h" #include "Pyrogenesis.h"
#include "lib/sysdep/sysdep.h" #include "lib/sysdep/sysdep.h"
#include "lib/svn_revision.h" #include "lib/build_version.h"
const char* engine_version = "0.0.27"; const char* engine_version = "0.0.27";
const char* main_window_name = "0 A.D."; const char* main_window_name = "0 A.D.";
@ -56,7 +56,7 @@ static void AppendAsciiFile(FILE* out, const OsPath& pathname)
// for user convenience, bundle all logs into this file: // for user convenience, bundle all logs into this file:
void psBundleLogs(FILE* f) void psBundleLogs(FILE* f)
{ {
fwprintf(f, L"SVN Revision: %ls\n\n", svn_revision); fwprintf(f, L"Build Version: %ls\n\n", build_version);
fwprintf(f, L"Engine Version: %hs\n\n", engine_version); fwprintf(f, L"Engine Version: %hs\n\n", engine_version);
fwprintf(f, L"System info:\n\n"); fwprintf(f, L"System info:\n\n");

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2021 Wildfire Games. /* Copyright (C) 2024 Wildfire Games.
* This file is part of 0 A.D. * This file is part of 0 A.D.
* *
* 0 A.D. is free software: you can redistribute it and/or modify * 0 A.D. is free software: you can redistribute it and/or modify
@ -20,7 +20,7 @@
#include "JSInterface_Debug.h" #include "JSInterface_Debug.h"
#include "i18n/L10n.h" #include "i18n/L10n.h"
#include "lib/svn_revision.h" #include "lib/build_version.h"
#include "lib/debug.h" #include "lib/debug.h"
#include "scriptinterface/FunctionWrapper.h" #include "scriptinterface/FunctionWrapper.h"
#include "scriptinterface/ScriptRequest.h" #include "scriptinterface/ScriptRequest.h"
@ -75,17 +75,17 @@ double GetBuildTimestamp()
return std::time(nullptr); return std::time(nullptr);
} }
// Return the revision number at which the current executable was compiled. // Return the build version of the current executable.
// - svn revision is generated by calling svnversion and cached in // - in nightly builds, build version is generated from the git HEAD branch and
// lib/svn_revision.cpp. it is useful to know when attempting to // hash and cached in lib/build_version.cpp. it is useful to know when attempting
// reproduce bugs (the main EXE and PDB should be temporarily reverted to // to reproduce bugs (the main EXE and PDB should be temporarily reverted to
// that revision so that they match user-submitted crashdumps). // that commit so that they match user-submitted crashdumps).
std::wstring GetBuildRevision() std::wstring GetBuildVersion()
{ {
std::wstring svnRevision(svn_revision); std::wstring buildVersion(build_version);
if (svnRevision == L"custom build") if (buildVersion == L"custom build")
return wstring_from_utf8(g_L10n.Translate("custom build")); return wstring_from_utf8(g_L10n.Translate("custom build"));
return svnRevision; return buildVersion;
} }
void RegisterScriptFunctions(const ScriptRequest& rq) void RegisterScriptFunctions(const ScriptRequest& rq)
@ -96,6 +96,6 @@ void RegisterScriptFunctions(const ScriptRequest& rq)
ScriptFunction::Register<&DisplayErrorDialog>(rq, "DisplayErrorDialog"); ScriptFunction::Register<&DisplayErrorDialog>(rq, "DisplayErrorDialog");
ScriptFunction::Register<&GetBuildDate>(rq, "GetBuildDate"); ScriptFunction::Register<&GetBuildDate>(rq, "GetBuildDate");
ScriptFunction::Register<&GetBuildTimestamp>(rq, "GetBuildTimestamp"); ScriptFunction::Register<&GetBuildTimestamp>(rq, "GetBuildTimestamp");
ScriptFunction::Register<&GetBuildRevision>(rq, "GetBuildRevision"); ScriptFunction::Register<&GetBuildVersion>(rq, "GetBuildVersion");
} }
} }

View File

@ -1,17 +0,0 @@
use inc::Module::Install;
name('SVNLog');
abstract('Catalyst Application');
author('Catalyst developer');
version_from('lib/SVNLog.pm');
license('perl');
include('ExtUtils::AutoInstall');
requires( Catalyst => '5.60' );
catalyst_files();
install_script( glob('script/*.pl') );
auto_install();
&WriteAll;

View File

@ -1,11 +0,0 @@
name: SVNLog
svn:
username: philip
password: ????????
url : http://svn.wildfiregames.com/svn/ps/trunk
cdbi:
dsn : dbi:SQLite:/var/svn/autolog/SVNLog/sql/svnlog.db
output:
filename: /var/svn/htdocs/log.html
filename_feed: /var/svn/htdocs/log.atom
feed_url: http://svn.wildfiregames.com/log.atom

View File

@ -1,22 +0,0 @@
package SVNLog;
use strict;
use warnings;
use YAML ();
use Catalyst qw/FormValidator CDBI::Transaction/;
our $VERSION = '0.01';
__PACKAGE__->config(YAML::LoadFile(__PACKAGE__->path_to('config.yml')));
__PACKAGE__->setup;
sub end : Private {
my ($self, $c) = @_;
$c->forward('SVNLog::View::TT') unless $c->response->body;
}
1;

View File

@ -1,219 +0,0 @@
package SVNLog::Controller::LogUpdate;
use strict;
use base 'Catalyst::Controller';
use XML::Simple;
use XML::Atom::SimpleFeed;
use Data::UUID;
sub doupdate : Local
{
my ($self, $c) = @_;
my $latest = SVNLog::Model::CDBI::Logentry->maximum_value_of('revision') || 0;
my $min = $latest;
my $max = 'HEAD';
my $svn_cmd_data = '--username '.$c->config->{svn}{username}.' --password '.$c->config->{svn}{password}.' '.$c->config->{svn}{url};
my $log_xml = `svn log --xml --verbose -r $min:$max $svn_cmd_data`;
die "SVN request failed" if not (defined $log_xml and $log_xml =~ m~</log>~);
my $log = XMLin($log_xml, ContentKey => 'path');
my $max_seen = -1;
$c->transaction(sub {
for my $logentry (ref $log->{logentry} eq 'ARRAY' ? @{$log->{logentry}} : ($log->{logentry}))
{
$max_seen = $logentry->{revision} if $logentry->{revision} > $max_seen;
next if $logentry->{revision} <= $latest;
my $paths = $logentry->{paths}->{path};
delete $logentry->{paths};
# Convert <msg></msg> into just a string (because XML::Simple doesn't know that's what it should be)
$logentry->{msg} = '' if ref $logentry->{msg};
my $entry = SVNLog::Model::CDBI::Logentry->insert($logentry);
for my $path (ref $paths eq 'ARRAY' ? @$paths : ($paths))
{
SVNLog::Model::CDBI::Paths->insert({logentry => $entry->id, filter_copyfrom(%$path)});
}
}
}) or $c->log->error("Transaction failed: " . $c->error->[-1]);
add_default_public_msgs($c);
open my $text_fh, '>', $c->config->{output}{filename} or die $!;
print $text_fh $self->generate_text($c);
open my $feed_fh, '>', $c->config->{output}{filename_feed} or die $!;
print $feed_fh $self->generate_feed($c);
$c->res->body("Updated log to $max_seen.");
}
sub defaultise : Local
{
my ($self, $c) = @_;
add_default_public_msgs($c);
$c->res->body("Done");
}
# (To reset the database:
# delete from public_message; delete from sqlite_sequence where name = "public_message";
# )
sub add_default_public_msgs
{
my ($c) = @_;
$c->transaction(sub {
my @unmessaged = SVNLog::Model::CDBI::Logentry->retrieve_from_sql(qq{
NOT (SELECT COUNT(*) FROM public_message WHERE public_message.logentry = logentry.id)
ORDER BY logentry.id
});
for my $logentry (@unmessaged)
{
my @lines;
for (split /\n/, $logentry->msg)
{
push @lines, $_ if s/^#\s*//;
}
my $msg = join "\n", @lines;
SVNLog::Model::CDBI::PublicMessage->insert({
logentry => $logentry->id,
msg => $msg,
});
}
});
}
sub createtext : Local
{
my ($self, $c) = @_;
my $out = $self->generate_text($c);
$c->res->body($out);
}
sub createfeed : Local
{
my ($self, $c) = @_;
my $out = $self->generate_feed($c);
$c->res->body($out);
}
sub get_log_entries
{
my ($days, $max) = @_;
my @logentries = ();
for (SVNLog::Model::CDBI::Logentry->recent($days))
{
my $msg = $_->public_msg;
next unless defined $msg and $msg->msg; # skip ones with empty messages
push @logentries, $_;
last if $max and @logentries >= $max;
}
return @logentries;
}
sub generate_text
{
my ($self, $c) = @_;
my $feed_url = $c->config->{output}{feed_url};
my $out = <<EOF;
<!DOCTYPE html>
<title>0 A.D. Revision Log</title>
<style>
body {
color: #fff;
margin: 3px;
background-color: #000;
font-family: Geneva, Arial, Helvetica, sans-serif;
font-size: 10px;
}
img {
border: 0;
}
</style>
<a href="$feed_url" target="_top"><img alt="Atom feed" title="Subscribe to feed of revision log" src="/feed-icon-16x16.png" style="float: right"></a>
EOF
my @logentries = get_log_entries(28, 10);
for (@logentries)
{
my ($revision, $author, $date, $msg) = ($_->revision, $_->author, $_->date, $_->public_msg);
$date =~ s/T.*Z//;
$out .= <<EOF;
<b>revision:</b> $revision<br>
<b>author:</b> $author<br>
<b>date:</b> $date<br>
EOF
my $text = $msg->msg;
$text =~ s/&/&amp;/g;
$text =~ s/</&lt;/g;
$text =~ s/>/&gt;/g;
$text =~ s/\n/<br>/g;
$out .= $text . "\n<hr>\n";
}
if (not @logentries)
{
$out .= 'Sorry, no data is available right now.';
}
return $out;
}
sub generate_feed
{
my ($self, $c) = @_;
my $uid_gen = new Data::UUID;
my $feed_url = $c->config->{output}{feed_url};
my $feed = new XML::Atom::SimpleFeed(
title => "0 A.D. Revision Log",
link => "http://play0ad.com/",
link => { rel => 'self', href => $feed_url },
id => "urn:uuid:" . $uid_gen->create_from_name_str('WFG SVN feed', 'feed'),
);
my @logentries = get_log_entries(7);
for (@logentries)
{
my ($revision, $author, $date, $msg) = ($_->revision, $_->author, $_->date, $_->public_msg);
my $uid = $uid_gen->create_from_name_str('WFG SVN feed', $revision);
$feed->add_entry(
title => "Revision $revision - ".$msg->msg,
id => "urn:uuid:$uid",
author => $author,
content => $msg->msg,
published => $date,
updated => $date,
link => "http://play0ad.com/",
);
}
return $feed->as_string;
}
sub filter_copyfrom
{
my @r = @_;
s/^(copyfrom)-(rev|path)$/$1_$2/ for @r;
@r;
}
1;

View File

@ -1,41 +0,0 @@
package SVNLog::Controller::PublicMessage;
use strict;
use base 'Catalyst::Base';
sub default : Private {
my ( $self, $c ) = @_;
$c->forward('list');
}
sub do_edit : Local {
my ( $self, $c, $id ) = @_;
$c->form(optional => [ SVNLog::Model::CDBI::PublicMessage->columns ],
missing_optional_valid => 1 );
if ($c->form->has_missing) {
$c->stash->{message}='You have to fill in all fields.'.
'the following are missing: <b>'.
join(', ',$c->form->missing()).'</b>';
} elsif ($c->form->has_invalid) {
$c->stash->{message}='Some fields are not correctly filled in.'.
'the following are invalid: <b>'.
join(', ',$c->form->invalid()).'</b>';
} else {
SVNLog::Model::CDBI::PublicMessage->retrieve($id)->update_from_form( $c->form );
$c->stash->{message}='Updated OK';
}
$c->forward('edit');
}
sub edit : Local {
my ( $self, $c, $id ) = @_;
$c->stash->{item} = SVNLog::Model::CDBI::PublicMessage->retrieve($id);
$c->stash->{template} = 'PublicMessage/edit.tt';
}
sub list : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'PublicMessage/list.tt';
}
1;

View File

@ -1,15 +0,0 @@
package SVNLog::Model::CDBI;
use strict;
use base 'Catalyst::Model::CDBI';
__PACKAGE__->config(
dsn => SVNLog->config->{cdbi}{dsn},
user => '',
password => '',
options => {},
relationships => 1,
additional_base_classes => [qw/Class::DBI::FromForm Class::DBI::AsForm/],
);
1;

View File

@ -1,9 +0,0 @@
package SVNLog::Model::CDBI::Logentry;
use strict;
__PACKAGE__->add_constructor(recent => "datetime(substr(date, 0, 26)) >= datetime('now', -? || ' days') ORDER BY revision DESC");
__PACKAGE__->might_have(public_msg => 'SVNLog::Model::CDBI::PublicMessage');
1;

View File

@ -1,5 +0,0 @@
package SVNLog::Model::CDBI::Paths;
use strict;
1;

View File

@ -1,13 +0,0 @@
package SVNLog::Model::CDBI::PublicMessage;
use strict;
__PACKAGE__->set_sql(log_range => qq{
SELECT __TABLE__.id
FROM __TABLE__
JOIN logentry ON __TABLE__.logentry = logentry.id
ORDER BY revision DESC
LIMIT ? OFFSET ?
});
1;

View File

@ -1,6 +0,0 @@
package SVNLog::View::TT;
use strict;
use base 'Catalyst::View::TT';
1;

View File

@ -1,25 +0,0 @@
<p>[% message %]</p>
<form action="[% c.uri_for('/publicmessage/do_edit', item.id) %]" method="post">
Revision<br/>
[% item.logentry.revision %]<br/>
<br/>
Log message<br/>
<tt>[% item.logentry.msg | html_line_break %]</tt><br/>
<br/>
Public message<br/>
[%
textarea = item.to_field('msg');
CALL textarea.attr('rows', 10);
CALL textarea.attr('cols', 60);
textarea.as_XML
%]
<br/>
<input type="submit" value="Save changes"/>
</form>
<br/>
<a href="[% c.uri_for('/publicmessage/list') %]">Back to list</a>

View File

@ -1,36 +0,0 @@
[% USE table_class = Class('SVNLog::Model::CDBI::PublicMessage') %]
<table border="1">
<tr>
<th>Revision</th>
<th>Author</th>
<th>Date</th>
<th>Log message</th>
<th>Public message</th>
<th/>
</tr>
[%
count = 20;
start = c.req.param('start') || 0;
%]
[% FOR object = table_class.search_log_range(count, start) %]
<tr>
<td>[% object.logentry.revision %]</td>
<td>[% object.logentry.author %]</td>
<td>[% str = object.logentry.date.match('(\d{4}-\d{2}-\d{2}).(\d{2}:\d{2}:\d{2})');
str.0 %] [% str.1 %]</td>
<td>[% object.logentry.msg | html | html_line_break %]</td>
<td>[% object.msg | html | html_line_break %]</td>
<td>
<a href="[% c.uri_for('/publicmessage/edit', object.id) %]">
Edit
</a>
</td>
</tr>
[% END %]
</table>
[% IF start > 0 %]
<a href="[% c.uri_for('/publicmessage/list') _ '?start=' _ (start-count) %]">Previous page</a> |
[% END %]
<a href="[% c.uri_for('/publicmessage/list') _ '?start=' _ (start+count) %]">Next page</a>

View File

@ -1,37 +0,0 @@
#!/usr/bin/perl -w
BEGIN { $ENV{CATALYST_ENGINE} ||= 'CGI' }
use strict;
use FindBin;
use lib "$FindBin::Bin/../lib";
use SVNLog;
SVNLog->run;
1;
=head1 NAME
svnlog_cgi.pl - Catalyst CGI
=head1 SYNOPSIS
See L<Catalyst::Manual>
=head1 DESCRIPTION
Run a Catalyst application as cgi.
=head1 AUTHOR
Sebastian Riedel, C<sri@oook.de>
=head1 COPYRIGHT
Copyright 2004 Sebastian Riedel. All rights reserved.
This library is free software, you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut

View File

@ -1,72 +0,0 @@
#!/usr/bin/perl -w
use strict;
use Getopt::Long;
use Pod::Usage;
use Catalyst::Helper;
my $force = 0;
my $mech = 0;
my $help = 0;
GetOptions(
'nonew|force' => \$force,
'mech|mechanize' => \$mech,
'help|?' => \$help
);
pod2usage(1) if ( $help || !$ARGV[0] );
my $helper = Catalyst::Helper->new( { '.newfiles' => !$force, mech => $mech } );
pod2usage(1) unless $helper->mk_component( 'SVNLog', @ARGV );
1;
=head1 NAME
svnlog_create.pl - Create a new Catalyst Component
=head1 SYNOPSIS
svnlog_create.pl [options] model|view|controller name [helper] [options]
Options:
-force don't create a .new file where a file to be created exists
-mechanize use Test::WWW::Mechanize::Catalyst for tests if available
-help display this help and exits
Examples:
svnlog_create.pl controller My::Controller
svnlog_create.pl -mechanize controller My::Controller
svnlog_create.pl view My::View
svnlog_create.pl view MyView TT
svnlog_create.pl view TT TT
svnlog_create.pl model My::Model
svnlog_create.pl model SomeDB CDBI dbi:SQLite:/tmp/my.db
svnlog_create.pl model AnotherDB CDBI dbi:Pg:dbname=foo root 4321
See also:
perldoc Catalyst::Manual
perldoc Catalyst::Manual::Intro
=head1 DESCRIPTION
Create a new Catalyst Component.
Existing component files are not overwritten. If any of the component files
to be created already exist the file will be written with a '.new' suffix.
This behavior can be suppressed with the C<-force> option.
=head1 AUTHOR
Sebastian Riedel, C<sri@oook.de>
=head1 COPYRIGHT
Copyright 2004 Sebastian Riedel. All rights reserved.
This library is free software, you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut

View File

@ -1,76 +0,0 @@
#!/usr/bin/perl -w
BEGIN { $ENV{CATALYST_ENGINE} ||= 'FastCGI' }
use strict;
use Getopt::Long;
use Pod::Usage;
use FindBin;
use lib "$FindBin::Bin/../lib";
use SVNLog;
my $help = 0;
my ( $listen, $nproc, $pidfile, $manager, $detach );
GetOptions(
'help|?' => \$help,
'listen|l=s' => \$listen,
'nproc|n=i' => \$nproc,
'pidfile|p=s' => \$pidfile,
'manager|M=s' => \$manager,
'daemon|d' => \$detach,
);
pod2usage(1) if $help;
SVNLog->run(
$listen,
{ nproc => $nproc,
pidfile => $pidfile,
manager => $manager,
detach => $detach,
}
);
1;
=head1 NAME
svnlog_fastcgi.pl - Catalyst FastCGI
=head1 SYNOPSIS
svnlog_fastcgi.pl [options]
Options:
-? -help display this help and exits
-l -listen Socket path to listen on
(defaults to standard input)
can be HOST:PORT, :PORT or a
filesystem path
-n -nproc specify number of processes to keep
to serve requests (defaults to 1,
requires -listen)
-p -pidfile specify filename for pid file
(requires -listen)
-d -daemon daemonize (requires -listen)
-M -manager specify alternate process manager
(FCGI::ProcManager sub-class)
or empty string to disable
=head1 DESCRIPTION
Run a Catalyst application as fastcgi.
=head1 AUTHOR
Sebastian Riedel, C<sri@oook.de>
=head1 COPYRIGHT
Copyright 2004 Sebastian Riedel. All rights reserved.
This library is free software, you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut

View File

@ -1,104 +0,0 @@
#!/usr/bin/perl -w
BEGIN {
$ENV{CATALYST_ENGINE} ||= 'HTTP';
$ENV{CATALYST_SCRIPT_GEN} = 27;
}
use strict;
use Getopt::Long;
use Pod::Usage;
use FindBin;
use lib "$FindBin::Bin/../lib";
my $debug = 0;
my $fork = 0;
my $help = 0;
my $host = undef;
my $port = 3000;
my $keepalive = 0;
my $restart = 0;
my $restart_delay = 1;
my $restart_regex = '\.yml$|\.yaml$|\.pm$';
my @argv = @ARGV;
GetOptions(
'debug|d' => \$debug,
'fork' => \$fork,
'help|?' => \$help,
'host=s' => \$host,
'port=s' => \$port,
'keepalive|k' => \$keepalive,
'restart|r' => \$restart,
'restartdelay|rd=s' => \$restart_delay,
'restartregex|rr=s' => \$restart_regex
);
pod2usage(1) if $help;
if ( $restart ) {
$ENV{CATALYST_ENGINE} = 'HTTP::Restarter';
}
if ( $debug ) {
$ENV{CATALYST_DEBUG} = 1;
}
# This is require instead of use so that the above environment
# variables can be set at runtime.
require SVNLog;
SVNLog->run( $port, $host, {
argv => \@argv,
'fork' => $fork,
keepalive => $keepalive,
restart => $restart,
restart_delay => $restart_delay,
restart_regex => qr/$restart_regex/
} );
1;
=head1 NAME
svnlog_server.pl - Catalyst Testserver
=head1 SYNOPSIS
svnlog_server.pl [options]
Options:
-d -debug force debug mode
-f -fork handle each request in a new process
(defaults to false)
-? -help display this help and exits
-host host (defaults to all)
-p -port port (defaults to 3000)
-k -keepalive enable keep-alive connections
-r -restart restart when files got modified
(defaults to false)
-rd -restartdelay delay between file checks
-rr -restartregex regex match files that trigger
a restart when modified
(defaults to '\.yml$|\.yaml$|\.pm$')
See also:
perldoc Catalyst::Manual
perldoc Catalyst::Manual::Intro
=head1 DESCRIPTION
Run a Catalyst Testserver for this application.
=head1 AUTHOR
Sebastian Riedel, C<sri@oook.de>
=head1 COPYRIGHT
Copyright 2004 Sebastian Riedel. All rights reserved.
This library is free software, you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut

View File

@ -1,54 +0,0 @@
#!/usr/bin/perl -w
use strict;
use Getopt::Long;
use Pod::Usage;
use FindBin;
use lib "$FindBin::Bin/../lib";
use Catalyst::Test 'SVNLog';
my $help = 0;
GetOptions( 'help|?' => \$help );
pod2usage(1) if ( $help || !$ARGV[0] );
print request($ARGV[0])->content . "\n";
1;
=head1 NAME
svnlog_test.pl - Catalyst Test
=head1 SYNOPSIS
svnlog_test.pl [options] uri
Options:
-help display this help and exits
Examples:
svnlog_test.pl http://localhost/some_action
svnlog_test.pl /some_action
See also:
perldoc Catalyst::Manual
perldoc Catalyst::Manual::Intro
=head1 DESCRIPTION
Run a Catalyst action from the command line.
=head1 AUTHOR
Sebastian Riedel, C<sri@oook.de>
=head1 COPYRIGHT
Copyright 2004 Sebastian Riedel. All rights reserved.
This library is free software, you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut

View File

@ -1,2 +0,0 @@
#!/bin/bash
sqlite3 svnlog.db < svnlog.sql

View File

@ -1,24 +0,0 @@
CREATE TABLE logentry (
id INTEGER PRIMARY KEY AUTOINCREMENT,
revision INTEGER UNIQUE,
author TEXT,
date TEXT,
msg TEXT
);
CREATE TABLE paths (
id INTEGER PRIMARY KEY AUTOINCREMENT,
logentry INTEGER REFERENCES logentry,
action TEXT,
copyfrom_path TEXT,
copyfrom_rev INTEGER,
path TEXT
);
CREATE TABLE public_message (
id INTEGER PRIMARY KEY AUTOINCREMENT,
logentry INTEGER REFERENCES logentry,
msg TEXT
);
CREATE INDEX public_message_logentry ON public_message (logentry);

View File

@ -1,6 +1,6 @@
; To generate the installer (on Linux): ; To generate the installer (on Linux):
; Do an 'svn export' into a directory called e.g. "export-win32" ; Do an 'svn export' into a directory called e.g. "export-win32"
; makensis -nocd -dcheckoutpath=export-win32 -drevision=1234 -dversion=0.1.2 -dprefix=0ad-0.1.2-alpha export-win32/source/tools/dist/0ad.nsi ; makensis -nocd -dcheckoutpath=export-win32 -dversion=0.1.2 -dprefix=0ad-0.1.2-alpha export-win32/source/tools/dist/0ad.nsi
SetCompressor /SOLID LZMA SetCompressor /SOLID LZMA
@ -164,7 +164,7 @@ Section "!Game and data files" GameSection
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\0 A.D." "DisplayName" "0 A.D." WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\0 A.D." "DisplayName" "0 A.D."
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\0 A.D." "DisplayVersion" "${VERSION}" WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\0 A.D." "DisplayVersion" "${VERSION}"
WriteRegDWORD SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\0 A.D." "VersionMajor" 0 WriteRegDWORD SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\0 A.D." "VersionMajor" 0
WriteRegDWORD SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\0 A.D." "VersionMinor" ${REVISION} WriteRegDWORD SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\0 A.D." "VersionMinor" "${VERSION}"
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\0 A.D." "Publisher" "Wildfire Games" WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\0 A.D." "Publisher" "Wildfire Games"
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\0 A.D." "DisplayIcon" "$\"$INSTDIR\binaries\system\pyrogenesis.exe$\"" WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\0 A.D." "DisplayIcon" "$\"$INSTDIR\binaries\system\pyrogenesis.exe$\""
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\0 A.D." "InstallLocation" "$\"$INSTDIR$\"" WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\0 A.D." "InstallLocation" "$\"$INSTDIR$\""

View File

@ -27,10 +27,6 @@ if [ ! -d "${SYSROOT}" ]; then
die "${SYSROOT} does not exist! You probably need to install Xcode" die "${SYSROOT} does not exist! You probably need to install Xcode"
fi fi
# Assume this is called from trunk/
SVN_REV=$(svnversion -n .)
echo "L\"${SVN_REV}-release\"" > build/svn_revision/svn_revision.txt
cd "build/workspaces/" cd "build/workspaces/"
JOBS=${JOBS:="-j5"} JOBS=${JOBS:="-j5"}

View File

@ -7,9 +7,6 @@ GZIP7ZOPTS="-mx=9"
BUNDLE_VERSION=${BUNDLE_VERSION:="0.0.xxx"} BUNDLE_VERSION=${BUNDLE_VERSION:="0.0.xxx"}
PREFIX="0ad-${BUNDLE_VERSION}-alpha" PREFIX="0ad-${BUNDLE_VERSION}-alpha"
SVN_REV=${SVN_REV:=$(svnversion -n .)}
echo "L\"${SVN_REV}-release\"" > build/svn_revision/svn_revision.txt
# Collect the relevant files # Collect the relevant files
tar cf $PREFIX-unix-build.tar \ tar cf $PREFIX-unix-build.tar \
--exclude='*.bat' --exclude='*.dll' --exclude='*.exe' --exclude='*.lib' \ --exclude='*.bat' --exclude='*.dll' --exclude='*.exe' --exclude='*.lib' \
@ -40,7 +37,6 @@ fi
# This needs nsisbi for files > 2GB # This needs nsisbi for files > 2GB
makensis -V4 -nocd \ makensis -V4 -nocd \
-dcheckoutpath="." \ -dcheckoutpath="." \
-drevision=${SVN_REV} \
-dversion=${BUNDLE_VERSION} \ -dversion=${BUNDLE_VERSION} \
-dprefix=${PREFIX} \ -dprefix=${PREFIX} \
-darchive_path="archives/" \ -darchive_path="archives/" \

View File

@ -73,7 +73,7 @@ def report_performance(request):
'cpu_identifier': json['cpu_identifier'], 'cpu_identifier': json['cpu_identifier'],
'device': report.gl_device_identifier(), 'device': report.gl_device_identifier(),
'build_debug': json['build_debug'], 'build_debug': json['build_debug'],
'build_revision': json['build_revision'], 'build_version': json['build_version'],
'build_datetime': json['build_datetime'], 'build_datetime': json['build_datetime'],
'gfx_res': (json['video_xres'], json['video_yres']), 'gfx_res': (json['video_xres'], json['video_yres']),
} }