Giter Club home page Giter Club logo

leveldb's Introduction

LevelDB

A Go wrapper for LevelDB, forked from jmhodges/levigo. This fork makes levigo go-gettable by including the C++ source for LevelDB and building it with the Go code. LevelDB and Snappy are both compiled and linked statically, so while you will not need them installed on your target machine, you should have a roughly compatible version of libstdc++.

This package currently includes LevelDB 1.19, and supports Linux and OS X. It should work on Go 1.5 or greater.

godoc documentation.

Building

This package supports Linux and OS X.

You'll need gcc and g++. Then:

go get github.com/DataDog/leveldb

This will take a long time as it compiles the LevelDB source code along with the Go library.

To avoid waiting for compilation every time you want to build your project, you can run:

go install github.com/DataDog/leveldb

Updating Vendored Snappy

  1. Overwrite source in ./deps/snappy/
  2. make link_snappy

If nothing significant in snappy has changed, things should JustWork™

Updating Vendored LevelDB

The embedded LevelDB source code is located in deps/leveldb. In order to get go build to compile LevelDB, we symlink the required LevelDB source files to the root directory of the project. These symlinks are prefixed with deps_.

To change the embedded version of LevelDB, do the following:

  1. rm deps_*.cc
  2. Replace deps/leveldb with the source code of the desired version of LevelDB
  3. On Linux, run ./deps/leveldb/build_detect_platform linux.mk build_flags
  4. On OS X, run ./deps/leveldb/build_detect_platform darwin.mk build_flags
  5. cat build_flags/*, take a quick look at the new compiler and linker flags and see if there are any flags we're missing in cgo_flags_*.go. If so, add them.
  6. make link_leveldb
  7. On OS X and Linux, run go build and verify that everything compiles.

note I couldn't get build_detect_platform to run as advertised above -- j

Caveats

Comparators and WriteBatch iterators must be written in C in your own library. This seems like a pain in the ass, but remember that you'll have the LevelDB C API available to your in your client package when you import levigo.

An example of writing your own Comparator can be found in https://github.com/DataDog/leveldb/blob/master/examples.

leveldb's People

Contributors

jmhodges avatar ethanwp avatar jmoiron avatar clutchski avatar elijahandrews avatar kevinconaway avatar evanphx avatar arkelenia avatar milaz avatar akrylysov avatar mei-rune avatar soniah avatar vlad-mh avatar matttproud avatar jvshahid avatar evanj avatar flapjack103 avatar albertjin avatar

Stargazers

Stéphane Busso avatar timob avatar Heather Raffaella Riverso avatar

Watchers

Sean O'Connor avatar Corey Bertram avatar Jeff Kwiat avatar  avatar Hoang Ngo avatar Benjamin W. Smith avatar Yann Schwartz avatar H "Waldo" G avatar  avatar Julien MUETTON avatar Gregory Zussa avatar Jeremy Karn avatar Daniel Morsing avatar Bibby avatar Andrew Becherer avatar Peter Ashwell avatar shangwang avatar Dan Osipov avatar Charles C Wells avatar Kevin Le Brun avatar James Cloos avatar Victor Torres avatar Simon Guerrier avatar Lee Avital avatar Stefan Marx avatar Hyemi Song avatar Homère Faivre avatar Léo Cavaillé avatar Rémy Mathieu avatar Derek Brown avatar  avatar Renaud Boutet avatar Kemper Smith avatar Seth Rosenblum avatar Misiu Pajor avatar Arlen Holt avatar David Ouyang Moench avatar Aaditya Talwai avatar Greg Meyer avatar Hao avatar Alex Ustian avatar Ivan David Di Lernia avatar Clint Osterholz avatar Victor Atteh avatar Leonard Tan avatar Pierre Guyot avatar David B. avatar Jordan Storms avatar Eric Kollegger avatar Mike Moore avatar Zach Brown avatar Quentin Francois avatar Benjamin Crom avatar Christian Glatschke avatar Michael Laning avatar Celene avatar  avatar  avatar Chris Limbrick avatar  avatar Rodrigo de Benito Sanz avatar Alexandre Olivier avatar Jesus Maldonado avatar Spencer Brown avatar Ricky Thomas avatar Warren Mui avatar Cameron Yick avatar Ziquan Miao avatar  avatar Samantha Payson avatar  avatar  avatar  avatar  avatar Tanya Balaraju avatar Renaud Cammarata avatar Mahashree Rajendran avatar  avatar  avatar Othmane Abou Amal avatar Carl Martensen avatar Nico Suárez-Cantón avatar Georgia Hong avatar Mike Hawley avatar Antoine Protard avatar Josh Casale avatar Aaron Lau avatar Freddie Camara avatar  avatar Zhengshi Zhao avatar Kevin Walter avatar JulesD avatar Przemyslaw Zientala avatar Eric Mustin avatar  avatar  avatar Michael Gerstenhaber avatar Guillaume Raimbault avatar Annie Chen avatar Boyan Syarov 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.