Browse Source

Issue 50954 - Port buildnum.pl to python

Description:  Replace buildnum.pl with a python version so we can
              continue to remove perl dependencies.

relates: https://pagure.io/389-ds-base/issue/50954

Reviewed by: firstyear(Thanks!)
Mark Reynolds 5 years ago
parent
commit
3deb6ad7d1
3 changed files with 30 additions and 64 deletions
  1. 2 2
      Makefile.am
  2. 0 62
      buildnum.pl
  3. 28 0
      buildnum.py

+ 2 - 2
Makefile.am

@@ -13,7 +13,7 @@ QUOTE := $(NULLSTRING)"# a double quote"
 #
 
 PYTHON := python3
-BUILDNUM := $(shell perl $(srcdir)/buildnum.pl)
+BUILDNUM := $(shell $(srcdir)/buildnum.py)
 NQBUILDNUM := $(subst \,,$(subst $(QUOTE),,$(BUILDNUM)))
 DEBUG_DEFINES = @debug_defs@
 DEBUG_CFLAGS = @debug_cflags@
@@ -627,7 +627,7 @@ dist_noinst_HEADERS += \
 endif
 
 dist_noinst_DATA = \
-	$(srcdir)/buildnum.pl \
+	$(srcdir)/buildnum.py \
 	$(srcdir)/ldap/admin/src/*.in \
 	$(srcdir)/ldap/admin/src/scripts/*.in \
 	$(srcdir)/ldap/admin/src/scripts/*.ldif \

+ 0 - 62
buildnum.pl

@@ -1,62 +0,0 @@
-#!/usr/bin/perl
-# --- BEGIN COPYRIGHT BLOCK ---
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-#
-# License: GPL (version 3 or any later version).
-# See LICENSE for details. 
-# --- END COPYRIGHT BLOCK ---
-
-#--------------------------------------------
-# buildnum.pl
-#
-# Generates a dated build number and writes
-# out a buildnum.dat file in a user specified
-# subdirectory.
-#
-# Usage: buildnum.pl -p <platform dir>
-#--------------------------------------------
-
-use Getopt::Std;
-use FileHandle;
-                                                                                             
-autoflush STDERR 1;
-                                                                                             
-getopts('p:H');
-                                                                                             
-if ($opt_H) {exitHelp();}
-
-# Load arguments
-$platdir = $opt_p;
-
-# Get current time
-@now = gmtime($ENV{SOURCE_DATE_EPOCH} || time);
-
-# Format buildnum as YYYY.DDD.HHMM
-$year = $now[5] + 1900;
-$doy = $now[7] + 1;
-if ($doy < 100) { $doy = 0 . $doy; }
-$tod = $now[2] . $now[1];
-$buildnum = "$year.$doy.$tod";
-
-if ($platdir) {
-    # Write buildnum.dat
-    $buildnum_file = "./$platdir/buildnum.dat";
-    open(BUILDNUM,">$buildnum_file") || die "Error: Can't create $buildnum_file: $!\n";
-    print BUILDNUM "\\\"$buildnum\\\"";
-    close(BUILDNUM);
-} else {
-    print "\\\"$buildnum\\\"";
-}
-
-#---------- exitHelp subroutine ----------
-sub exitHelp {
-    print(STDERR "$0: Generates a dated build number.
-
-    \tUsage: $0 -p <platform>
-
-    \t-p <platform>             Platform subdirectory.
-    \t-H                        Print this help message\n");
-    exit(0);
-}

+ 28 - 0
buildnum.py

@@ -0,0 +1,28 @@
+#!/usr/bin/python3
+# --- BEGIN COPYRIGHT BLOCK ---
+# Copyright (C) 2020 Red Hat, Inc.
+# All rights reserved.
+#
+# License: GPL (version 3 or any later version).
+# See LICENSE for details.
+# --- END COPYRIGHT BLOCK ---
+
+# Generate a build number in the format YYYY.DDD.HHMM
+
+import os
+import time
+
+SDE = os.getenv('SOURCE_DATE_EPOCH')
+if SDE is not None:
+    obj = time.gmtime(SDE)
+else:
+    obj = time.gmtime()
+    
+year = obj[0]
+doy = obj[7]
+if doy < 100:
+    doy = "0" + str(doy)
+tod = str(obj[3]) + str(obj[4])
+buildnum = f"{year}.{doy}.{tod}"
+
+print(f'\\"{buildnum}\\"', end = '')