minio/DEVELOPERS.md
Harshavardhana 0148237e22 Refactor checksum code, and add Objectname hashing per uploaded objects
Add placeholder sha256, sha512 implementations from Intel with AVX, AVX2
and SSE4.1 extensions - with some boilerplate Go code.
2014-12-13 21:42:23 -08:00

2.7 KiB

Build Dependencies

This installation document assumes Ubuntu 12.04 or later on x86-64.

Install Git and GCC
$ sudo apt-get install git build-essential
Install Mercurial
$ sudo apt-get install mercurial
Install YASM
$ sudo apt-get install yasm
Install Go 1.3+

Download Go 1.3+ from https://golang.org/dl/ and extract it into ${HOME}/local and setup ${HOME}/mygo as your project workspace folder. For example:

$ wget https://storage.googleapis.com/golang/go1.3.3.linux-amd64.tar.gz
$ mkdir -p ${HOME}/local
$ tar -C ${HOME}/local -xzf go1.3.3.linux-amd64.tar.gz
$ export PATH=$PATH:${HOME}/local/go/bin
$ mkdir -p $HOME/mygo
$ export GOPATH=$HOME/mygo
$ export PATH=$PATH:$GOPATH/bin

Setup your Minio Github Repository    

Fork Minio upstream source repository to your own personal repository. Copy the URL and pass it to go get command. Go uses git to clone a copy into your project workspace folder.

$ go get -u github.com/$USER_ID/minio
$ cd $GOPATH/src/github.com/$USER_ID/minio/
$ git remote add upstream https://github.com/Minio-io/minio.git

Compiling Minio from source

Minio use plain Makefile to wrap around some of the limitations of go build. To compile Minio source, simply change to your workspace folder and type make.

$ cd $GOPATH/src/github.com/$USER_ID/minio/
$ make
...

Contribution Guidelines

We welcome your contributions. To make the process as seamless as possible, we ask for the following:

  • Go ahead and fork the project and make your changes. We encourage pull requests to discuss code changes.
    • Fork it
    • Create your feature branch (git checkout -b my-new-feature)
    • Commit your changes (git commit -am 'Add some feature')
    • Push to the branch (git push origin my-new-feature)
    • Create new Pull Request
  • If you have additional dependencies minio uses https://github.com/tools/godep
    • Run go get foo/bar
    • Edit your code to import foo/bar
    • Run make save from top-level directory (or godep restore && godep save ./...).
  • When you're ready to create a pull request, be sure to:
    • Have test cases for the new code. If you have questions about how to do it, please ask in your pull request.
    • Run go fmt
    • Squash your commits into a single commit. git rebase -i. It's okay to force update your pull request.
    • Make sure go test -race ./... passes, and go build completes.