darwin: reliably wait for daemon connection
This commit is contained in:
		
							
								
								
									
										17
									
								
								lib/main.js
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								lib/main.js
									
									
									
									
									
								
							| @@ -21,6 +21,8 @@ const exec = __importStar(require("@actions/exec")); | ||||
| const tc = __importStar(require("@actions/tool-cache")); | ||||
| const child_process_1 = require("child_process"); | ||||
| const os_1 = require("os"); | ||||
| const process_1 = require("process"); | ||||
| const net_1 = require("net"); | ||||
| function nixConf() { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         // Workaround a segfault: https://github.com/NixOS/nix/issues/2733 | ||||
| @@ -56,7 +58,7 @@ function run() { | ||||
|                 // macOS needs certificates hints | ||||
|                 core.exportVariable('NIX_SSL_CERT_FILE', '/nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt'); | ||||
|                 // TODO: nc doesn't work correctly on macOS :( | ||||
|                 yield exec.exec("sleep", ["10"]); | ||||
|                 yield awaitSocket(); | ||||
|             } | ||||
|         } | ||||
|         catch (error) { | ||||
| @@ -65,4 +67,17 @@ function run() { | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| function awaitSocket() { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         const daemonSocket = net_1.createConnection({ path: '/nix/var/nix/daemon-socket/socket' }); | ||||
|         daemonSocket.on('error', () => __awaiter(this, void 0, void 0, function* () { | ||||
|             console.log('Waiting for daemon socket to be available, reconnecting...'); | ||||
|             yield new Promise(resolve => setTimeout(resolve, 500)); | ||||
|             yield awaitSocket(); | ||||
|         })); | ||||
|         daemonSocket.on('connect', () => { | ||||
|             process_1.exit(0); | ||||
|         }); | ||||
|     }); | ||||
| } | ||||
| run(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user