Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package obs-service-cargo_audit for 
openSUSE:Factory checked in at 2021-06-04 00:33:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/obs-service-cargo_audit (Old)
 and      /work/SRC/openSUSE:Factory/.obs-service-cargo_audit.new.1898 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "obs-service-cargo_audit"

Fri Jun  4 00:33:33 2021 rev:3 rq:897042 version:0.1.3~git0.4f7c8fc

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/obs-service-cargo_audit/obs-service-cargo_audit.changes
  2021-05-20 19:25:31.309828931 +0200
+++ 
/work/SRC/openSUSE:Factory/.obs-service-cargo_audit.new.1898/obs-service-cargo_audit.changes
        2021-06-04 00:33:45.348904540 +0200
@@ -1,0 +2,6 @@
+Wed Jun 02 06:34:49 UTC 2021 - wbr...@suse.de
+
+- Update to version 0.1.3~git0.4f7c8fc:
+  * Add support for selecting a unique lockfile in service usage
+
+-------------------------------------------------------------------

Old:
----
  obs-service-cargo_audit-0.1.2~git0.e25df37.tar.gz

New:
----
  obs-service-cargo_audit-0.1.3~git0.4f7c8fc.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ obs-service-cargo_audit.spec ++++++
--- /var/tmp/diff_new_pack.VY5i80/_old  2021-06-04 00:33:45.792905818 +0200
+++ /var/tmp/diff_new_pack.VY5i80/_new  2021-06-04 00:33:45.796905830 +0200
@@ -22,7 +22,7 @@
 License:        MPL-2.0
 Group:          Development/Tools/Building
 URL:            https://github.com/openSUSE/obs-service-%{service}
-Version:        0.1.2~git0.e25df37
+Version:        0.1.3~git0.4f7c8fc
 Release:        0
 Source:         %{name}-%{version}.tar.gz
 BuildRequires:  python3

++++++ _service ++++++
--- /var/tmp/diff_new_pack.VY5i80/_old  2021-06-04 00:33:45.820905899 +0200
+++ /var/tmp/diff_new_pack.VY5i80/_new  2021-06-04 00:33:45.820905899 +0200
@@ -3,7 +3,7 @@
     <param 
name="url">https://github.com/openSUSE/obs-service-cargo_audit.git</param>
     <param name="versionformat">@PARENT_TAG@~git@TAG_OFFSET@.%h</param>
     <param name="scm">git</param>
-    <param name="revision">v0.1.2</param>
+    <param name="revision">v0.1.3</param>
     <param name="match-tag">v*</param>
     <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param>
     <param name="versionrewrite-replacement">\1</param>

++++++ obs-service-cargo_audit-0.1.2~git0.e25df37.tar.gz -> 
obs-service-cargo_audit-0.1.3~git0.4f7c8fc.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/obs-service-cargo_audit-0.1.2~git0.e25df37/cargo_audit 
new/obs-service-cargo_audit-0.1.3~git0.4f7c8fc/cargo_audit
--- old/obs-service-cargo_audit-0.1.2~git0.e25df37/cargo_audit  2021-05-19 
02:24:02.000000000 +0200
+++ new/obs-service-cargo_audit-0.1.3~git0.4f7c8fc/cargo_audit  2021-06-02 
06:54:54.000000000 +0200
@@ -42,11 +42,13 @@
     description=description, 
formatter_class=argparse.RawDescriptionHelpFormatter
 )
 parser.add_argument("--srcdir")
+parser.add_argument("--lockfile", default=None)
 # We always ignore this parameter.
 parser.add_argument("--outdir")
 args = parser.parse_args()
 
 srcdir = args.srcdir
+lockfile = args.lockfile
 
 def find_file(path, filename):
     return [
@@ -56,18 +58,18 @@
     ]
 
 def generate_lock(path):
-    log.debug(f"Running cargo generate-lockfile against: {path}/Cargo.toml")
+    log.debug(f" Running cargo generate-lockfile against: {path}/Cargo.toml")
     cmd = [
         "cargo", "generate-lockfile", "-q",
         "--manifest-path", f"{path}/Cargo.toml",
     ]
     dcmd = " ".join(cmd)
