diff options
author | Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com> | 2015-05-12 16:23:33 -0300 |
---|---|---|
committer | Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com> | 2015-05-12 16:23:33 -0300 |
commit | e136b1a6cb0fe664969d2a7a1dfed395dac13aa1 (patch) | |
tree | f406e514e608f01ffa94d401452d4cb17c20204e /pkgkde-mark-private-symbols | |
parent | d6f6389aaa67c302cf8e1ed923b2b4d7e9df8288 (diff) | |
download | pkg-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-symbols | 103 |
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 |