Code Monkey home page Code Monkey logo

eventstore's Introduction

Event Store

Build status Build status

Documentation is available at http://docs.geteventstore.com.

Development is on the branch aimed at the next release (usually prefixed with release-v0.0.0). Please make any pull requests to this branch.

This is the repository for the open source version of Event Store, which includes the clustering implementation for high availability. Information on commercial support and options such as LDAP authentication can be found on the Event Store website at https://geteventstore.com/support.

Building from Source

Event Store is written in a mixture of C#, C++ and JavaScript. It can run either on Mono or .NET, however because it contains platform specific code (including hosting the V8 JavaScript engine), it must be built for the platform on which you intend to run it.

Binaries are available from https://geteventstore.com, however if you want to build it from source, instructions for Windows and Linux are below.

Debug Builds on Linux or Mac OS X

There are two stages to building Event Store. First, a native library used for projections, libjs1 must be built. Following that, the main Event Store project can be built.

If you are running on Mac OS X (Yosemite or El Capitan), Ubuntu Linux 14.04, 16.04 or Amazon Linux 2015.03, it is not necessary to build libjs1 from source. Precompiled binaries are already included in this repository. If you are running a different distribution or version than those listed above, you will need to compile libjs1 yourself.

Compiling libjs1

#####Prerequisites

  • git on PATH
Instructions (Mac OS X)

From the root of the repository:

scripts/build-js1/build-js1-mac.sh
Instructions (Linux)

From the root of the repository:

scripts/build-js1/build-js1-linux.sh

If the scripts fails with "Failed to download LLVM. You can supply the URL for the LLVM compiler for your OS as the first argument to this script.", it is necessary to provide the script with the location where the LLVM compiler can be downloaded.

If the script fails with an gold linker error such as "ld.gold: error: /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/crti.o: unsupported reloc 42 against global symbol __gmon_start__" you can let it use the system linker by specifying -Dlinux_use_bundled_gold=0 as the second parameter to the script.

e.g.

scripts/build-js1/build-js1-linux.sh "" "-Dlinux_use_bundled_gold=0" 

Compiling Event Store (Linux and Mac OS X)

From the root of the repository:

./build.sh [<version=0.0.0.0>] [<configuration=release>] [<distro-platform-override>]

Versions must be complete four part identifiers valid for use on a .NET assembly.

Valid configurations are:

  • debug
  • release

The OS distribution and version will be detected automatically unless it is overridden as the last argument. This script expects to find libjs1.[so|dylib] in the src/libs/x64/distroname-distroversion/ directory, built using the scripts in the scripts/build-js1/ directory. Note that overriding this may result in crashes using Event Store.

The only supported Linux for production use at the moment is Ubuntu 14.04 LTS. However, since several people have asked for builds compatible with Amazon Linux in particular, we have included a pre-built version of libjs1.so which will link to the correct version of libc on Amazon Linux 2015.03.

Currently the supported versions without needing to build libjs1 from source are:

  • ubuntu-14.04 (Ubuntu Trusty)
  • amazon-2015.03 (Amazon Linux 2015.03)

Note that it is no longer possible to build x86 builds of Event Store.

Debug Builds on Windows / .NET

Prerequisites

  • .NET Framework v4.0+
  • Windows platform SDK with compilers (v7.1) or Visual C++ installed (Only required for a full build)
  • git on PATH

Building the Event Store

From a command prompt:

  • build.cmd — runs the Event Store build
  • build.cmd clean-all — cleans the repository

Optional parameters (Specified using -ParameterName value)

  • -Platformx64 (default) or x86
  • -Configurationrelease (default) or debug
  • -Version — the semantic version number to give to the release. Defaults to version 0.0.0.0, which should be used for all non-released builds.
  • -SpecificVisualStudioVersion2010, 2012, 2013, 2015, Windows7.1SDK. Default is to use whichever version is installed. This only needs to be overridden if you have multiple versions installed.
  • -ForceNetwork — true if you want to force the script to get dependencies even if Windows thinks theres no network connection (otherwise we don’t try to avoid sometimes lengthy delays).
  • -Defines — any additional defines you want to pass to the compiler. Should be enclosed in single quotes

Building the Event Store from Visual Studio

When building through Visual Studio, there are PowerShell scripts which run as pre- and post-build tasks on the EventStore.Common project, which set the informational version attribute of the EventStore.Common.dll assembly to the current commit hash on each build and then revert it.

Known Issues

Regressions with Mono 3.12.1 and some versions of the Linux Kernel

There is a known issue with some versions of the Linux Kernel and Mono 3.12.1 which has been raised as an issue https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1450584. The issue manifests itself as a NullReferenceException and the stack trace generally looks like the following.

System.NullReferenceException: Object reference not set to an instance of an object
at EventStore.Core.Services.TimerService.ThreadBasedScheduler.DoTiming () [0x00000] in :0
at System.Threading.Thread.StartInternal () [0x00000] in :0

Some known good versions of the Kernel are

  • 3.13.0-54
  • 3.13.0-63
  • 3.16.0-39
  • 3.19.0-20
  • 3.19.0-64
  • 3.19.0-66
  • = 4.4.27

Note: Please feel free to contribute to this list if you are working on a known good version of the kernel that is not listed here.

eventstore's People

Contributors

abdullin avatar anakryiko avatar ascjones avatar belczyk avatar danleech avatar dnauck avatar eventstore-service avatar fzawada avatar gregoryyoung avatar gutek avatar hayley-jean avatar jageall avatar jbradford avatar jen20 avatar kpyatkivskyy avatar lscpike avatar markiyanmatsekh avatar mpielikis avatar ouro-ouroboros avatar pgermishuys avatar rcknight avatar riccardone avatar robashton avatar samhjohnson avatar scooletz avatar szymonpobiega avatar t3hnar avatar thefringeninja avatar thinkbeforecoding avatar ysw avatar

Watchers

 avatar  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.