[IMP] allow to define BUILD_DIR and better odoo detection

Building documentation implies some constraints: the source folder is
readonly, mainly because the sources are shared accros builds.

This implies that nor a symlink and a _build dir cannot be added in the
source directory.

The symlink will work in most cases localy for user with strange
multiverse structure, but if not found, the fallback will check in
parent directory. Most users and runbot will have all sources in the
same directory (both in universe and basic multiverse cases)
-(version?)
   -odoo
   -enterprise
   -upgrade
   -documentation

The second change will check if BUILD_DIR is defined before setting it,
allowing to use 'make BUILD_DIR=../build' to output the documentation
somewhere else.
This commit is contained in:
Xavier-Do 2021-07-19 16:02:37 +02:00
parent a5ab764c04
commit 547d90a97d
2 changed files with 17 additions and 8 deletions

View File

@ -5,6 +5,10 @@ ifndef WORKERS
WORKERS = auto WORKERS = auto
endif endif
ifndef BUILD_DIR
BUILD_DIR = _build
endif
SPHINX_BUILD = sphinx-build SPHINX_BUILD = sphinx-build
CONFIG_DIR = . CONFIG_DIR = .
SPHINXOPTS = -D project_root=$(ROOT) -D canonical_version=$(CANONICAL_VERSION) \ SPHINXOPTS = -D project_root=$(ROOT) -D canonical_version=$(CANONICAL_VERSION) \
@ -13,7 +17,7 @@ SPHINXOPTS = -D project_root=$(ROOT) -D canonical_version=$(CANONICAL_VERSIO
-A google_analytics_key=$(GOOGLE_ANALYTICS_KEY) \ -A google_analytics_key=$(GOOGLE_ANALYTICS_KEY) \
-j $(WORKERS) -j $(WORKERS)
SOURCE_DIR = content SOURCE_DIR = content
BUILD_DIR = _build
HTML_BUILD_DIR = $(BUILD_DIR)/html HTML_BUILD_DIR = $(BUILD_DIR)/html
ifdef VERSIONS ifdef VERSIONS
@ -37,10 +41,9 @@ help:
clean: clean:
@echo "Cleaning build files..." @echo "Cleaning build files..."
rm -rf $(BUILD_DIR)/* rm -rf $(BUILD_DIR)/*
rm extensions/odoo_theme/static/style.css
@echo "Cleaning finished." @echo "Cleaning finished."
html: extensions/odoo_theme/static/style.css html: $(BUILD_DIR)/html/_static/style.css
@echo "Starting build..." @echo "Starting build..."
$(SPHINX_BUILD) -c $(CONFIG_DIR) -b html $(SPHINXOPTS) $(SOURCE_DIR) $(HTML_BUILD_DIR) $(SPHINX_BUILD) -c $(CONFIG_DIR) -b html $(SPHINXOPTS) $(SOURCE_DIR) $(HTML_BUILD_DIR)
@echo "Build finished." @echo "Build finished."
@ -60,9 +63,10 @@ gettext:
$(SPHINX_BUILD) -c $(CONFIG_DIR) -b gettext $(SOURCE_DIR) locale/sources $(SPHINX_BUILD) -c $(CONFIG_DIR) -b gettext $(SOURCE_DIR) locale/sources
@echo "Generation finished." @echo "Generation finished."
extensions/odoo_theme/static/style.css: extensions/odoo_theme/static/style.scss extensions/odoo_theme/static/scss/*.scss $(BUILD_DIR)/html/_static/style.css: extensions/odoo_theme/static/style.scss extensions/odoo_theme/static/scss/*.scss
@echo "Compiling stylesheets..." @echo "Compiling stylesheets..."
pysassc $(subst .css,.scss,$@) $@ mkdir -p $(BUILD_DIR)/html/_static
pysassc extensions/odoo_theme/static/style.scss $(BUILD_DIR)/html/_static/style.css
@echo "Compilation finished." @echo "Compilation finished."
#=== Development and debugging rules ===# #=== Development and debugging rules ===#
@ -70,6 +74,6 @@ extensions/odoo_theme/static/style.css: extensions/odoo_theme/static/style.scss
fast: SPHINXOPTS += -A collapse_menu=True fast: SPHINXOPTS += -A collapse_menu=True
fast: html fast: html
static: extensions/odoo_theme/static/style.css static: $(BUILD_DIR)/static/style.css
cp -r extensions/odoo_theme/static/* _build/html/_static/ cp -r extensions/odoo_theme/static/* $(BUILD_DIR)/html/_static/
cp -r static/* _build/html/_static/ cp -r static/* $(BUILD_DIR)/html/_static/

View File

@ -60,6 +60,11 @@ sys.path.insert(0, str(extension_dir.absolute()))
# Search for the directory of odoo sources to know whether autodoc should be used on the dev doc # Search for the directory of odoo sources to know whether autodoc should be used on the dev doc
odoo_dir = Path('odoo') odoo_dir = Path('odoo')
odoo_dir_in_path = False odoo_dir_in_path = False
if not odoo_dir.is_dir():
parent_odoo_dir = Path('../odoo')
if parent_odoo_dir.is_dir():
_logger.info('Using parent dir to find odoo sources')
odoo_dir = parent_odoo_dir
if not odoo_dir.is_dir(): if not odoo_dir.is_dir():
_logger.warning( _logger.warning(
f"Could not find Odoo sources directory at {odoo_dir.absolute()}.\n" f"Could not find Odoo sources directory at {odoo_dir.absolute()}.\n"