From 663f24064b063b4bf5c46590a7b14dc9ee858007 Mon Sep 17 00:00:00 2001 From: Anis Elleuch Date: Sat, 26 Mar 2016 21:36:33 +0100 Subject: [PATCH] Add simple FreeBSD support, make the minio project compilable --- Makefile | 10 ++++++++- buildscripts/checkdeps.sh | 5 ++++- buildscripts/checkgopath.sh | 4 ++-- pkg/crypto/sha256/sha256.go | 2 +- pkg/crypto/sha512/sha512.go | 2 +- pkg/disk/type_unix.go | 44 +++++++++++++++++++++++++++++++++++++ 6 files changed, 61 insertions(+), 6 deletions(-) create mode 100644 pkg/disk/type_unix.go diff --git a/Makefile b/Makefile index 3705a47e0..c5f78e23f 100644 --- a/Makefile +++ b/Makefile @@ -19,10 +19,14 @@ endif ifeq ($(CPU), x86_64) HOST := $(HOST)64 else +ifeq ($(CPU), amd64) + HOST := $(HOST)64 +else ifeq ($(CPU), i686) HOST := $(HOST)32 endif endif +endif ############################################# @@ -41,6 +45,10 @@ ifndef (OS) else ifeq ($(HOST), Darwin32) arch = clang + else + ifeq ($(HOST), FreeBSD64) + arch = gcc + endif endif endif endif @@ -84,7 +92,7 @@ isa-l: @echo "Configuring $@:" @git clone -q https://github.com/minio/isa-l.git - @cd isa-l; make -f Makefile.unx arch=$(arch) >/dev/null; mv include isa-l; + @cd isa-l; ${MAKE} -f Makefile.unx arch=$(arch) >/dev/null; mv include isa-l; lint: @echo "Running $@:" diff --git a/buildscripts/checkdeps.sh b/buildscripts/checkdeps.sh index b2bd05f12..c219357cc 100644 --- a/buildscripts/checkdeps.sh +++ b/buildscripts/checkdeps.sh @@ -141,6 +141,9 @@ is_supported_os() { "Linux") os="linux" ;; + "FreeBSD") + os="freebsd" + ;; "Darwin") osx_host_version=$(env sw_vers -productVersion) check_version "${osx_host_version}" "${OSX_VERSION}" @@ -155,7 +158,7 @@ is_supported_os() { is_supported_arch() { local supported case ${UNAME##* } in - "x86_64") + "x86_64" | "amd64") supported=1 ;; "arm"*) diff --git a/buildscripts/checkgopath.sh b/buildscripts/checkgopath.sh index 0a2a28501..30461f4bc 100644 --- a/buildscripts/checkgopath.sh +++ b/buildscripts/checkgopath.sh @@ -19,8 +19,8 @@ _init() { shopt -s extglob - PWD=$(pwd) - GOPATH=$(go env GOPATH) + PWD=$(pwd -P) + GOPATH=$(cd "$(go env GOPATH)" ; env pwd -P) } main() { diff --git a/pkg/crypto/sha256/sha256.go b/pkg/crypto/sha256/sha256.go index b69aa3ac5..4203641a2 100644 --- a/pkg/crypto/sha256/sha256.go +++ b/pkg/crypto/sha256/sha256.go @@ -1,4 +1,4 @@ -// +build darwin windows 386 arm !cgo +// +build freebsd darwin windows 386 arm !cgo /* * Minio Cloud Storage, (C) 2014-2016 Minio, Inc. diff --git a/pkg/crypto/sha512/sha512.go b/pkg/crypto/sha512/sha512.go index 57677a907..8caf45c26 100644 --- a/pkg/crypto/sha512/sha512.go +++ b/pkg/crypto/sha512/sha512.go @@ -1,4 +1,4 @@ -// +build darwin windows 386 arm !cgo +// +build freebsd darwin windows 386 arm !cgo /* * Minio Cloud Storage, (C) 2014-2016 Minio, Inc. diff --git a/pkg/disk/type_unix.go b/pkg/disk/type_unix.go new file mode 100644 index 000000000..3fe4cafb2 --- /dev/null +++ b/pkg/disk/type_unix.go @@ -0,0 +1,44 @@ +// +build freebsd + +/* + * Minio Cloud Storage, (C) 2015 Minio, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package disk + +import ( + "strconv" + "syscall" +) + +// fsType2StringMap - list of filesystems supported by donut on linux +var fsType2StringMap = map[string]string{ + "35": "UFS", +} + +// getFSType returns the filesystem type of the underlying mounted filesystem +func getFSType(path string) (string, error) { + s := syscall.Statfs_t{} + err := syscall.Statfs(path, &s) + if err != nil { + return "", err + } + fsTypeHex := strconv.FormatInt(int64(s.Type), 16) + fsTypeString, ok := fsType2StringMap[fsTypeHex] + if ok == false { + return "UNKNOWN", nil + } + return fsTypeString, nil +}