Get rid of Versions.def source file
authorRoland McGrath <roland@hack.frob.com>
Fri, 14 Mar 2014 18:39:56 +0000 (11:39 -0700)
committerRoland McGrath <roland@hack.frob.com>
Fri, 14 Mar 2014 18:39:56 +0000 (11:39 -0700)
ChangeLog
Makerules
Versions.def [deleted file]
scripts/versionlist.awk [new file with mode: 0644]

index 4357cb7..99d2cae 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2014-03-14  Roland McGrath  <roland@hack.frob.com>
 
+       * scripts/versionlist.awk: New file.
+       * Makerules [$(build-shared) = yes]
+       (postclean-generated): Add Versions.def, not Versions.def.v and
+       Versions.def.v.i.
+       ($(common-objpfx)Versions.def.v.i): Target removed.
+       ($(common-objpfx)Versions.def): New target.
+       ($(common-objpfx)Versions.all): Depend on that rather that
+       $(common-objpfx)Versions.def.v.
+       * Versions.def: File removed.
+
        * Makeconfig (+gccwarn): Add -Wundef.
        * include/errno.h [IS_IN_rtld] [!RTLD_PRIVATE_ERRNO]: #error to catch
        a dl-sysdep.h breaking its contract.
index ad81ea9..008e80a 100644 (file)
--- a/Makerules
+++ b/Makerules
@@ -288,19 +288,22 @@ ifeq ($(build-shared),yes)
 $(addprefix $(common-objpfx),$(version-maps)): $(common-objpfx)sysd-versions
 common-generated += $(version-maps)
 postclean-generated += sysd-versions Versions.all abi-versions.h \
-                      Versions.def.v.i Versions.def.v Versions.v.i Versions.v
+                      Versions.def Versions.v.i Versions.v
 
 ifndef avoid-generated
 ifneq ($(sysd-versions-subdirs),$(sorted-subdirs) $(config-sysdirs))
 sysd-versions-force = FORCE
 FORCE:
 endif
-# See %.v/%.v.i implicit rules in Makeconfig.
-$(common-objpfx)Versions.def.v.i: $(..)Versions.def \
-                                 $(wildcard $(add-ons:%=$(..)%/Versions.def))
+
+$(common-objpfx)Versions.def: $(..)scripts/versionlist.awk \
+                             $(common-objpfx)Versions.v
+       LC_ALL=C $(AWK) -f $^ > $@T
+       mv -f $@T $@
+
 $(common-objpfx)Versions.all: $(..)scripts/firstversions.awk \
                              $(common-objpfx)soversions.i \
