Update Sodium release link
[integration/packaging.git] / packages / build.py
index 1203991ed954034616a7974cd5041085b72c2d29..3bedc6a2df735b65683bced84ca7d3f21f56cc01 100755 (executable)
@@ -12,8 +12,8 @@ import sys
 
 import lib
 
-from deb import build as build_deb
-from rpm import build as build_rpm
+from deb import lib as deb_lib
+from rpm import lib as rpm_lib
 
 if __name__ == "__main__":
     # Accept a build definition via args
@@ -50,9 +50,11 @@ if __name__ == "__main__":
 
     direct_parser._optionals.title = "Options"
 
-    # Direct builds require a archive URL
+    # Direct builds require an archive URL
     direct_parser.add_argument("--download_url", required=True,
                                help="URL to tar/zip build archive to package")
+    direct_parser.add_argument(
+        "--pkg_version", help="Override autodetected package component of RPM version (maj.min.pat-pkg)'")
 
     # Create subparser for building latest snapshot from a given branch
     latest_snap_parser = subparsers.add_parser(
@@ -77,9 +79,22 @@ if __name__ == "__main__":
     # Build definition, populated below
     build = {}
 
-    # Add changelog name/email to build definition
-    build.update({"changelog_name": args.changelog_name,
-                  "changelog_email": args.changelog_email})
+    # Add changelog name to build definition
+    if not args.changelog_name:
+        # If empty string passed, as happens when a bash script calls this
+        # script with unset var, use default
+        build.update({"changelog_name": "Jenkins"})
+    else:
+        build.update({"changelog_name": args.changelog_name})
+
+    # Add changelog email to build definition
+    if not args.changelog_email:
+        # If empty string passed, as happens when a bash script calls this
+        # script with unset var, use default
+        build.update(
+            {"changelog_email": "jenkins-donotreply@opendaylight.org"})
+    else:
+        build.update({"changelog_email": args.changelog_email})
 
     # Depending on pkg type, add appropriate-format changelog date to build def
     if args.rpm:
@@ -98,17 +113,21 @@ if __name__ == "__main__":
     # If doing a latest-snap build, find latest build tarball URL for given
     # major version and add to build definition. Else, add URL directly.
     if hasattr(args, "major"):
-        # FIXME: In the process of removing minor_version, pass None for now
-        build.update({"download_url": lib.get_snap_url(args.major, None)})
+        build.update({"download_url": lib.get_snap_url(args.major)})
     else:
         build.update({"download_url": args.download_url})
 
     # Use download_url to find pkg version, add to build def
     build.update(lib.extract_version(build["download_url"]))
 
+    # Override automatically extracted package version with param if passed
+    if (hasattr(args, "pkg_version") and args.pkg_version is not None and
+            args.pkg_version is not ""):
+        build['pkg_version'] = args.pkg_version
+
     # Karaf 3 distros use distribution-karaf-, Karaf 4 uses karaf-
     build.update({"distro_name_prefix": lib.get_distro_name_prefix(
-        build['version_major'])})
+        build['version_major'], build['download_url'])})
 
     # Update build definition with Java version required by ODL version
     build.update({"java_version": lib.get_java_version(
@@ -116,6 +135,6 @@ if __name__ == "__main__":
 
     # Use package-specific helper logic to do the specified build
     if args.rpm:
-        build_rpm.build_rpm(build)
+        rpm_lib.build_rpm(build)
     elif args.deb:
-        build_deb.build_deb(build)
+        deb_lib.build_deb(build)