* lisp/Makefile (.NOTPARALLEL): Do not suppress parallel execution.
(all compile compile-dirty):
(compile-single):
(compile-native):
(compile-source):
(compile-slint1):
(compile-slint2): Explicitly declare prerequisites that must be run
sequentially.
* mk/targets.mk (.NOTPARALLEL): Do not suppress parallel execution.
(uncompiled):
(update update2):
(repro): Explicitly declare prerequisites that must be run
sequentially.
* lisp/Makefile (LISPN): New variable listing all the valid .eln
targets.
(_ORGCM_):
(compile-native):
(native): New compile target.
(%.eln): Rule how to compile .eln files from .el files.
* mk/default.mk (ELN): Command to perform native compilation of a
single .eln file.
* mk/targets.mk (.PHONY):
(CONF_CALL): List the new targets and variables.
(native): Add target.
* mk/targets.mk (GITVERSION):
(GITSTATUS):
(DATE):
(YEAR): Only expand the variables once, not in every make sub-process.
Previous code ran pwd/date/git in every make sub-process, slowing
things down significantly and unnecessarily.
Do not use the latest Git tag. Prefer the Version header in org.el.
The Git tag on main branch is only available for the latest release.
Before this commit, development Org version was indistinguishable from
the release version.
See https://orgmode.org/list/8735cfn44v.fsf@gnu.org
* mk/default.mk (REPRO_DEBUG): New custom variable enabling extra
debugging facilities in Emacs instance open by make repro.
(REPRO_ARGS): Extra arguments passed to Emacs by make repro.
(REPRO_INIT):
(REPRO): Define Emacs cmd for testing.
* mk/targets.mk (.PHONY):
(repro): Add new target.
* doc/org-manual.org (Feedback): Describe the new make target.
* mk/targets.mk (ORGVERSION, GITVERSION): trim "-dev" suffix from ORGVERSION.
61336f80 uses org.el's Version metadata to generate ORGVERSION when
the source repository has no tags.
This can result in an org-version of "Major.Minor-dev".
The "-dev" suffix is not recognized by `version-to-list' as a valid
version syntax because it is not part of `version-regexp-alist'.
* mk/targets.mk (ORGVERSION, GITVERSION): Get version from lisp/org.el
header if it can't be retrieved from git-describe.
As of elpa.git's ee03829f90 (Finalize the new master branch,
2020-12-14), org-release and org-git-version are empty strings in
https://elpa.gnu.org/packages/org-*.tar files. This is because the
new setup executes `make autoloads info' in an elpa.git worktree with
an Org branch checked out, but elpa.git of course doesn't have Org's
release tags.
Maintaining the org.el version header has been a point of contention
in the past [1], but the header has been there for a while now. Use
it to avoid the above elpa.git issue. In the case of the master
branch, the org-release value generated in a tag-less repo will have a
different version than the one from a regular repo because org.el's
version header has a "-dev" suffix, but that's still better than an
empty version.
[1] For example: https://orgmode.org/list/87zj1uhix6.fsf@gmx.us/
Reported-by: Pierre Langlois <pierre.langlois@gmx.com>
Ref: https://orgmode.org/list/87y2hi9qev.fsf@gmx.com
* doc/Makefile: Add rule to generate org-version.tex.
* doc/orgcard.tex: Include org-version.tex rather than explicitly
setting version and year.
This removes the only instance in the repo where the Org version is
hardcoded.
* mk/default.mk (CHMOD): Addtional customization variable for
chmod (change file permissions). Explain why we need it for
git-annex.
* mk/targets.mk (cleantest): If the plain $(RMR) fails, try to make
directories writable recursively and retry the $(RMR).
(cleanall, $(CLEANDIRS:%=clean%)): Use "+" instead of ";" to reduce
the number of execs.
* org-attach.el (org-attach-use-annex): New function to check if git
annex should be used.
(org-attach-annex-get-maybe): New function to get a file from git
annex if necessary.
(org-attach-annex-auto-get): New defcustom to determine behavior
of org-attach-annex-get-maybe.
(org-attach-open): Automatically get attached files from git annex when
opening if necessary.
* testing/lisp/test-org-annex.el: New file for testing org-attach. Only
contains code for testing org-attach with git annex at the moment.
* mk/targets.mk: Fix cleantest target so it can delete git annex repos.
* mk/default.mk (GIT_BRANCH): New configuration variable to specify a
Git branch that is checked out before updating.
* mk/targets.mk (up0 up1 up2): Check out the branch in GIT_BRANCH
before doing an update. Stays on the current branch if GIT_BRANCH
is undefined or empty.
* mk/default.mk (BTEST_INIT): Isolate load-path manipulation into
BTEST_LOAD and do whitespace cleanup. (EMACSQ): New variable for an
Emacs with no configuration files. (NOBATCH, BATCH): Use EMACSQ.
* mk/targets.mk (vanilla): Do not echo command line and explicitly say
that we don't get a return value. (CONF_CALL): Add NOBATCH to the
list of things shown in `make config-all´.
* mk/default.mk: Add default for new variable BTEST_RE to select all
tests. (BTEST_OB_LANGUAGES): Remove sh (always needed, as
emacs-lisp) and add comment for ruby. (BTEST): Use BTEST_RE to
select tests from the test suite. Reorganize pre-loading of Org,
Babel, Ox and babel languages into a known clean environment.
* mk/targets.mk (CONF_TEST): Add BTEST_RE to the output of
config-test.
* testing/org-batch-test-init.el: New file. Remove all traces of any
Org built into Emacs or otherwise present in the environment so it
can not be picked up spuriously during testing or conceal errors in
the Org version under test.
* testing/org-test.el (org-test-run-batch-tests): Showtest selection
in messages. (org-test-run-all-tests): Update ID locations.
e.g., to run a single test without re-compiling Org-mode use the
following.
make single-test-dirty TEST=test-ob/org-babel-remove-result--results-code
This should aid in isolating errors with git bisect.
* mk/targets.mk (up0): Explicitly remove additions from contrib/
before moving HEAD via git since the files might be renamed, deleted
or moved by checking out a new version.
Thanks to Suvayu Ali for pointing to this problem. The user still has
to remember to do this when moving HEAD manually, though.
* mk/targets.mk: Remove invocation of $(SHOWVER). Emacs does some
stupid ioctl when org-fixup gets invoked and messes up the output.
* mk/default.mk: Remove definition of $(SHOWVER).
* mk/targets.mk: Implement target `config-version´ to show the version
of Org from both make's and Emacs' perspective. Run that target at
the end of all `config-*´ targets.
* mk/default.mk: Add SHOWVER with the appropriate invocation of emacs
to output the Org version.
* Makefile: Document new target `config-version´ in `helpall´.
* mk/targets.mk: Move copy of contrib additions to lisp/Makefile.
* lisp/Makefile: Let `autoloads´ in lisp re-generate contrib files by
depending on new target `addcontrib´ in the right order.
* mk/targets.mk: Add contrib files already for autoloads so that
uncompiled can have contrib/lisp/ added, too. Remove all files from
contrib/lisp/ that are found in lisp/ for `cleanlisp´ so that
switching between different contrib configurations becomes easier.
Remove variable ORG_TO_LISP since it is not needed anymore.
* Makefile: Include default.mk and targets.mk from mk/ where they've
been moved to.
* README_maintainer: Rename utils to make throughout.
* doc/Makefile: Rename utils to make throughout.
* doc/org.texi: Remove reference to utils/, x11idle.c is now in
contrib/scripts.
* mk/make_emacs_changelog: Add mk/ to list of directories not to be
reported in Emacs' ChangeLog. Also retain utils/ and re-add
UTILITIES; add a comment explaining why these need to stay.
* mk/default.mk: Rename utils to make throughout. Include version.mk
from mk/ where it's been moved to.
* mk/targets.mk: Rename utils to make throughout.
* mk/server.mk: Rename utils to make throughout. Only put those files
from mk/ into the archives that are needed outside the server:
default.mk targets.mk version.mk and org-fixup.el.
* lisp/org-compat.el: Rename utils to make throughout.
* .gitignore: Rename utils to make throughout.