@ -67,4 +67,33 @@ check_versions(Config) ->
nomatch - >
? ABORT ( " OTP release ~s does not match required regex ~s \n " ,
[ erlang : system_info ( otp_release ) , OtpRegex ] )
end ,
case rebar_config : get ( Config , require_min_otp_vsn , undefined ) of
undefined - > ? DEBUG ( " Min OTP version unconfigured ~n " , [ ] ) ;
MinOtpVsn - >
{ MinMaj , MinMin } = version_tuple ( MinOtpVsn , " configured " ) ,
{ OtpMaj , OtpMin } = version_tuple ( erlang : system_info ( otp_release ) ,
" OTP Release " ) ,
case { OtpMaj , OtpMin } > = { MinMaj , MinMin } of
true - >
? DEBUG ( " ~s satisfies the requirement for vsn ~s ~n " ,
[ erlang : system_info ( otp_release ) ,
MinOtpVsn ] ) ;
false - >
? ABORT ( " OTP release ~s or later is required, you have: ~s ~n " ,
[ MinOtpVsn ,
erlang : system_info ( otp_release ) ] )
end
end .
version_tuple ( OtpRelease , Type ) - >
case re : run ( OtpRelease , " R( \\ d+)B?-?( \\ d+)? " , [ { capture , all , list } ] ) of
{ match , [ _ Full , Maj , Min ] } - >
{ list_to_integer ( Maj ) , list_to_integer ( Min ) } ;
{ match , [ _ Full , Maj ] } - >
{ list_to_integer ( Maj ) , 0 } ;
nomatch - >
? ABORT ( " Cannot parse ~s version string: ~s ~n " ,
[ Type , OtpRelease ] )
end .