blob: a496bc3ef350dee920283d6afaf9805045eb08cb [file] [log] [blame]
#!/bin/sh
#
# toarxiv.sh: Create a directory containing the pieces of perfbook
# needed for an arxiv.org submission. Run at the top level of
# the perfbook source tree after typing "make".
#
# Usage: toarxiv.sh [ destdir ]
#
# The destdir argument defaults to "/tmp/perfbook". If this already
# exists, the script complains and aborts.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, you can access it online at
# http://www.gnu.org/licenses/gpl-2.0.html.
#
# Copyright (c) 2017-2019 Paul E. McKenney, IBM Corporation.
# Copyright (c) 2019 Paul E. McKenney, Facebook.
T=/tmp/toarxiv.$$
trap 'rm -rf $T' 0 2
mkdir $T
destdir=${1-/tmp/perfbook}
if test -e ${destdir}
then
echo Destination \"${destdir}\" already exists, aborting!
exit 1
fi
if mkdir ${destdir}
then
:
else
echo Could not create \"${destdir}\", aborting!
exit 1
fi
make
find */ -type d -print |
grep -v '^\.git' |
grep -v '\.git/' |
grep -v '\.git$' |
grep -v '^utilities' |
sed -e "s,^,mkdir ${destdir}/," |
sh
cp ack.tex autodate.tex glsdict.tex glossary.tex origpub.tex contrib.tex legal.tex qqz.tex summary.tex origpub.sty qqz.sty pfbook.cls pfhyphex.tex perfbook.bbl perfbook.acr perfbook.ind perfbook-api.ind indexsee.tex ${destdir}
cp `kpsewhich fvextra.sty` ${destdir}
cp `kpsewhich epigraph.sty` ${destdir}
find */ '(' -name '*.pdf' -o -name '*.lst' -o -name '*.png' ')' -exec cp {} ${destdir}/{} \;
# Arxiv doesn't like "@" in filenames, so transform them to "=".
transform_fcv()
{
sed -e 's/\(\\input{.*\)@\(.*.fcv}\)/\1=\2/' < $1 > ${destdir}/$1
}
find */ -name '*.tex' -print |
sed -e 's/^.*$/transform_fcv &/' > $T/texfiles
. $T/texfiles
find */ -name '*.fcv' -print |
sed -e 's,^\(.*\)@\(.*\.fcv\),cp & '"${destdir}"'/\1=\2,' | sh
# A few code files. This might end up not scaling, but...
cp appendix/styleguide/samplecodesnippet.c ${destdir}/appendix/styleguide
cp locking/sawkerf.png ${destdir}/locking
# Remove "helper" .tex files that generate figure (keep PDF instead)
rm ${destdir}/SMPdesign/DiningPhilosopher4part-b.tex
rm ${destdir}/SMPdesign/DiningPhilosopher5.tex
rm ${destdir}/SMPdesign/DiningPhilosopher5PEM.tex
rm ${destdir}/SMPdesign/DiningPhilosopher5TB.tex
# The following changes work around arxiv.org limitations
sed -e '/usepackage{footnotebackref}/d' \
-e 's/{toarxiv}{false}/{toarxiv}{true}/' \
< perfbook.tex > ${destdir}/perfbook.tex
# echo "nohypertex" > ${destdir}/00README.XXX