Compare commits

..

75 Commits

Author SHA1 Message Date
clrbuilder ee744332e0 Update packages file for version 40310
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-11-03 09:03:52 -07:00
clrbuilder 353042a9bd Update packages file for version 40290
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-11-01 11:20:28 -07:00
clrbuilder 1a0366ab21 Update packages file for version 40260
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-10-30 12:23:45 -07:00
clrbuilder 4080b704f3 Update packages file for version 40250
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-10-26 10:05:44 -07:00
clrbuilder 4626f673ca Update packages file for version 40240
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-10-25 16:23:36 -07:00
clrbuilder 5121c565eb Update packages file for version 40200
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-10-20 17:30:37 -07:00
clrbuilder a26aea0290 Update packages file for version 40180
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-10-19 14:39:37 -07:00
clrbuilder 54a9f967c3 Update packages file for version 40150
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-10-19 10:40:39 -07:00
clrbuilder 9153630dcb Update packages file for version 40120
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-10-12 00:06:02 -07:00
clrbuilder d80039c90b Update packages file for version 40110
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-10-11 15:08:34 -07:00
clrbuilder f5a3630590 Update packages file for version 40100
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-10-11 11:55:44 -07:00
clrbuilder 75cb8bf424 Update packages file for version 40070
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-10-10 00:07:18 -07:00
clrbuilder 2a586be1b3 Update packages file for version 40060
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-10-05 00:06:54 -07:00
clrbuilder 93fccd1edf Update packages file for version 40050
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-10-03 12:45:48 -07:00
clrbuilder 9527057e5e Update packages file for version 40040
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-10-03 00:06:48 -07:00
clrbuilder f3500feb2d Update packages file for version 40030
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-09-28 11:39:36 -07:00
clrbuilder 05598abd55 Update packages file for version 40010
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-09-26 08:04:38 -07:00
clrbuilder 2b0163ef73 Update packages file for version 40000
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-09-25 13:55:49 -07:00
clrbuilder 3f2b9100e6 Update packages file for version 39990
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-09-22 11:34:36 -07:00
William Douglas 1b841e095d Update help comment for clean-pkgs-dir
Signed-off-by: William Douglas <william.douglas@intel.com>
2023-09-19 11:24:22 -07:00
William Douglas 579d79ef92 Make clean-pkgs-dir backup things it cleans up
If something already exists in backup form, skip it, otherwise move
the content to the backup directory.

