diff mbox

[ovs-dev] util: Drop 'date' and 'time' arguments from ovs_set_program_name

Message ID 1464253374-4052-1-git-send-email-mchandras@suse.de
State Accepted
Headers show

Commit Message

Markos Chandras May 26, 2016, 9:02 a.m. UTC
The 'date' and 'time' arguments are normally being set by
'ovs_set_program_name' using __DATE__ and __TIME__. However, this
breaks reproducible builds since even without any changes in the
toolchain, build system etc, the end binary will still differ in
that regard. This is also visible when building with -Wdate-time:

utilities/ovs-dpctl.c:61:29: warning: macro "__DATE__" might prevent
reproducible builds [-Wdate-time]
     set_program_name(argv[0]);
                             ^

and it's also something that triggers the following warning in the
openSUSE OBS builds:

[...]
openvswitch.x86_64: W: file-contains-date-and-time /usr/bin/ovs-ofctl
openvswitch.x86_64: W: file-contains-date-and-time /usr/bin/ovs-appctl
Your file uses  __DATE and __TIME__ this causes the package to rebuild
when not needed
[...]

This patch drops these two arguments from ovs_set_program_name__ and
renames the function to ovs_set_program_name dropping the previous
preprocessor macro in the process.

This finally removes the remaining references to __DATE__ and __TIME__
from the sources which is something that has already been done in
commit 26bfaeaa9687 ("Stop using __DATE__ and __TIME__ in startup
string.") for the kernel datapath.

Cc: Jan Engelhardt <jengelh@inai.de>
Signed-off-by: Markos Chandras <mchandras@suse.de>
---
 include/openvswitch/util.h |  6 +-----
 lib/util.c                 | 17 +++++------------
 2 files changed, 6 insertions(+), 17 deletions(-)

Comments

Ben Pfaff May 26, 2016, 4:43 p.m. UTC | #1
On Thu, May 26, 2016 at 10:02:54AM +0100, Markos Chandras wrote:
> The 'date' and 'time' arguments are normally being set by
> 'ovs_set_program_name' using __DATE__ and __TIME__. However, this
> breaks reproducible builds since even without any changes in the
> toolchain, build system etc, the end binary will still differ in
> that regard. This is also visible when building with -Wdate-time:
> 
> utilities/ovs-dpctl.c:61:29: warning: macro "__DATE__" might prevent
> reproducible builds [-Wdate-time]
>      set_program_name(argv[0]);
>                              ^
> 
> and it's also something that triggers the following warning in the
> openSUSE OBS builds:
> 
> [...]
> openvswitch.x86_64: W: file-contains-date-and-time /usr/bin/ovs-ofctl
> openvswitch.x86_64: W: file-contains-date-and-time /usr/bin/ovs-appctl
> Your file uses  __DATE and __TIME__ this causes the package to rebuild
> when not needed
> [...]
> 
> This patch drops these two arguments from ovs_set_program_name__ and
> renames the function to ovs_set_program_name dropping the previous
> preprocessor macro in the process.
> 
> This finally removes the remaining references to __DATE__ and __TIME__
> from the sources which is something that has already been done in
> commit 26bfaeaa9687 ("Stop using __DATE__ and __TIME__ in startup
> string.") for the kernel datapath.
> 
> Cc: Jan Engelhardt <jengelh@inai.de>
> Signed-off-by: Markos Chandras <mchandras@suse.de>

Applied, thanks!
diff mbox

Patch

diff --git a/include/openvswitch/util.h b/include/openvswitch/util.h
index 2230b2a..363fa39 100644
--- a/include/openvswitch/util.h
+++ b/include/openvswitch/util.h
@@ -25,11 +25,7 @@ 
 extern "C" {
 #endif
 
-void ovs_set_program_name__(const char *name, const char *version,
-                            const char *date, const char *time);
-
-#define ovs_set_program_name(name, version) \
-        ovs_set_program_name__(name, version, __DATE__, __TIME__)
+void ovs_set_program_name(const char *name, const char *version);
 
 const char *ovs_get_program_name(void);
 const char *ovs_get_program_version(void);
diff --git a/lib/util.c b/lib/util.c
index 94311ac..6ca04ad 100644
--- a/lib/util.c
+++ b/lib/util.c
@@ -461,14 +461,9 @@  ovs_strerror(int error)
  * vSwitch.  Otherwise, it is assumed to be an external program linking against
  * the Open vSwitch libraries.
  *
- * The 'date' and 'time' arguments should likely be called with
- * "__DATE__" and "__TIME__" to use the time the binary was built.
- * Alternatively, the "ovs_set_program_name" macro may be called to do this
- * automatically.
  */
 void
-ovs_set_program_name__(const char *argv0, const char *version, const char *date,
-                       const char *time)
+ovs_set_program_name(const char *argv0, const char *version)
 {
     char *basename;
 #ifdef _WIN32
@@ -496,14 +491,12 @@  ovs_set_program_name__(const char *argv0, const char *version, const char *date,
 
     free(program_version);
     if (!strcmp(version, VERSION)) {
-        program_version = xasprintf("%s (Open vSwitch) "VERSION"\n"
-                                    "Compiled %s %s\n",
-                                    program_name, date, time);
+        program_version = xasprintf("%s (Open vSwitch) "VERSION"\n",
+                                    program_name);
     } else {
         program_version = xasprintf("%s %s\n"
-                                    "Open vSwitch Library "VERSION"\n"
-                                    "Compiled %s %s\n",
-                                    program_name, version, date, time);
+                                    "Open vSwitch Library "VERSION"\n",
+                                    program_name, version);
     }
 }