netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* iproute2 DDMMYY versioning - why?
@ 2020-07-28 13:05 Or Gerlitz
  2020-07-28 18:57 ` Jakub Kicinski
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Or Gerlitz @ 2020-07-28 13:05 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Linux Netdev List

Stephen,

Taking into account that iproute releases are aligned with the kernel
ones -- is there any real reason for the confusing DDMMYY double
versioning?

I see that even the git tags go after the kernel releases..

Or.

# git remote -v
origin  git://git.kernel.org/pub/scm/network/iproute2/iproute2.git (fetch)
origin  git://git.kernel.org/pub/scm/network/iproute2/iproute2.git (push)

$ git log -p include/SNAPSHOT.h

commit 1bfa3b3f66ef48bdabe0eb2a7c14e69f481dfa25 (tag: v5.7.0)
Author: Stephen Hemminger <stephen@networkplumber.org>
Date:   Tue Jun 2 20:35:00 2020 -0700

    v5.7.0

diff --git a/include/SNAPSHOT.h b/include/SNAPSHOT.h
index 0d10a9c2..0d211784 100644
--- a/include/SNAPSHOT.h
+++ b/include/SNAPSHOT.h
@@ -1 +1 @@
-static const char SNAPSHOT[] = "200330";
+static const char SNAPSHOT[] = "200602";

commit 29981db0e051cd4c53920c89dddcf3d883343a0f (tag: v5.6.0)
Author: Stephen Hemminger <stephen@networkplumber.org>
Date:   Mon Mar 30 08:06:08 2020 -0700

    v5.6.0

diff --git a/include/SNAPSHOT.h b/include/SNAPSHOT.h
index c0fa1bb4..0d10a9c2 100644
--- a/include/SNAPSHOT.h
+++ b/include/SNAPSHOT.h
@@ -1 +1 @@
-static const char SNAPSHOT[] = "200127";
+static const char SNAPSHOT[] = "200330";

commit d4df55404aec707bd55c9264c666ddb1bb05d7f1 (tag: v5.5.0)
Author: Stephen Hemminger <stephen@networkplumber.org>
Date:   Mon Jan 27 05:53:09 2020 -0800

    v5.5.0

diff --git a/include/SNAPSHOT.h b/include/SNAPSHOT.h
index b98ad502..c0fa1bb4 100644
--- a/include/SNAPSHOT.h
+++ b/include/SNAPSHOT.h
@@ -1 +1 @@
-static const char SNAPSHOT[] = "191125";
+static const char SNAPSHOT[] = "200127";

etc

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: iproute2 DDMMYY versioning - why?
  2020-07-28 13:05 iproute2 DDMMYY versioning - why? Or Gerlitz
@ 2020-07-28 18:57 ` Jakub Kicinski
  2020-07-28 19:51 ` Stephen Hemminger
  2020-08-01 17:32 ` [RFC] replace SNAPSHOT with auto-generated version Stephen Hemminger
  2 siblings, 0 replies; 6+ messages in thread
From: Jakub Kicinski @ 2020-07-28 18:57 UTC (permalink / raw)
  To: Or Gerlitz; +Cc: Stephen Hemminger, Linux Netdev List

On Tue, 28 Jul 2020 16:05:50 +0300 Or Gerlitz wrote:
> Stephen,
> 
> Taking into account that iproute releases are aligned with the kernel
> ones -- is there any real reason for the confusing DDMMYY double
> versioning?
> 
> I see that even the git tags go after the kernel releases..

+1



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: iproute2 DDMMYY versioning - why?
  2020-07-28 13:05 iproute2 DDMMYY versioning - why? Or Gerlitz
  2020-07-28 18:57 ` Jakub Kicinski
@ 2020-07-28 19:51 ` Stephen Hemminger
  2020-07-31 13:23   ` Or Gerlitz
  2020-08-01 17:32 ` [RFC] replace SNAPSHOT with auto-generated version Stephen Hemminger
  2 siblings, 1 reply; 6+ messages in thread
From: Stephen Hemminger @ 2020-07-28 19:51 UTC (permalink / raw)
  To: Or Gerlitz; +Cc: Linux Netdev List

On Tue, 28 Jul 2020 16:05:50 +0300
Or Gerlitz <gerlitz.or@gmail.com> wrote:

> Stephen,
> 
> Taking into account that iproute releases are aligned with the kernel
> ones -- is there any real reason for the confusing DDMMYY double
> versioning?
> 
> I see that even the git tags go after the kernel releases..
> 
> Or.
> 

