2016-09-01 03:50:31 -07:00
/ *
2018-06-05 20:55:12 -07:00
* Minio Cloud Storage , ( C ) 2016 , 2017 , 2018 Minio , Inc .
2016-09-01 03:50:31 -07:00
*
* 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 .
* /
2016-11-16 16:23:32 -08:00
/ *
* Below main package has canonical imports for ' go get ' and ' go build '
* to work with all other clones of github . com / minio / minio repository . For
* more information refer https : //golang.org/doc/go1.4#canonicalimports
* /
2016-11-04 18:25:30 -07:00
package main // import "github.com/minio/minio"
2015-01-14 11:29:04 -08:00
2017-01-27 00:22:41 +01:00
import (
2017-02-11 14:57:27 +05:30
"fmt"
2017-01-27 00:22:41 +01:00
"os"
2017-02-11 14:57:27 +05:30
"runtime"
2017-01-27 00:22:41 +01:00
2017-02-11 14:57:27 +05:30
version "github.com/hashicorp/go-version"
"github.com/minio/mc/pkg/console"
2017-01-27 00:22:41 +01:00
minio "github.com/minio/minio/cmd"
2017-12-05 17:58:09 -08:00
// Import gateway
_ "github.com/minio/minio/cmd/gateway"
2017-01-27 00:22:41 +01:00
)
2015-12-06 14:31:20 -08:00
2017-02-11 14:57:27 +05:30
const (
2018-02-08 01:03:22 -08:00
// Minio requires at least Go v1.9.4
minGoVersion = "1.9.4"
2017-02-11 14:57:27 +05:30
goVersionConstraint = ">= " + minGoVersion
)
// Check if this binary is compiled with at least minimum Go version.
func checkGoVersion ( goVersionStr string ) error {
constraint , err := version . NewConstraint ( goVersionConstraint )
if err != nil {
return fmt . Errorf ( "'%s': %s" , goVersionConstraint , err )
}
goVersion , err := version . NewVersion ( goVersionStr )
if err != nil {
return err
}
if ! constraint . Check ( goVersion ) {
2018-06-05 20:55:12 -07:00
return fmt . Errorf ( "Minio is not compiled by go %s. Minimum required version is %s, go %s release is known to have security issues. Please recompile accordingly" , goVersionConstraint , minGoVersion , runtime . Version ( ) [ 2 : ] )
2017-02-11 14:57:27 +05:30
}
return nil
}
2015-08-20 13:05:47 -07:00
func main ( ) {
2017-02-11 14:57:27 +05:30
// When `go get` is used minimum Go version check is not triggered but it would have compiled it successfully.
// However such binary will fail at runtime, hence we also check Go version at runtime.
if err := checkGoVersion ( runtime . Version ( ) [ 2 : ] ) ; err != nil {
2018-06-05 20:55:12 -07:00
console . Errorln ( err )
2017-02-11 14:57:27 +05:30
}
2017-03-07 09:05:26 +05:30
minio . Main ( os . Args )
2015-01-14 11:29:04 -08:00
}