From 619bcdc4a200602947ad878922d5435db76ba242 Mon Sep 17 00:00:00 2001 From: Max Goodman Date: Thu, 10 May 2012 17:42:41 -0700 Subject: [PATCH] Compile static files in build/public/static. --- r2/Makefile | 40 +++++++++++++++++++++++-------------- r2/r2/config/environment.py | 10 +++++++--- r2/r2/lib/js.py | 2 +- 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/r2/Makefile b/r2/Makefile index 443c6213a..7c3b38964 100644 --- a/r2/Makefile +++ b/r2/Makefile @@ -84,24 +84,33 @@ clean_ini: rm $(INIFILES) #################### Static Files -STATIC_DIR := r2/public/static +STATIC_ROOT := r2/public +STATIC_FILES := $(shell find $(STATIC_ROOT) -readable) +STATIC_BUILD_ROOT := $(BUILD_DIR)/public +STATIC_BUILD_DIR := $(STATIC_BUILD_ROOT)/static +STATIC_BUILDSTAMP := $(BUILD_DIR)/static-buildstamp .PHONY: clean_static static: pyx css js names -clean_static: clean_css clean_js clean_names +clean_static: + rm -rf $(STATIC_BUILDSTAMP) $(STATIC_BUILD_DIR) + +$(STATIC_BUILDSTAMP): $(STATIC_FILES) + cp -ruTL $(STATIC_ROOT) $(STATIC_BUILD_ROOT) + touch $@ #### Stylesheets CSS_COMPRESS := $(SED) -e 's/ \+/ /' -e 's/\/\*.*\*\///g' -e 's/: /:/' | grep -v "^ *$$" -CSS_SOURCE_DIR := $(STATIC_DIR)/css +CSS_SOURCE_DIR := $(STATIC_BUILD_DIR)/css SPRITED_STYLESHEETS := reddit.css compact.css -PROCESSED_SPRITED_STYLESHEETS := $(addprefix $(STATIC_DIR)/, $(SPRITED_STYLESHEETS)) -SPRITES := $(addprefix $(STATIC_DIR)/, $(patsubst %.css,sprite-%.png, $(SPRITED_STYLESHEETS))) +PROCESSED_SPRITED_STYLESHEETS := $(addprefix $(STATIC_BUILD_DIR)/, $(SPRITED_STYLESHEETS)) +SPRITES := $(addprefix $(STATIC_BUILD_DIR)/, $(patsubst %.css,sprite-%.png, $(SPRITED_STYLESHEETS))) OTHER_STYLESHEETS := reddit-ie6-hax.css reddit-ie7-hax.css mobile.css -MINIFIED_OTHER_STYLESHEETS := $(addprefix $(STATIC_DIR)/, $(OTHER_STYLESHEETS)) +MINIFIED_OTHER_STYLESHEETS := $(addprefix $(STATIC_BUILD_DIR)/, $(OTHER_STYLESHEETS)) PROCESSED_STYLESHEETS := $(PROCESSED_SPRITED_STYLESHEETS) $(MINIFIED_OTHER_STYLESHEETS) RTL_STYLESHEETS := $(PROCESSED_STYLESHEETS:.css=-rtl.css) @@ -110,18 +119,19 @@ CSS_OUTPUTS = $(PROCESSED_STYLESHEETS) $(RTL_STYLESHEETS) $(SPRITES) .PHONY: clean_css -css: $(CSS_OUTPUTS) +css: $(STATIC_BUILDSTAMP) $(CSS_OUTPUTS) -$(MINIFIED_OTHER_STYLESHEETS): $(STATIC_DIR)/%.css: $(CSS_SOURCE_DIR)/%.css + +$(MINIFIED_OTHER_STYLESHEETS): $(STATIC_BUILD_DIR)/%.css: $(CSS_SOURCE_DIR)/%.css # when static file names are mangled, the original becomes a symlink to the mangled name # remove the original file here in case it's a symlink so we don't just rewrite the old file rm -f $@ $(CAT) $< | $(CSS_COMPRESS) > $@ -$(STATIC_DIR)/sprite-%.png $(STATIC_DIR)/%.css: $(CSS_SOURCE_DIR)/%.css +$(STATIC_BUILD_DIR)/sprite-%.png $(STATIC_BUILD_DIR)/%.css: $(CSS_SOURCE_DIR)/%.css $(STATIC_BUILDSTAMP) # see above - rm -f $(STATIC_DIR)/sprite-$*.png $(STATIC_DIR)/$*.css - $(PYTHON) r2/lib/nymph.py $< $(STATIC_DIR)/sprite-$*.png | $(CSS_COMPRESS) > $(STATIC_DIR)/$*.css + rm -f $(STATIC_BUILD_DIR)/sprite-$*.png $(STATIC_BUILD_DIR)/$*.css + $(PYTHON) r2/lib/nymph.py $< $(STATIC_BUILD_DIR)/sprite-$*.png | $(CSS_COMPRESS) > $(STATIC_BUILD_DIR)/$*.css $(RTL_STYLESHEETS): %-rtl.css : %.css # see above @@ -141,7 +151,7 @@ JS_OUTPUTS := $(shell $(PYTHON) r2/lib/js.py enumerate_outputs) .PHONY: clean_js -js: $(JS_MODULE_BUILDSTAMPS) +js: $(STATIC_BUILDSTAMP) $(JS_MODULE_BUILDSTAMPS) $(JS_OUTPUTS): $(JS_MODULE_BUILDSTAMPS) @@ -156,12 +166,12 @@ endef $(foreach module,$(JS_MODULES),$(eval $(call JS_MODULE_TEMPLATE,$(module)))) clean_js: - rm -f $(JS_MODULE_BUILDSTAMPS) $(STATIC_DIR)/*.js + rm -f $(JS_MODULE_BUILDSTAMPS) $(STATIC_BUILD_DIR)/*.js #### name mangling MANGLEABLE_FILES := $(CSS_OUTPUTS) $(JS_OUTPUTS) MANGLE_BUILDSTAMP := $(BUILD_DIR)/mangle-buildstamp -NAMES_FILE := $(STATIC_DIR)/names.json +NAMES_FILE := $(STATIC_BUILD_DIR)/names.json MANGLED_FILES := $(wildcard $(foreach file,$(MANGLEABLE_FILES),$(basename $(file)).*$(suffix $(file)))) .PHONY: clean_names @@ -176,7 +186,7 @@ clean_names: rm -f $(MANGLE_BUILDSTAMP) $(NAMES_FILES) $(MANGLEABLE_FILES) $(MANGLED_FILES) $(JS_MODULE_BUILDSTAMPS) #### gzip! -GZIPPABLE := $(filter %.css %.js,$(MANGLED_FILES) $(STATIC_DIR)/js/lib/jquery.js) +GZIPPABLE := $(filter %.css %.js,$(MANGLED_FILES) $(STATIC_BUILD_DIR)/js/lib/jquery.js) GZIPPED := $(addsuffix .gzip,$(GZIPPABLE)) .PHONY: clean_gzip diff --git a/r2/r2/config/environment.py b/r2/r2/config/environment.py index 8ae9123f4..32a6f764b 100644 --- a/r2/r2/config/environment.py +++ b/r2/r2/config/environment.py @@ -30,7 +30,7 @@ mimetypes.init() import webhelpers from r2.config import routing -import r2.lib.app_globals as app_globals +from r2.lib.app_globals import ConfigValue, Globals from r2.lib import rpc import r2.lib.helpers from r2.lib.plugin import PluginLoader @@ -45,13 +45,17 @@ def load_environment(global_conf={}, app_conf={}, setup_globals=True): paths = {'root': root_path, 'controllers': os.path.join(root_path, 'controllers'), 'templates': tmpl_dirs, - 'static_files': os.path.join(root_path, 'public') } + if ConfigValue.bool(global_conf.get('uncompressedJS')): + paths['static_files'] = os.path.join(root_path, 'public') + else: + paths['static_files'] = os.path.join(os.path.dirname(root_path), 'build/public') + config.init_app(global_conf, app_conf, package='r2', template_engine='mako', paths=paths) - g = config['pylons.g'] = app_globals.Globals(global_conf, app_conf, paths) + g = config['pylons.g'] = Globals(global_conf, app_conf, paths) if setup_globals: g.setup() reddit_config.cache = g.cache diff --git a/r2/r2/lib/js.py b/r2/r2/lib/js.py index 0c1844224..56b0bbf85 100755 --- a/r2/r2/lib/js.py +++ b/r2/r2/lib/js.py @@ -17,7 +17,7 @@ else: # STATIC_ROOT will be None if pylons is uninitialized if not STATIC_ROOT: REDDIT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - STATIC_ROOT = os.path.join(REDDIT_ROOT, "public") + STATIC_ROOT = os.path.join(os.path.dirname(REDDIT_ROOT), "build/public") script_tag = '\n' inline_script_tag = '\n'