It is only an historical leftover, because 15 yrs ago that is how Alexy did it


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: iproute2 DDMMYY versioning - why?
  2020-07-28 19:51 ` Stephen Hemminger
@ 2020-07-31 13:23   ` Or Gerlitz
  2020-07-31 15:21     ` Stephen Hemminger
  0 siblings, 1 reply; 6+ messages in thread
From: Or Gerlitz @ 2020-07-31 13:23 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Linux Netdev List

On Tue, Jul 28, 2020 at 10:51 PM Stephen Hemminger
<stephen@networkplumber.org> wrote:

> It is only an historical leftover, because 15 yrs ago that is how Alexy did it

So how about putting behind the burden created by this historical leftover
and moving to use the kernel releases as the emitted version?

Or.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: iproute2 DDMMYY versioning - why?
  2020-07-31 13:23   ` Or Gerlitz
@ 2020-07-31 15:21     ` Stephen Hemminger
  0 siblings, 0 replies; 6+ messages in thread
From: Stephen Hemminger @ 2020-07-31 15:21 UTC (permalink / raw)
  To: Or Gerlitz; +Cc: Linux Netdev List

On Fri, 31 Jul 2020 16:23:06 +0300
Or Gerlitz <gerlitz.or@gmail.com> wrote:

> On Tue, Jul 28, 2020 at 10:51 PM Stephen Hemminger
> <stephen@networkplumber.org> wrote:
> 
> > It is only an historical leftover, because 15 yrs ago that is how Alexy did it  
> 
> So how about putting behind the burden created by this historical leftover
> and moving to use the kernel releases as the emitted version?

The only downside to kernel versioning is the distros will think
"can't use v5.10 because our kernel is still v4.3" and then want
LTS versions of iproute2 which would create significant resource efforts.

Open to changing to kernel versions, it would be trivial to do.
The tagging and releases are by kernel version.
The SNAPSHOT.h is autogenerated by a script, that can be changed.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [RFC] replace SNAPSHOT with auto-generated version
  2020-07-28 13:05 iproute2 DDMMYY versioning - why? Or Gerlitz
  2020-07-28 18:57 ` Jakub Kicinski
  2020-07-28 19:51 ` Stephen Hemminger
@ 2020-08-01 17:32 ` Stephen Hemminger
  2 siblings, 0 replies; 6+ messages in thread
From: Stephen Hemminger @ 2020-08-01 17:32 UTC (permalink / raw)
  To: netdev; +Cc: Stephen Hemminger

Replace the iproute2 snapshot with a version string which is
autogenerated as part of the build process using git describe.

This will also allow seeing if the version of the command
is built from the same sources is as upstream.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
One additional tweak needed will be to put Version.h in the
tarball for building outside of git.

 .gitignore        |  1 +
 Makefile          | 10 +++++-----
 bridge/bridge.c   |  2 +-
 devlink/devlink.c |  4 ++--
 genl/genl.c       |  4 ++--
 ip/ip.c           |  4 ++--
 ip/rtmon.c        |  4 ++--
 misc/ifstat.c     |  4 ++--
 misc/nstat.c      |  4 ++--
 misc/rtacct.c     |  4 ++--
 misc/ss.c         |  4 ++--
 rdma/rdma.c       |  6 +++---
 tc/tc.c           |  4 ++--
 13 files changed, 28 insertions(+), 27 deletions(-)

diff --git a/.gitignore b/.gitignore
index e5234a3dc948..8c553394453a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
 Config
 static-syms.h
 config.*
+include/Version.h
 *.o
 *.a
 *.so
diff --git a/Makefile b/Makefile
index 25d05fac952a..61056cf6d7b2 100644
--- a/Makefile
+++ b/Makefile
@@ -60,7 +60,7 @@ SUBDIRS=lib ip tc bridge misc netem genl tipc devlink rdma man
 LIBNETLINK=../lib/libutil.a ../lib/libnetlink.a
 LDLIBS += $(LIBNETLINK)
 
-all: config.mk
+all: config.mk include/Version.h
 	@set -e; \
 	for i in $(SUBDIRS); \
 	do echo; echo $$i; $(MAKE) $(MFLAGS) -C $$i; done
@@ -93,9 +93,9 @@ install: all
 	install -m 0644 bash-completion/devlink $(DESTDIR)$(BASH_COMPDIR)
 	install -m 0644 include/bpf_elf.h $(DESTDIR)$(HDRDIR)
 
-snapshot:
-	echo "static const char SNAPSHOT[] = \""`date +%y%m%d`"\";" \
-		> include/SNAPSHOT.h
+include/Version.h:
+	echo "static const char Version[] = \""`git describe --tags --long`"\";" \
+		> include/Version.h
 
 clean:
 	@for i in $(SUBDIRS) testsuite; \