Signed-off-by: William Douglas <william.douglas@intel.com>
2023-09-19 11:22:01 -07:00
clrbuilder d85dfaec30 Update packages file for version 39970
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-09-19 00:06:54 -07:00
clrbuilder 8787caac84 Update packages file for version 39940
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-09-12 00:06:48 -07:00
clrbuilder 181006f851 Update packages file for version 39910
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-09-07 00:07:05 -07:00
clrbuilder 480917e514 Update packages file for version 39900
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-09-05 00:07:23 -07:00
clrbuilder afab562778 Update packages file for version 39890
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-08-31 00:06:52 -07:00
clrbuilder 21ae357eeb Update packages file for version 39880
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-08-29 12:26:30 -07:00
clrbuilder b4989fae9b Update packages file for version 39870
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-08-29 00:06:49 -07:00
clrbuilder 09d1f48a31 Update packages file for version 39860
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-08-24 00:09:48 -07:00
clrbuilder 3a5cfb76c6 Update packages file for version 39850
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-08-22 00:06:40 -07:00
clrbuilder 763c25ac43 Update packages file for version 39800
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-08-15 00:05:31 -07:00
clrbuilder b97bc72f65 Update packages file for version 39790
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-08-14 08:30:03 -07:00
clrbuilder 6af8cdfa99 Update packages file for version 39780
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-08-09 18:08:15 -07:00
clrbuilder dd378bba6c Update packages file for version 39770
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-08-09 12:05:28 -07:00
clrbuilder 4b63761b45 Update packages file for version 39760
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-08-08 15:12:41 -07:00
clrbuilder 5882fa9b80 Update packages file for version 39730
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-08-03 00:06:37 -07:00
clrbuilder 8c028f361d Update packages file for version 39720
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-08-01 00:07:18 -07:00
clrbuilder 56dfe24b31 Update packages file for version 39710
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-07-27 00:09:15 -07:00
clrbuilder 5f2827db17 Update packages file for version 39690
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-07-24 10:55:02 -07:00
clrbuilder f3d664e694 Update packages file for version 39660
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-07-20 06:52:51 -07:00
clrbuilder 088ab41319 Update packages file for version 39650
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-07-18 21:30:52 -07:00
clrbuilder b2a39834c2 Update packages file for version 39640
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-07-18 00:07:19 -07:00
clrbuilder b7184a56a8 Update packages file for version 39630
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-07-14 05:37:18 -07:00
clrbuilder 976837dd36 Update packages file for version 39620
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-07-13 00:07:09 -07:00
clrbuilder 6102ce39b8 Update packages file for version 39610
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-07-11 00:08:15 -07:00
clrbuilder 4ed6de4b77 Update packages file for version 39600
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-07-07 12:42:26 -07:00
clrbuilder 5af73631bd Update packages file for version 39590
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-07-06 07:19:14 -07:00
clrbuilder 7a63c36293 Update packages file for version 39550
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-07-03 11:31:57 -07:00
clrbuilder 442543a9aa Update packages file for version 39540
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-06-29 00:06:26 -07:00
clrbuilder 43b28277c0 Update packages file for version 39530
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-06-28 14:39:47 -07:00
clrbuilder c371f6a233 Update packages file for version 39490
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-06-27 15:09:21 -07:00
clrbuilder 485815c4fe Update packages file for version 39470
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-06-27 00:07:28 -07:00
clrbuilder ffd02240f4 Update packages file for version 39460
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-06-26 16:11:45 -07:00
clrbuilder 69e4a64658 Update packages file for version 39450
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-06-23 09:07:00 -07:00
William Douglas 61a91af0ff Fix logic for detecting new vendor
Missing grouping in vendor .git changed caused detection failures.

Signed-off-by: William Douglas <william.douglas@intel.com>
2023-06-01 15:08:51 -07:00
clrbuilder fc6b90aaa5 Update packages file for version 38830
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-04-18 07:56:02 -07:00
clrbuilder b25ec94cf9 Update packages file for version 38820
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-04-17 13:01:55 -07:00
clrbuilder a8500a2645 Update packages file for version 38810
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-04-17 07:48:28 -07:00
clrbuilder 9d15900efd Update packages file for version 38800
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-04-14 09:13:47 -07:00
clrbuilder 9d101b84cf Update packages file for version 38760
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-04-12 11:23:10 -07:00
clrbuilder 89d86df8d3 Update packages file for version 38750
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-04-11 00:07:27 -07:00
clrbuilder 23e40ddcd8 Update packages file for version 38740
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-04-06 00:07:15 -07:00
clrbuilder e0a40a10f2 Update packages file for version 38710
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-04-03 14:52:16 -07:00
clrbuilder 3b76c04f7f Update packages file for version 38700
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-03-30 16:26:28 -07:00
clrbuilder 8b9b13698f Update packages file for version 38690
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-03-30 11:21:18 -07:00
clrbuilder 1f2b9cc5a7 Update packages file for version 38680
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-03-30 00:06:55 -07:00
William Douglas aa0028d372 Correct test for config value being set
Fix the vendor.py test checking if cargo vendoring should be done.

