3 ##############################################################################
4 # Copyright (c) 2016 Daniel Farrell and Others. All rights reserved.
6 # This program and the accompanying materials are made available under the
7 # terms of the Eclipse Public License v1.0 which accompanies this distribution,
8 # and is available at http://www.eclipse.org/legal/epl-v10.html
9 ##############################################################################
14 from deb import build as build_deb
15 from rpm import build as build_rpm
18 if __name__ == "__main__":
19 # Accept the version(s) of the build(s) to perform as args
20 # TODO: More docs on ArgParser and argument
21 parser = argparse.ArgumentParser(add_help=False,
22 conflict_handler='resolve')
23 parser._optionals.title = "Required Arguments"
25 package_build_group = parser.add_mutually_exclusive_group(required=True)
26 package_build_group.add_argument("--rpm", action="store_true",
27 help="Builds RPM package")
28 package_build_group.add_argument("--deb", action="store_true",
29 help="Builds DEB package")
31 new_build_group = parser.add_argument_group("New build")
32 new_build_group.add_argument(
33 "--download_url", help="Tarball to repackage into package")
34 new_build_group.add_argument(
35 "--sysd_commit", help="Version of ODL unitfile to package")
36 new_build_group.add_argument(
37 "--changelog_name", help="Name of person who defined package")
38 new_build_group.add_argument(
39 "--changelog_email", help="Email of person who defined package")
41 # Arguments needed to build RPM from latest snapshot
42 # given a stable major branch
43 latest_snap_group = parser.add_argument_group("Latest snapshot build")
44 latest_snap_group.add_argument("--build-latest-snap", action='store_true',
45 help="Build package from the latest snpashot")
46 latest_snap_group.add_argument("--major", help="Stable branch from which "
47 "to build the snapshot")
48 latest_snap_group.add_argument("--minor", help="Minor version of the "
49 "stable branch to build the snapshot")
50 latest_snap_group.add_argument("--sysd_commit",
51 help="Version of ODL unitfile to package")
52 latest_snap_group.add_argument("--changelog_name",
53 help="Name of person who defined package")
54 latest_snap_group.add_argument("--changelog_email",
55 help="Email of person who defined package")
56 # Print help if no arguments are given
57 if len(sys.argv) == 1:
61 # Parse the given args
62 args = parser.parse_args()
64 # A dictionary containing essential build variables
67 # Depending on package type, create an appropriate changelog datetime
69 build.update({"changelog_date": vars.get_changelog_date("rpm")})
71 build.update({"changelog_date": vars.get_changelog_date("deb")})
73 # Check if `sysd_commit` has been passed as an arg
74 # Use latest Int/Pack repo commit hash as sysd_commit var
75 # unless passed by param
76 if not args.sysd_commit:
77 args.sysd_commit = vars.get_sysd_commit()
79 # If the flag `--build-latest-snap` is true, extract information
80 # from the snapshot URL using major version and minor version(optional)
81 if args.build_latest_snap:
83 build.update({'version_major': args.major})
85 build.update({'version_minor': args.minor})
86 args.download_url = vars.get_snap_url(args.major, args.minor)
88 # If download_url is given, update version info
90 build.update({"download_url": args.download_url})
91 version = vars.extract_version(args.download_url)
94 java_version_required = vars.get_java_version(build['version_major'])
96 # Karaf 3 distros use distribution-karaf-, Karaf 4 uses karaf-
97 build.update({"distro_name_prefix": vars.get_distro_name_prefix(
98 build['version_major'])})
100 # Common parameters for all new and snapshot builds
101 build.update({"download_url": args.download_url,
102 "sysd_commit": args.sysd_commit,
103 "java_version": java_version_required,
104 "changelog_name": args.changelog_name,
105 "changelog_email": args.changelog_email,
108 build_rpm.build_rpm(build)
110 build_deb.build_deb(build)
112 raise ValueError("Unknown package type")