1
0
Fork 0

Adding upstream version 2.13.0.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-09 21:27:56 +01:00
parent 9a762b409f
commit af2c814963
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
27 changed files with 1249 additions and 80 deletions

View file

@ -1,5 +1,6 @@
#!/usr/bin/env python3
import argparse
import gzip
import os.path
import shutil
import subprocess
@ -14,25 +15,24 @@ from typing import Sequence
REPOS = (
('rbenv', 'git://github.com/rbenv/rbenv', '0843745'),
('ruby-build', 'git://github.com/rbenv/ruby-build', '500863c'),
('rbenv', 'https://github.com/rbenv/rbenv', '585ed84'),
('ruby-build', 'https://github.com/rbenv/ruby-build', 'e9fa4bf'),
(
'ruby-download',
'git://github.com/garnieretienne/rvm-download',
'https://github.com/garnieretienne/rvm-download',
'09bd7c6',
),
)
def make_archive(name: str, repo: str, ref: str, destdir: str) -> str:
"""Makes an archive of a repository in the given destdir.
def reset(tarinfo: tarfile.TarInfo) -> tarfile.TarInfo:
tarinfo.uid = tarinfo.gid = 0
tarinfo.uname = tarinfo.gname = 'root'
tarinfo.mtime = 0
return tarinfo
:param text name: Name to give the archive. For instance foo. The file
that is created will be called foo.tar.gz.
:param text repo: Repository to clone.
:param text ref: Tag/SHA/branch to check out.
:param text destdir: Directory to place archives in.
"""
def make_archive(name: str, repo: str, ref: str, destdir: str) -> str:
output_path = os.path.join(destdir, f'{name}.tar.gz')
with tempfile.TemporaryDirectory() as tmpdir:
# this ensures that the root directory has umask permissions
@ -47,8 +47,24 @@ def make_archive(name: str, repo: str, ref: str, destdir: str) -> str:
# runtime
shutil.rmtree(os.path.join(gitdir, '.git'))
with tarfile.open(output_path, 'w|gz') as tf:
tf.add(gitdir, name)
arcs = [(name, gitdir)]
for root, dirs, filenames in os.walk(gitdir):
for filename in dirs + filenames:
abspath = os.path.abspath(os.path.join(root, filename))
relpath = os.path.relpath(abspath, gitdir)
arcs.append((os.path.join(name, relpath), abspath))
arcs.sort()
with gzip.GzipFile(output_path, 'wb', mtime=0) as gzipf:
# https://github.com/python/typeshed/issues/5491
with tarfile.open(fileobj=gzipf, mode='w') as tf: # type: ignore
for arcname, abspath in arcs:
tf.add(
abspath,
arcname=arcname,
recursive=False,
filter=reset,
)
return output_path