This will enable future releases on this branch to be more user friendly.
+++ /dev/null
-The Atheme GIT repository can be checked out using the following command:
- $ git clone https://github.com/atheme/atheme.git atheme-devel
- $ cd atheme-devel
-
-You should then run these commands to get the source for libmowgli-2 and
-the contrib modules. Even if you don't end up needing these, (you did not
-enable contrib modules or you have a system-wide libmowgli installation)
-you should still fetch the sources, as the build system expects them to
-be present.
- $ git submodule init
- $ git submodule update
-
-Atheme's GIT repository depot can be browsed over the internet at
-the following address:
- https://github.com/atheme/atheme/
--- /dev/null
+Downloading the Git repository
+------------------------------
+
+Atheme's Git repository is available at the following address:
+<https://github.com/atheme/atheme/>
+
+If you have a modern version of Git (1.6.5 or newer), you can recursively
+clone the repository:
+
+ $ git clone --branch 'release/7.2' --recursive 'https://github.com/atheme/atheme/' atheme-devel
+ $ cd atheme-devel
+
+If you have an older version of Git, you must clone the repository, and then
+fetch its submodules:
+
+ $ git clone 'https://github.com/atheme/atheme/' atheme-devel
+ $ cd atheme-devel
+ $ git checkout release/7.2
+ $ git submodule init
+ $ git submodule update
+
+
+
+Building from the Git repository
+--------------------------------
+
+If you have already checked out the Atheme Git repository, but you have
+been instructed to read this file when configuring Atheme, then you did not
+follow the advice above. Use the following commands to resolve the error:
+
+ $ git submodule init
+ $ git submodule update
+
+
+
+Building from release tarballs
+------------------------------
+
+If you did not obtain this software via Git, but received the GIT-Access.txt
+error when configuring Atheme anyway, this means you downloaded the wrong
+source archive.
+
+When downloading releases from GitHub, you MUST use the *attached* archive:
+
+ atheme-7.x.x.tar.bz2 (or .tar.xz)
+
+DO NOT use the "Download ZIP" button or the "Source code" links, as they are
+missing the required submodules.
-## atheme
+## Atheme IRC Services
-Atheme is a set of services for IRC networks designed for large IRC networks with high
-scalability requirements. It is relatively mature software, with some code and design
-derived from another package called Shrike.
+Atheme is a set of services for IRC networks designed for large IRC networks
+with high scalability requirements. It is relatively mature software, with
+some code and design derived from another package called Shrike.
-Atheme's behavior is tunable using modules and a highly detailed configuration file.
-Almost all behavior can be changed at deployment time just by editing the configuration.
+Atheme's behavior is tunable using modules and a highly detailed configuration
+file. Almost all behavior can be changed at deployment time just by editing
+the configuration.
-## Obtaining atheme
-You can either git clone https://github.com/atheme/atheme.git or download a package
-via our website at https://atheme.github.io/ -- Please do not click the Download buttons
-on GitHub as they lack needed submodules, etc.
-If you are running this code from Git, you should read GIT-Access for instructions on
-how to fully check out the atheme tree, as it is spread across many repositories.
+## Obtaining Atheme
-## basic build instructions for the impatient
+If you have a modern version of Git (1.6.5 or newer), you can recursively
+clone the repository:
-Whatever you do, make sure you do *not* install Atheme into the same location as the source.
-Atheme will default to installing in `$HOME/atheme`, so make sure you plan accordingly for this.
+ $ git clone --branch 'release/7.2' --recursive 'https://github.com/atheme/atheme/' atheme-devel
+ $ cd atheme-devel
+
+If you have an older version of Git, you must clone the repository, and then
+fetch its submodules:
+
+ $ git clone 'https://github.com/atheme/atheme/' atheme-devel
+ $ cd atheme-devel
+ $ git checkout release/7.2
+ $ git submodule init
+ $ git submodule update
+
+If you don't have Git, you can download a package archive from our website at
+<https://atheme.github.io/>.
+
+If you are browsing our GitHub repository, please do NOT click the "Download
+ZIP" button or the "Source code" links there, as they will give you an archive
+that lacks the required submodules. There are proper `.tar.bz2` or `.tar.xz`
+archives attached to each release under "Assets", which is what the "Download"
+button on our website will take you to.
+
+
+
+## Basic build instructions for the impatient
+
+Obtain the source code repository and change into its directory (using the
+commands given above).
+
+If you are building Atheme on a GNU/Linux system, or something which can
+sufficiently emulate that (like WSL 2 on Windows 10), execute the following
+commands:
- $ git submodule update --init
$ ./configure
$ make
$ make install
-If you're still lost, read [INSTALL](INSTALL) or [GIT-Access](GIT-Access) or check out our
-wiki (http://github.com/atheme/atheme/wiki) for hints.
+If you are building Atheme on an OpenBSD (or similar) system, execute the
+following commands instead:
+
+ # pkg_add gmake
+ $ ./configure
+ $ gmake
+ $ gmake install
+
+
+
+## Getting More Help
-## links / contact
+If you're still lost, read the [INSTALL](INSTALL) file or check out our wiki
+for more hints.
- * [GitHub](https://github.com/atheme/atheme)
- * [Website](http://atheme.github.io/)
- * [Wiki](https://github.com/atheme/atheme/wiki)
- * [IRC] irc://chat.freenode.net/ #atheme
+- [Our Website](https://atheme.github.io/)
+- [Our GitHub Repository](https://github.com/atheme/atheme/)
+- [The Atheme Wiki](https://github.com/atheme/atheme/wiki/)
+- [The #atheme channel on freenode](ircs://chat.freenode.net:6697/#atheme)
LIBS="${LIBS} ${DYNAMIC_LD_LIBS}"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if you read GIT-Access" >&5
-$as_echo_n "checking if you read GIT-Access... " >&6; }
-if ! test -f "libmowgli-2/Makefile" -a -f "modules/contrib/Makefile"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+if test -d ".git"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if you read GIT-Access.txt" >&5
+$as_echo_n "checking if you read GIT-Access.txt... " >&6; }
+ if ! test -f "libmowgli-2/Makefile" -a -f "modules/contrib/Makefile"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- as_fn_error $? "please read GIT-Access before trying to build from git" "$LINENO" 5
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ as_fn_error $? "please read GIT-Access.txt before trying to build from git" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if you downloaded the correct source code tarball" >&5
+$as_echo_n "checking if you downloaded the correct source code tarball... " >&6; }
+ if ! test -f "include/serno.h"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ as_fn_error $? "please read the Obtaining Atheme section of README.md" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
+fi
# Extract the first word of "rm", so it can be a program name with args.
set dummy rm; ac_word=$2
BUILDSYS_PROG_IMPLIB
LIBS="${LIBS} ${DYNAMIC_LD_LIBS}"
-AC_MSG_CHECKING([if you read GIT-Access])
-if ! test -f "libmowgli-2/Makefile" -a -f "modules/contrib/Makefile"; then
- AC_MSG_RESULT([no])
- AC_MSG_ERROR([please read GIT-Access before trying to build from git])
+if test -d ".git"; then
+ AC_MSG_CHECKING([if you read GIT-Access.txt])
+ if ! test -f "libmowgli-2/Makefile" -a -f "modules/contrib/Makefile"; then
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([please read GIT-Access.txt before trying to build from git])
+ fi
+ AC_MSG_RESULT([yes])
+else
+ AC_MSG_CHECKING([if you downloaded the correct source code tarball])
+ if ! test -f "include/serno.h"; then
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([please read the Obtaining Atheme section of README.md])
+ fi
+ AC_MSG_RESULT([yes])
fi
-AC_MSG_RESULT([yes])
AC_PATH_PROG([RM], [rm])
AC_PATH_PROG([MV], [mv])
@sh mkhooktypes.sh hooktypes.in >hooktypes.h
serno.h:
- $(info Generate: $@)
- @revh=`git log -1 --pretty=oneline | cut -d' ' -f1 2>/dev/null` || :; \
- [ -z "$$revh" ] || echo "#define SERNO \"$$revh\"" >serno.h
+ @sh mkserno.sh
include ../buildsys.mk
--- /dev/null
+#!/bin/sh
+#
+# SPDX-License-Identifier: ISC
+# SPDX-URL: https://spdx.org/licenses/ISC.html
+#
+# Copyright (C) 2018-2021 Atheme Development Group (https://atheme.github.io/)
+#
+# atheme-services: A collection of minimalist IRC services
+# mkserno.sh: Stores git revision information into serno.h
+# (for use when building with a git(1) source tree)
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+
+SERNO_FILE="serno.h"
+
+REVH_NEW="$(git describe --abbrev=20 --always --broken --dirty --long --tags)"
+
+if [ "x${REVH_NEW}" = "x" ]
+then
+ echo " " >&2
+ echo "Could not determine git revision; is git(1) installed?" >&2
+ echo " " >&2
+ echo "If you are not expecting this message, perhaps you" >&2
+ echo "downloaded the wrong sourcecode tarball. Please see" >&2
+ echo "the GIT-Access.txt file for instructions." >&2
+ echo " " >&2
+ exit 1
+fi
+
+REVH_NEW="\"${REVH_NEW}\""
+
+if [ -f "${SERNO_FILE}" ]
+then
+ REVH_CUR="$(awk '/define SERNO/ { print $3 }' < "${SERNO_FILE}")"
+
+ if [ "x${REVH_NEW}" = "x${REVH_CUR}" ]
+ then
+ # If we would write the same information, avoid touching the
+ # file altogether, and thus avoid causing a rebuild of the
+ # entire source repository next time make is run (due to an
+ # updated mtime in combination with dependency tracking).
+ exit 0
+ fi
+fi
+
+echo "Generate: ${SERNO_FILE}"
+
+cat <<-EOF > "${SERNO_FILE}"
+
+#ifndef ATHEME_INC_SERNO_H
+#define ATHEME_INC_SERNO_H 1
+
+#define SERNO ${REVH_NEW}
+
+#endif /* !ATHEME_INC_SERNO_H */
+
+EOF