|
@@ -0,0 +1,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 line.endswith(" \\\n"):
|
|
|
+ line = line.replace(' \\\n', ';branch=master \\\n')
|
|
|
+ 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 line.endswith(" \\\n"):
|
|
|
+ line = line.replace(' \\\n', ';protocol=https \\\n')
|
|
|
+ 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)
|