Skip to content

Commit

Permalink
Use whitelist-files for polyfills
Browse files Browse the repository at this point in the history
  • Loading branch information
veewee committed May 21, 2021
1 parent c40fdb6 commit d43036a
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 59 deletions.
51 changes: 30 additions & 21 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,14 @@ compile:
@echo Cloning GrumPHP $(TAG) in directory $(BUILD_DIR)
git clone git@github.com:phpro/grumphp.git $(BUILD_DIR)
git --work-tree=$(BUILD_DIR) --git-dir='$(BUILD_DIR)/.git' checkout 'tags/v$(TAG)'
cp build/* '$(BUILD_DIR)'
cp src/Composer/FixBrokenStaticAutoloader.php '$(BUILD_DIR)/src/Composer'
php $(BUILD_DIR)/fix-some-stuff-in-composer.php
composer --working-dir='$(BUILD_DIR)' config platform.php '$(PHP)'
composer install --working-dir='$(BUILD_DIR)' --no-scripts --no-plugins --no-dev --no-interaction --optimize-autoloader
./vendor/bin/box compile --working-dir='$(BUILD_DIR)'
# Run sanity Check:
mv '$(BUILD_DIR)/composer.json.backup' '$(BUILD_DIR)/composer.json'
rm -rf '$(BUILD_DIR)/vendor'
composer update --dev --working-dir='$(BUILD_DIR)' --no-interaction
cd $(BUILD_DIR) && ./grumphp.phar run --testsuite=git_pre_commit && cd $(ROOT_DIR)
# Copy composer plugin
cp '$(BUILD_DIR)/src/Composer/GrumPHPPlugin.php' '$(ROOT_DIR)/src/Composer/GrumPHPPlugin.php'
# All good : lets finish up
cp '$(BUILD_DIR)/grumphp.phar' '$(ROOT_DIR)'
gpg --local-user toonverwerft@gmail.com --armor --detach-sign grumphp.phar
rm -rf $(BUILD_DIR)
make prepare BUILD_DIR=$(BUILD_DIR) PHP=$(PHP)
make sanity BUILD_DIR=$(BUILD_DIR)
make cleanup BUILD_DIR=$(BUILD_DIR)
# Release tag
@echo "Run 'make release TAG=$(TAG)' to tag a new release"

release:
$(if $(TAG),,$(error TAG is not defined. Pass via "make release TAG=4.2.1"))
git add -A
git commit -m '$(TAG) release'
git tag -s 'v$(TAG)' -m'Version $(TAG)'
Expand All @@ -41,13 +31,32 @@ testlocal:
$(eval BUILD_DIR := $(shell mktemp -d -t grumphp-shim-build))
@echo Copying GrumPHP to directory $(BUILD_DIR)
cp -r $(GRUMPHP_DIR)/. $(BUILD_DIR)
make prepare BUILD_DIR=$(BUILD_DIR) PHP=$(PHP)
make cleanup BUILD_DIR=$(BUILD_DIR)

prepare:
$(if $(PHP),,$(error PHP is not defined. Pass via "make prepare PHP=7.4.19"))
$(if $(BUILD_DIR),,$(error BUILD_DIR is not defined. Pass via "make prepare BUILD_DIR=/tmp/prepared-grumphp-src"))
cp build/* '$(BUILD_DIR)'
# Remove vendor and lock to make sure a unique composer autoloader is created
rm -rf $(BUILD_DIR)/vendor
rm $(BUILD_DIR)/composer.lock
cp src/Composer/FixBrokenStaticAutoloader.php '$(BUILD_DIR)/src/Composer'
php $(BUILD_DIR)/fix-some-stuff-in-composer.php
composer --working-dir='$(BUILD_DIR)' config platform.php '$(PHP)'
composer install --working-dir='$(BUILD_DIR)' --no-scripts --no-plugins --no-dev --no-interaction --optimize-autoloader
./vendor/bin/box compile --working-dir='$(BUILD_DIR)' -vvv
./vendor/bin/box compile --working-dir='$(BUILD_DIR)'
# Copy composer plugin
cp '$(BUILD_DIR)/src/Composer/GrumPHPPlugin.php' '$(ROOT_DIR)/src/Composer/GrumPHPPlugin.php'
# All good : lets finish up
cp '$(BUILD_DIR)/grumphp.phar' '$(ROOT_DIR)'
gpg --local-user toonverwerft@gmail.com --armor --detach-sign grumphp.phar

sanity:
$(if $(BUILD_DIR),,$(error BUILD_DIR is not defined. Pass via "make sanity BUILD_DIR=/tmp/prepared-grumphp-src"))
mv '$(BUILD_DIR)/composer.json.backup' '$(BUILD_DIR)/composer.json'
rm -rf '$(BUILD_DIR)/vendor'
composer update --dev --working-dir='$(BUILD_DIR)' --no-interaction
cd $(BUILD_DIR) && ./grumphp.phar run --testsuite=git_pre_commit && cd $(ROOT_DIR)

cleanup:
$(if $(BUILD_DIR),,$(error BUILD_DIR is not defined. Pass via "make sanity BUILD_DIR=/tmp/prepared-grumphp-src"))
rm -rf $(BUILD_DIR)

54 changes: 30 additions & 24 deletions build/scoper.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,40 @@

declare(strict_types=1);

use Symfony\Component\Finder\Finder;

$polyfillsBootstraps = array_map(
static fn (SplFileInfo $fileInfo) => $fileInfo->getPathname(),
iterator_to_array(
Finder::create()
->files()
->in(__DIR__ . '/vendor/symfony/polyfill-*')
->name('bootstrap.php'),
false,
),
);

$polyfillsStubs = array_map(
static fn (SplFileInfo $fileInfo) => $fileInfo->getPathname(),
iterator_to_array(
Finder::create()
->files()
->in(__DIR__ . '/vendor/symfony/polyfill-*/Resources/stubs')
->name('*.php'),
false,
),
);

