diff --git a/.gitignore b/.gitignore index 3b34a6fa..b903490e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,55 @@ -dist -bin/*.sh -bin/*.py -*.done +*.a +*.dep.mk *.dist +*.done +*.jw-secret +*.jw-secret-file +*.ldscript +*.o +*.old +*.orig *.out -test-out.txt -make/.cache.mk -make/jw-pkg.pc -minimal-to-master.sh -pkg-build.dist -pkgconfig/ -rebase.sh -__pycache__ +*.pc +*.pyc +*.rep +*.secret +*.so +*.so.* +*.swp +*_generated_* +*tmp* +*~ +-test-out.txt .cache-project.mk +.exrc +.feedfs_history +.gdb_history +.jw-agit +.mypy_cache +.ruff_cache +__init__.py +__pycache__ +bin/*.bat +bin/*.pl +bin/*.pm +bin/*.py +bin/*.sh +bin/*.tcl +conftest.py +core +dist +ld-*.conf +local.conf +local.mk +local.mk +local.yaml +make/*.pc +mkspec.sh +pr-descr*.txt +pre-local.mk +pyproject.toml +pyrightconfig.json +!*.jw-tmpl +!*.tmpl .cache-projects.mk +make/ssh-wrapper.sh diff --git a/Makefile b/Makefile index 105c83d0..7ff1e771 100644 --- a/Makefile +++ b/Makefile @@ -4,12 +4,16 @@ PKG_UPLOAD_URLPREFIX ?= rsync_ssh://$(JANWARE_USER)@pkg.janware.com:/srv/da all: all: cache-projects +GITIGNORE_PATTERNS_TOP = +GITIGNORE_PATTERNS_END = .cache-projects.mk make/ssh-wrapper.sh + include $(TOPDIR)/make/proj.mk include $(JWBDIR)/make/topdir.mk include $(JWBDIR)/make/srcdist.mk include $(JWBDIR)/make/git-cvs-bridge.mk include $(JWBDIR)/make/py-topdir.mk + clean: clean.pkgconfig clean.pkgconfig: rm -rf pkgconfig diff --git a/conf/templates/gitignore b/conf/templates/gitignore new file mode 100644 index 00000000..9d297dbe --- /dev/null +++ b/conf/templates/gitignore @@ -0,0 +1,55 @@ +{top} +*.a +*.dep.mk +*.dist +*.done +*.jw-secret +*.jw-secret-file +*.ldscript +*.o +*.old +*.orig +*.out +*.pc +*.pyc +*.rep +*.secret +*.so +*.so.* +*.swp +*_generated_* +*tmp* +*~ +-test-out.txt +.cache-project.mk +.exrc +.feedfs_history +.gdb_history +.jw-agit +.mypy_cache +.ruff_cache +__init__.py +__pycache__ +bin/*.bat +bin/*.pl +bin/*.pm +bin/*.py +bin/*.sh +bin/*.tcl +conftest.py +core +dist +ld-*.conf +local.conf +local.mk +local.mk +local.yaml +make/*.pc +mkspec.sh +pr-descr*.txt +pre-local.mk +pyproject.toml +pyrightconfig.json +!*.jw-tmpl +!*.tmpl +{end} diff --git a/make/py-topdir.mk b/make/py-topdir.mk index 75d95b50..73b32fb6 100644 --- a/make/py-topdir.mk +++ b/make/py-topdir.mk @@ -19,8 +19,7 @@ clean: clean.topdir clean.topdir: clean.py-check pyproject.toml: - $(PYTHON) $(JWB_SCRIPT_DIR)/jw-pkg.py -p $(PROJECTS_DIR) -t $(TOPDIR) --topdir-format unaltered projects create-file --format tmpl \ - --template-name $@ --search-path $(JW_PKG_CONF_BASE_DIR)/templates --field mypypath='$(MYPY_PATH_DIRECTIVE)' $(PROJECT) > $@.tmp + $(JW_PKG_TMPL_UPDATE) $@ --field mypypath='$(MYPY_PATH_DIRECTIVE)' $(PROJECT) > $@.tmp mv $@.tmp $@ pyrightconfig.json: diff --git a/make/topdir.mk b/make/topdir.mk index 0573e7f0..b8eb3e75 100644 --- a/make/topdir.mk +++ b/make/topdir.mk @@ -95,6 +95,13 @@ ifneq ($(SUBDIRS_TO_ITERATE),) endif endif +JW_PKG_TMPL_SEARCH_PATH ?= $(JW_PKG_CONF_BASE_DIR)/templates +JW_PKG_TMPL_UPDATE ?= $(PYTHON) $(JWB_SCRIPT_DIR)/jw-pkg.py -p $(PROJECTS_DIR) -t $(TOPDIR) --topdir-format unaltered \ + projects create-file --format tmpl --search-path $(subst $(space),:,$(JW_PKG_TMPL_SEARCH_PATH)) --template-name + +GITIGNORE_PATTERNS_TOP ?= $(PROJECT) +GITIGNORE_PATTERNS_END ?= $(addprefix !,$(shell git ls-files 2>/dev/null | grep "\(\b$(PROJECT)\b\|__init__.py\)" | xargs)) + all: topdir config test: all @@ -307,3 +314,10 @@ Makefile: ; %: $(TD_COPY_SRC)/% $$(foreach path,$$(TD_COPY_SRC_PATH),$$(wildcard $$(addprefix $$(path)/,$$@))) $$(wildcard $$@.*) cat $^ > $@.tmp mv $@.tmp $@ + +gitignore: + $(JW_PKG_TMPL_UPDATE) gitignore --field-keys top,end \ + $(addprefix --field top=,$(GITIGNORE_PATTERNS_TOP)) \ + $(addprefix --field end=,$(GITIGNORE_PATTERNS_END)) \ + --field-separator='%n' $(PROJECT) | grep -v '^[[:space:]]*$$' > .gitignore.tmp + mv .gitignore.tmp .gitignore diff --git a/scripts/jw-pkg-create-project.sh b/scripts/jw-pkg-create-project.sh index c954b3ef..8ef06c49 100644 --- a/scripts/jw-pkg-create-project.sh +++ b/scripts/jw-pkg-create-project.sh @@ -97,42 +97,6 @@ cat_make_project_conf() EOT } -cat_gitignore() -{ - cat <<-EOT - *.done - *.dist - *.dep.mk - .cache-project.mk - *.o - *.so.* - *.so - *.a - *.rep - ld-*.conf - *.ldscript - *.pc - $name - *_generated_* - *.secret - local.mk - .gdb_history - dist - mkspec.sh - *.out - *.orig - *.old - .feedfs_history - .exrc - *.swp - *tmp* - __init__.py - __pycache__ - pyproject.toml - pyrightconfig.json - EOT -} - # ---------------------- here we go myname=`basename $0` @@ -193,7 +157,7 @@ cat_make_Makefile > make/Makefile cat_VERSION > VERSION cat_make_proj_mk > make/proj.mk cat_make_project_conf > make/project.conf -cat_gitignore > .gitignore +make gitignore log Successfully created project template \"$name\".