-    log.debug(f"Running {dcmd}")
+    log.debug(f" Running {dcmd}")
     proc = run(cmd, check=False, stdout=PIPE, stderr=STDOUT)
     output = proc.stdout.decode("utf-8").strip()
-    log.debug(f"return: {proc.returncode}")
+    log.debug(f" return: {proc.returncode}")
     if proc.returncode != 0:
-        log.error(f"Could not generate Cargo.lock under {path}")
+        log.error(f" Could not generate Cargo.lock under {path}")
         exit(1)
 
 def cargo_audit(lock_file):
@@ -92,42 +94,47 @@
         # Issue may have been found!
         vuln_count = details["vulnerabilities"]["count"]
         if vuln_count > 0:
-            log.error(f"possible vulnerabilties: {vuln_count}")
+            log.error(f" possible vulnerabilties: {vuln_count}")
             vulns = details["vulnerabilities"]["list"]
             for vuln in vulns:
                 affects = vuln["advisory"]["package"]
                 cvss = vuln["advisory"]["cvss"]
                 vid = vuln["advisory"]["id"]
                 categories = vuln["advisory"]["categories"]
-                log.error(f"???? {vid} -> crate: {affects}, cvss: {cvss}, 
class: {categories}")
-            log.error(f"For more information you SHOULD inspect the output of 
cargo-audit manually for {lock_file}.")
+                log.error(f" ???? {vid} -> crate: {affects}, cvss: {cvss}, 
class: {categories}")
+            log.error(f" For more information you SHOULD inspect the output of 
cargo-audit manually for {lock_file}.")
             return True
-    log.info(f"??? No known issues detected in {lock_file}")
+    log.info(f" ??? No known issues detected in {lock_file}")
     return False
 
 def main():
-    log.info(f"Running OBS Source Service ????: {service_name}")
-    log.info(f"Current working dir: {os.getcwd()}")
-    log.info(f"Searching for Cargo.lock in: {srcdir}")
-
-    cargo_lock_paths = find_file(srcdir, "Cargo.lock")
-
-    if not cargo_lock_paths:
-        log.info(f"No Rust Cargo.lock found under {srcdir}")
-        log.info(f"Searching for Cargo.toml in: {srcdir}")
-        if find_file(srcdir, "Cargo.toml"):
-            generate_lock(srcdir)
-        else:
-            log.error(f"No Rust Cargo.toml found under {srcdir}")
-            exit(1)
+    log.info(f" Running OBS Source Service ????: {service_name}")
+    log.debug(f" Current working dir: {os.getcwd()}")
+
+    cargo_lock_paths = []
+    if lockfile:
+        cargo_lock_paths = [lockfile]
+        log.info(f" _service configured lock file: {lockfile}")
     else:
-        log.debug(f"Detected Rust lock files: {cargo_lock_paths}")
+        log.info(f" Searching for Cargo.lock in: {srcdir}")
+        cargo_lock_paths = find_file(srcdir, "Cargo.lock")
+
+        if not cargo_lock_paths:
+            log.info(f" No Rust Cargo.lock found under {srcdir}")
+            log.info(f" Searching for Cargo.toml in: {srcdir}")
+            if find_file(srcdir, "Cargo.toml"):
+                generate_lock(srcdir)
+            else:
+                log.error(f" No Rust Cargo.toml found under {srcdir}")
+                exit(1)
+        else:
+            log.debug(f" Detected Rust lock files: {cargo_lock_paths}")
 
     status = any([cargo_audit(cargo_lock_path) for cargo_lock_path in 
cargo_lock_paths])
     if status:
-        log.error("???? Vulnerabilities may have been found. You must review 
these.")
+        log.error(" ??????  Vulnerabilities may have been found. You must 
review these.")
         exit(1)
-    log.info("No known issues detected ????????")
+    log.info(" ???? ???? No known issues detected")
 
 if __name__ == "__main__":
     main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/obs-service-cargo_audit-0.1.2~git0.e25df37/do_scan.py 
new/obs-service-cargo_audit-0.1.3~git0.4f7c8fc/do_scan.py
--- old/obs-service-cargo_audit-0.1.2~git0.e25df37/do_scan.py   1970-01-01 
01:00:00.000000000 +0100
+++ new/obs-service-cargo_audit-0.1.3~git0.4f7c8fc/do_scan.py   2021-06-02 
06:54:54.000000000 +0200
@@ -0,0 +1,95 @@
+#!/usr/bin/python3
+import subprocess
+import os
+import xml.etree.ElementTree as ET
+
+
+WHATDEPENDS = ["osc", "whatdependson", "openSUSE:Factory", "rust", "standard", 
"x86_64"]
+
+CHECKOUT = ["osc", "co", "openSUSE:Factory"]
+UPDATE = ["osc", "up", "openSUSE:Factory"]
+
+
+EXCLUDE = set([
+    'MozillaFirefox',
+    'MozillaThunderbird',
+    'rust',
+    'seamonkey',
+    'meson:test'
+])
+
+def list_whatdepends():
+    # osc whatdependson openSUSE:Factory rust standard x86_64
+    raw_depends = subprocess.check_output(WHATDEPENDS, encoding='UTF-8')
+
+    # Split on new lines
+    raw_depends = raw_depends.split('\n')
+
+    # First line is our package name, so remove it.
+    raw_depends = raw_depends[1:]
+
+    # Clean up white space now.
+    raw_depends = [x.strip() for x in raw_depends]
+
+    # Remove any empty strings.
+    raw_depends = [x for x in raw_depends if x != '']
+
+    # Do we have anything that we should exclude?
+    raw_depends = [x for x in raw_depends if x not in EXCLUDE]
+
+    return raw_depends
+
+def checkout_or_update(pkgname):
+    if os.path.exists('openSUSE:Factory') and 
os.path.exists(f'openSUSE:Factory/{pkgname}'):
+        print(f"osc up openSUSE:Factory/{pkgname}")
+        subprocess.check_call(["osc", "up", f"openSUSE:Factory/{pkgname}"])
+    else:
+        print(f"osc co openSUSE:Factory/{pkgname}")
+        subprocess.check_call(["osc", "co", f"openSUSE:Factory/{pkgname}"])
+
+def does_have_cargo_audit(pkgname):
+    service = f"openSUSE:Factory/{pkgname}/_service"
+    if os.path.exists(service):
+        root_node = ET.parse(service).getroot()
+        for tag in root_node.findall('service'):
+            if tag.attrib['name'] == 'cargo_audit':
+                return True
+    return False
+
+def do_services(pkgname):
+    try:
+        out = subprocess.check_output(["osc", "service", "ra"], 
cwd=f"openSUSE:Factory/{pkgname}", encoding='UTF-8', stderr=subprocess.STDOUT)
+        print(f"??? -- passed")
+    except subprocess.CalledProcessError as e:
+        print(f"???? -- services failed")
+        print(e.stdout)
+
+if __name__ == '__main__':
+    depends = list_whatdepends()
+
+    # For testing, we hardcode the list for dev.
+    # depends = ['kanidm', 'librsvg', 'rust-cbindgen']
+
+    # Check them out, or update if they exist.
+    auditable_depends = []
+    for pkgname in depends:
+        print("---")
+        checkout_or_update(pkgname)
+        # do they have cargo_audit as a service?
+        has_audit = does_have_cargo_audit(pkgname)
+        if not has_audit:
+            print(f"??????   
https://build.opensuse.org/package/show/openSUSE:Factory/{pkgname} missing 
cargo_audit service")
+            print(f"??????   
https://build.opensuse.org/package/users/openSUSE:Factory/{pkgname}";)
+            # subprocess.check_call(["osc", "maintainer", 
f"openSUSE:Factory/{pkgname}"])
+        else:
+            # If they do, run services. We may not know what they need for 
this to work, so we
+            # have to run the full stack.
+            auditable_depends.append(pkgname)
+
+    for pkgname in auditable_depends:
+        print("---")
+        print(f"???? running services for {pkgname} ...")
+        do_services(pkgname)
+
+    print("--- complete")
+

Reply via email to