diff --git a/bin/bitbake-setup b/bin/bitbake-setup
index 7067cbd4f..ce5cd5e65 100755
--- a/bin/bitbake-setup
+++ b/bin/bitbake-setup
@@ -393,7 +393,7 @@ def init_config(settings, args, d):
     print("\nRun 'bitbake-setup init --non-interactive {}' to select this configuration non-interactively.\n".format(" ".join(upstream_config['non-interactive-cmdline-options'])))
 
     builddir = os.path.join(os.path.abspath(args.top_dir), args.build_dir_name or "{}-{}".format(upstream_config['name']," ".join(upstream_config['non-interactive-cmdline-options'][1:]).replace(" ","-").replace("/","_")))
-    if os.path.exists(builddir):
+    if os.path.exists(os.path.join(builddir, "layers")):
         print("Build already initialized in {}\nUse 'bitbake-setup status' to check if it needs to be updated or 'bitbake-setup update' to perform the update.".format(builddir))
         return
 
@@ -404,7 +404,7 @@ def init_config(settings, args, d):
             exit()
         print()
 
-    os.makedirs(builddir)
+    os.makedirs(builddir, exist_ok=True)
 
     confdir = os.path.join(builddir, "config")
     layerdir = os.path.join(builddir, "layers")
