Project

General

Profile

Feature #268 ยป 0028-installer_cross-Drop-autotools-builds-support.patch

Marko Lindqvist, 02/17/2024 11:56 PM

View differences:

platforms/windows/Makefile.am
installer_cross/create-freeciv-gtk-qt-nsi.sh \
installer_cross/create-freeciv-sdl2-nsi.sh \
installer_cross/create-freeciv-ruledit-nsi.sh \
installer_cross/installer_build.sh \
installer_cross/build_all_installers.sh \
installer_cross/winbuild.sh \
installer_cross/Freeciv.url \
installer_cross/freeciv-server.cmd \
installer_cross/freeciv-gtk3.22.cmd \
platforms/windows/installer_cross/build_all_installers.sh
#!/usr/bin/env bash
#/***********************************************************************
# Freeciv - Copyright (C) 2017-2023
# 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, 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.
#
#***********************************************************************/
if test "$1" = "" || test "$1" = "-h" || test "$1" = "--help" ; then
USAGE_NEEDED=yes
fi
if test "$2" != "snapshot" && test "$2" != "release" ; then
USAGE_NEEDED=yes
fi
if test "${USAGE_NEEDED}" = "yes" ; then
echo "Usage: $0 <crosser dir> <snapshot|release>"
exit 1
fi
DLLSPATH="$1"
export INST_CROSS_MODE="$2"
if ! test -d "${DLLSPATH}" ; then
echo "Dllstack directory \"${DLLSPATH}\" not found!" >&2
exit 1
fi
if ! test -f "${DLLSPATH}/crosser.txt" ; then
echo "Directory \"${DLLSPATH}\" does not look like crosser environment!" >&2
exit 1
fi
RET=0
if grep "CROSSER_QT6" "${DLLSPATH}/crosser.txt" | grep yes > /dev/null
then
CROSSER_QT6=yes
fi
if grep "CROSSER_GTK4" "${DLLSPATH}/crosser.txt" | grep yes > /dev/null
then
CROSSER_GTK4=yes
fi
if ! ./installer_build.sh "${DLLSPATH}" gtk3.22 ; then
RET=1
GTK322="Fail"
else
GTK322="Success"
fi
if test "${CROSSER_QT6}" != "yes" ; then
QT6="N/A"
elif ! ./installer_build.sh "${DLLSPATH}" qt6 ; then
RET=1
QT6="Fail"
else
QT6="Success"
fi
# sdl2-client comes with gtk4 modpack installer
if test "${CROSSER_GTK4}" != "yes" ; then
SDL2="N/A"
elif ! ./installer_build.sh "${DLLSPATH}" sdl2 ; then
RET=1
SDL2="Fail"
else
SDL2="Success"
fi
if test "${CROSSER_GTK4}" != "yes" ; then
GTK4="N/A"
elif ! ./installer_build.sh "${DLLSPATH}" gtk4 ; then
RET=1
GTK4="Fail"
else
GTK4="Success"
fi
if test "${CROSSER_QT6}" != "yes" ; then
RULEDIT="N/A"
elif ! ./installer_build.sh "${DLLSPATH}" ruledit ; then
RET=1
RULEDIT="Fail"
else
RULEDIT="Success"
fi
echo "Gtk3.22: ${GTK322}"
echo "Gtk4: ${GTK4}"
echo "Qt6: ${QT6}"
echo "Sdl2: ${SDL2}"
echo "Ruledit: ${RULEDIT}"
exit ${RET}
platforms/windows/installer_cross/installer_build.sh
#!/usr/bin/env bash
#/***********************************************************************
# Freeciv - Copyright (C) 2017-2023
# 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, 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.
#
#***********************************************************************/
add_glib_env() {
mkdir -p $2/share/glib-2.0/schemas &&
cp -R $1/share/glib-2.0/schemas/*.gschema.xml $2/share/glib-2.0/schemas/ &&
cp $1/bin/libglib-2.0-0.dll $2/ &&
cp $1/bin/libpcre2-8-0.dll $2/ &&
mkdir -p $2/bin &&
cp $1/bin/glib-compile-schemas.exe $2/bin/
}
add_gtk_common_env() {
mkdir -p $2/lib &&
cp -R $1/lib/gdk-pixbuf-2.0 $2/lib/ &&
mkdir -p $2/share/icons &&
cp -R $1/share/locale $2/share/ &&
cp -R $1/share/icons/Adwaita $2/share/icons/ &&
cp $1/bin/libgobject-2.0-0.dll $2/ &&
cp $1/bin/libpixman-1-0.dll $2/ &&
cp $1/bin/libcairo-gobject-2.dll $2/ &&
cp $1/bin/libcairo-2.dll $2/ &&
cp $1/bin/libepoxy-0.dll $2/ &&
cp $1/bin/libgdk_pixbuf-2.0-0.dll $2/ &&
cp $1/bin/libgio-2.0-0.dll $2/ &&
cp $1/bin/libfribidi-0.dll $2/ &&
cp $1/bin/libpango-1.0-0.dll $2/ &&
cp $1/bin/libpangocairo-1.0-0.dll $2/ &&
cp $1/bin/libffi-8.dll $2/ &&
cp $1/bin/libatk-1.0-0.dll $2/ &&
cp $1/bin/libgmodule-2.0-0.dll $2/ &&
cp $1/bin/libpangowin32-1.0-0.dll $2/ &&
cp $1/bin/libfontconfig-1.dll $2/ &&
cp $1/bin/libxml2-2.dll $2/ &&
cp $1/bin/libjpeg-9.dll $2/ &&
mkdir -p $2/bin &&
cp $1/bin/gdk-pixbuf-query-loaders.exe $2/bin/
}
add_gtk3_env() {
add_gtk_common_env $1 $2 &&
mkdir -p $2/etc &&
cp -R $1/etc/gtk-3.0 $2/etc/ &&
cp $1/bin/libgtk-3-0.dll $2/ &&
cp $1/bin/libgdk-3-0.dll $2/ &&
cp $1/bin/gtk-update-icon-cache.exe $2/bin/ &&
cp ./helpers/installer-helper-gtk3.cmd $2/bin/installer-helper.cmd
}
add_gtk4_env() {
add_gtk_common_env $1 $2 &&
mkdir -p $2/etc &&
cp $1/bin/libgtk-4-1.dll $2/ &&
cp $1/bin/libgraphene-1.0-0.dll $2/ &&
cp $1/bin/libcairo-script-interpreter-2.dll $2/ &&
cp $1/bin/libtiff-6.dll $2/ &&
cp $1/bin/gdbus.exe $2/ &&
cp $1/bin/gtk4-update-icon-cache.exe $2/bin/ &&
cp ./helpers/installer-helper-gtk4.cmd $2/bin/installer-helper.cmd
}
add_sdl2_mixer_env() {
cp $1/bin/SDL2.dll $2/ &&
cp $1/bin/SDL2_mixer.dll $2/ &&
cp $1/bin/libvorbisfile-3.dll $2/ &&
cp $1/bin/libvorbis-0.dll $2/ &&
cp $1/bin/libogg-0.dll $2/
}
add_sdl2_env() {
cp $1/bin/SDL2_image.dll $2/ &&
cp $1/bin/SDL2_ttf.dll $2/
}
add_qt6_env() {
cp -R $1/qt6/plugins $2/ &&
cp $1/bin/Qt6Core.dll $2/ &&
cp $1/bin/Qt6Gui.dll $2/ &&
cp $1/bin/Qt6Widgets.dll $2/ &&
cp $1/bin/libpcre2-16-0.dll $2/ &&
mkdir -p $2/bin &&
cp ./helpers/installer-helper-qt.cmd $2/bin/installer-helper.cmd
}
add_common_env() {
cp $1/bin/libcurl-4.dll $2/ &&
cp $1/bin/liblzma-5.dll $2/ &&
cp $1/bin/libzstd-1.dll $2/ &&
cp $1/bin/libintl-8.dll $2/ &&
cp $1/bin/libsqlite3-0.dll $2/ &&
cp $1/bin/libiconv-2.dll $2/ &&
cp $1/bin/libz.dll.1.3.1 $2/ &&
cp $1/lib/icuuc64.dll $2/ &&
cp $1/lib/icudt64.dll $2/ &&
cp $1/bin/libpng16-16.dll $2/ &&
cp $1/bin/libfreetype-6.dll $2/ &&
cp $1/bin/libharfbuzz-0.dll $2/ &&
add_glib_env $1 $2
}
if test "$1" = x || test "$1" = "-h" || test "$1" = "--help" || test "$2" = "" ; then
echo "Usage: $0 <crosser dir> <gui>"
exit 1
fi
DLLSPATH="$1"
GUI="$2"
NAMEP="-client-${GUI}"
case $GUI in
gtk3.22)
GUINAME="GTK3.22"
MPGUI="gtk3"
FCMP="gtk3" ;;
qt6)
GUINAME="Qt6"
CLIENT="qt"
MPGUI="qt"
FCMP="qt" ;;
sdl2)
GUINAME="SDL2"
FCMP="gtk4" ;;
gtk4)
GUINAME="GTK4"
MPGUI="gtk4"
FCMP="gtk4" ;;
ruledit)
NAMEP="-ruledit" ;;
*)
echo "Unknown gui type \"$GUI\"" >&2
exit 1 ;;
esac
if test "$CLIENT" = "" ; then
CLIENT="$GUI"
fi
if ! test -d "$DLLSPATH" ; then
echo "Dllstack directory \"$DLLSPATH\" not found!" >&2
exit 1
fi
if ! ./winbuild.sh "$DLLSPATH" "$GUI" ; then
exit 1
fi
SETUP=$(grep "CrosserSetup=" $DLLSPATH/crosser.txt | sed -e 's/CrosserSetup="//' -e 's/"//')
SRC_ROOT="$(cd ../../.. || exit 1 ; pwd)"
VERREV="$("${SRC_ROOT}/fc_version")"
if test "${INST_CROSS_MODE}" != "release" ; then
if test -d "${SRC_ROOT}/.git" || test -f "${SRC_ROOT}/.git" ; then
VERREV="$VERREV-$(cd "${SRC_ROOT}" && git rev-parse --short HEAD)"
GITREVERT=true
fi
fi
INSTDIR="autotools/install/freeciv-$SETUP-${VERREV}${NAMEP}"
if test "$GUI" = "ruledit" ; then
if ! make -C autotools/build/${SETUP}-${GUI}/translations/ruledit update-po ||
! make -C autotools/build/${SETUP}-${GUI}/bootstrap langstat_ruledit.txt
then
echo "Langstat creation failed!" >&2
exit 1
fi
if test "$GITREVERT" = true ; then
git checkout "${SRC_ROOT}/translations/ruledit"
fi
else
if ! make -C autotools/build/${SETUP}-client-${GUI}/translations/core update-po ||
! make -C autotools/build/${SETUP}-client-${GUI}/bootstrap langstat_core.txt
then
echo "Langstat creation failed!" >&2
exit 1
fi
if test "$GITREVERT" = true ; then
git checkout "${SRC_ROOT}/translations/core"
fi
fi
if ! mv $INSTDIR/bin/* $INSTDIR/ ||
! mv $INSTDIR/share/freeciv $INSTDIR/data ||
! mv $INSTDIR/share/doc $INSTDIR/ ||
! mkdir -p $INSTDIR/doc/freeciv/installer ||
! cat licenses/header.txt "${SRC_ROOT}/COPYING" > "${INSTDIR}/doc/freeciv/installer/COPYING.installer" ||
! rm -Rf $INSTDIR/lib ||
! cp Freeciv.url $INSTDIR/
then
echo "Rearranging install directory failed!" >&2
exit 1
fi
if ! add_common_env $DLLSPATH $INSTDIR ; then
echo "Copying common environment failed!" >&2
exit 1
fi
NSI_DIR="autotools/nsi"
if ! mkdir -p "$NSI_DIR" ; then
echo "Cannot create \"$NSI_DIR\" directory" >&2
exit 1
fi
if ! mkdir -p autotools/output ; then
echo "Cannot create autotools/output directory" >&2
exit 1
fi
if test "$GUI" = "ruledit" ; then
if ! cp freeciv-ruledit.cmd "${INSTDIR}/"
then
echo "Adding cmd-file failed!" >&2
exit 1
fi
if ! add_qt6_env "${DLLSPATH}" "${INSTDIR}" ; then
echo "Copying Qt6 environment failed!" >&2
exit 1
fi
if ! ./create-freeciv-ruledit-nsi.sh \
"${INSTDIR}" "autotools/output" "${VERREV}" "qt6" "Qt6" "${SETUP}" \
> "${NSI_DIR}/ruledit-${SETUP}-${VERREV}.nsi"
then
exit 1
fi
if ! makensis -NOCD "${NSI_DIR}/ruledit-${SETUP}-${VERREV}.nsi"
then
echo "Creating installer failed!" >&2
exit 1
fi
else
if ! cp freeciv-server.cmd freeciv-$CLIENT.cmd freeciv-mp-$FCMP.cmd $INSTDIR/
then
echo "Adding cmd-files failed!" >&2
exit 1
fi
if ! add_sdl2_mixer_env $DLLSPATH $INSTDIR ; then
echo "Copying SDL2_mixer environment failed!" >&2
exit 1
fi
case $GUI in
gtk3.22)
if ! add_gtk3_env $DLLSPATH $INSTDIR ; then
echo "Copying gtk3 environment failed!" >&2
exit 1
fi ;;
sdl2)
if ! add_gtk4_env $DLLSPATH $INSTDIR ; then
echo "Copying gtk4 environment failed!" >&2
exit 1
fi
if ! add_sdl2_env $DLLSPATH $INSTDIR ; then
echo "Copying SDL2 environment failed!" >&2
exit 1
fi ;;
qt6)
if ! cp freeciv-ruledit.cmd "${INSTDIR}/"
then
echo "Adding cmd-file failed!" >&2
exit 1
fi
if ! add_qt6_env "${DLLSPATH}" "${INSTDIR}" ; then
echo "Copying Qt6 environment failed!" >&2
exit 1
fi ;;
gtk4)
if ! add_gtk4_env $DLLSPATH $INSTDIR ; then
echo "Copying gtk4 environment failed!" >&2
exit 1
fi ;;
esac
if test "$GUI" = "sdl2" ; then
if ! ./create-freeciv-sdl2-nsi.sh \
"$INSTDIR" "autotools/output" "$VERREV" "$SETUP" \
"helpers/uninstaller-helper-gtk3.sh" \
> "${NSI_DIR}/client-${SETUP}-${VERREV}-${GUI}.nsi"
then
exit 1
fi
else
if test "${GUI}" = "qt6" ; then
EXE_ID="qt"
else
EXE_ID="${GUI}"
fi
if test "$GUI" = "gtk3.22" || test "$GUI" = "gtk4" ; then
UNINSTALLER="helpers/uninstaller-helper-gtk3.sh"
else
UNINSTALLER=""
fi
if ! ./create-freeciv-gtk-qt-nsi.sh \
"$INSTDIR" "autotools/output" "$VERREV" "$GUI" "$GUINAME" \
"$SETUP" "$MPGUI" "$EXE_ID" "$UNINSTALLER" \
> "${NSI_DIR}/client-${SETUP}-${VERREV}-${GUI}.nsi"
then
exit 1
fi
fi
if ! makensis -NOCD "${NSI_DIR}/client-${SETUP}-${VERREV}-${GUI}.nsi"
then
echo "Creating installer failed!" >&2
exit 1
fi
fi
platforms/windows/installer_cross/winbuild.sh
#!/bin/sh
# winbuild.sh: Cross-compiling freeciv from linux to Windows using Crosser dllstack
#
# (c) 2008-2016 Marko Lindqvist
#
# This script is licensed under Gnu General Public License version 2 or later.
# See COPYING available from the same location you got this script.
# Version 2.4.3 (28-Jan-23)
WINBUILD_VERSION="2.4.3"
MIN_WINVER=0x0603 # Windows 8.1, Qt6-client and Qt6-ruledit builds override this
CROSSER_FEATURE_LEVEL=2.8
if test "$1" = "" || test "$1" = "-h" || test "$1" = "--help" ; then
echo "Usage: $0 <crosser dir> [gui]"
exit 1
fi
if test "$1" = "-v" || test "$1" = "--version" ; then
echo "winbuild.sh version $WINBUILD_VERSION"
exit
fi
DLLSPATH="$1"
if ! test -d "$DLLSPATH" ; then
echo "Dllstack directory \"$DLLSPATH\" not found!" >&2
exit 1
fi
if ! test -f "$DLLSPATH/crosser.txt" ; then
echo "Directory \"$DLLSPATH\" does not look like crosser environment!" >&2
exit 1
fi
SRC_ROOT="$(cd ../../.. || exit 1 ; pwd)"
VERREV="$("${SRC_ROOT}/fc_version")"
if test "${INST_CROSS_MODE}" != "release" ; then
if test -d "${SRC_ROOT}/.git" || test -f "${SRC_ROOT}/.git" ; then
VERREV="$VERREV-$(cd "${SRC_ROOT}" && git rev-parse --short HEAD)"
fi
fi
FLVL=$(grep "CrosserFeatureLevel=" $DLLSPATH/crosser.txt | sed -e 's/CrosserFeatureLevel="//' -e 's/"//')
if test "$FLVL" != "$CROSSER_FEATURE_LEVEL" ; then
echo "Crosser feature level \"$FLVL\", required \"$CROSSER_FEATURE_LEVEL\"!" >&2
exit 1
fi
CSET=$(grep "CrosserSet=" $DLLSPATH/crosser.txt | sed -e 's/CrosserSet="//' -e 's/"//')
if test "$CSET" != "current" ; then
echo "Crosser set is \"$CSET\", only \"current\" is supported!" >&2
exit 1
fi
SETUP=$(grep "CrosserSetup=" $DLLSPATH/crosser.txt | sed -e 's/CrosserSetup="//' -e 's/"//')
# Make this Qt-client/Ruledit specific as upstream updates
# to Qt headers allow. Currently needed in all cases.
CXXFLAGS="-Wno-error=attributes"
if test "$2" = "ruledit" ; then
SINGLE_GUI=true
GUIP="-ruledit"
RULEDIT="yes"
CLIENTS="no"
FCMP="no"
SERVER="no"
AIS="--enable-ai-static=stub"
elif test "$2" != "" ; then
SINGLE_GUI=true
GUIP="-client-$2"
SERVER="yes"
if test "$2" = "qt6" ; then
RULEDIT="yes"
CLIENTS="qt"
else
RULEDIT="no"
CLIENTS="$2"
fi
case $2 in
sdl2) FCMP="gtk4" ;;
gtk3.22) FCMP="gtk3" ;;
gtk4) FCMP="gtk4" ;;
qt6) FCMP="qt"
QTVER="Qt6"
MIN_WINVER="0x0A00" ;; # Qt6 requires Win10 anyway
*) echo "Unknown gui \"$2\"!" >&2
exit 1 ;;
esac
else
GUIP=""
SERVER="yes"
RULEDIT="yes"
fi
if test "$NAMEP" = "" ; then
NAMEP="$GUIP"
fi
if test "$MAKE_PARAMS" = "" ; then
MAKE_PARAMS="-j$(nproc)"
fi
BUILD_DIR="autotools/build/${SETUP}${NAMEP}"
if ! rm -Rf "${BUILD_DIR}" ; then
echo "Failed to clear out old build directory!" >&2
exit 1
fi
if ! mkdir -p "${BUILD_DIR}" ; then
echo "Can't create build directory \"${BUILD_DIR}\"!" >&2
exit 1
fi
if test "$SETUP" = "win64" ; then
TARGET=x86_64-w64-mingw32
if test "$SINGLE_GUI" != "true" ; then
CLIENTS="sdl2,gtk3.22"
FCMP="gtk3,cli"
fi
VERREV="win64-$VERREV"
elif test "$SETUP" = "win32" ; then
TARGET=i686-w64-mingw32
if test "$SINGLE_GUI" != "true" ; then
CLIENTS="sdl2,gtk3.22"
FCMP="gtk3,cli"
fi
VERREV="win32-$VERREV"
else
echo "Unsupported crosser setup \"${SETUP}\"!" >&2
exit 1
fi
if test "${SINGLE_GUI}" != "true" || test "$2" = "ruledit" ; then
if grep "CROSSER_QT6" "${DLLSPATH}/crosser.txt" | grep yes > /dev/null
then
QT6="yes"
QTVER="Qt6"
if test "${SINGLE_GUI}" = "true" ; then
# Build is ONLY about Qt6 programs
MIN_WINVER="0x0A00" # Qt6 requires Win10 anyway
fi
fi
fi
if test "${SINGLE_GUI}" != "true" ; then
if test "${QT6}" = "yes"
then
CLIENTS="${CLIENTS},qt"
FCMP="${FCMP},qt"
fi
fi
if test "${QTVER}" = "Qt6"; then
QTPARAMS="--with-qtver=Qt6 --with-qt6-includes=${DLLSPATH}/qt6/include --with-qt6-libs=${DLLSPATH}/lib"
MOC_CROSSER="${DLLSPATH}/linux/libexec/moc-qt6"
fi
echo "----------------------------------"
echo "Building for ${SETUP}"
echo "Freeciv version ${VERREV}"
echo "Clients: ${CLIENTS}"
echo "----------------------------------"
export CC="$TARGET-gcc -static-libgcc -static-libstdc++"
export CXX="$TARGET-g++ -static-libgcc -static-libstdc++"
if ! "${SRC_ROOT}/autogen.sh" --no-configure-run ; then
echo "Autogen failed" >&2
exit 1
fi
INSTALL_DIR="$(pwd)/autotools/install/freeciv-${VERREV}${NAMEP}"
if ! (
cd "${BUILD_DIR}"
if test "$INST_CROSS_MODE" = "snapshot" ; then
GITREVP="--enable-gitrev"
else
GITREVP=""
fi
if test "$MOCCMD" = "" && test "$MOC_CROSSER" != "" ; then
MOCPARAM="MOCCMD=${MOC_CROSSER}"
fi
PATH="${DLLSPATH}/linux/bin:${PATH}"
hash -r
if ! "${SRC_ROOT}/configure" \
ac_cv_working_gettimeofday=yes \
$MOCPARAM \
FREECIV_LABEL_FORCE="<base>-crs" \
CPPFLAGS="-I${DLLSPATH}/include -D_WIN32_WINNT=${MIN_WINVER}" \
CFLAGS="-Wno-error" \
CXXFLAGS="${CXXFLAGS}" \
PKG_CONFIG_LIBDIR="${DLLSPATH}/lib/pkgconfig" \
--enable-sys-tolua-cmd \
--with-magickwand="${DLLSPATH}/bin" \
--prefix="/" \
$GITREVP \
--enable-client=$CLIENTS \
--enable-fcmp=$FCMP \
--enable-debug \
--host=$TARGET \
--build=$("${SRC_ROOT}/bootstrap/config.guess") \
--with-libiconv-prefix=${DLLSPATH} \
--with-sqlite3-prefix=${DLLSPATH} \
--with-followtag="crosser" \
--enable-crosser \
${AIS} \
--disable-freeciv-manual \
--enable-sdl-mixer=sdl2 \
${QTPARAMS} \
--with-tinycthread \
--without-readline \
--enable-server=$SERVER \
--enable-ruledit=$RULEDIT \
$EXTRA_CONFIG
then
echo "Configure failed" >&2
exit 1
fi
rm -R "$INSTALL_DIR"
# Make each of 'clean', build, and 'install' in separate steps as
# relying on install to depend on all the build activities was not always working.
if ! make $MAKE_PARAMS DESTDIR="$INSTALL_DIR" clean
then
echo "Make clean failed" >&2
exit 1
fi
if ! make $MAKE_PARAMS DESTDIR="$INSTALL_DIR"
then
echo "Build failed" >&2
exit 1
fi
if ! make $MAKE_PARAMS DESTDIR="$INSTALL_DIR" install
then
echo "Make install failed" >&2
exit 1
fi
if ! cp gen_headers/fc_config.h $INSTALL_DIR/share/freeciv/ ; then
echo "Storing fc_config.h failed" >&2
exit 1
fi
if ! cp $DLLSPATH/crosser.txt $INSTALL_DIR/share/freeciv/ ; then
echo "Storing crosser.txt failed" >&2
exit 1
fi
if ! cp $DLLSPATH/ComponentVersions.txt $INSTALL_DIR/share/freeciv/CrosserComponents.txt ; then
echo "Storing CrosserComponents.txt failed" >&2
exit 1
fi
) then
exit 1
fi
if ! mkdir -p autotools/output ; then
echo "Creating autotools/output directory failed" >&2
exit 1
fi
if ! 7z a -r autotools/output/freeciv-${VERREV}${NAMEP}.7z \
freeciv-${VERREV}${NAMEP}
then
echo "7z failed" >&2
exit 1
fi
    (1-1/1)