@@ -50,7 +50,7 @@ public InputStream getPgBinary(String system, String machineHardware) throws IOE
5050 if (distribution != null ) {
5151 Resource resource = findPgBinary (normalize (format ("postgres-%s-%s-%s.txz" , system , architecture , distribution )));
5252 if (resource != null ) {
53- logger .info ("Distribution specific postgres binaries found: {} " , resource .getFilename ());
53+ logger .info ("Distribution specific postgres binaries found: '{}' " , resource .getFilename ());
5454 return resource .getInputStream ();
5555 } else {
5656 logger .debug ("Distribution specific postgres binaries not found" );
@@ -59,13 +59,25 @@ public InputStream getPgBinary(String system, String machineHardware) throws IOE
5959
6060 Resource resource = findPgBinary (normalize (format ("postgres-%s-%s.txz" , system , architecture )));
6161 if (resource != null ) {
62- logger .info ("System specific postgres binaries found: {} " , resource .getFilename ());
62+ logger .info ("System specific postgres binaries found: '{}' " , resource .getFilename ());
6363 return resource .getInputStream ();
6464 }
6565
66- logger .error ("No postgres binaries were found, you must add an appropriate maven dependency " +
67- "that meets the following parameters - system: {}, architecture: {}" , system , architecture );
68- throw new IllegalStateException ("Missing postgres binaries" );
66+ if (StringUtils .equals (system , "Darwin" ) && StringUtils .equals (machineHardware , "aarch64" )) {
67+ resource = findPgBinary (normalize (format ("postgres-%s-%s.txz" , system , "x86_64" )));
68+ if (resource != null ) {
69+ logger .warn ("No native binaries supporting aarch64 architecture found. " +
70+ "Trying to use binaries for amd64 architecture instead: '{}'. " +
71+ "Make sure you have Rosetta 2 emulation enabled. " +
72+ "Note that performance may be degraded." , resource .getFilename ());
73+ return resource .getInputStream ();
74+ }
75+ }
76+
77+ logger .error ("No postgres binaries found, you need to add an appropriate maven dependency " +
78+ "that meets the following parameters - system: '{}', architecture: '{}' " +
79+ "[https://github.com/zonkyio/embedded-postgres#additional-architectures]" , system , architecture );
80+ throw new IllegalStateException ("Missing embedded postgres binaries" );
6981 }
7082
7183 private static Resource findPgBinary (String resourceLocation ) throws IOException {
@@ -74,8 +86,8 @@ private static Resource findPgBinary(String resourceLocation) throws IOException
7486 List <URL > urls = Collections .list (classLoader .getResources (resourceLocation ));
7587
7688 if (urls .size () > 1 ) {
77- logger .error ("Detected multiple binaries of the same architecture: {} " , urls );
78- throw new IllegalStateException ("Duplicate postgres binaries" );
89+ logger .error ("Detected multiple binaries of the same architecture: '{}' " , urls );
90+ throw new IllegalStateException ("Duplicate embedded postgres binaries" );
7991 }
8092 if (urls .size () == 1 ) {
8193 return new Resource (urls .get (0 ));
0 commit comments