#!/bin/bash

set -e
set -x

# Usage: put the relevant emacs archive into the current directory and
# run the script.  The resulting two orig.tar.gz files will be placed
# into a new ./split-tmp directory.

emacs_archive_name="emacs-23.2.tar.bz2"
emacs_dir="emacs-23.2"
emacs_version="23.2"
emacs_major="23"
deb_src_rev="1"

main_dir="$(pwd)/split-tmp/${emacs_dir}"
non_main_dir="$(pwd)/split-tmp/${emacs_dir}-non-dfsg"

if ! test root = "`whoami`"
then
  echo Use fakeroot.
  exit 1
fi

if test -e split-tmp
then
  echo "./split-tmp already exists - aborting"
  exit 1
fi

mkdir ./split-tmp
pushd split-tmp

umask 002

tar xf "../${emacs_archive_name}"

find "${emacs_dir}" -name "*.elc" -exec rm {} +
find "${emacs_dir}"/info -type f \
  -not -name "COPYING" -not -name dir -exec rm {} +

mkdir "${non_main_dir}"

function move_to_non_main_dir()
{
  pushd "${emacs_dir}"
  test "$1"
  test ! -e "${non_main_dir}/$1"
  cp -a --parents "$1" "${non_main_dir}/"
  rm -r "$1"
  popd
}

function copy_to_non_main_dir()
{
  pushd "${emacs_dir}"
  cp -a --parents "$1" "${non_main_dir}/"
  popd
}

function remove_from_main_dir()
{
  pushd "${emacs_dir}"
  rm "$1"
  popd
}

# assumes someone has already copied file to non-main dir
function move_to_main_dir()
{
  pushd "${non_main_dir}"
  cp -a --parents "$1" "${main_dir}/"
  rm "$1"
  popd
}

# assumes someone has already copied file to non-main dir
function copy_to_main_dir()
{
  pushd "${non_main_dir}"
  cp -a --parents "$1" "${main_dir}/"
  popd
}

# So both sides will have a copy (at the very least, version.el refers to it).
copy_to_non_main_dir "etc/COPYING"

# verbatim dist only
move_to_non_main_dir "etc/CENSORSHIP"
move_to_non_main_dir "etc/copying.paper"
move_to_non_main_dir "etc/LINUX-GNU"
move_to_non_main_dir "etc/THE-GNU-PROJECT"
move_to_non_main_dir "etc/WHY-FREE"
move_to_non_main_dir "etc/GNU"
move_to_non_main_dir "etc/MOTIVATION"

# reprinted with permissions or copyright mentioned
# no modification mention
move_to_non_main_dir "etc/INTERVIEW"

# Assuming modification not allowed by default (emails, etc.)
move_to_non_main_dir "etc/COOKIES"
move_to_non_main_dir "etc/DEVEL.HUMOR"
move_to_non_main_dir "etc/JOKES"

# This is used via debian/rules to track the nominal_ver.
copy_to_non_main_dir "lisp/version.el"

# GFDL documentation in doc/
move_to_non_main_dir "doc/lispintro"
move_to_non_main_dir "doc/lispref"
move_to_non_main_dir "doc/emacs"

# doc/misc

# Most doc/misc files don't appear to be compatible with the DFSG.
move_to_non_main_dir "doc/misc"

# doc/misc files that do appear to be compatible with the DFSG
move_to_main_dir "doc/misc/faq.texi"

# Copy back files we want in both archives.
copy_to_main_dir "doc/misc/ChangeLog"
copy_to_main_dir "doc/misc/Makefile.in"


BZIP2=-9v tar cjpSf \
  "emacs${emacs_major}_${emacs_version}+${deb_src_rev}.orig.tar.bz2" \
  "${emacs_dir}"

BZIP2=-9v tar cjpSf \
  "emacs${emacs_major}-non-dfsg_${emacs_version}+${deb_src_rev}.orig.tar.bz2" \
  "${emacs_dir}"-non-dfsg

exit 0