@@ -104,7 +104,7 @@ clean:
 clobber:
 	touch config.mk
 	$(MAKE) $(MFLAGS) clean
-	rm -f config.mk cscope.*
+	rm -f config.mk cscope.* include/Version.h
 
 distclean: clobber
 
diff --git a/bridge/bridge.c b/bridge/bridge.c
index a50d9d59b4c5..db2984ad7d88 100644
--- a/bridge/bridge.c
+++ b/bridge/bridge.c
@@ -12,7 +12,7 @@
 #include <string.h>
 #include <errno.h>
 
-#include "SNAPSHOT.h"
+#include "Version.h"
 #include "utils.h"
 #include "br_common.h"
 #include "namespace.h"
diff --git a/devlink/devlink.c b/devlink/devlink.c
index 7f83fb746fd6..b558137caa0e 100644
--- a/devlink/devlink.c
+++ b/devlink/devlink.c
@@ -34,7 +34,7 @@
 #include <sys/socket.h>
 #include <sys/types.h>
 
-#include "SNAPSHOT.h"
+#include "Version.h"
 #include "list.h"
 #include "mnlg.h"
 #include "json_print.h"
@@ -7606,7 +7606,7 @@ int main(int argc, char **argv)
 
 		switch (opt) {
 		case 'V':
-			printf("devlink utility, iproute2-ss%s\n", SNAPSHOT);
+			printf("devlink utility, iproute2-%s\n", Version);
 			ret = EXIT_SUCCESS;
 			goto dl_free;
 		case 'f':
diff --git a/genl/genl.c b/genl/genl.c
index aba3c13afd34..cf30c7af20f6 100644
--- a/genl/genl.c
+++ b/genl/genl.c
@@ -22,7 +22,7 @@
 #include <errno.h>
 #include <linux/netlink.h>
 #include <linux/rtnetlink.h> /* until we put our own header */
-#include "SNAPSHOT.h"
+#include "Version.h"
 #include "utils.h"
 #include "genl_utils.h"
 
@@ -118,7 +118,7 @@ int main(int argc, char **argv)
 		} else if (matches(argv[1], "-raw") == 0) {
 			++show_raw;
 		} else if (matches(argv[1], "-Version") == 0) {
-			printf("genl utility, iproute2-ss%s\n", SNAPSHOT);
+			printf("genl utility, iproute2-%s\n", Version);
 			exit(0);
 		} else if (matches(argv[1], "-help") == 0) {
 			usage();
diff --git a/ip/ip.c b/ip/ip.c
index 4249df0377f9..ac7caa1b0171 100644
--- a/ip/ip.c
+++ b/ip/ip.c
@@ -18,7 +18,7 @@
 #include <string.h>
 #include <errno.h>
 
-#include "SNAPSHOT.h"
+#include "Version.h"
 #include "utils.h"
 #include "ip_common.h"
 #include "namespace.h"
@@ -255,7 +255,7 @@ int main(int argc, char **argv)
 			++timestamp;
 			++timestamp_short;
 		} else if (matches(opt, "-Version") == 0) {
-			printf("ip utility, iproute2-ss%s\n", SNAPSHOT);
+			printf("ip utility, iproute2-%s\n", Version);
 			exit(0);
 		} else if (matches(opt, "-force") == 0) {
 			++force;
diff --git a/ip/rtmon.c b/ip/rtmon.c
index bccddedddd17..d42bbd30c0fb 100644
--- a/ip/rtmon.c
+++ b/ip/rtmon.c
@@ -19,7 +19,7 @@
 #include <netinet/in.h>
 #include <string.h>
 
-#include "SNAPSHOT.h"
+#include "Version.h"
 
 #include "utils.h"
 #include "libnetlink.h"
@@ -107,7 +107,7 @@ main(int argc, char **argv)
 		} else if (strcmp(argv[1], "-0") == 0) {
 			family = AF_PACKET;
 		} else if (matches(argv[1], "-Version") == 0) {
-			printf("rtmon utility, iproute2-ss%s\n", SNAPSHOT);
+			printf("rtmon utility, iproute2-%s\n", Version);
 			exit(0);
 		} else if (matches(argv[1], "file") == 0) {
 			argc--;
diff --git a/misc/ifstat.c b/misc/ifstat.c
index 03327af83ae8..abbd10cb9866 100644
--- a/misc/ifstat.c
+++ b/misc/ifstat.c
@@ -33,7 +33,7 @@
 
 #include "libnetlink.h"
 #include "json_writer.h"
-#include "SNAPSHOT.h"
+#include "Version.h"
 #include "utils.h"
 
 int dump_zeros;
@@ -869,7 +869,7 @@ int main(int argc, char *argv[])
 			break;
 		case 'v':
 		case 'V':
-			printf("ifstat utility, iproute2-ss%s\n", SNAPSHOT);
+			printf("ifstat utility, iproute2-%s\n", Version);
 			exit(0);
 		case 'h':
 		case '?':
diff --git a/misc/nstat.c b/misc/nstat.c
index 88f52eaf8c8c..189a2d74602e 100644
--- a/misc/nstat.c
+++ b/misc/nstat.c
@@ -29,7 +29,7 @@
 #include <getopt.h>
 
 #include <json_writer.h>
-#include <SNAPSHOT.h>
+#include "Version.h"
 #include "utils.h"
 
 int dump_zeros;
@@ -621,7 +621,7 @@ int main(int argc, char *argv[])
 			break;
 		case 'v':
 		case 'V':
-			printf("nstat utility, iproute2-ss%s\n", SNAPSHOT);
+			printf("nstat utility, iproute2-%s\n", Version);
 			exit(0);
 		case 'h':
 		case '?':
diff --git a/misc/rtacct.c b/misc/rtacct.c
index c4bb5bc3888c..ec475b9b5bd7 100644
--- a/misc/rtacct.c
+++ b/misc/rtacct.c
@@ -30,7 +30,7 @@
 
 #include "rt_names.h"
 
-#include <SNAPSHOT.h>
+#include "Version.h"
 
 int reset_history;
 int ignore_history;
@@ -463,7 +463,7 @@ int main(int argc, char *argv[])
 			break;
 		case 'v':
 		case 'V':
-			printf("rtacct utility, iproute2-ss%s\n", SNAPSHOT);
+			printf("rtacct utility, iproute2-%s\n", Version);
 			exit(0);
 		case 'M':
 			/* Some secret undocumented option, nobody
diff --git a/misc/ss.c b/misc/ss.c
index 5aa10e4a715f..08521672a154 100644
--- a/misc/ss.c
+++ b/misc/ss.c
@@ -35,7 +35,7 @@
 #include "ll_map.h"
 #include "libnetlink.h"
 #include "namespace.h"
-#include "SNAPSHOT.h"
+#include "Version.h"
 #include "rt_names.h"
 #include "cg_map.h"
 
@@ -5411,7 +5411,7 @@ int main(int argc, char *argv[])
 			break;
 		case 'v':
 		case 'V':
-			printf("ss utility, iproute2-ss%s\n", SNAPSHOT);
+			printf("ss utility, iproute2-%s\n", Version);
 			exit(0);
 		case 'z':
 			show_sock_ctx++;
diff --git a/rdma/rdma.c b/rdma/rdma.c
index 22050555735d..0e7251fe26ef 100644
--- a/rdma/rdma.c
+++ b/rdma/rdma.c
@@ -5,7 +5,7 @@
  */
 
 #include "rdma.h"
-#include "SNAPSHOT.h"
+#include "Version.h"
 #include "color.h"
 
 static void help(char *name)
@@ -131,8 +131,8 @@ int main(int argc, char **argv)
 				  long_options, NULL)) >= 0) {
 		switch (opt) {
 		case 'V':
-			printf("%s utility, iproute2-ss%s\n",
-			       filename, SNAPSHOT);
+			printf("%s utility, iproute2-%s\n",
+			       filename, Version);
 			return EXIT_SUCCESS;
 		case 'p':
 			pretty = 1;
diff --git a/tc/tc.c b/tc/tc.c
index b72657ec2e60..31c9030d1ed1 100644
--- a/tc/tc.c
+++ b/tc/tc.c
@@ -24,7 +24,7 @@
 #include <string.h>
 #include <errno.h>
 
-#include "SNAPSHOT.h"
+#include "Version.h"
 #include "utils.h"
 #include "tc_util.h"
 #include "tc_common.h"
@@ -299,7 +299,7 @@ int main(int argc, char **argv)
 		} else if (matches(argv[1], "-graph") == 0) {
 			show_graph = 1;
 		} else if (matches(argv[1], "-Version") == 0) {
-			printf("tc utility, iproute2-ss%s\n", SNAPSHOT);
+			printf("tc utility, iproute2-%s\n", Version);
 			return 0;
 		} else if (matches(argv[1], "-iec") == 0) {
 			++use_iec;
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-08-01 17:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-28 13:05 iproute2 DDMMYY versioning - why? Or Gerlitz
2020-07-28 18:57 ` Jakub Kicinski
2020-07-28 19:51 ` Stephen Hemminger
2020-07-31 13:23   ` Or Gerlitz
2020-07-31 15:21     ` Stephen Hemminger
2020-08-01 17:32 ` [RFC] replace SNAPSHOT with auto-generated version Stephen Hemminger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).