aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2021-11-09 23:56:37 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2021-11-09 23:56:37 +0200
commit9741fc6cfd0657892d15124e0c29247aa06c74b6 (patch)
tree11f08d19fa287b70b6abaed01234d054de888fc2
parent4c1c605c577cd350d557445b62db94978f2833f1 (diff)
downloadmeson-delghwt.zip
meson-delghwt.tar.gz
meson-delghwt.tar.bz2
Delete ghwt.py as it is no longer needed or even works.delghwt
-rwxr-xr-xghwt.py132
1 files changed, 0 insertions, 132 deletions
diff --git a/ghwt.py b/ghwt.py
deleted file mode 100755
index fc6db5d..0000000
--- a/ghwt.py
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/usr/bin/env python3
-
-# Copyright 2016 The Meson development team
-
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-
-# http://www.apache.org/licenses/LICENSE-2.0
-
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# ghwt - GitHub WrapTool
-#
-# An emergency wraptool(1) replacement downloader that downloads
-# directly from GitHub in case wrapdb.mesonbuild.com is down.
-
-import urllib.request, json, sys, os, shutil, subprocess
-import configparser, hashlib
-
-req_timeout = 600.0
-private_repos = {'meson', 'wrapweb', 'meson-ci'}
-spdir = 'subprojects'
-
-def gh_get(url):
- r = urllib.request.urlopen(url, timeout=req_timeout)
- jd = json.loads(r.read().decode('utf-8'))
- return jd
-
-def list_projects():
- jd = gh_get('https://api.github.com/orgs/mesonbuild/repos')
- entries = [entry['name'] for entry in jd]
- entries = [e for e in entries if e not in private_repos]
- entries.sort()
- for i in entries:
- print(i)
- return 0
-
-def unpack(sproj, branch):
- tmpdir = os.path.join(spdir, sproj + '_ghwt')
- shutil.rmtree(tmpdir, ignore_errors=True)
- subprocess.check_call(['git', 'clone', '-b', branch, f'https://github.com/mesonbuild/{sproj}.git', tmpdir])
- usfile = os.path.join(tmpdir, 'upstream.wrap')
- assert os.path.isfile(usfile)
- config = configparser.ConfigParser(interpolation=None)
- config.read(usfile)
- outdir = os.path.join(spdir, sproj)
- if 'directory' in config['wrap-file']:
- outdir = os.path.join(spdir, config['wrap-file']['directory'])
- if os.path.isdir(outdir):
- print(f'Subproject is already there. To update, nuke the {outdir} dir and reinstall.')
- shutil.rmtree(tmpdir)
- return 1
- us_url = config['wrap-file']['source_url']
- us = urllib.request.urlopen(us_url, timeout=req_timeout).read()
- h = hashlib.sha256()
- h.update(us)
- dig = h.hexdigest()
- should = config['wrap-file']['source_hash']
- if dig != should:
- print('Incorrect hash on download.')
- print(' expected:', should)
- print(' obtained:', dig)
- return 1
- ofilename = os.path.join(spdir, config['wrap-file']['source_filename'])
- with open(ofilename, 'wb') as ofile:
- ofile.write(us)
- if 'lead_directory_missing' in config['wrap-file']:
- os.mkdir(outdir)
- shutil.unpack_archive(ofilename, outdir)
- else:
- shutil.unpack_archive(ofilename, spdir)
- assert os.path.isdir(outdir)
- shutil.move(os.path.join(tmpdir, '.git'), outdir)
- subprocess.check_call(['git', 'reset', '--hard'], cwd=outdir)
- shutil.rmtree(tmpdir)
- shutil.rmtree(os.path.join(outdir, '.git'))
- os.unlink(ofilename)
-
-def install(sproj, requested_branch=None):
- if not os.path.isdir(spdir):
- print('Run this in your source root and make sure there is a subprojects directory in it.')
- return 1
- blist = gh_get(f'https://api.github.com/repos/mesonbuild/{sproj}/branches')
- blist = [b['name'] for b in blist]
- blist = [b for b in blist if b != 'master']
- blist.sort()
- branch = blist[-1]
- if requested_branch is not None:
- if requested_branch in blist:
- branch = requested_branch
- else:
- print('Could not find user-requested branch', requested_branch)
- print('Available branches for', sproj, ':')
- print(blist)
- return 1
- print('Using branch', branch)
- return unpack(sproj, branch)
-
-def print_help():
- print('Usage:')
- print(sys.argv[0], 'list')
- print(sys.argv[0], 'install', 'package_name', '[branch_name]')
-
-def run(args):
- if not args or args[0] == '-h' or args[0] == '--help':
- print_help()
- return 1
- command = args[0]
- args = args[1:]
- if command == 'list':
- list_projects()
- return 0
- elif command == 'install':
- if len(args) == 1:
- return install(args[0])
- elif len(args) == 2:
- return install(args[0], args[1])
- else:
- print_help()
- return 1
- else:
- print('Unknown command')
- return 1
-
-if __name__ == '__main__':
- print('This is an emergency wrap downloader. Use only when wrapdb is down.')
- sys.exit(run(sys.argv[1:]))