| #!/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 |