-                             $(common-objpfx)Versions.def.v
+                             $(common-objpfx)Versions.def
        { while read which lib version setname; do \
            test x"$$which" = xDEFAULT || continue; \
            test -z "$$setname" || echo "$$lib : $$setname"; \
diff --git a/Versions.def b/Versions.def
deleted file mode 100644 (file)
index 9bb343f..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-libBrokenLocale {
-  GLIBC_2.0
-}
-libc {
-  GLIBC_2.0
-  GLIBC_2.1
-  GLIBC_2.1.1
-  GLIBC_2.1.2
-  GLIBC_2.1.3
-  GLIBC_2.1.4
-  GLIBC_2.2
-  GLIBC_2.2.1
-  GLIBC_2.2.2
-  GLIBC_2.2.3
-  GLIBC_2.2.4
-  GLIBC_2.2.5
-  GLIBC_2.2.6
-  GLIBC_2.3
-  GLIBC_2.3.1
-  GLIBC_2.3.2
-  GLIBC_2.3.3
-  GLIBC_2.3.4
-  GLIBC_2.4
-  GLIBC_2.5
-  GLIBC_2.6
-  GLIBC_2.7
-  GLIBC_2.8
-  GLIBC_2.9
-  GLIBC_2.10
-  GLIBC_2.11
-  GLIBC_2.12
-  GLIBC_2.13
-  GLIBC_2.14
-  GLIBC_2.15
-  GLIBC_2.16
-  GLIBC_2.17
-  GLIBC_2.18
-  GLIBC_2.19
-  HURD_CTHREADS_0.3
-%ifdef EXPORT_UNWIND_FIND_FDE
-  GCC_3.0
-%endif
-  GLIBC_PRIVATE
-}
-libcrypt {
-  GLIBC_2.0
-}
-libdl {
-  GLIBC_2.0
-  GLIBC_2.1
-  GLIBC_2.3.3
-  GLIBC_2.3.4
-}
-libm {
-  GLIBC_2.0
-  GLIBC_2.1
-  GLIBC_2.2
-  GLIBC_2.2.3
-  GLIBC_2.3
-  GLIBC_2.3.4
-  GLIBC_2.4
-  GLIBC_2.15
-  GLIBC_2.18
-  GLIBC_2.19
-}
-libnsl {
-  GLIBC_2.0
-  GLIBC_2.1
-  GLIBC_2.2
-}
-libnss_compat {
-  GLIBC_PRIVATE
-}
-libnss_dns {
-  GLIBC_PRIVATE
-}
-libnss_db {
-  GLIBC_PRIVATE
-}
-libnss_files {
-  GLIBC_PRIVATE
-}
-libnss_hesiod {
-  GLIBC_PRIVATE
-}
-libnss_nis {
-  GLIBC_PRIVATE
-}
-libnss_nisplus {
-  GLIBC_PRIVATE
-}
-libpthread {
-  GLIBC_2.0
-  GLIBC_2.1
-  GLIBC_2.1.1
-  GLIBC_2.1.2
-  GLIBC_2.2
-  GLIBC_2.2.3
-  GLIBC_2.2.6
-  GLIBC_2.3
-  GLIBC_2.3.2
-  GLIBC_2.3.3
-  GLIBC_2.3.4
-  GLIBC_2.4
-  GLIBC_2.6
-  GLIBC_2.11
-  GLIBC_2.12
-  GLIBC_2.18
-  GLIBC_2.19
-  GLIBC_PRIVATE
-}
-libresolv {
-  GLIBC_2.0
-  GLIBC_2.2
-  GLIBC_2.3.2
-  GLIBC_2.9
-  GLIBC_PRIVATE
-}
-librt {
-  GLIBC_2.1
-  GLIBC_2.2
-  GLIBC_2.3
-  GLIBC_2.3.3
-  GLIBC_2.3.4
-  GLIBC_2.4
-  GLIBC_2.7
-  GLIBC_2.17
-}
-libutil {
-  GLIBC_2.0
-  GLIBC_2.9
-}
-ld {
-  GLIBC_2.0
-  GLIBC_2.1
-  GLIBC_2.3
-  GLIBC_2.4
-  GLIBC_PRIVATE
-}
-libthread_db {
-  GLIBC_2.1.3
-  GLIBC_2.2.3
-  GLIBC_2.3
-  GLIBC_2.3.3
-}
-libanl {
-  GLIBC_2.2.3
-}
-libcidn {
-  GLIBC_PRIVATE
-}
diff --git a/scripts/versionlist.awk b/scripts/versionlist.awk
new file mode 100644 (file)
index 0000000..19fe672
--- /dev/null
@@ -0,0 +1,39 @@
+# Extract ordered list of version sets from Versions files.
+# Copyright (C) 2014 Free Software Foundation, Inc.
+
+BEGIN { in_lib = ""; in_version = 0 }
+
+!in_lib && NF == 2 && $2 == "{" { in_lib = $1; next }
+!in_lib { next }
+
+NF == 2 && $2 == "{" {
+  in_version = 1;
+  libs[in_lib] = libs[in_lib] "  " $1 "\n";
+  lib_versions[in_lib, $1] = 1;
+  all_versions[$1] = 1;
+  next
+}
+
+in_version && $1 == "}" { in_version = 0; next }
+in_version { next }
+
+$1 == "}" { in_lib = ""; next }
+
+END {
+  nlibs = asorti(libs, libs_order);
+  for (i = 1; i <= nlibs; ++i) {
+    lib = libs_order[i];
+
+    for (v in all_versions) {
+      if (!((in_lib, v) in lib_versions)) {
+        libs[lib] = libs[lib] "  " v "\n";
+      }
+    }
+
+    print lib, "{";
+    sort = "sort -u -t. -k 1,1 -k 2n,2n -k 3";
+    printf "%s", libs[lib] | sort;
+    close(sort);
+    print "}";
+  }
+}