diff options
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | debian/changelog | 4 | ||||
-rw-r--r-- | debian/pkg-kde-tools.install | 2 | ||||
-rw-r--r-- | man1/pkgkde-mark-private-symbols.1 | 23 | ||||
-rw-r--r-- | pkgkde-mark-private-symbols | 103 |
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 |