@@ -138,6 +138,10 @@ def test_initialize
138138 "x86_64-linux-gnu" => [ "x86_64" , "linux" , "gnu" ] ,
139139 "x86_64-linux-musl" => [ "x86_64" , "linux" , "musl" ] ,
140140 "x86_64-linux-uclibc" => [ "x86_64" , "linux" , "uclibc" ] ,
141+ "arm-linux-eabi" => [ "arm" , "linux" , "eabi" ] ,
142+ "arm-linux-gnueabi" => [ "arm" , "linux" , "gnueabi" ] ,
143+ "arm-linux-musleabi" => [ "arm" , "linux" , "musleabi" ] ,
144+ "arm-linux-uclibceabi" => [ "arm" , "linux" , "uclibceabi" ] ,
141145 "x86_64-openbsd3.9" => [ "x86_64" , "openbsd" , "3.9" ] ,
142146 "x86_64-openbsd4.0" => [ "x86_64" , "openbsd" , "4.0" ] ,
143147 "x86_64-openbsd" => [ "x86_64" , "openbsd" , nil ] ,
@@ -301,6 +305,34 @@ def test_nil_version_is_stricter_for_linux_os
301305 refute ( x86_linux_uclibc === x86_linux , "linux-uclibc =~ linux" )
302306 end
303307
308+ def test_eabi_version_is_stricter_for_linux_os
309+ arm_linux_eabi = Gem ::Platform . new "arm-linux-eabi"
310+ arm_linux_gnueabi = Gem ::Platform . new "arm-linux-gnueabi"
311+ arm_linux_musleabi = Gem ::Platform . new "arm-linux-musleabi"
312+ arm_linux_uclibceabi = Gem ::Platform . new "arm-linux-uclibceabi"
313+
314+ # a naked linux runtime is implicit gnu, as it represents the common glibc-linked runtime
315+ assert ( arm_linux_eabi === arm_linux_gnueabi , "linux-eabi =~ linux-gnueabi" )
316+ assert ( arm_linux_gnueabi === arm_linux_eabi , "linux-gnueabi =~ linux-eabi" )
317+
318+ # musl and explicit gnu should differ
319+ refute ( arm_linux_gnueabi === arm_linux_musleabi , "linux-gnueabi =~ linux-musleabi" )
320+ refute ( arm_linux_musleabi === arm_linux_gnueabi , "linux-musleabi =~ linux-gnueabi" )
321+
322+ # explicit libc differ
323+ refute ( arm_linux_uclibceabi === arm_linux_musleabi , "linux-uclibceabi =~ linux-musleabi" )
324+ refute ( arm_linux_musleabi === arm_linux_uclibceabi , "linux-musleabi =~ linux-uclibceabi" )
325+
326+ # musl host runtime accepts libc-generic or statically linked gems...
327+ assert ( arm_linux_eabi === arm_linux_musleabi , "linux-eabi =~ linux-musleabi" )
328+ # ...but implicit gnu runtime generally does not accept musl-specific gems
329+ refute ( arm_linux_musleabi === arm_linux_eabi , "linux-musleabi =~ linux-eabi" )
330+
331+ # other libc are not glibc compatible
332+ refute ( arm_linux_eabi === arm_linux_uclibceabi , "linux-eabi =~ linux-uclibceabi" )
333+ refute ( arm_linux_uclibceabi === arm_linux_eabi , "linux-uclibceabi =~ linux-eabi" )
334+ end
335+
304336 def test_equals3_cpu_arm
305337 arm = Gem ::Platform . new "arm-linux"
306338 armv5 = Gem ::Platform . new "armv5-linux"
0 commit comments