#! /bin/sh # This file is dual-licensed. Choose whichever licence you want from # the two licences listed below. # # The first licence is a regular 2-clause BSD licence. The second licence # is the CC-0 from Creative Commons. It is intended to release Monocypher # to the public domain. The BSD licence serves as a fallback option. # # SPDX-License-Identifier: BSD-2-Clause OR CC0-1.0 # # ------------------------------------------------------------------------ # # Copyright (c) 2019, Loup Vaillant # Copyright (c) 2019-2020, Fabio Scotoni # All rights reserved. # # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # ------------------------------------------------------------------------ # # Written in 2019-2020 by Loup Vaillant and Fabio Scotoni # # To the extent possible under law, the author(s) have dedicated all copyright # and related neighboring rights to this software to the public domain # worldwide. This software is distributed without any warranty. # # You should have received a copy of the CC0 Public Domain Dedication along # with this software. If not, see # set -e VERSION=`git describe --tags` FOLDER=monocypher-$VERSION TARBALL=$FOLDER.tar # Generate documentation doc/doc_gen.sh # Delete the destination folder just to make sure everything is clean. # May be needed if we unpack the tarball in place for testing purposes, # then run the release script again. rm -rf $FOLDER # copy everything except ignored files to the rsync -ad --exclude-from=dist_ignore ./ $FOLDER # Replace version markers by the actual version number (from tags) find $FOLDER -type f -exec sed -i "s/__git__/$VERSION/g" \{\} \; # Remove the dist target from the makefile (no recursive releases!), # and the tests/vector.h target, which ships with the tarball. sed -i '/# Remove lines below for the tarball/,$d' $FOLDER/makefile sed -i 's/clean uninstall dist/clean uninstall/' $FOLDER/makefile sed -i 's| doc/man3/intro.3monocypher||' $FOLDER/makefile sed -i 's|rm -rf lib/ doc/html/ doc/man3/|rm -rf lib/|' $FOLDER/makefile # Remove contributor notes from the README sed -e '/Contributor notes/,$d' -e '1,/^---$/d' -i $FOLDER/README.md sed -e '$d' -i $FOLDER/README.md sed -e '$d' -i $FOLDER/README.md sed -e '1i\ Monocypher\ ----------' -i $FOLDER/README.md # Remove special notes from the LICENCE sed -e '/Special notes/,$d' -i $FOLDER/LICENCE.md sed -e '$d' -i $FOLDER/LICENCE.md # Make the actual tarball. The options here were taken from: # https://reproducible-builds.org/docs/archives/#full-example # This requires GNU tar. # The --mtime value was chosen arbitrarily, but the date is chosen such # that it is after the release 3.1.0, the last one without reproducible # tarballs. tar --sort=name \ --mtime=@1587513600 \ --owner=0 --group=0 --numeric-owner \ --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime \ -cvf $TARBALL $FOLDER # Compress separately so that we can set the -n option to avoid any kind # of timestamp metadata gzip -n $TARBALL # Remove the temporary folder rm -rf $FOLDER # Run tests in the tarball, to make sure we didn't screw up anything # important. We're missing the TIS interpreter run, but that's a good # quick check. tar -xzf $TARBALL.gz cd $FOLDER # Extracting from the tarball, just to make sure tests/test.sh make clean make