mirror of
https://github.com/anope/anope.git
synced 2026-06-12 17:04:47 +02:00
Remove revision numbers as they're only ever set by Config reading git since we've switched off of SVN. Instead just use the hash for the current head when building. Also recheck the hash on every make not just Config.
This commit is contained in:
@@ -209,23 +209,7 @@ if [ ! "$NO_INTRO" ] ; then
|
||||
;;
|
||||
esac
|
||||
. $SOURCE_DIR/src/version.sh
|
||||
if [ -d .git ] ; then
|
||||
VERSION=`git describe --tags`
|
||||
VERSION_BUILD=`echo "$VERSION" | cut -d'-' -f2`
|
||||
if [ "$SOURCE_DIR" = "." ] ; then
|
||||
test -d build || mkdir -p build/include
|
||||
BUILD_DIR="build"
|
||||
else
|
||||
BUILD_DIR="."
|
||||
fi
|
||||
VERSION_EXTRA=`echo "$VERSION" | cut -d'-' -f3`
|
||||
# Only do this if we are not on a tag, src/version.sh will be all we need then.
|
||||
if [ "$VERSION_BUILD" != "$VERSION_EXTRA" ] ; then
|
||||
echo "#define VERSION_BUILD $VERSION_BUILD" > $BUILD_DIR/include/version.h
|
||||
echo "#define VERSION_EXTRA \"-$VERSION_EXTRA\"" >> $BUILD_DIR/include/version.h
|
||||
fi
|
||||
fi
|
||||
cat $SOURCE_DIR/.BANNER | sed "s/CURVER/$VERSION/" | sed "s@SOURCE_DIR@$SOURCE_DIR@" | $PAGER
|
||||
cat $SOURCE_DIR/.BANNER | sed "s/CURVER/$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH$VERSION_EXTRA/" | sed "s@SOURCE_DIR@$SOURCE_DIR@" | $PAGER
|
||||
echo ""
|
||||
else
|
||||
echo ""
|
||||
|
||||
@@ -7,7 +7,7 @@ get_target_property(version_BINARY version LOCATION)
|
||||
# Modify version.h from the above executable, with dependencies to version.cpp
|
||||
# and all of the source files in the main build
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version_build
|
||||
COMMAND ${version_BINARY} ${Anope_SOURCE_DIR}/src/version.sh ${CMAKE_CURRENT_BINARY_DIR}/version.h
|
||||
COMMAND ${version_BINARY} ${Anope_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/version.h
|
||||
DEPENDS version ${SRC_SRCS}
|
||||
)
|
||||
# Add version to list of files for CPack to ignore
|
||||
|
||||
@@ -341,7 +341,6 @@ namespace Anope
|
||||
extern CoreExport int VersionMajor();
|
||||
extern CoreExport int VersionMinor();
|
||||
extern CoreExport int VersionPatch();
|
||||
extern CoreExport int VersionBuild();
|
||||
|
||||
/** Check whether two strings match.
|
||||
* @param str The string to check against the pattern (e.g. foobar)
|
||||
|
||||
+7
-8
@@ -149,15 +149,15 @@ class ModuleVersion
|
||||
private:
|
||||
int Major;
|
||||
int Minor;
|
||||
int Build;
|
||||
int Patch;
|
||||
|
||||
public:
|
||||
/** Constructor
|
||||
* @param vMajor The major version numbber
|
||||
* @param vMinor The minor version numbber
|
||||
* @param vBuild The build version numbber
|
||||
* @param vPatch The patch version numbber
|
||||
*/
|
||||
ModuleVersion(int vMajor, int vMinor, int vBuild);
|
||||
ModuleVersion(int vMajor, int vMinor, int vPatch);
|
||||
|
||||
/** Destructor
|
||||
*/
|
||||
@@ -173,10 +173,10 @@ class ModuleVersion
|
||||
*/
|
||||
int GetMinor() const;
|
||||
|
||||
/** Get the build version this was built against
|
||||
* @return The build version
|
||||
/** Get the patch version this was built against
|
||||
* @return The patch version
|
||||
*/
|
||||
int GetBuild() const;
|
||||
int GetPatch() const;
|
||||
};
|
||||
|
||||
|
||||
@@ -1041,9 +1041,8 @@ class CoreExport ModuleManager
|
||||
* @param major The major version
|
||||
* @param minor The minor vesion
|
||||
* @param patch The patch version
|
||||
* @param build The build version
|
||||
*/
|
||||
static void RequireVersion(int major, int minor, int patch, int build);
|
||||
static void RequireVersion(int major, int minor, int patch);
|
||||
|
||||
/** Change the priority of one event in a module.
|
||||
* Each module event has a list of modules which are attached to that event type. If you wish to be called before or after other specific modules, you may use this
|
||||
|
||||
+46
-20
@@ -15,21 +15,54 @@
|
||||
#include <sstream>
|
||||
#include <list>
|
||||
|
||||
static std::string get_git_hash(const std::string &git_dir)
|
||||
{
|
||||
std::fstream fd;
|
||||
std::string filebuf;
|
||||
|
||||
fd.open((git_dir + "/HEAD").c_str(), std::ios::in);
|
||||
if (!fd.is_open())
|
||||
return "";
|
||||
if (!getline(fd, filebuf) || filebuf.find("ref: ") != 0)
|
||||
{
|
||||
fd.close();
|
||||
return "";
|
||||
}
|
||||
|
||||
fd.close();
|
||||
|
||||
filebuf = filebuf.substr(5);
|
||||
fd.open((git_dir + "/" + filebuf).c_str(), std::ios::in);
|
||||
if (!fd.is_open())
|
||||
return "";
|
||||
if (!getline(fd, filebuf))
|
||||
{
|
||||
fd.close();
|
||||
return "";
|
||||
}
|
||||
fd.close();
|
||||
|
||||
return "g" + filebuf.substr(0, 7);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc < 3)
|
||||
{
|
||||
std::cout << "Syntax: " << argv[0] << " <src/version.sh> <version.h>" << std::endl;
|
||||
std::cerr << "Syntax: " << argv[0] << " <base> <version.h>" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::string version_sh = std::string(argv[1]) + "/src/version.sh";
|
||||
std::string git_dir = std::string(argv[1]) + "/.git";
|
||||
|
||||
std::fstream fd;
|
||||
|
||||
fd.clear();
|
||||
fd.open(argv[1], std::ios::in);
|
||||
fd.open(version_sh.c_str(), std::ios::in);
|
||||
if (!fd.is_open())
|
||||
{
|
||||
std::cout << "Error: Unable to open src/version.sh for reading: " << argv[1] << std::endl;
|
||||
std::cerr << "Error: Unable to open src/version.sh for reading: " << version_sh << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -41,7 +74,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
size_t eq = filebuf.find('=');
|
||||
|
||||
std::string type = filebuf.substr(8, 5);
|
||||
std::string type = filebuf.substr(0, eq);
|
||||
std::string value = filebuf.substr(eq + 2, filebuf.length() - eq - 3);
|
||||
versions.push_back(std::make_pair(type, value));
|
||||
}
|
||||
@@ -49,25 +82,19 @@ int main(int argc, char *argv[])
|
||||
|
||||
fd.close();
|
||||
|
||||
std::string git_version = get_git_hash(git_dir);
|
||||
if (!git_version.empty())
|
||||
versions.push_back(std::make_pair("VERSION_GIT", git_version));
|
||||
|
||||
fd.clear();
|
||||
fd.open(argv[2], std::ios::in);
|
||||
|
||||
std::string version_build = "#define VERSION_BUILD 1";
|
||||
std::string build = "#define BUILD 1";
|
||||
std::string version_extra;
|
||||
if (fd.is_open())
|
||||
{
|
||||
while (getline(fd, filebuf))
|
||||
{
|
||||
if (!filebuf.find("#define VERSION_BUILD"))
|
||||
version_build = filebuf;
|
||||
else if (!filebuf.find("#define VERSION_EXTRA"))
|
||||
{
|
||||
size_t q = filebuf.find('"');
|
||||
|
||||
version_extra = filebuf.substr(q + 1, filebuf.length() - q - 2);
|
||||
}
|
||||
else if (!filebuf.find("#define BUILD"))
|
||||
if (!filebuf.find("#define BUILD"))
|
||||
{
|
||||
size_t tab = filebuf.find(' ');
|
||||
|
||||
@@ -87,7 +114,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (!fd.is_open())
|
||||
{
|
||||
std::cout << "Error: Unable to include/version.h for writing: " << argv[2] << std::endl;
|
||||
std::cerr << "Error: Unable to include/version.h for writing: " << argv[2] << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -95,13 +122,12 @@ int main(int argc, char *argv[])
|
||||
|
||||
for (std::list<std::pair<std::string, std::string> >::iterator it = versions.begin(), it_end = versions.end(); it != it_end; ++it)
|
||||
{
|
||||
if (it->first == "EXTRA")
|
||||
fd << "#define VERSION_EXTRA \"" << (!version_extra.empty() ? version_extra : "") << (version_extra.find(it->second) == std::string::npos ? it->second : "") << "\"" << std::endl;
|
||||
if (it->first == "VERSION_EXTRA" || it->first == "VERSION_GIT")
|
||||
fd << "#define " << it->first << " \"" << it->second << "\"" << std::endl;
|
||||
else
|
||||
fd << "#define VERSION_" << it->first << " " << it->second << std::endl;
|
||||
fd << "#define " << it->first << " " << it->second << std::endl;
|
||||
}
|
||||
|
||||
fd << version_build << std::endl;
|
||||
fd << build << std::endl;
|
||||
|
||||
fd.close();
|
||||
|
||||
+6
-3
@@ -769,12 +769,16 @@ const Anope::string Anope::LastError()
|
||||
|
||||
ModuleVersion Module::GetVersion() const
|
||||
{
|
||||
return ModuleVersion(VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD);
|
||||
return ModuleVersion(VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH);
|
||||
}
|
||||
|
||||
Anope::string Anope::Version()
|
||||
{
|
||||
return stringify(VERSION_MAJOR) + "." + stringify(VERSION_MINOR) + "." + stringify(VERSION_PATCH) + VERSION_EXTRA + " (" + stringify(VERSION_BUILD) + ")";
|
||||
#ifdef VERSION_GIT
|
||||
return stringify(VERSION_MAJOR) + "." + stringify(VERSION_MINOR) + "." + stringify(VERSION_PATCH) + VERSION_EXTRA + " (" + VERSION_GIT + ")";
|
||||
#else
|
||||
return stringify(VERSION_MAJOR) + "." + stringify(VERSION_MINOR) + "." + stringify(VERSION_PATCH) + VERSION_EXTRA;
|
||||
#endif
|
||||
}
|
||||
|
||||
Anope::string Anope::VersionShort()
|
||||
@@ -790,7 +794,6 @@ Anope::string Anope::VersionBuildString()
|
||||
int Anope::VersionMajor() { return VERSION_MAJOR; }
|
||||
int Anope::VersionMinor() { return VERSION_MINOR; }
|
||||
int Anope::VersionPatch() { return VERSION_PATCH; }
|
||||
int Anope::VersionBuild() { return VERSION_BUILD; }
|
||||
|
||||
/**
|
||||
* Normalize buffer stripping control characters and colors
|
||||
|
||||
+3
-3
@@ -84,7 +84,7 @@ void Module::SetAuthor(const Anope::string &nauthor)
|
||||
this->author = nauthor;
|
||||
}
|
||||
|
||||
ModuleVersion::ModuleVersion(int vMajor, int vMinor, int vBuild) : Major(vMajor), Minor(vMinor), Build(vBuild)
|
||||
ModuleVersion::ModuleVersion(int vMajor, int vMinor, int vPatch) : Major(vMajor), Minor(vMinor), Patch(vPatch)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -102,8 +102,8 @@ int ModuleVersion::GetMinor() const
|
||||
return this->Minor;
|
||||
}
|
||||
|
||||
int ModuleVersion::GetBuild() const
|
||||
int ModuleVersion::GetPatch() const
|
||||
{
|
||||
return this->Build;
|
||||
return this->Patch;
|
||||
}
|
||||
|
||||
|
||||
+19
-16
@@ -186,22 +186,30 @@ ModuleReturn ModuleManager::LoadModule(const Anope::string &modname, User *u)
|
||||
ModuleVersion v = m->GetVersion();
|
||||
if (v.GetMajor() < Anope::VersionMajor() || (v.GetMajor() == Anope::VersionMajor() && v.GetMinor() < Anope::VersionMinor()))
|
||||
{
|
||||
Log() << "Module " << modname << " is compiled against an older version of Anope " << v.GetMajor() << "." << v.GetMinor() << ", this is " << Anope::VersionMajor() << "." << Anope::VersionMinor();
|
||||
Log() << "Module " << modname << " is compiled against an older version of Anope " << v.GetMajor() << "." << v.GetMinor() << ", this is " << Anope::VersionShort();
|
||||
DeleteModule(m);
|
||||
return MOD_ERR_VERSION;
|
||||
}
|
||||
else if (v.GetMajor() > Anope::VersionMajor() || (v.GetMajor() == Anope::VersionMajor() && v.GetMinor() > Anope::VersionMinor()))
|
||||
{
|
||||
Log() << "Module " << modname << " is compiled against a newer version of Anope " << v.GetMajor() << "." << v.GetMinor() << ", this is " << Anope::VersionMajor() << "." << Anope::VersionMinor();
|
||||
Log() << "Module " << modname << " is compiled against a newer version of Anope " << v.GetMajor() << "." << v.GetMinor() << ", this is " << Anope::VersionShort();
|
||||
DeleteModule(m);
|
||||
return MOD_ERR_VERSION;
|
||||
}
|
||||
else if (v.GetBuild() < Anope::VersionBuild())
|
||||
Log() << "Module " << modname << " is compiled against an older revision of Anope " << v.GetBuild() << ", this is " << Anope::VersionBuild();
|
||||
else if (v.GetBuild() > Anope::VersionBuild())
|
||||
Log() << "Module " << modname << " is compiled against a newer revision of Anope " << v.GetBuild() << ", this is " << Anope::VersionBuild();
|
||||
else if (v.GetBuild() == Anope::VersionBuild())
|
||||
Log(LOG_DEBUG) << "Module " << modname << " compiled against current version of Anope " << v.GetBuild();
|
||||
else if (v.GetPatch() < Anope::VersionPatch())
|
||||
{
|
||||
Log() << "Module " << modname << " is compiled against an older version of Anope, " << v.GetMajor() << "." << v.GetMinor() << "." << v.GetPatch() << ", this is " << Anope::VersionShort();
|
||||
DeleteModule(m);
|
||||
return MOD_ERR_VERSION;
|
||||
}
|
||||
else if (v.GetPatch() > Anope::VersionPatch())
|
||||
{
|
||||
Log() << "Module " << modname << " is compiled against a newer version of Anope, " << v.GetMajor() << "." << v.GetMinor() << "." << v.GetPatch() << ", this is " << Anope::VersionShort();
|
||||
DeleteModule(m);
|
||||
return MOD_ERR_VERSION;
|
||||
}
|
||||
else
|
||||
Log(LOG_DEBUG) << "Module " << modname << " is compiled against current version of Anope " << Anope::VersionShort();
|
||||
|
||||
if (m->type == PROTOCOL && ModuleManager::FindFirstOf(PROTOCOL) != m)
|
||||
{
|
||||
@@ -251,7 +259,7 @@ Module *ModuleManager::FindFirstOf(ModType type)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void ModuleManager::RequireVersion(int major, int minor, int patch, int build)
|
||||
void ModuleManager::RequireVersion(int major, int minor, int patch)
|
||||
{
|
||||
if (Anope::VersionMajor() > major)
|
||||
return;
|
||||
@@ -268,16 +276,11 @@ void ModuleManager::RequireVersion(int major, int minor, int patch, int build)
|
||||
else if (Anope::VersionPatch() > patch)
|
||||
return;
|
||||
else if (Anope::VersionPatch() == patch)
|
||||
{
|
||||
if (build == -1)
|
||||
return;
|
||||
else if (Anope::VersionBuild() >= build)
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
throw ModuleException("This module requires version " + stringify(major) + "." + stringify(minor) + "." + stringify(patch) + "-" + build + " - this is " + Anope::Version());
|
||||
throw ModuleException("This module requires version " + stringify(major) + "." + stringify(minor) + "." + stringify(patch) + " - this is " + Anope::VersionShort());
|
||||
}
|
||||
|
||||
ModuleReturn ModuleManager::DeleteModule(Module *m)
|
||||
|
||||
+1
-2
@@ -1,8 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
VERSION_MAJOR="1"
|
||||
VERSION_MINOR="9"
|
||||
VERSION_PATCH="7"
|
||||
VERSION_EXTRA="-avoid-direct-visual-contact"
|
||||
|
||||
VERSION="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH$VERSION_EXTRA"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user