Giter Club home page Giter Club logo

atheme's Introduction

Atheme IRC Services

Atheme is a set of IRC services 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.

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.txt for instructions on how to fully check out the atheme tree, as it is spread across many repositories.

Basic build instructions for the impatient

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 submodule update --init
$ ./configure
$ make
$ make install

If you are on an OpenBSD system, or similar, you will need to do things slightly differently:

# pkg_add gmake
$ git submodule update --init
$ ./configure --disable-linker-defs
$ gmake
$ gmake install

Library Detection

If your user-installed libraries that you want Atheme to use are installed by your package manager to a directory such as /usr/local/, you may need to supplement the default compiler and linker search paths so that Atheme can detect those libraries (e.g. cracklib from FreeBSD Ports):

$ ./configure CPPFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

The following libraries generally require pkg-config to be installed:

  • PHC Argon2 Reference Implementation (libargon2.pc)
  • OpenSSL (libcrypto.pc)
  • GNU libidn (libidn.pc)
  • GNU Nettle (nettle.pc)
  • PCRE (libpcre.pc)
  • libqrencode (libqrencode.pc)
  • Sodium (libsodium.pc)

If you do not have pkg-config installed and want to use one or more of these libraries, please see ./configure --help for the options to set to override pkg-config discovery for those libraries. For example, if you wish to use GNU libidn, and it is installed into a default search path for your compiler and linker, and you do not have pkg-config installed, execute:

$ ./configure LIBIDN_CFLAGS="" LIBIDN_LIBS="-lidn"

If a library relies on populating LIBFOO_CFLAGS with some preprocessor definitions, or populating LIBFOO_LIBS with some library linking flags, this will generally fail. Install pkg-config for the best results.

Choice of compiler and its features

If you wish to compile Atheme with the LLVM project's C compiler (clang), you may also wish to use LLVM's linker (lld). You can accomplish this as follows:

$ ./configure CC="clang" LDFLAGS="-fuse-ld=lld"

If you want to use compiler sanitizers, and you want to build with Clang, you MUST also use LLD, as most of the sanitizers in Clang require LTO to function properly, and Clang in LTO mode emits LLVM bitcode, not machine code. The linker is ultimately responsible for performing most of the LTO heavy lifting, and translating the result into machine code, and most other linkers do not know how to do this.

To use compiler sanitizers with GCC (supported):

$ ./configure --disable-heap-allocator --disable-linker-defs \
    --enable-compiler-sanitizers CC="gcc"

To use compiler sanitizers with Clang (recommended):

$ ./configure --disable-heap-allocator --disable-linker-defs \
    --enable-compiler-sanitizers CC="clang" LDFLAGS="-fuse-ld=lld"

If you do enable the sanitizers, it is recommended to enable the configuration option general::db_save_blocking; see the example configuration file for more details.

The sanitizers are not recommended for production usage, but they are recommended for developers, including third parties writing new features and/or modifying the source code.

Getting More Help

If you're still lost, read the INSTALL or GIT-Access.txt files or check out our wiki (http://github.com/atheme/atheme/wiki) for more hints.

See also:

atheme's People

Contributors

aaronmdjones avatar aji avatar alyx avatar attilamolnar avatar dkingston avatar dwfreed avatar elizafox avatar errietta avatar grawity avatar heartmender avatar ilbelkyr avatar irydacea avatar jdhore avatar jillest avatar kaniini avatar kog avatar marienz avatar maxteufel avatar mrbenc avatar mrflea avatar mtharp avatar ori-sky avatar patrickfish avatar pippijn avatar rburchell avatar renegade334 avatar shutterquick avatar sinistar7 avatar spb avatar viatsko avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.