summaryrefslogtreecommitdiff
path: root/vendor
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2020-01-17 22:45:56 +0000
committerSadie Powell <sadie@witchery.services>2020-01-17 23:37:32 +0000
commit47fe6c5540352fd5eafc2ae5c4ec6c4b61984591 (patch)
tree70d582455e0507270a633d67ab9b5ebf9a693db7 /vendor
parent1158a6767613ba14ebb5359b118e025736ad8acd (diff)
Add a tool for updating the vendored libaries.
Diffstat (limited to 'vendor')
-rw-r--r--vendor/README.md26
-rwxr-xr-xvendor/update104
-rw-r--r--vendor/update.toml36
3 files changed, 153 insertions, 13 deletions
diff --git a/vendor/README.md b/vendor/README.md
index 110245e6f..28d5333de 100644
--- a/vendor/README.md
+++ b/vendor/README.md
@@ -4,50 +4,50 @@ This directory contains vendored dependencies that are shipped with InspIRCd to
## bcrypt
-**Author** &mdash; Solar Designer &lt;solar@openwall.com&gt;
-
-**Last Updated** &mdash; 2018-08-14 (v1.3)
+**Author** &mdash; [Solar Designer](mailto:solar@openwall.com)
**License** &mdash; Public Domain
+**Version** &mdash; v1.3
+
**Website** &mdash; [https://www.openwall.com/crypt/](https://www.openwall.com/crypt/)
## http_parser
**Author** &mdash; Joyent, Inc. and other Node contributors
-**Last Updated** &mdash; 2019-04-25 (v2.9.2)
-
**License** &mdash; MIT License
-**Website** &mdash; [https://github.com/nodejs/http-parser](https://github.com/nodejs/http-parser)
+**Version** &mdash; v2.9.2
-## sha256
+**Website** &mdash; [https://github.com/nodejs/http-parser](https://github.com/nodejs/http-parser)
-**Author** &mdash; Olivier Gay &lt;olivier.gay@a3.epfl.ch&gt;
+## sha2
-**Last Updated** &mdash; 2018-09-06 (2007-02-02)
+**Author** &mdash; [Olivier Gay](mailto:olivier.gay@a3.epfl.ch)
**License** &mdash; 3-clause BSD License
+**Version** &mdash; 2007-02-02
+
**Website** &mdash; [http://www.ouah.org/ogay/sha2/](http://www.ouah.org/ogay/sha2/)
## utfcpp
**Author** &mdash; Nemanja Trifunovic
-**Last Updated** &mdash; 2019-08-02 (v3.1)
-
**License** &mdash; Boost Software License
+**Version** &mdash; v3.1
+
**Website** &mdash; [https://github.com/nemtrif/utfcpp](https://github.com/nemtrif/utfcpp)
## ya_getopt
**Author** &mdash; Kubo Takehiro
-**Last Updated** &mdash; 2019-12-08 (6ce431085b81d9bb8639ed2f858c4f4fbc3ab988)
-
**License** &mdash; 2-clause BSD License
+**Version** &mdash; 6ce4310
+
**Website** &mdash; [https://github.com/kubo/ya_getopt](https://github.com/kubo/ya_getopt)
diff --git a/vendor/update b/vendor/update
new file mode 100755
index 000000000..c57918cb5
--- /dev/null
+++ b/vendor/update
@@ -0,0 +1,104 @@
+#!/usr/bin/env perl
+#
+# InspIRCd -- Internet Relay Chat Daemon
+#
+# Copyright (C) 2020 Sadie Powell <sadie@witchery.services>
+#
+# This file is part of InspIRCd. InspIRCd is free software: you can
+# redistribute it and/or modify it under the terms of the GNU General Public
+# License as published by the Free Software Foundation, version 2.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+
+BEGIN {
+ require 5.10.0;
+ unless (-f 'configure') {
+ print "Error: $0 must be run from the main source directory!\n";
+ exit 1;
+ }
+}
+
+use feature ':5.10';
+use strict;
+use warnings FATAL => qw(all);
+
+use File::Basename qw(basename dirname);
+use File::Copy qw(move);
+use File::Spec::Functions qw(abs2rel catdir catfile);
+use File::Temp qw(tempdir);
+use FindBin qw($RealDir);
+use POSIX qw(strftime);
+use TOML qw(from_toml);
+
+use lib dirname $RealDir;
+use make::common;
+use make::console;
+
+my $config = catfile $RealDir, 'update.toml';
+open(my $fh, $config) or print_error "unable to read $config: $!";
+my $contents = do { local $/; <$fh> };
+close $fh;
+
+my ($data, $error) = from_toml $contents;
+print_error "unable to parse $config: $!" if $error;
+
+while (my ($name, $info) = each $data) {
+ print_format "Updating <|GREEN $name|> ...\n";
+
+ my $unpackdir = File::Temp->newdir;
+ my $vendordir = catdir $RealDir, $name;
+ my $success = 0;
+ if (defined $info->{git}) {
+ $success ||= system 'git', 'clone', $info->{git}, $unpackdir;
+ chomp(my $tag = `git -C $unpackdir describe --abbrev=0 --tags HEAD 2>/dev/null`) unless $success;
+ $success ||= system 'git', '-C', $unpackdir, 'checkout', $tag if $tag;
+ chomp($info->{version} = `git -C $unpackdir describe --always --tags HEAD 2>/dev/null`);
+ } elsif (defined $info->{tarball}) {
+ my $tarball = catfile $unpackdir, basename $info->{tarball};
+ $success ||= system 'wget', '--output-document', $tarball, $info->{tarball};
+ $success ||= system 'tar', 'fx', $tarball, '-C', $unpackdir, '--strip-components', 1;
+ } else {
+ print_error "unable to update $name; no git or tarball specified!";
+ }
+ print_error "unable to update $name: download failed!" if $success;
+
+ unlink $vendordir;
+ my $glob = $info->{files} or print_error "unable to update $name: no file glob specified!";
+ for my $file (glob catfile $unpackdir, $glob) {
+ my $pathname = abs2rel $file, $unpackdir;
+ for (my $i = 0; $i < ($info->{depth} // 0); ++$i) {
+ $pathname =~ s/[^\/]+\///;
+ }
+ my $filename = catfile $vendordir, $pathname;
+ my $dirname = dirname $filename;
+ create_directory $dirname, 0750;
+ move $file, $filename;
+ }
+}
+
+my $readme = catfile $RealDir, 'README.md';
+open($fh, $readme) or print_error "unable to read $readme: $!";
+$contents = do { local $/; <$fh> };
+close $fh;
+
+open($fh, '>', $readme) or print_error "unable to write $readme: $!";
+print $fh $contents =~ s/\n\#\#.*//rs;
+for my $name (sort keys $data) {
+ my $info = $data->{$name};
+ printf $fh "\n## %s\n\n", $name;
+ printf $fh "**Author** &mdash; [%s](mailto:%s)\n\n", $info->{author}, $info->{email} if $info->{email};
+ printf $fh "**Author** &mdash; %s\n\n", $info->{author} unless $info->{email};
+ printf $fh "**License** &mdash; %s\n\n", $info->{license};
+ printf $fh "**Version** &mdash; %s\n\n", $info->{version};
+ my $website = $info->{website} // $info->{git};
+ printf $fh "**Website** &mdash; [%s](%s)\n", $website, $website;
+}
+close $fh; \ No newline at end of file
diff --git a/vendor/update.toml b/vendor/update.toml
new file mode 100644
index 000000000..f324441b7
--- /dev/null
+++ b/vendor/update.toml
@@ -0,0 +1,36 @@
+[bcrypt]
+author = "Solar Designer"
+email = "solar@openwall.com"
+files = "crypt_blowfish.[ch]"
+license = "Public Domain"
+tarball = "https://www.openwall.com/crypt/crypt_blowfish-1.3.tar.gz"
+version = "v1.3"
+website = "https://www.openwall.com/crypt/"
+
+[http_parser]
+author = "Joyent, Inc. and other Node contributors"
+files = "http_parser.[ch]"
+git = "https://github.com/nodejs/http-parser"
+license = "MIT License"
+
+[sha2]
+author = "Olivier Gay"
+email = "olivier.gay@a3.epfl.ch"
+files = "sha2.[ch]"
+license = "3-clause BSD License"
+tarball = "http://www.ouah.org/ogay/sha2/sha2.tar.gz"
+version = "2007-02-02"
+website = "http://www.ouah.org/ogay/sha2/"
+
+[utfcpp]
+author = "Nemanja Trifunovic"
+depth = 1
+files = "source/{**/*,*}.h"
+git = "https://github.com/nemtrif/utfcpp"
+license = "Boost Software License"
+
+[ya_getopt]
+author = "Kubo Takehiro"
+files = "ya_getopt.[ch]"
+git = "https://github.com/kubo/ya_getopt"
+license = "2-clause BSD License"