This is an automated email from the ASF dual-hosted git repository.

bcall pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/trafficserver-ci.git


The following commit(s) were added to refs/heads/main by this push:
     new 5b1ecc9  ABI checker for ATS
     new fe9fa80  Merge pull request #72 from bryancall/abi
5b1ecc9 is described below

commit 5b1ecc9dd48fc71be54268a39cfba86fe5ea447b
Author: Bryan Call <bc...@apache.org>
AuthorDate: Wed Feb 16 08:54:37 2022 -0800

    ABI checker for ATS
---
 abi/README.md                     |   4 ++
 abi/abi.sh                        |  13 +++++
 abi/build_script/trafficserver.sh |  14 +++++
 abi/install_abi_tools.sh          |  13 +++++
 abi/patch_releases.sh             |  32 +++++++++++
 abi/patches/limits_8.x.patch      |  10 ++++
 abi/patches/limits_9.x.patch      |  30 ++++++++++
 abi/trafficserver.json            | 112 ++++++++++++++++++++++++++++++++++++++
 8 files changed, 228 insertions(+)

diff --git a/abi/README.md b/abi/README.md
new file mode 100644
index 0000000..d5f0995
--- /dev/null
+++ b/abi/README.md
@@ -0,0 +1,4 @@
+1. Run install\_abi\_tools.sh to install all the necessary command line tools. 
 This should only need to be run once.
