Compare commits

...

35 Commits

Author SHA1 Message Date
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
clrbuilder c1a0943a4e Update packages file for version 38550
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-03-14 15:24:17 -07:00
clrbuilder e7bb8022eb Update packages file for version 38530
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-03-14 00:06:59 -07:00
clrbuilder 854d1383df Update packages file for version 38520
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-03-10 11:55:36 -08:00
clrbuilder 34929eedc8 Update packages file for version 38410
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-03-07 00:06:38 -08:00
clrbuilder 37ceeabcf2 Update packages file for version 38380
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-02-28 18:04:55 -08:00
clrbuilder 22bcab527f Update packages file for version 38340
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-02-24 12:53:07 -08:00
clrbuilder 96827eba4b Update packages file for version 38300
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-02-21 00:06:13 -08:00
clrbuilder 209c76a22d Update packages file for version 38290
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-02-20 14:57:21 -08:00
clrbuilder 9b30546825 Update packages file for version 38280
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-02-16 00:06:23 -08:00
clrbuilder e114f003f5 Update packages file for version 38270
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-02-14 00:05:54 -08:00
clrbuilder be6d64a55b Update packages file for version 38260
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-02-13 14:26:47 -08:00
clrbuilder f9b8dab2a6 Update packages file for version 38220
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-02-07 00:07:51 -08:00
clrbuilder d324a604f2 Update packages file for version 38210
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-02-05 08:21:05 -08:00
clrbuilder 50dce59f66 Update packages file for version 38200
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-02-02 00:07:04 -08:00
clrbuilder 089cb1b6b6 Update packages file for version 38190
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-02-01 12:27:31 -08:00
clrbuilder 3c76c8ff41 Update packages file for version 38180
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-01-31 16:42:23 -08:00
clrbuilder bc355116ae Update packages file for version 38120
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-01-24 00:07:13 -08:00
clrbuilder 2263c2cc23 Update packages file for version 38100
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-01-19 00:07:21 -08:00
clrbuilder 3e53d2c8f4 Update packages file for version 38080
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-01-17 00:09:44 -08:00
clrbuilder abba4bc351 Update packages file for version 38070
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-01-13 14:08:46 -08:00
clrbuilder 56c84563c3 Update packages file for version 38040
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-01-11 10:37:57 -08:00
clrbuilder 30aac6114d Update packages file for version 38030
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2023-01-10 00:09:03 -08:00
4 changed files with 248 additions and 2 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
+112 -2
View File
@@ -317,6 +317,7 @@ R-dendextend
R-desc
R-devtools
R-dfoptim
R-diagram
R-dichromat
R-diffobj
R-diffusionMap
@@ -446,6 +447,7 @@ R-geojson
R-geometry
R-gert
R-getopt
R-gfonts
R-ggfortify
R-ggjoy
R-ggplot2
@@ -491,6 +493,7 @@ R-htmlwidgets
R-httpcode
R-httpuv
R-httr
R-httr2
R-hunspell
R-hwriter
R-hypergeo
@@ -582,6 +585,7 @@ R-mathjaxr
R-matrixStats
R-matrixcalc
R-maxLik
R-mclogit
R-mclust
R-mcmc
R-mda
@@ -1032,6 +1036,7 @@ Vulkan-Headers
Vulkan-Loader
Vulkan-Tools
WALinuxAgent
WPEBackend-fdo
WireGuard
XStatic-term.js
Z3
@@ -1288,6 +1293,7 @@ compat-libpng-soname12
compat-libsigc++-soname20
compat-libsoup-soname-24
compat-libva-soname1
compat-libvpx-soname7
compat-lua-52
compat-lua-53
compat-openssl-soname11
@@ -1482,6 +1488,7 @@ font-util
fontconfig
fontforge
fonttools
forkstat
fortune-mod
fossil
frameworkintegration
@@ -1593,6 +1600,7 @@ gnome-music
gnome-online-accounts
gnome-panel
gnome-photos
gnome-remote-desktop
gnome-screensaver
gnome-screenshot
gnome-session
@@ -2115,6 +2123,7 @@ libgee
libgeotiff
libgit2
libgit2-glib
libglvnd
libgnome-keyring
libgnomekbd
libgpg-error
@@ -2261,6 +2270,7 @@ libtorrent-rasterbar
libtraceevent
libtracefs
libudev0-shim
libunibreak
libuninameslist
libunistring
libunwind
@@ -2286,6 +2296,7 @@ libwebp
libwnck
libwnck3
libwpd
libwpe
libwpg
libwps
libxcvt
@@ -2320,6 +2331,8 @@ linux-lts2018
linux-lts2019
linux-lts2020
linux-lts2021
linux-ltscurrent
linux-ltsprev
linux-mainline
linux-oracle
linux-preempt-rt
@@ -2507,6 +2520,7 @@ nginx-mainline
nginx-rtmp-module
nginx-upload-module
nginx_cookie_flag_module
ngspice
ngx-fancyindex
ngx_brotli
ngx_http_auth_pam_module
@@ -2540,6 +2554,7 @@ numactl
numatop
numlockx
numpy-stl
nv-codec-headers
nvme-cli
oath-toolkit
obs-studio
@@ -2816,6 +2831,7 @@ perl-DateTime-Format-Natural
perl-DateTime-Format-Pg
perl-DateTime-Format-Strptime
perl-DateTime-Format-W3CDTF
perl-DateTime-HiRes
perl-DateTime-Locale
perl-DateTime-TimeZone
perl-Debug-ShowStuff
@@ -3318,6 +3334,7 @@ perl-Test-MemoryGrowth
perl-Test-Metrics-Any
perl-Test-MockModule
perl-Test-MockTime
perl-Test-MockTime-HiRes
perl-Test-More-UTF8
perl-Test-Most
perl-Test-Needs
@@ -3613,6 +3630,7 @@ pyotp
pyparted
pypi-absl_py
pypi-abydos
pypi-accelerate
pypi-acme
pypi-adal
pypi-aiodns
@@ -3621,8 +3639,10 @@ pypi-aiohttp
pypi-aiohttp_cors
pypi-aiosignal
pypi-aiosmtpd
pypi-aiosqlite
pypi-alabaster
pypi-altgraph
pypi-amqp
pypi-aniso8601
pypi-ansi2html
pypi-ansible_builder
@@ -3638,6 +3658,7 @@ pypi-argh
pypi-argon2_cffi
pypi-argon2_cffi_bindings
pypi-argparse
pypi-argparse_manpage
pypi-arrow
pypi-asgiref
pypi-asn1crypto
@@ -3653,6 +3674,7 @@ pypi-asyncssh
pypi-asynctest
pypi-atomicwrites
pypi-atpublic
pypi-attrdict
pypi-attrs
pypi-autocommand
pypi-automat
@@ -3676,8 +3698,10 @@ pypi-bashlex
pypi-bcrypt
pypi-beautifulsoup4
pypi-beniget
pypi-billiard
pypi-binaryornot
pypi-bindep
pypi-bitmath
pypi-bkcharts
pypi-black
pypi-bleach
@@ -3700,7 +3724,10 @@ pypi-bumpversion
pypi-cachecontrol
pypi-cached_property
pypi-cachetools
pypi-cachez
pypi-cachy
pypi-cairocffi
pypi-cairosvg
pypi-calver
pypi-capturer
pypi-cattrs
@@ -3728,11 +3755,13 @@ pypi-click_completion
pypi-click_help_colors
pypi-click_log
pypi-clikit
pypi-cloudevents
pypi-cloudflare
pypi-cmarkgfm
pypi-cmd2
pypi-codecov
pypi-colorama
pypi-coloredlogs
pypi-colorlog
pypi-columnize
pypi-comm
@@ -3756,6 +3785,7 @@ pypi-cryptography
pypi-cryptography_vectors
pypi-cs
pypi-cssselect
pypi-cssselect2
pypi-cu2qu
pypi-curio
pypi-cve_bin_tool
@@ -3769,11 +3799,18 @@ pypi-dataclasses
pypi-datetime
pypi-debugpy
pypi-decorator
pypi-deepmerge
pypi-deepspeed
pypi-deprecated
pypi-deprecation
pypi-devpi_client
pypi-devpi_common
pypi-devpi_process
pypi-devpi_server
pypi-diff_cover
pypi-diff_match_patch
pypi-diffoscope
pypi-diffusers
pypi-dill
pypi-diskcache
pypi-distlib
@@ -3807,6 +3844,7 @@ pypi-eternalegypt
pypi-etils
pypi-etuples
pypi-evdev
pypi-eventlet
pypi-exceptiongroup
pypi-exdir
pypi-execnet
@@ -3814,6 +3852,7 @@ pypi-executing
pypi-expandvars
pypi-expecttest
pypi-fabric
pypi-fairscale
pypi-falcon
pypi-fasteners
pypi-fastimport
@@ -3828,6 +3867,7 @@ pypi-flake8_docstrings
pypi-flake8_import_order
pypi-flaky
pypi-flask
pypi-flatbuffers
pypi-flatten_json
pypi-flit
pypi-flit_core
@@ -3847,6 +3887,8 @@ pypi-geventhttpclient
pypi-ghp_import
pypi-gitdb
pypi-gitpython
pypi-glad
pypi-glfw
pypi-gmqtt
pypi-google_api_core
pypi-google_api_python_client
@@ -3854,14 +3896,19 @@ pypi-google_apitools
pypi-google_auth
pypi-google_auth_httplib2
pypi-google_auth_oauthlib
pypi-google_cloud_core
pypi-google_cloud_secret_manager
pypi-google_cloud_storage
pypi-google_crc32c
pypi-google_pasta
pypi-google_reauth
pypi-google_resumable_media
pypi-googleapis_common_protos
pypi-gql
pypi-graphql_core
pypi-graphviz
pypi-greenlet
pypi-griffe
pypi-grpc_google_iam_v1
pypi-grpcio
pypi-grpcio_channelz
@@ -3877,19 +3924,24 @@ pypi-h5py
pypi-hammock
pypi-hatch_fancy_pypi_readme
pypi-hatch_nodejs_version
pypi-hatch_requirements_txt
pypi-hatch_vcs
pypi-hatchling
pypi-heapdict
pypi-hjson
pypi-hkp4py
pypi-home_assistant_frontend
pypi-hpack
pypi-hsluv
pypi-html5lib
pypi-httpcore
pypi-httplib2
pypi-httpretty
pypi-httpx
pypi-huggingface_hub
pypi-humanfriendly
pypi-humanize
pypi-hupper
pypi-hyperframe
pypi-hyperlink
pypi-hypothesis
@@ -3911,6 +3963,7 @@ pypi-inflect
pypi-inflection
pypi-influxdb
pypi-iniconfig
pypi-installer
pypi-intervaltree
pypi-invoke
pypi-iocapture
@@ -3961,11 +4014,15 @@ pypi-jupyter_events
pypi-jupyter_nbgallery
pypi-jupyter_packaging
pypi-jupyter_server
pypi-jupyter_server_fileid
pypi-jupyter_server_mathjax
pypi-jupyter_server_terminals
pypi-jupyter_server_ydoc
pypi-jupyter_sphinx
pypi-jupyter_ydoc
pypi-jupyterlab
pypi-jupyterlab_launcher
pypi-jupyterlab_link_share
pypi-jupyterlab_pygments
pypi-jupyterlab_server
pypi-jupyterlab_widgets
@@ -3981,9 +4038,14 @@ pypi-kubernetes
pypi-langcodes
pypi-lark_parser
pypi-latexcodec
pypi-lavacli
pypi-lazy
pypi-lazy_loader
pypi-lazy_object_proxy
pypi-ldap3
pypi-libarchive_c
pypi-libevdev
pypi-lightning_utilities
pypi-linkify_it_py
pypi-livereload
pypi-llfuse
@@ -4000,6 +4062,7 @@ pypi-markdown2
pypi-markdown_it_py
pypi-matplotlib
pypi-matplotlib_inline
pypi-maturin
pypi-mdit_py_plugins
pypi-mdurl
pypi-mergedeep
@@ -4007,7 +4070,13 @@ pypi-meson_python
pypi-mido
pypi-minikanren
pypi-mistune
pypi-mkdocs
pypi-mkdocs_autorefs
pypi-mkdocs_exclude
pypi-mkdocs_material_extensions
pypi-mkdocstrings
pypi-mkdocstrings_python
pypi-ml_dtypes
pypi-mock
pypi-modulegraph
pypi-molecule
@@ -4061,12 +4130,14 @@ pypi-onnx
pypi-opcodes
pypi-openshift
pypi-opt_einsum
pypi-ordered_set
pypi-ouimeaux
pypi-outcome
pypi-ovirt_imageio
pypi-packaging
pypi-paho_mqtt
pypi-pandocfilters
pypi-parameterized
pypi-paramiko
pypi-parse
pypi-parse_type
@@ -4074,6 +4145,7 @@ pypi-parsedatetime
pypi-parsley
pypi-parso
pypi-partd
pypi-passlib
pypi-paste
pypi-pastedeploy
pypi-pastel
@@ -4089,11 +4161,14 @@ pypi-pep517
pypi-pep621
pypi-pep8
pypi-perl
pypi-persist_queue
pypi-persistent
pypi-pexpect
pypi-phabricator
pypi-pickleshare
pypi-picobox
pypi-pid
pypi-pidigits
pypi-pillow
pypi-pint
pypi-pip
@@ -4101,6 +4176,8 @@ pypi-pip_tools
pypi-pkgconfig
pypi-pkginfo
pypi-pkgutil_resolve_name
pypi-plaster
pypi-plaster_pastedeploy
pypi-platformdirs
pypi-plotly
pypi-pluggy
@@ -4131,6 +4208,7 @@ pypi-pure_eval
pypi-purestorage
pypi-purity_fb
pypi-py
pypi-py3nvml
pypi-py_cpuinfo
pypi-pyaml
pypi-pyasn1
@@ -4176,7 +4254,9 @@ pypi-pyopenssl
pypi-pyparsing
pypi-pyperclip
pypi-pyperf
pypi-pypowerflex
pypi-pyproject_api
pypi-pyproject_hooks
pypi-pyproject_metadata
pypi-pyprojectx
pypi-pypsrp
@@ -4184,6 +4264,7 @@ pypi-pyqrcode
pypi-pyqt6_sip
pypi-pyqt_builder
pypi-pyquery
pypi-pyramid
pypi-pyreadline
pypi-pyrfc3339
pypi-pyro4
@@ -4237,6 +4318,7 @@ pypi-python_version
pypi-python_xlib
pypi-pythran
pypi-pytoolconfig
pypi-pytorch_lightning
pypi-pytz
pypi-pytz_deprecation_shim
pypi-pyu2f
@@ -4273,10 +4355,14 @@ pypi-requirements_parser
pypi-resolvelib
pypi-responses
pypi-restructuredtext_lint
pypi-retrolab
pypi-retry
pypi-retry_decorator
pypi-retryz
pypi-retype
pypi-rfc3339_validator
pypi-rfc3986
pypi-rfc3986_validator
pypi-rfc3987
pypi-rich
pypi-rjsmin
@@ -4292,9 +4378,9 @@ pypi-ruamel.yaml.clib
pypi-s3transfer
pypi-salib
pypi-sanic_routing
pypi-scikit-learn
pypi-scikit_build
pypi-scikit_image
pypi-scikit_learn
pypi-scp
pypi-scrypt
pypi-seaborn
@@ -4305,6 +4391,7 @@ pypi-selenium
pypi-selinux
pypi-semantic_version
pypi-send2trash
pypi-sentencepiece
pypi-sentinels
pypi-sentry_sdk
pypi-seqdiag
@@ -4321,6 +4408,7 @@ pypi-shapely
pypi-shellingham
pypi-simplegeneric
pypi-six
pypi-slugify
pypi-smart_open
pypi-smartypants
pypi-smmap
@@ -4338,10 +4426,12 @@ pypi-sphinx_feature_classification
pypi-sphinx_gallery
pypi-sphinx_issues
pypi-sphinx_last_updated_by_git
pypi-sphinx_mdinclude
pypi-sphinx_notfound_page
pypi-sphinx_rtd_theme
pypi-sphinx_theme_builder
pypi-sphinx_togglebutton
pypi-sphinxcontrib.jquery
pypi-sphinxcontrib_apidoc
pypi-sphinxcontrib_applehelp
pypi-sphinxcontrib_bibtex
@@ -4369,7 +4459,10 @@ pypi-sqlparse
pypi-sshtunnel
pypi-stack_data
pypi-statsmodels
pypi-storops
pypi-strictyaml
pypi-subprocess_tee
pypi-suds
pypi-sure
pypi-svg.path
pypi-tabulate
@@ -4391,17 +4484,20 @@ pypi-three_merge
pypi-tifffile
pypi-tinycss2
pypi-tldextract
pypi-tokenizers
pypi-toml
pypi-tomli
pypi-tomli_w
pypi-tomlkit
pypi-toolz
pypi-torchmetrics
pypi-tornado
pypi-tornado_xstatic
pypi-tox
pypi-tqdm
pypi-traitlets
pypi-trampolim
pypi-translationstring
pypi-trimesh
pypi-trio
pypi-trio_websocket
@@ -4449,6 +4545,10 @@ pypi-urwid
pypi-user_agents
pypi-userpath
pypi-uvloop
pypi-venusian
pypi-verboselogs
pypi-versioneer
pypi-vine
pypi-virtualenv
pypi-volatile
pypi-voluptuous
@@ -4473,6 +4573,7 @@ pypi-wrapt
pypi-wsgiproxy2
pypi-wsproto
pypi-wurlitzer
pypi-xgboost
pypi-xmldiff
pypi-xmljson
pypi-xmlschema
@@ -4492,11 +4593,14 @@ pypi-xstatic_objectpath
pypi-xstatic_roboto_fontface
pypi-xvfbwrapper
pypi-xyzservices
pypi-y_py
pypi-yamllint
pypi-yamlloader
pypi-yapf
pypi-yarg
pypi-yarl
pypi-yattag
pypi-ypy_websocket
pypi-zabbix_api
pypi-zc.lockfile
pypi-zeroconf
@@ -4537,6 +4641,7 @@ python-utils
python-zeep
python-zstandard
python3
pytorch
pyudev
qalculate-gtk
qatlib
@@ -4619,6 +4724,7 @@ rest
restic
rhythmbox
rinutils
ripgrep
rlwrap
rng-tools
robin-map
@@ -4663,6 +4769,7 @@ seahorse
seatd
sed
seer
sentencepiece
serf
setserial
setxkbmap
@@ -4684,9 +4791,11 @@ slirp4netns
slurm
smartcols
smartmontools
smemstat
snappy
socat
sof-bin
softflowd
solid
sonnet
sos
@@ -4746,7 +4855,6 @@ sympy
syndication
synergy
syntax-highlighting
sysdig
syslinux
sysprof
sysstat
@@ -4805,6 +4913,7 @@ tracker
tracker-miners
tree
tree-sitter
trurl
tzdata
uchardet
ucpp
@@ -4862,6 +4971,7 @@ wayland-protocols
wcslib
webkitgtk
webkitgtk50
webkitgtk60
weechat
weston
wget
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()