return [
'whitelist-global-classes' => true,
'whitelist' => [
'GrumPHP\*',
'PhpParser\*',
'Composer\*',
'Symfony\\Polyfill\\*',
],
'patchers' => [
// Remove scoper namespace prefix from Symfony polyfills namespace
static function (string $filePath, string $prefix, string $contents): string {
if (!preg_match('{vendor/symfony/polyfill[^/]*/bootstrap.php}i', $filePath)) {
return $contents;
}

return preg_replace('/namespace .+;/', '', $contents);
},
// Bug in scoper : it does not add class_alias if the interface is inside an if statement.
// TODO : fix me on feedback in https://github.com/humbug/php-scoper/issues/473
static function (string $filePath, string $prefix, string $contents): string {
if ($filePath !== 'vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php') {
return $contents;
}

$contents .= 'if (\PHP_VERSION_ID < 80000) {'.PHP_EOL;
$contents .= " \class_alias('$prefix\\\\Stringable', 'Stringable', \\false);".PHP_EOL;
$contents .= "}".PHP_EOL;

return $contents;
}
]
'files-whitelist' => [
...$polyfillsBootstraps,
...$polyfillsStubs
],
'patchers' => []
];
Binary file modified grumphp.phar
Binary file not shown.
28 changes: 14 additions & 14 deletions grumphp.phar.asc
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
-----BEGIN PGP SIGNATURE-----

iQJLBAABCAA1FiEEW1zViimZLVHyF1jeO6jkJuArJ7YFAmCcF4QXHHRvb252ZXJ3
ZXJmdEBnbWFpbC5jb20ACgkQO6jkJuArJ7bq6Q/9Eq0Lj22K3Qvu1Q29kfcpQtUC
KilqyMPcTuK4s9K80Jg7OOztuoWEQ+xCHcyBJKCVkYGKTYUDYJc3ecmjU6hxOfrw
j9f9whXcB04wrZKVSIw/qwG4ByIBZb+5G240PCd3DDGjzU7roEb5FhdoWx6HC1Z9
0PvOXNekslVFkisvSHU/hXMN2TOUycJglUvoJiL03VYcXtgRtj+bFn8xihx6N0Ej
8+09VONTuSRIBYJP31KglAlQ57CveuZxbSMjfMRHZItIY/LdgLnG7wUSf7r74k1h
QH2DoSE2iG0MRbgmpXlh1hLRn2ytYIebaxRWFfKlCp/+b/Wzi6Q8A/10hIwJ3y0G
PL7se22t8/JP8ebYtLjbNDioNTA01MxQKtIjToxYnQCdKl91SiUn3luZEfxKpjGR
Bp/+hY/upLINKJRfzb9mRcR+w1B0DrPTrfSMCeAShDpxAk+7wfUTUw9/F5gk/LGO
bZbGtNg4VJ0kyClCRgksVGzwnhA/O/uKSaXWW3Uxhc2faP9Wh+3W33SfKHiholkb
0DZyY63qiI9q3VhZJAzN1CAqrdrak+tpIpxW8mxKAGjSQ/jOtCf5R2bCWesoIixC
qU3qM4+BWTUmltTRJWphymkTcxFgNc6anE+CVZ2UBRqS0/ibs7C7rPkenlvItlOC
PdiirGY1jnPbhAqdT94=
=wQLV
iQJLBAABCAA1FiEEW1zViimZLVHyF1jeO6jkJuArJ7YFAmCnWe0XHHRvb252ZXJ3
ZXJmdEBnbWFpbC5jb20ACgkQO6jkJuArJ7YGLxAAhRrQKPTCoLYIbUElQMOLMc/+
fMCVXh4V45f03TyXEiJ5o+Bh+ITavet+SJ3YBKYpQBjimvbzK+7mShUdAuwQwSAm
iJU/DIP4mnieG8n3BBLZuJip9NjXoj11yiZoI3hCHkaWowKLZQ6juv8YfNBO984S
PKJ7x3w6HW8xUN91ysYrmFrusicHtCUoEkztxvYVcu2k4gUJ2+an/fSxpEirDwvz
c8lV3fo9xd2bNLK9GGVpWPKYew1V66lGc/yTqZDwWqLovIRfJdoyLoM03UnK+JLG
d0s9WTCxBCC4ypdRe1WrmOaMcSnJfQeHrDJfulQat6POf6O0yMBB+5Z3ZwEXKAtg
ZDZTHZ+7gHJjKKa0IGo6CK8ZXF/jZxcPpyqydR4H6504aWIxCT7G6/wCMe0aA9UI
3ntuBEg4fMmS8uMgAAcz3ZlS5YmZFpuviDehAAoSp0uWiUR3l+abGVRTGqBX2hv3
Yep+iOIUAy4TcJbMwD2p42XM1Uhn57V4pRfslKu9+qU8hfPe5F3VFcC99fXPRwGw
26P5Q8ZJalEOPC3IOSKlUcJbwrS3eT8KNYHKJ2TfUIreDgUNrbCzzgH9qSAm6ioM
0lPQWSPg/zXdV+yhwjx+Z1C/WIseScSWAyryDydTi38RC1vQ6bm8qGNlgg6Q+9Sz
nVAH3I59qKWVfy1gvPQ=
=3WDb
-----END PGP SIGNATURE-----

0 comments on commit d43036a

Please sign in to comment.