Signed-off-by: William Douglas <william.douglas@intel.com>
2023-03-29 16:31:28 -07:00
clrbuilder fb17b414ed Update packages file for version 38650
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-03-28 00:08:23 -07:00
William Douglas ead0c3e12d Only vendor if cargo_vendor is true not just if it exists
Signed-off-by: William Douglas <william.douglas@intel.com>
2023-03-27 10:19:53 -07:00
clrbuilder 610754dddd Update packages file for version 38640
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-03-24 13:27:46 -07:00
William Douglas ef9417d080 Add checks to ensure options.conf is valid
Signed-off-by: William Douglas <william.douglas@intel.com>
2023-03-24 11:18:11 -07:00
William Douglas dcc38f2193 Add vendor target
Add handling for a vendor target that will handle specific vendor
requirements from a package's options.conf.

The initial change adds handling for 'cargo vendor', creating a new
repo in the configured git repositiory and setting up the ARCHIVES
variable in the package's Makefile.

If the repo already exists, the tooling will check if a repo change
was detected after re-vendoring the sources. If a change is detected
the new content will be pushed and the ARCHIVES variable will be
updated.

Signed-off-by: William Douglas <william.douglas@intel.com>
2023-03-23 15:01:17 -07:00
clrbuilder 9be96daea4 Update packages file for version 38630
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-03-23 00:07:26 -07:00
clrbuilder 1350df4df6 Update packages file for version 38620
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-03-21 14:46:06 -07:00
clrbuilder 878e4e2b0b Update packages file for version 38570
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-03-16 00:07:52 -07:00
5 changed files with 388 additions and 120 deletions
+5
View File
@@ -157,6 +157,10 @@ pullrebase:
fi \
fi
# help vendor: Attempt to create an updated vendor tar archive if needed
vendor: preautospec-checks pullrebase clean-old-content
@ $(TOPLVL)/projects/common/vendor.py $(firstword $(NEWURL) $(URL)) $(PKG_NAME) $(VND_BASE_URL)
preautospec-checks:
#help autospec: automatically generates a specfile. If there is
@@ -171,6 +175,7 @@ autospec: preautospec-checks pullrebase localreponotice clean-old-content
exit 1; \
fi
@printf 'PKG_NAME := %s\nURL = %s\nARCHIVES = %s\n\ninclude ../common/Makefile.common\n' $(PKG_NAME) '$(firstword $(value NEWURL) $(value URL))' '$(value ARCHIVES)' > Makefile
@$(MAKE) vendor
python3 $(TOPLVL)/projects/autospec/autospec/autospec.py \
--target . \
--integrity \
+3
View File
@@ -35,6 +35,9 @@ PKG_BASE_URL = https://github.com/clearlinux-pkgs
# Location where project repos are hosted.
PRJ_BASE_URL = https://github.com/clearlinux
# Location where vendor repos are hosted.
VND_BASE_URL =
# Project repos that are integral to the common tooling.
PROJ_PKGS = autospec clr-bundles common
+9 -3
View File
@@ -126,11 +126,17 @@ endif
pull: ${PULL_PKGS}
#help clean-pkgs-dir: For packages that are no longer present in the distro,
#help removes the associated package repos from the ./packages tree
#help removes the associated package repos from the ./packages tree and stores
#help it in packages_old. If it already exists in packages_old, skip it.
clean-pkgs-dir: $(PACKAGES_FILE)
@for p in ${PKGS_ORPHANED}; do \
echo "Removing $$p from packages, it is no longer in common/packages."; \
rm -rf packages/$$p; \
mkdir -p packages_old; \
if [ -d "packages_old/$$p" ]; then \
echo "packages_old/$$p already exists, not touching it"; \
else \
echo "Moving $$p from packages to packages_old, as it is no longer in common/packages."; \
mv packages/$$p packages_old/$$p; \
fi; \
done
@echo "packages directory cleaned";
+243 -117
View File
File diff suppressed because it is too large Load Diff
Executable
+128
View File
@@ -0,0 +1,128 @@
#!/usr/bin/env python3
import argparse
import configparser
import os
import re
import shutil
import subprocess
import tempfile
import time
from git import Repo
import requests
def vendor_check():
if not os.path.isfile('options.conf'):
return False
config = configparser.ConfigParser(interpolation=None)
config.read('options.conf')
if 'autospec' not in config.sections():
return False
if vendor := config['autospec'].get('cargo_vendor'):
if vendor == "true":
return 'cargo'
return False
def get_args():
parser = argparse.ArgumentParser()
parser.add_argument('url')
parser.add_argument('name')
parser.add_argument('git')
return parser.parse_args()
def setup_content(url):
tdir = tempfile.mkdtemp()
outfile = os.path.join(tdir, os.path.basename(url))
response = requests.get(url, timeout=30)
response.raise_for_status()
with open(outfile, 'wb') as cfile:
cfile.write(response.content)
subprocess.run(f"tar xf {outfile}", shell=True, cwd=tdir, check=True)
os.remove(outfile)
return tdir
def setup_cargo_vendor(path):
for dirpath, _, files in os.walk(path):
for fname in files:
if fname == "Cargo.toml":
return dirpath
return False
def update_cargo_vendor(path, name, git):
git_uri = os.path.join(git, name)
vendor_path = os.path.join(path, 'vendor')
subprocess.run(f"git clone {git_uri} {vendor_path}", shell=True, check=True)
vendor_git = os.path.join(vendor_path, '.git')
if not os.path.isdir(vendor_git):
# initialize a git repo
subprocess.run('git init .', cwd=vendor_path, shell=True, check=True)
subprocess.run(f"git remote add origin {git_uri}", cwd=vendor_path,
shell=True, check=True)
backup_vendor_git = os.path.join(path, 'clear-linux-vendor-git')
subprocess.run(f"cp -a {vendor_git} {backup_vendor_git}", cwd=path,
shell=True, check=True)
shutil.rmtree(vendor_path)
subprocess.run('cargo vendor', cwd=path, shell=True, check=True)
subprocess.run(f"cp -a {backup_vendor_git} {vendor_git}", cwd=path,
shell=True, check=True)
repo = Repo(vendor_path)
if not (len(repo.untracked_files) > 0 or repo.is_dirty()):
return False
subprocess.run('git add .', cwd=vendor_path, shell=True, check=True)
subprocess.run('git commit -m "vendor update"', cwd=vendor_path,
shell=True, check=True)
gmt = time.gmtime()
tag = f"{gmt.tm_year}-{gmt.tm_mon:02d}-{gmt.tm_mday:02d}-{gmt.tm_hour:02d}-{gmt.tm_min:02d}-{gmt.tm_sec:02d}"
subprocess.run(f"git tag {tag}", cwd=vendor_path, shell=True,
check=True)
subprocess.run(f"git push origin main:main {tag}", cwd=vendor_path,
shell=True, check=True)
time.sleep(30)
return tag
def update_cargo_sources(name, tag):
makefile = []
archive_match = os.path.join('$(CGIT_BASE_URL)', 'vendor', name,
'snapshot', name)
with open('Makefile', encoding='utf8') as mfile:
for line in mfile.readlines():
if line.startswith('ARCHIVES'):
if re.match(archive_match + '[a-zA-Z0-9_\-.]+\.tar\.xz', line):
new_archives = re.sub(archive_match + '[a-zA-Z0-9_\-.]+\.tar\.xz',
f"{archive_match}-{tag}.tar.xz\n", line)
else:
new_archives = f"ARCHIVES = {archive_match}-{tag}.tar.xz ./vendor\n"
makefile.append(new_archives)
else:
makefile.append(line)
with open('Makefile', 'w', encoding='utf8') as mfile:
mfile.writelines(makefile)
def main():
vtype = vendor_check()
if not vtype:
return
args = get_args()
tdir = setup_content(args.url)
if vtype == 'cargo':
vdir = setup_cargo_vendor(tdir)
if vdir:
tag = update_cargo_vendor(vdir, args.name, args.git)
if tag:
update_cargo_sources(args.name, tag)
shutil.rmtree(tdir)
if __name__ == '__main__':
main()