Beispiel #1
0
def check_pkg(upload, upload_copy, session):
    missing = []
    changes = os.path.join(upload_copy.directory, upload.changes.changesname)
    suite_name = upload.target_suite.suite_name
    handler = PolicyQueueUploadHandler(upload, session)
    missing = [(m['type'], m["package"])
               for m in handler.missing_overrides(hints=missing)]

    less_cmd = ("less", "-r", "-")
    less_process = subprocess.Popen(less_cmd, bufsize=0, stdin=subprocess.PIPE)
    try:
        less_fd = less_process.stdin
        less_fd.write(
            six.ensure_binary(
                dak.examine_package.display_changes(suite_name, changes)))

        source = upload.source
        if source is not None:
            source_file = os.path.join(
                upload_copy.directory,
                os.path.basename(source.poolfile.filename))
            less_fd.write(
                six.ensure_binary(
                    dak.examine_package.check_dsc(suite_name, source_file)))

        for binary in upload.binaries:
            binary_file = os.path.join(
                upload_copy.directory,
                os.path.basename(binary.poolfile.filename))
            examined = dak.examine_package.check_deb(suite_name, binary_file)
            # We always need to call check_deb to display package relations for every binary,
            # but we print its output only if new overrides are being added.
            if ("deb", binary.package) in missing:
                less_fd.write(six.ensure_binary(examined))

        less_fd.write(
            six.ensure_binary(dak.examine_package.output_package_relations()))
        less_process.stdin.close()
    except IOError as e:
        if e.errno == errno.EPIPE:
            utils.warn("[examine_package] Caught EPIPE; skipping.")
        else:
            raise
    except KeyboardInterrupt:
        utils.warn("[examine_package] Caught C-c; skipping.")
    finally:
        less_process.communicate()
Beispiel #2
0
def check_pkg (upload, upload_copy, session):
    missing = []
    save_stdout = sys.stdout
    changes = os.path.join(upload_copy.directory, upload.changes.changesname)
    suite_name = upload.target_suite.suite_name
    handler = PolicyQueueUploadHandler(upload, session)
    missing = [(m['type'], m["package"]) for m in handler.missing_overrides(hints=missing)]

    less_cmd = ("less", "-R", "-")
    less_process = daklib.daksubprocess.Popen(less_cmd, bufsize=0, stdin=subprocess.PIPE)
    try:
        sys.stdout = less_process.stdin
        print examine_package.display_changes(suite_name, changes)

        source = upload.source
        if source is not None:
            source_file = os.path.join(upload_copy.directory, os.path.basename(source.poolfile.filename))
            print examine_package.check_dsc(suite_name, source_file)

        for binary in upload.binaries:
            binary_file = os.path.join(upload_copy.directory, os.path.basename(binary.poolfile.filename))
            examined = examine_package.check_deb(suite_name, binary_file)
            # We always need to call check_deb to display package relations for every binary,
            # but we print its output only if new overrides are being added.
            if ("deb", binary.package) in missing:
                print examined

        print examine_package.output_package_relations()
        less_process.stdin.close()
    except IOError as e:
        if e.errno == errno.EPIPE:
            utils.warn("[examine_package] Caught EPIPE; skipping.")
        else:
            raise
    except KeyboardInterrupt:
        utils.warn("[examine_package] Caught C-c; skipping.")
    finally:
        less_process.wait()
        sys.stdout = save_stdout