Exclude categories from homepage not longer working

I have no idea how this was ever working for you to begin with, but there’s really no need to use a custom page template for the blog posts index template. WordPress provides a template file to use: home.php. Easiest solution:

  1. Rename homepage.php as home.php and remove any custom template header comments
  2. Remove all query_posts() references inside home.php
  3. Ensure that Posts Page settings are correct in Settings -> Reading
  4. Keep pre_get_posts filter in place

This will revert WordPress to using the reserved template, home.php, to render the blog posts index, while allowing WordPress to recognize the query as being the blog posts index.