1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
#!/usr/bin/env python3
#
# Conversion script to update SRC_URI to add branch to git urls
#
# Copyright (C) 2021 Richard Purdie
#
# SPDX-License-Identifier: GPL-2.0-only
#
import re
import os
import sys
import tempfile
import shutil
import mimetypes
if len(sys.argv) < 2:
print("Please specify a directory to run the conversion script against.")
sys.exit(1)
def processfile(fn):
def matchline(line):
if "MIRROR" in line or ".*" in line or "GNOME_GIT" in line:
return False
return True
print("processing file '%s'" % fn)
try:
if "distro_alias.inc" in fn or "linux-yocto-custom.bb" in fn:
return
fh, abs_path = tempfile.mkstemp()
modified = False
with os.fdopen(fh, 'w') as new_file:
with open(fn, "r") as old_file:
for line in old_file:
if ("git://" in line or "gitsm://" in line) and "branch=" not in line and matchline(line):
if line.endswith('"\n'):
line = line.replace('"\n', ';branch=master"\n')
elif re.search('\s*\\\\$', line):
line = re.sub('\s*\\\\$', ';branch=master \\\\', line)
modified = True
if ("git://" in line or "gitsm://" in line) and "github.com" in line and "protocol=https" not in line and matchline(line):
if "protocol=git" in line:
line = line.replace('protocol=git', 'protocol=https')
elif line.endswith('"\n'):
line = line.replace('"\n', ';protocol=https"\n')
elif re.search('\s*\\\\$', line):
line = re.sub('\s*\\\\$', ';protocol=https \\\\', line)
modified = True
new_file.write(line)
if modified:
shutil.copymode(fn, abs_path)
os.remove(fn)
shutil.move(abs_path, fn)
except UnicodeDecodeError:
pass
ourname = os.path.basename(sys.argv[0])
ourversion = "0.1"
if os.path.isfile(sys.argv[1]):
processfile(sys.argv[1])
sys.exit(0)
for targetdir in sys.argv[1:]:
print("processing directory '%s'" % targetdir)
for root, dirs, files in os.walk(targetdir):
for name in files:
if name == ourname:
continue
fn = os.path.join(root, name)
if os.path.islink(fn):
continue
if "/.git/" in fn or fn.endswith(".html") or fn.endswith(".patch") or fn.endswith(".m4") or fn.endswith(".diff"):
continue
processfile(fn)
print("All files processed with version %s" % ourversion)
|