diff --git a/bin/composer b/bin/composer index cee476b6d..32c45bcda 100755 --- a/bin/composer +++ b/bin/composer @@ -65,6 +65,12 @@ if (function_exists('ini_set')) { unset($memoryLimit); } +// Workaround PHP bug on Windows where env vars containing Unicode chars are mangled in $_SERVER +// see https://github.com/php/php-src/issues/7896 +if (Platform::isWindows()) { + $_SERVER = array_merge($_SERVER, array_intersect_ukey($_SERVER, getenv(), 'strcasecmp')); +} + Platform::putEnv('COMPOSER_BINARY', realpath($_SERVER['argv'][0])); ErrorHandler::register(); diff --git a/src/Composer/Console/Application.php b/src/Composer/Console/Application.php index c138e1e60..4762396af 100644 --- a/src/Composer/Console/Application.php +++ b/src/Composer/Console/Application.php @@ -340,7 +340,7 @@ class Application extends BaseApplication return $result; } catch (ScriptExecutionException $e) { - return (int) $e->getCode(); + return $e->getCode(); } catch (\Exception $e) { $ghe = new GithubActionError($this->io); $ghe->emit($e->getMessage()); diff --git a/src/Composer/DependencyResolver/SolverProblemsException.php b/src/Composer/DependencyResolver/SolverProblemsException.php index 27deac4b3..128fbe146 100644 --- a/src/Composer/DependencyResolver/SolverProblemsException.php +++ b/src/Composer/DependencyResolver/SolverProblemsException.php @@ -39,14 +39,6 @@ class SolverProblemsException extends \RuntimeException parent::__construct('Failed resolving dependencies with '.count($problems).' problems, call getPrettyString to get formatted details', self::ERROR_DEPENDENCY_RESOLUTION_FAILED); } - /** - * @return self::ERROR_DEPENDENCY_RESOLUTION_FAILED - */ - public function getExitCode() - { - return self::ERROR_DEPENDENCY_RESOLUTION_FAILED; - } - /** * @param bool $isVerbose * @param bool $isDevExtraction diff --git a/src/Composer/Installer.php b/src/Composer/Installer.php index 78329042d..5b5489d53 100644 --- a/src/Composer/Installer.php +++ b/src/Composer/Installer.php @@ -455,7 +455,7 @@ class Installer $ghe = new GithubActionError($this->io); $ghe->emit($err."\n".$prettyProblem); - return max(self::ERROR_GENERIC_FAILURE, $e->getExitCode()); + return max(self::ERROR_GENERIC_FAILURE, $e->getCode()); } $this->io->writeError("Analyzed ".count($pool)." packages to resolve dependencies", true, IOInterface::VERBOSE); @@ -633,7 +633,7 @@ class Installer $ghe = new GithubActionError($this->io); $ghe->emit($err."\n".$prettyProblem); - return max(self::ERROR_GENERIC_FAILURE, $e->getExitCode()); + return $e->getCode(); } $lockTransaction->setNonDevPackages($nonDevLockTransaction); @@ -703,7 +703,7 @@ class Installer $ghe = new GithubActionError($this->io); $ghe->emit($err."\n".$prettyProblem); - return max(self::ERROR_GENERIC_FAILURE, $e->getExitCode()); + return max(self::ERROR_GENERIC_FAILURE, $e->getCode()); } } diff --git a/src/Composer/Repository/Vcs/GitLabDriver.php b/src/Composer/Repository/Vcs/GitLabDriver.php index e775dd269..dd7cb65b2 100644 --- a/src/Composer/Repository/Vcs/GitLabDriver.php +++ b/src/Composer/Repository/Vcs/GitLabDriver.php @@ -504,6 +504,11 @@ class GitLabDriver extends VcsDriver // force auth as the unauthenticated version of the API is broken if (!isset($json['default_branch'])) { + // GitLab allows you to disable the repository inside a project to use a project only for issues and wiki + if (isset($json['repository_access_level']) && $json['repository_access_level'] === 'disabled') { + throw new TransportException('The GitLab repository is disabled in the project', 400); + } + if (!empty($json['id'])) { $this->isPrivate = false; }