forked from M-Labs/artiq
afws_client: update
This commit is contained in:
parent
6085fe3319
commit
a028b5c9f7
|
@ -29,7 +29,19 @@ def get_artiq_rev():
|
||||||
import artiq
|
import artiq
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return None
|
return None
|
||||||
return artiq._version.get_rev()
|
rev = artiq._version.get_rev()
|
||||||
|
if rev == "unknown":
|
||||||
|
return None
|
||||||
|
return rev
|
||||||
|
|
||||||
|
|
||||||
|
def get_artiq_major_version():
|
||||||
|
try:
|
||||||
|
import artiq
|
||||||
|
except ImportError:
|
||||||
|
return None
|
||||||
|
version = artiq._version.get_version()
|
||||||
|
return version.split(".")[0]
|
||||||
|
|
||||||
|
|
||||||
def zip_unarchive(data, directory):
|
def zip_unarchive(data, directory):
|
||||||
|
@ -70,17 +82,20 @@ class Client:
|
||||||
self.send_command("LOGIN", username, password)
|
self.send_command("LOGIN", username, password)
|
||||||
return self.read_reply() == ["HELLO"]
|
return self.read_reply() == ["HELLO"]
|
||||||
|
|
||||||
def build(self, rev, variant, log):
|
def build(self, major_ver, rev, variant, log):
|
||||||
if not variant:
|
if not variant:
|
||||||
variants = self.get_variants()
|
variants = self.get_variants()
|
||||||
if len(variants) != 1:
|
if len(variants) != 1:
|
||||||
raise ValueError("User can build more than 1 variant - need to specify")
|
raise ValueError("User can build more than 1 variant - need to specify")
|
||||||
variant = variants[0][0]
|
variant = variants[0][0]
|
||||||
print("Building variant: {}".format(variant))
|
print("Building variant: {}".format(variant))
|
||||||
if log:
|
build_args = (
|
||||||
self.send_command("BUILD", rev, variant, "LOG_ENABLE")
|
rev,
|
||||||
else:
|
variant,
|
||||||
self.send_command("BUILD", rev, variant)
|
"LOG_ENABLE" if log else "LOG_DISABLE",
|
||||||
|
major_ver,
|
||||||
|
)
|
||||||
|
self.send_command("BUILD", *build_args)
|
||||||
reply = self.read_reply()[0]
|
reply = self.read_reply()[0]
|
||||||
if reply != "BUILDING":
|
if reply != "BUILDING":
|
||||||
return reply, None
|
return reply, None
|
||||||
|
@ -134,6 +149,7 @@ def main():
|
||||||
action = parser.add_subparsers(dest="action")
|
action = parser.add_subparsers(dest="action")
|
||||||
action.required = True
|
action.required = True
|
||||||
act_build = action.add_parser("build", help="build and download firmware")
|
act_build = action.add_parser("build", help="build and download firmware")
|
||||||
|
act_build.add_argument("--major-ver", default=None, help="ARTIQ major version")
|
||||||
act_build.add_argument("--rev", default=None, help="revision to build (default: currently installed ARTIQ revision)")
|
act_build.add_argument("--rev", default=None, help="revision to build (default: currently installed ARTIQ revision)")
|
||||||
act_build.add_argument("--log", action="store_true", help="Display the build log")
|
act_build.add_argument("--log", action="store_true", help="Display the build log")
|
||||||
act_build.add_argument("directory", help="output directory")
|
act_build.add_argument("directory", help="output directory")
|
||||||
|
@ -182,13 +198,19 @@ def main():
|
||||||
except NotADirectoryError:
|
except NotADirectoryError:
|
||||||
print("A file with the same name as the output directory already exists. Please remove it and try again.")
|
print("A file with the same name as the output directory already exists. Please remove it and try again.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
major_ver = args.major_ver
|
||||||
|
if major_ver is None:
|
||||||
|
major_ver = get_artiq_major_version()
|
||||||
|
if major_ver is None:
|
||||||
|
print("Unable to determine currently installed ARTIQ major version. Specify manually using --major-ver.")
|
||||||
|
sys.exit(1)
|
||||||
rev = args.rev
|
rev = args.rev
|
||||||
if rev is None:
|
if rev is None:
|
||||||
rev = get_artiq_rev()
|
rev = get_artiq_rev()
|
||||||
if rev is None:
|
if rev is None:
|
||||||
print("Unable to determine currently installed ARTIQ revision. Specify manually using --rev.")
|
print("Unable to determine currently installed ARTIQ revision. Specify manually using --rev.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
result, contents = client.build(rev, args.variant, args.log)
|
result, contents = client.build(major_ver, rev, args.variant, args.log)
|
||||||
if result != "OK":
|
if result != "OK":
|
||||||
if result == "UNAUTHORIZED":
|
if result == "UNAUTHORIZED":
|
||||||
print("You are not authorized to build this variant. Your firmware subscription may have expired. Contact helpdesk\x40m-labs.hk.")
|
print("You are not authorized to build this variant. Your firmware subscription may have expired. Contact helpdesk\x40m-labs.hk.")
|
||||||
|
|
Loading…
Reference in New Issue