Make WordPress Core

Ticket #44492: build-with-symlinks4.patch

File build-with-symlinks4.patch, 9.0 KB (added by omarreiss, 6 years ago)

Makes sure wp-load.php isn't symlinked because the file needs to be physically in the build folder.

  • Gruntfile.js

    diff --git Gruntfile.js Gruntfile.js
    index 0dc8b7f..453c659 100644
    module.exports = function(grunt) { 
    1212                BANNER_TEXT = '/*! This file is auto-generated */',
    1313                autoprefixer = require( 'autoprefixer' ),
    1414                phpUnitWatchGroup = grunt.option( 'group' ),
     15                themeFiles = [
     16                        'wp-content/themes/index.php',
     17                        'wp-content/themes/twenty*/**'
     18                ],
    1519                buildFiles = [
    1620                        '*.php',
    1721                        '*.txt',
    module.exports = function(grunt) { 
    1923                        'wp-includes/**', // Include everything in wp-includes.
    2024                        'wp-admin/**', // Include everything in wp-admin.
    2125                        'wp-content/index.php',
    22                         'wp-content/themes/index.php',
    23                         'wp-content/themes/twenty*/**',
    2426                        'wp-content/plugins/index.php',
    2527                        'wp-content/plugins/hello.php',
    2628                        'wp-content/plugins/akismet/**'
    27                 ],
     29                ].concat( themeFiles ),
    2830                cleanFiles = [];
    2931
    3032        buildFiles.forEach( function( buildFile ) {
    module.exports = function(grunt) { 
    124126                                ]
    125127                        }
    126128                },
     129                symlink: {
     130                        expanded: {
     131                                files: [
     132                                  {
     133                                    expand: true,
     134                                    overwrite: true,
     135                                    cwd: SOURCE_DIR,
     136                                    src: [
     137                                                        'wp-admin/*',
     138                                                        'wp-content/uploads/',
     139                                                        'wp-content/index.php',
     140                                                        'wp-content/plugins/*',
     141                                                        'wp-includes/*',
     142                                                        '*.php',
     143                                                        '*.txt',
     144                                                        '*.html',
     145                                                        '!wp-load.php',
     146                                                        '!wp-admin/css',
     147                                                        '!wp-content/themes',
     148                                                        '!wp-includes/css',
     149                                                        '!wp-includes/version.php', // Exclude version.php
     150                                                        '!wp-includes/formatting.php', // Exclude formatting.php
     151                                                        '!wp-includes/embed.php', // Exclude formatting.php
     152                                                        '!index.php', '!wp-admin/index.php',
     153                                                        '!_index.php', '!wp-admin/_index.php'
     154                                                ],
     155                                    dest: BUILD_DIR
     156                                  },
     157                                        {
     158                                                'build/wp-config-sample.php': ['wp-config-sample.php'],
     159                                                'build/index.php': ['src/_index.php'],
     160                                                'build/wp-admin/index.php': ['src/wp-admin/_index.php']
     161                                        }
     162                                ]
     163                        }
     164                },
    127165                copy: {
    128166                        files: {
    129167                                files: [
    module.exports = function(grunt) { 
    135173                                                        '!js/**', // JavaScript is extracted into separate copy tasks.
    136174                                                        '!.{svn,git}', // Exclude version control folders.
    137175                                                        '!wp-includes/version.php', // Exclude version.php
     176                                                        '!wp-admin/css/**/*', // Exclude the CSS
     177                                                        '!wp-includes/css/**/*', // Exclude the CSS
    138178                                                        '!index.php', '!wp-admin/index.php',
    139179                                                        '!_index.php', '!wp-admin/_index.php'
    140180                                                ] ),
    module.exports = function(grunt) { 
    150190                                        }
    151191                                ]
    152192                        },
     193                        css: {
     194                                dot: true,
     195                                expand: true,
     196                                cwd: SOURCE_DIR,
     197                                src: [
     198                                        'wp-admin/**/*.css',
     199                                        'wp-includes/**/*.css'
     200                                ],
     201                                dest: BUILD_DIR
     202                        },
     203                        themes: {
     204                                dot: true,
     205                                expand: true,
     206                                cwd: SOURCE_DIR,
     207                                src: themeFiles,
     208                                dest: BUILD_DIR
     209                        },
    153210                        'npm-packages': {
    154211                                files: {
    155212                                        'build/wp-includes/js/backbone.js': ['./node_modules/backbone/backbone.js'],
    module.exports = function(grunt) { 
    338395                                src: SOURCE_DIR + 'wp-includes/version.php',
    339396                                dest: BUILD_DIR + 'wp-includes/version.php'
    340397                        },
     398                        'php-buildFiles': {
     399                                files: {
     400                                        'build/wp-includes/formatting.php': ['src/wp-includes/formatting.php'],
     401                                        'build/wp-includes/embed.php': ['src/wp-includes/embed.php'],
     402                                        'build/wp-load.php': ['src/wp-load.php'],
     403                                }
     404                        },
    341405                        dynamic: {
    342406                                dot: true,
    343407                                expand: true,
    module.exports = function(grunt) { 
    11531217
    11541218        grunt.registerTask( 'watch', function() {
    11551219                if ( ! this.args.length || this.args.indexOf( 'webpack' ) > -1 ) {
    1156                         grunt.task.run( 'build' );
     1220                        grunt.task.run( 'build:dev' );
    11571221                }
    11581222
    11591223                if ( 'watch:phpunit' === grunt.cli.tasks[ 0 ] || 'undefined' !== typeof grunt.option( 'phpunit' ) ) {
    module.exports = function(grunt) { 
    12811345                }
    12821346        } );
    12831347
     1348        grunt.registerTask( 'uglify:all', [
     1349                'uglify:core',
     1350                'uglify:embed',
     1351                'uglify:jqueryui',
     1352                'uglify:imgareaselect'
     1353        ] );
     1354
    12841355        grunt.registerTask( 'copy:js', [
    12851356                'copy:npm-packages',
    12861357                'copy:vendor-js',
    module.exports = function(grunt) { 
    12881359                'copy:includes-js'
    12891360        ] );
    12901361
    1291         grunt.registerTask( 'uglify:all', [
    1292                 'uglify:core',
    1293                 'uglify:embed',
    1294                 'uglify:jqueryui',
    1295                 'uglify:imgareaselect'
     1362        grunt.registerTask( 'copyOrSymlink', function() {
     1363                var task = grunt.option( 'symlink' ) === true ? 'symlink:expanded' : 'copy:files';
     1364                grunt.task.run( task );
     1365        } );
     1366
     1367        grunt.registerTask( 'copy:all', [
     1368                'copyOrSymlink',
     1369                'copy:php-buildFiles',
     1370                'copy:css',
     1371                'copy:themes',
     1372                'copy:wp-admin-css-compat-rtl',
     1373                'copy:wp-admin-css-compat-min',
     1374                'copy:version',
     1375                'copy:js'
    12961376        ] );
    12971377
    12981378        grunt.registerTask( 'build:tinymce', [
    module.exports = function(grunt) { 
    13121392                'jsvalidate:build'
    13131393        ] );
    13141394
    1315         grunt.registerTask( 'copy:all', [
    1316                 'copy:files',
    1317                 'copy:wp-admin-css-compat-rtl',
    1318                 'copy:wp-admin-css-compat-min',
    1319                 'copy:version',
    1320                 'copy:js'
    1321         ] );
     1395        grunt.registerTask( 'clean-all', function() {
     1396                if ( grunt.option( 'symlink' ) === true ) {
     1397                        // clean all symlinks
     1398                        try {
     1399                                var delSymlinks = require('del-symlinks');
     1400
     1401                                var result = delSymlinks.sync(['./build/**']);
     1402                                grunt.log.writeln( '>> ' + result.length + ' symlinks cleaned.' );
     1403                        } catch ( e ) {
     1404                                grunt.verbose.error( 'Error:', e.message );
     1405                                grunt.fail.warn( "Failed to delete symlinks. If you're on Windows, " +
     1406                                                                                                 "running as administrator could resolve this issue.");
     1407                        }
     1408                }
     1409
     1410                grunt.task.run( 'clean:all' );
     1411        } );
    13221412
    1323         grunt.registerTask( 'build', [
    1324                 'clean:all',
     1413        grunt.registerTask( 'build:all', [
     1414                'clean-all',
    13251415                'webpack:dev',
    13261416                'copy:all',
    13271417                'file_append',
    module.exports = function(grunt) { 
    13391429                'jsvalidate:build'
    13401430        ] );
    13411431
     1432        grunt.registerTask( 'build', function() {
     1433                grunt.task.run( 'build:all' );
     1434        } );
     1435
     1436        grunt.registerTask( 'build:dev', function() {
     1437                try {
     1438                        // Try creating a symlink.
     1439                        fs.symlinkSync( './symlink', './symlinktest');
     1440                        grunt.option( 'symlink', true );
     1441                        // If succeeded, remove it again.
     1442                        fs.unlinkSync( './symlinktest' );
     1443                } catch( e ) {
     1444                        grunt.verbose.error( 'Error:', e.message );
     1445                        grunt.log.error( "Failed to delete symlinks. Falling back to copying " +
     1446                                                                                         "files instead. If you're on Windows, " +
     1447                                                                                         "running as administrator could resolve this issue.");
     1448                } finally {
     1449                        grunt.task.run( 'build:all' );
     1450                }
     1451        } );
     1452
    13421453        grunt.registerTask( 'prerelease', [
    13431454                'precommit:php',
    13441455                'precommit:js',
  • package-lock.json

    diff --git package-lock.json package-lock.json
    index 3f81fc7..9fdaee0 100644
     
    23682368                                }
    23692369                        }
    23702370                },
     2371                "del-symlinks": {
     2372                        "version": "0.1.2",
     2373                        "resolved": "https://registry.npmjs.org/del-symlinks/-/del-symlinks-0.1.2.tgz",
     2374                        "integrity": "sha1-rE/ePWow7Xk23QMH8APLtTUkP2U=",
     2375                        "dev": true,
     2376                        "requires": {
     2377                                "get-symlinks": "^1.0.0",
     2378                                "object-assign": "^4.1.0",
     2379                                "pify": "^2.3.0",
     2380                                "pinkie-promise": "^2.0.1"
     2381                        }
     2382                },
    23712383                "delayed-stream": {
    23722384                        "version": "1.0.0",
    23732385                        "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
     
    45054517                        "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
    45064518                        "dev": true
    45074519                },
     4520                "get-symlinks": {
     4521                        "version": "1.0.2",
     4522                        "resolved": "https://registry.npmjs.org/get-symlinks/-/get-symlinks-1.0.2.tgz",
     4523                        "integrity": "sha1-sOYpxRHeGYGd08dskruNLi9CPGM=",
     4524                        "dev": true,
     4525                        "requires": {
     4526                                "globby": "^6.0.0",
     4527                                "is-symbolic-link": "^1.0.3",
     4528                                "object-assign": "^4.1.0",
     4529                                "pinkie-promise": "^2.0.1"
     4530                        }
     4531                },
    45084532                "get-value": {
    45094533                        "version": "2.0.6",
    45104534                        "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
     
    49765000                                "grunt-lib-phantomjs": "^1.0.0"
    49775001                        }
    49785002                },
     5003                "grunt-contrib-symlink": {
     5004                        "version": "1.0.0",
     5005                        "resolved": "https://registry.npmjs.org/grunt-contrib-symlink/-/grunt-contrib-symlink-1.0.0.tgz",
     5006                        "integrity": "sha1-yDYWwDVxGmwAYqKBDPHHf/xr7Ss=",
     5007                        "dev": true
     5008                },
    49795009                "grunt-contrib-uglify": {
    49805010                        "version": "2.0.0",
    49815011                        "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-2.0.0.tgz",
     
    64146444                        "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
    64156445                        "dev": true
    64166446                },
     6447                "is-symbolic-link": {
     6448                        "version": "1.0.3",
     6449                        "resolved": "https://registry.npmjs.org/is-symbolic-link/-/is-symbolic-link-1.0.3.tgz",
     6450                        "integrity": "sha1-e9PWyeX+lONCpHRQRIcW8MJUOIM=",
     6451                        "dev": true,
     6452                        "requires": {
     6453                                "pinkie-promise": "^2.0.1"
     6454                        }
     6455                },
    64176456                "is-tar": {
    64186457                        "version": "1.0.0",
    64196458                        "resolved": "https://registry.npmjs.org/is-tar/-/is-tar-1.0.0.tgz",
  • package.json

    diff --git package.json package.json
    index 06a5a5e..c91331c 100644
     
    1515        "devDependencies": {
    1616                "autoprefixer": "^6.5.1",
    1717                "check-node-version": "3.2.0",
     18                "del-symlinks": "0.1.2",
    1819                "grunt": "1.0.2",
    1920                "grunt-banner": "^0.6.0",
    2021                "grunt-contrib-clean": "~1.0.0",
     
    2526                "grunt-contrib-imagemin": "~1.0.0",
    2627                "grunt-contrib-jshint": "~1.0.0",
    2728                "grunt-contrib-qunit": "^1.2.0",
     29                "grunt-contrib-symlink": "1.0.0",
    2830                "grunt-contrib-uglify": "~2.0.0",
    2931                "grunt-contrib-watch": "~1.0.0",
    3032                "grunt-file-append": "0.0.7",