+2. Next run the patch\_releases.sh script to download the traffic server 
releases that need to be patched.  Again this should only need to be run once.
+3. Run the abi.sh script to download the rest of the releases, build all 
releases, and check for ABI compatibility.  This script can be run multiple 
time and it will automatically update the traffic server GitHub master branch 
to see if it is still ABI compatible
+
diff --git a/abi/abi.sh b/abi/abi.sh
new file mode 100755
index 0000000..ee59cae
--- /dev/null
+++ b/abi/abi.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+abi-monitor -get -build trafficserver.json
+abi-tracker -build trafficserver.json
+
+# Deploy to webserver directory
+#abi-tracker -deploy /usr/share/nginx/html/abi-trafficserver/
+#cp -pr images /usr/share/nginx/html/abi-trafficserver/
+
+# Untar reports and remove tar.gz reports
+#cd /usr/share/nginx/html/abi-trafficserver/
+#for i in $(find . -name '*tar.gz'); do tar -C $(dirname $i) -xf $i; done
+#find . -name '*tar.gz' -exec rm {} \;
diff --git a/abi/build_script/trafficserver.sh 
b/abi/build_script/trafficserver.sh
new file mode 100644
index 0000000..fa511db
--- /dev/null
+++ b/abi/build_script/trafficserver.sh
@@ -0,0 +1,14 @@
+# Really only needed for GitHub checkout
+autoreconf -if
+
+# abi-dumper wants to have -Og optimization
+sed -i -e 's/-O3/-Og/' configure
+
+# Configure, build and install
+./configure --prefix="$INSTALL_TO"
+make -j 8
+make -j 8 install
+
+# Hacky cleanups
+cp $INSTALL_TO/bin/traffic_server $INSTALL_TO/lib/traffic_server.so
+rm -f $INSTALL_TO/lib/plugin*
diff --git a/abi/install_abi_tools.sh b/abi/install_abi_tools.sh
new file mode 100755
index 0000000..a20b011
--- /dev/null
+++ b/abi/install_abi_tools.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+set -x
+
+rm -rf github
+mkdir github
+cd github
+git clone https://github.com/lvc/installer.git
+cd installer
+for i in abi-dumper abi-tracker abi-compliance-checker vtable-dumper 
abi-monitor; do
+  sudo make install prefix=/usr/local target=${i}
+done
+rm -rf github
diff --git a/abi/patch_releases.sh b/abi/patch_releases.sh
new file mode 100755
index 0000000..1d3611e
--- /dev/null
+++ b/abi/patch_releases.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+set -e
+
+patch_release()
+{
+  root_dir=$(pwd)
+  ver=$1
+  patch=$2
+  echo version: $ver
+  echo patch file: $patch
+  rm -rf installed/trafficserver/$ver
+  rm -rf src/trafficserver/$ver
+  mkdir -p src/trafficserver/$ver
+  cd src/trafficserver/$ver
+  wget 
https://archive.apache.org/dist/trafficserver/trafficserver-${ver}.tar.bz2
+  tar -xjf trafficserver-${ver}.tar.bz2
+  cd trafficserver-${ver}
+  patch -p0 < ../../../../patches/$patch
+  cd ..
+  rm trafficserver-${ver}.tar.bz2
+  tar -cjf trafficserver-${ver}.tar.bz2 trafficserver-${ver}
+  rm -rf trafficserver-${ver}
+  cd $root_dir
+}
+
+for i in 8.1.0 8.1.1 8.1.2; do
+  patch_release $i limits_8.x.patch
+done
+
+patch_release 9.0.0 limits_9.x.patch
+
diff --git a/abi/patches/limits_8.x.patch b/abi/patches/limits_8.x.patch
new file mode 100644
index 0000000..e73ec27
--- /dev/null
+++ b/abi/patches/limits_8.x.patch
@@ -0,0 +1,10 @@
+--- include/tscore/BufferWriterForward.h       2022-02-16 10:12:58.479082634 
-0800
++++ include/tscore/BufferWriterForward.h.new   2022-02-16 10:12:39.591080450 
-0800
+@@ -28,6 +28,7 @@
+ #include <cstring>
+ #include <vector>
+ #include <map>
++#include <limits>
+ 
+ #include "tscpp/util/TextView.h"
+ #include "tscore/ink_assert.h"
diff --git a/abi/patches/limits_9.x.patch b/abi/patches/limits_9.x.patch
new file mode 100644
index 0000000..6a952d6
--- /dev/null
+++ b/abi/patches/limits_9.x.patch
@@ -0,0 +1,30 @@
+--- include/tscpp/util/TextView.h      2022-02-16 10:57:40.674392744 -0800
++++ include/tscpp/util/TextView.h.new  2022-02-16 10:57:56.696394597 -0800
+@@ -32,6 +32,7 @@
+ #include <algorithm>
+ #include <string>
+ #include <string_view>
++#include <limits>
+ 
+ /** Compare views with ordering, ignoring case.
+  *
+--- include/tscore/BufferWriterForward.h       2022-02-16 10:12:58.479082634 
-0800
++++ include/tscore/BufferWriterForward.h.new   2022-02-16 10:12:39.591080450 
-0800
+@@ -28,6 +28,7 @@
+ #include <cstring>
+ #include <vector>
+ #include <map>
++#include <limits>
+ 
+ #include "tscpp/util/TextView.h"
+ #include "tscore/ink_assert.h"
+--- include/tscore/Extendible.h        2020-09-05 18:13:58.000000000 -0700
++++ include/tscore/Extendible.h.new    2022-02-16 11:55:08.735791403 -0800
+@@ -44,6 +44,7 @@
+ #include <typeinfo>
+ #include <type_traits>
+ #include <unordered_map>
++#include <limits>
+ 
+ #include "tscore/AtomicBit.h"
+ #include "tscore/ink_assert.h"
diff --git a/abi/trafficserver.json b/abi/trafficserver.json
new file mode 100644
index 0000000..bee4158
--- /dev/null
+++ b/abi/trafficserver.json
@@ -0,0 +1,112 @@
+{
+  "Name":           "trafficserver",
+  "SourceUrl":      "https://archive.apache.org/dist/trafficserver/";,
+  "Git":            "https://github.com/apache/trafficserver.git";,
+  "Maintainer":     "d...@trafficserver.apache.org",
+  "MaintainerUrl":  "https://trafficserver.apache.org";,
+  "BuildScript":    "build_script/trafficserver.sh",
+  "HeadersDiff":    "Off",
+  "MinimalVersion": "8.1.0",
+
+  "Versions": [
+  {
+    "Number":         "current",
+    "Installed":      "installed/trafficserver/current",
+    "Source":         "src/trafficserver/current",
+    "Changelog":      "Off",
+    "HeadersDiff":    "Off",
+    "PkgDiff":        "Off",
+    "ABIView":        "Off",
+    "ABIDiff":        "Off"
+  },
+  {
+    "Number":         "9.1.1",
+    "Installed":      "installed/trafficserver/9.1.1",
+    "Source":         "src/trafficserver/9.1.1/trafficserver-9.1.1.tar.bz2",
+    "Changelog":      "Off",
+    "HeadersDiff":    "Off",
+    "PkgDiff":        "Off",
+    "ABIView":        "Off",
+    "ABIDiff":        "Off"
+  },
+  {
+    "Number":         "9.1.0",
+    "Installed":      "installed/trafficserver/9.1.0",
+    "Source":         "src/trafficserver/9.1.0/trafficserver-9.1.0.tar.bz2",
+    "Changelog":      "Off",
+    "HeadersDiff":    "Off",
+    "PkgDiff":        "Off",
+    "ABIView":        "Off",
+    "ABIDiff":        "Off"
+  },
+  {
+    "Number":         "9.0.2",
+    "Installed":      "installed/trafficserver/9.0.2",
+    "Source":         "src/trafficserver/9.0.2/trafficserver-9.0.2.tar.bz2",
+    "Changelog":      "Off",
+    "HeadersDiff":    "Off",
+    "PkgDiff":        "Off",
+    "ABIView":        "Off",
+    "ABIDiff":        "Off"
+  },
+  {
+    "Number":         "9.0.1",
+    "Installed":      "installed/trafficserver/9.0.1",
+    "Source":         "src/trafficserver/9.0.1/trafficserver-9.0.1.tar.bz2",
+    "Changelog":      "Off",
+    "HeadersDiff":    "Off",
+    "PkgDiff":        "Off",
+    "ABIView":        "Off",
+    "ABIDiff":        "Off"
+  },
+  {
+    "Number":         "9.0.0",
+    "Installed":      "installed/trafficserver/9.0.0",
+    "Source":         "src/trafficserver/9.0.0/trafficserver-9.0.0.tar.bz2",
+    "Changelog":      "Off",
+    "HeadersDiff":    "Off",
+    "PkgDiff":        "Off",
+    "ABIView":        "Off",
+    "ABIDiff":        "Off"
+  },
+  {
+    "Number":         "8.1.3",
+    "Installed":      "installed/trafficserver/8.1.3",
+    "Source":         "src/trafficserver/8.1.3/trafficserver-8.1.3.tar.bz2",
+    "Changelog":      "Off",
+    "HeadersDiff":    "Off",
+    "PkgDiff":        "Off",
+    "ABIView":        "Off",
+    "ABIDiff":        "Off"
+  },
+  {
+    "Number":         "8.1.2",
+    "Installed":      "installed/trafficserver/8.1.2",
+    "Source":         "src/trafficserver/8.1.2/trafficserver-8.1.2.tar.bz2",
+    "Changelog":      "Off",
+    "HeadersDiff":    "Off",
+    "PkgDiff":        "Off",
+    "ABIView":        "Off",
+    "ABIDiff":        "Off"
+  },
+  {
+    "Number":         "8.1.1",
+    "Installed":      "installed/trafficserver/8.1.1",
+    "Source":         "src/trafficserver/8.1.1/trafficserver-8.1.1.tar.bz2",
+    "Changelog":      "Off",
+    "HeadersDiff":    "Off",
+    "PkgDiff":        "Off",
+    "ABIView":        "Off",
+    "ABIDiff":        "Off"
+  },
+  {
+    "Number":         "8.1.0",
+    "Installed":      "installed/trafficserver/8.1.0",
+    "Source":         "src/trafficserver/8.1.0/trafficserver-8.1.0.tar.bz2",
+    "Changelog":      "Off",
+    "HeadersDiff":    "Off",
+    "PkgDiff":        "Off",
+    "ABIView":        "Off",
+    "ABIDiff":        "Off"
+  }]
+}

Reply via email to