diff --git a/autotools/build-rpc b/autotools/build-rpc
index a862d94e5862aacd5eb88610ae5efef1bfc326e7..460f0df5953e789d08d129b0b58a2d892518a765 100755
--- a/autotools/build-rpc
+++ b/autotools/build-rpc
@@ -125,7 +125,7 @@ def _WriteBaseClass(sw, clsname, calls):
         raise ValueError("Procedure %s has only %d elements, expected %d" %
                          (v[0], len(v), _RPC_DEF_LEN))
 
-    for (name, kind, _, timeout, args, _, _, desc) in calls:
+    for (name, kind, _, timeout, args, _, _, desc) in sorted(calls):
       funcargs = ["self"]
 
       if kind == _SINGLE:
@@ -201,7 +201,7 @@ def main():
       raise Exception("Found duplicate RPC definitions for '%s'" %
                       utils.CommaJoin(sorted(dups)))
 
-    for (clsname, calls) in module.CALLS.items():
+    for (clsname, calls) in sorted(module.CALLS.items()):
       _WriteBaseClass(sw, clsname, calls.values())
 
   print buf.getvalue()