summaryrefslogtreecommitdiff
path: root/pkgkde-mark-private-symbols
diff options
context:
space:
mode:
authorLisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com>2015-05-12 16:23:33 -0300
committerLisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com>2015-05-12 16:23:33 -0300
commite136b1a6cb0fe664969d2a7a1dfed395dac13aa1 (patch)
treef406e514e608f01ffa94d401452d4cb17c20204e /pkgkde-mark-private-symbols
parentd6f6389aaa67c302cf8e1ed923b2b4d7e9df8288 (diff)
downloadpkg-kde-tools-e136b1a6cb0fe664969d2a7a1dfed395dac13aa1.tar.gz
Create pkgkde-mark-private-symbols
In this way we ca use the same script in all the Qt5 packages.
Diffstat (limited to 'pkgkde-mark-private-symbols')
-rw-r--r--pkgkde-mark-private-symbols103
1 files changed, 103 insertions, 0 deletions
diff --git a/pkgkde-mark-private-symbols b/pkgkde-mark-private-symbols
new file mode 100644
index 0000000..0427b71
--- /dev/null
+++ b/pkgkde-mark-private-symbols
@@ -0,0 +1,103 @@
+#! /bin/sh
+# Copyright (c) 2013 Sune Vuorela <sune@debian.org>
+# Copyright (c) 2014 Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>
+# Copyright (c) 2015 Dmitry Schanev <mitya57@debian.org>
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+# Usage:
+# Define NODEBUG to avoid seeing which symbols are being processed.
+# Define WRITERESULTS to actually mark the real symbols files.
+
+error() {
+ echo $@
+ exit 1
+}
+
+debug() {
+ [ ! -n "${NODEBUG}" ] && echo $@
+}
+
+
+# Check for the correct number of parameters.
+if [ "$#" -lt 1 ]
+then
+ error "You must provide the path to the installed headers's directory."
+fi
+
+if [ "$#" -ne 1 ]
+then
+ error "This script only takes one argument."
+fi
+
+PRIVATE_HEADERS=$1
+
+if [ ! -d ${PRIVATE_HEADERS} ]
+then
+ error "The path provided is not a directory."
+fi
+
+if [ ! -n "${WRITERESULTS}" ]
+then
+ # Create a backup copy of the original symbols file.
+ for symbols_file in `ls debian/*.symbols`
+ do
+ cp $symbols_file $symbols_file.mps
+ done
+fi
+
+# Unmark private symbols from the copies. This will
+# help us find symbols that might have become public.
+for symbols_file in `ls debian/*.symbols`
+do
+ if [ ! -n "${WRITERESULTS}" ]
+ then
+ sed -i 's/ 1$//g' $symbols_file.mps
+ else
+ sed -i 's/ 1$//g' $symbols_file
+ fi
+done
+
+grep -rh class ${PRIVATE_HEADERS} |
+ grep EXPORT |
+ while read class export classname rest
+ do
+ classname=$(echo $classname | sed 's/://')
+ echo ${#classname}${classname}
+ done |
+ while read privateclass
+ do
+ debug Marking ${privateclass} as private
+ if [ -n "${WRITERESULTS}" ]
+ then
+ sed -i "s/\(.*${privateclass}[^ ]* *[^ ]*\)$/\1 1/" debian/*.symbols
+ else
+ sed -i "s/\(.*${privateclass}[^ ]* *[^ ]*\)$/\1 1/" debian/*.symbols.mps
+ fi
+ done
+
+if [ ! -n "${WRITERESULTS}" ]
+then
+ # Diff the symbols files and output it's differences.
+ for symbols_file in `ls debian/*.symbols`
+ do
+ diff -Nau $symbols_file $symbols_file.mps
+ done
+fi