summaryrefslogtreecommitdiff
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
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.
-rw-r--r--CMakeLists.txt1
-rw-r--r--debian/changelog4
-rw-r--r--debian/pkg-kde-tools.install2
-rw-r--r--man1/pkgkde-mark-private-symbols.123
-rw-r--r--pkgkde-mark-private-symbols103
5 files changed, 133 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c903938..22048f2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -74,6 +74,7 @@ install(PROGRAMS
pkgkde-debs2symbols
pkgkde-gensymbols
pkgkde-getbuildlogs
+ pkgkde-mark-private-symbols
pkgkde-override-sc-dev-latest
pkgkde-symbolshelper
pkgkde-vcs
diff --git a/debian/changelog b/debian/changelog
index 299750b..69ea293 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,10 @@ pkg-kde-tools (0.15.17~) UNRELEASED; urgency=medium
* Add man pages for pkgkde-gensymbols and pkgkde-symbolshelper
(Closes: #782866).
+ [ Lisandro Damián Nicanor Pérez Meyer ]
+ * Add pkgkde-mark-private-symbols to avoid shipping the script on every
+ Qt5 package.
+
-- Maximiliano Curia <maxy@debian.org> Thu, 26 Mar 2015 17:22:29 +0100
pkg-kde-tools (0.15.16) experimental; urgency=medium
diff --git a/debian/pkg-kde-tools.install b/debian/pkg-kde-tools.install
index 7764558..4367cd5 100644
--- a/debian/pkg-kde-tools.install
+++ b/debian/pkg-kde-tools.install
@@ -5,6 +5,7 @@ usr/bin/pkgkde-debs2symbols
usr/bin/pkgkde-gensymbols
usr/bin/pkgkde-getbuildlogs
usr/bin/pkgkde-git
+usr/bin/pkgkde-mark-private-symbols
usr/bin/pkgkde-override-sc-dev-latest
usr/bin/pkgkde-symbolshelper
usr/bin/pkgkde-vcs
@@ -12,6 +13,7 @@ usr/share/man/man1/dh_movelibkdeinit.1
usr/share/man/man1/dh_sameversiondep.1
usr/share/man/man1/dh_sodeps.1
usr/share/man/man1/pkgkde-git.1
+usr/share/man/man1/pkgkde-mark-private-symbols.1
usr/share/man/man1/pkgkde-override-sc-dev-latest.1
usr/share/man/man1/pkgkde-vcs.1
usr/share/perl5/Debian/Debhelper/
diff --git a/man1/pkgkde-mark-private-symbols.1 b/man1/pkgkde-mark-private-symbols.1
new file mode 100644
index 0000000..ec6620a
--- /dev/null
+++ b/man1/pkgkde-mark-private-symbols.1
@@ -0,0 +1,23 @@
+.TH PKGKDE\-MARK\-PRIVATE\-SYMBOLS 1 "2012-05-27" "0.15" "Debian Qt/KDE tool to mark private symbols in symbols files"
+.SH NAME
+.B pkgkde\-mark\-private\-symbols
+\- a helper tool for Debian pkg-kde symbols handling.
+.SH SYNOPSIS
+.B pkgkde\-mark\-private\-symbols
+[\fBpath/to/headers/dir\fR]
+.B pkgkde\-mark\-private\-symbols
+is a helper tool to mark private symbols inside symbols files. It's only
+parameter is the path to where the headers \fBshipped with the packages\fR
+are installed.
+
+.B pkgkde\-vcs
+will by default write the differences as patches to stdout. If the environment
+variable \fBWRITERESULTS\fR is set it will overwrite the original symbols files.
+
+.SH LICENSE
+.P
+This program is free software distributed under the terms of the Expat license.
+.SH AUTHORS
+Sune Vuorela <sune@debian.org>
+Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>
+Dmitry Schanev <mitya57@debian.org>
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