Merge branch '2327-mkenums-version-macros' into 'master'

glib-mkenums: Parse and skip deprecation/availability annotations

Closes #2327

See merge request GNOME/glib!1984
diff --git a/gio/gioenums.h b/gio/gioenums.h
index 5e83e96..f2f66c8 100644
--- a/gio/gioenums.h
+++ b/gio/gioenums.h
@@ -1220,7 +1220,7 @@
   G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS = (1<<2),
   G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION = (1<<3),
   G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING = (1<<4),
-  G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER = (1<<5)
+  G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GLIB_AVAILABLE_ENUMERATOR_IN_2_68 = (1<<5)
 } GDBusConnectionFlags;
 
 /**
@@ -1383,7 +1383,7 @@
   G_DBUS_SERVER_FLAGS_NONE = 0,
   G_DBUS_SERVER_FLAGS_RUN_IN_THREAD = (1<<0),
   G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS = (1<<1),
-  G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER = (1<<2)
+  G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GLIB_AVAILABLE_ENUMERATOR_IN_2_68 = (1<<2)
 } GDBusServerFlags;
 
 /**
diff --git a/glib/guri.h b/glib/guri.h
index b6a4fd0..bfe9399 100644
--- a/glib/guri.h
+++ b/glib/guri.h
@@ -87,7 +87,7 @@
   G_URI_FLAGS_ENCODED_QUERY   = 1 << 5,
   G_URI_FLAGS_ENCODED_PATH    = 1 << 6,
   G_URI_FLAGS_ENCODED_FRAGMENT = 1 << 7,
-  G_URI_FLAGS_SCHEME_NORMALIZE = 1 << 8,
+  G_URI_FLAGS_SCHEME_NORMALIZE GLIB_AVAILABLE_ENUMERATOR_IN_2_68 = 1 << 8,
 } GUriFlags;
 
 GLIB_AVAILABLE_IN_2_66
diff --git a/gobject/glib-mkenums.in b/gobject/glib-mkenums.in
index 1998680..b996a73 100755
--- a/gobject/glib-mkenums.in
+++ b/gobject/glib-mkenums.in
@@ -219,6 +219,7 @@
 
         m = re.match(r'''\s*
               (\w+)\s*                   # name
+              (\s+[A-Z]+_(?:AVAILABLE|DEPRECATED)_ENUMERATOR_IN_[0-9_]+(?:_FOR\s*\(\s*\w+\s*\))?\s*)?    # availability
               (?:=(                      # value
                    \s*\w+\s*\(.*\)\s*       # macro with multiple args
                    |                        # OR
@@ -231,12 +232,15 @@
         if m:
             groups = m.groups()
             name = groups[0]
+            availability = None
             value = None
             options = None
             if len(groups) > 1:
-                value = groups[1]
+                availability = groups[1]
             if len(groups) > 2:
-                options = groups[2]
+                value = groups[2]
+            if len(groups) > 3:
+                options = groups[3]
             if flags is None and value is not None and '<<' in value:
                 seenbitshift = 1
 
diff --git a/gobject/tests/mkenums.py b/gobject/tests/mkenums.py
index 876089d..a3273c5 100644
--- a/gobject/tests/mkenums.py
+++ b/gobject/tests/mkenums.py
@@ -650,6 +650,84 @@
             "0",
         )
 
+    def test_available_in(self):
+        """Test GLIB_AVAILABLE_ENUMERATOR_IN_2_68 handling
+        https://gitlab.gnome.org/GNOME/glib/-/issues/2327"""
+        h_contents = """
+        typedef enum {
+          G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GLIB_AVAILABLE_ENUMERATOR_IN_2_68 = (1<<2)
+        } GDBusServerFlags;
+        """
+        result = self.runMkenumsWithHeader(h_contents)
+        self.assertEqual("", result.err)
+        self.assertSingleEnum(
+            result,
+            "GDBusServerFlags",
+            "g_dbus_server_flags",
+            "G_DBUS_SERVER_FLAGS",
+            "DBUS_SERVER_FLAGS",
+            "G",
+            "",
+            "flags",
+            "Flags",
+            "FLAGS",
+            "G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER",
+            "user",
+            "4",
+        )
+
+    def test_deprecated_in(self):
+        """Test GLIB_DEPRECATED_ENUMERATOR_IN_2_68 handling
+        https://gitlab.gnome.org/GNOME/glib/-/issues/2327"""
+        h_contents = """
+        typedef enum {
+          G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GLIB_DEPRECATED_ENUMERATOR_IN_2_68 = (1<<2)
+        } GDBusServerFlags;
+        """
+        result = self.runMkenumsWithHeader(h_contents)
+        self.assertEqual("", result.err)
+        self.assertSingleEnum(
+            result,
+            "GDBusServerFlags",
+            "g_dbus_server_flags",
+            "G_DBUS_SERVER_FLAGS",
+            "DBUS_SERVER_FLAGS",
+            "G",
+            "",
+            "flags",
+            "Flags",
+            "FLAGS",
+            "G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER",
+            "user",
+            "4",
+        )
+
+    def test_deprecated_in_for(self):
+        """Test GLIB_DEPRECATED_ENUMERATOR_IN_2_68_FOR() handling
+        https://gitlab.gnome.org/GNOME/glib/-/issues/2327"""
+        h_contents = """
+        typedef enum {
+          G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GLIB_DEPRECATED_ENUMERATOR_IN_2_68_FOR(G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER2) = (1<<2)
+        } GDBusServerFlags;
+        """
+        result = self.runMkenumsWithHeader(h_contents)
+        self.assertEqual("", result.err)
+        self.assertSingleEnum(
+            result,
+            "GDBusServerFlags",
+            "g_dbus_server_flags",
+            "G_DBUS_SERVER_FLAGS",
+            "DBUS_SERVER_FLAGS",
+            "G",
+            "",
+            "flags",
+            "Flags",
+            "FLAGS",
+            "G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER",
+            "user",
+            "4",
+        )
+
 
 class TestRspMkenums(TestMkenums):
     """Run all tests again in @rspfile mode"""