diff options
author | Sadie Powell <sadie@witchery.services> | 2020-01-17 22:45:56 +0000 |
---|---|---|
committer | Sadie Powell <sadie@witchery.services> | 2020-01-17 23:37:32 +0000 |
commit | 47fe6c5540352fd5eafc2ae5c4ec6c4b61984591 (patch) | |
tree | 70d582455e0507270a633d67ab9b5ebf9a693db7 | |
parent | 1158a6767613ba14ebb5359b118e025736ad8acd (diff) |
Add a tool for updating the vendored libaries.
-rw-r--r-- | vendor/README.md | 26 | ||||
-rwxr-xr-x | vendor/update | 104 | ||||
-rw-r--r-- | vendor/update.toml | 36 |
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** — Solar Designer <solar@openwall.com> - -**Last Updated** — 2018-08-14 (v1.3) +**Author** — [Solar Designer](mailto:solar@openwall.com) **License** — Public Domain +**Version** — v1.3 + **Website** — [https://www.openwall.com/crypt/](https://www.openwall.com/crypt/) ## http_parser **Author** — Joyent, Inc. and other Node contributors -**Last Updated** — 2019-04-25 (v2.9.2) - **License** — MIT License -**Website** — [https://github.com/nodejs/http-parser](https://github.com/nodejs/http-parser) +**Version** — v2.9.2 -## sha256 +**Website** — [https://github.com/nodejs/http-parser](https://github.com/nodejs/http-parser) -**Author** — Olivier Gay <olivier.gay@a3.epfl.ch> +## sha2 -**Last Updated** — 2018-09-06 (2007-02-02) +**Author** — [Olivier Gay](mailto:olivier.gay@a3.epfl.ch) **License** — 3-clause BSD License +**Version** — 2007-02-02 + **Website** — [http://www.ouah.org/ogay/sha2/](http://www.ouah.org/ogay/sha2/) ## utfcpp **Author** — Nemanja Trifunovic -**Last Updated** — 2019-08-02 (v3.1) - **License** — Boost Software License +**Version** — v3.1 + **Website** — [https://github.com/nemtrif/utfcpp](https://github.com/nemtrif/utfcpp) ## ya_getopt **Author** — Kubo Takehiro -**Last Updated** — 2019-12-08 (6ce431085b81d9bb8639ed2f858c4f4fbc3ab988) - **License** — 2-clause BSD License +**Version** — 6ce4310 + **Website** — [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** — [%s](mailto:%s)\n\n", $info->{author}, $info->{email} if $info->{email}; + printf $fh "**Author** — %s\n\n", $info->{author} unless $info->{email}; + printf $fh "**License** — %s\n\n", $info->{license}; + printf $fh "**Version** — %s\n\n", $info->{version}; + my $website = $info->{website} // $info->{git}; + printf $fh "**Website** — [%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" |