Revert "Revert "Upgrade to 2.1.8-stable (2017-01-22)." and "Probably Mac build fix?""

This reverts commit 83a0c9c65a60a92d3ea5542596b3ba56db492c37.

Bug: 64543673
Test: make checkbuild
Test: Manual tombstoned test
Change-Id: I84bb128d1dec433195f2cbdbf70236ba17fa9955
diff --git a/event_rpcgen.py b/event_rpcgen.py
index dead34c..9baf730 100755
--- a/event_rpcgen.py
+++ b/event_rpcgen.py
@@ -32,6 +32,12 @@
 headerdirect = []
 cppdirect = []
 
+QUIETLY = 0
+
+def declare(s):
+    if not QUIETLY:
+        print s
+
 def TranslateList(mylist, mydict):
     return map(lambda x: x % mydict, mylist)
 
@@ -48,7 +54,7 @@
         self._name = name
         self._entries = []
         self._tags = {}
-        print >>sys.stderr, '  Created struct: %s' % name
+        declare('  Created struct: %s' % name)
 
     def AddEntry(self, entry):
         if self._tags.has_key(entry.Tag()):
@@ -58,7 +64,7 @@
                                     self._tags[entry.Tag()], line_count))
         self._entries.append(entry)
         self._tags[entry.Tag()] = entry.Name()
-        print >>sys.stderr, '    Added entry: %s' % entry.Name()
+        declare('    Added entry: %s' % entry.Name())
 
     def Name(self):
         return self._name
@@ -148,7 +154,7 @@
                        ' */\n') % self._name
 
         print >>file, \
-              'static struct %(name)s_access_ __%(name)s_base = {' % \
+              'static struct %(name)s_access_ %(name)s_base__ = {' % \
               { 'name' : self._name }
         for entry in self._entries:
             self.PrintIndented(file, '  ', entry.CodeBase())
@@ -170,7 +176,7 @@
             '    event_warn("%%s: malloc", __func__);\n'
             '    return (NULL);\n'
             '  }\n'
-            '  tmp->base = &__%(name)s_base;\n') % { 'name' : self._name }
+            '  tmp->base = &%(name)s_base__;\n') % { 'name' : self._name }
 
         for entry in self._entries:
             self.PrintIndented(file, '  ', entry.CodeInitialize('tmp'))
@@ -332,11 +338,11 @@
             'evtag_marshal_%(name)s(struct evbuffer *evbuf, ev_uint32_t tag, '
             'const struct %(name)s *msg)\n'
             '{\n'
-            '  struct evbuffer *_buf = evbuffer_new();\n'
-            '  assert(_buf != NULL);\n'
-            '  %(name)s_marshal(_buf, msg);\n'
-            '  evtag_marshal_buffer(evbuf, tag, _buf);\n '
-            '  evbuffer_free(_buf);\n'
+            '  struct evbuffer *buf_ = evbuffer_new();\n'
+            '  assert(buf_ != NULL);\n'
+            '  %(name)s_marshal(buf_, msg);\n'
+            '  evtag_marshal_buffer(evbuf, tag, buf_);\n '
+            '  evbuffer_free(buf_);\n'
             '}\n' ) % { 'name' : self._name }
 
 class Entry:
@@ -1532,7 +1538,7 @@
         # Use the complete provided path to the input file, with all
         # non-identifier characters replaced with underscores, to
         # reduce the chance of a collision between guard macros.
-        return '_' + nonident.sub('_', name).upper() + '_'
+        return 'EVENT_RPCOUT_' + nonident.sub('_', name).upper() + '_'
 
     def HeaderPreamble(self, name):
         guard = self.GuardName(name)
@@ -1579,8 +1585,8 @@
                  '#include <event2/event.h>\n'
                  '#include <event2/buffer.h>\n'
                  '#include <event2/tag.h>\n\n'
-                 '#ifdef _EVENT___func__\n'
-                 '#define __func__ _EVENT___func__\n'
+                 '#if defined(EVENT____func__) && !defined(__func__)\n'
+                 '#define __func__ EVENT____func__\n'
                  '#endif\n\n'
                  )
 
@@ -1638,6 +1644,11 @@
         self.impl_file = None
         self.factory = CCodeGenerator()
 
+        if len(argv) >= 2 and argv[1] == '--quiet':
+            global QUIETLY
+            QUIETLY = 1
+            del argv[1]
+
         if len(argv) < 2 or len(argv) > 4:
             raise Usage(argv[0])
 
@@ -1668,13 +1679,13 @@
         impl_file = self.impl_file
         factory = self.factory
 
-        print >>sys.stderr, 'Reading \"%s\"' % filename
+        declare('Reading \"%s\"' % filename)
 
         fp = open(filename, 'r')
         entities = Parse(factory, fp)
         fp.close()
 
-        print >>sys.stderr, '... creating "%s"' % header_file
+        declare('... creating "%s"' % header_file)
         header_fp = open(header_file, 'w')
         print >>header_fp, factory.HeaderPreamble(filename)
 
@@ -1690,7 +1701,7 @@
         print >>header_fp, factory.HeaderPostamble(filename)
         header_fp.close()
 
-        print >>sys.stderr, '... creating "%s"' % impl_file
+        declare('... creating "%s"' % impl_file)
         impl_fp = open(impl_file, 'w')
         print >>impl_fp, factory.BodyPreamble(filename, header_file)
         for entry in entities: