]> jfr.im git - irc/atheme/atheme.git/commitdiff
configure, README.md, GIT-Access.txt: backport from master & adjust
authorAaron Jones <redacted>
Sun, 28 Feb 2021 02:24:57 +0000 (02:24 +0000)
committerAaron Jones <redacted>
Sun, 28 Feb 2021 02:24:57 +0000 (02:24 +0000)
This will enable future releases on this branch to be more user friendly.

GIT-Access [deleted file]
GIT-Access.txt [new file with mode: 0644]
README.md
configure
configure.ac
include/Makefile
include/mkserno.sh [new file with mode: 0755]

diff --git a/GIT-Access b/GIT-Access
deleted file mode 100644 (file)
index d9ae4f7..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-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/
diff --git a/GIT-Access.txt b/GIT-Access.txt
new file mode 100644 (file)
index 0000000..4080750
--- /dev/null
@@ -0,0 +1,48 @@
+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.
index 3d0a71c0ded691b415595bf85bc7e823f54530c5..bd58cd3bf4ae4cf0ed7708ba2ac1228d012421e8 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,37 +1,72 @@
-## 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)
index e7e9a75e3c97730bb0b1c2f8780196bbfed2ea5d..162745db6f26f927e46b29f8323f3d17c7ea5ee3 100755 (executable)
--- a/configure
+++ b/configure
@@ -2741,15 +2741,27 @@ $as_echo "no" >&6; }
 
 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
index 9eac4e265d206f4f61887961c82d57ff2fb1efb0..051eef637c1b538aba5048f8ac294dd3732b7601 100644 (file)
@@ -20,12 +20,21 @@ BUILDSYS_SHARED_LIB
 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])
index 310ae7ed28c9dda8da6922b820577993944f4ec8..6038cf331aea4bf3cc53680344db0a57d22edea9 100644 (file)
@@ -66,8 +66,6 @@ hooktypes.h: hooktypes.in mkhooktypes.sh
        @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
diff --git a/include/mkserno.sh b/include/mkserno.sh
new file mode 100755 (executable)
index 0000000..b43a807
--- /dev/null
@@ -0,0 +1,59 @@
+#!/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