From mboxrd@z Thu Jan 1 00:00:00 1970 From: Myles English Subject: Re: running the new exporter asynchronously? Date: Wed, 28 Nov 2012 20:46:33 +0000 Message-ID: <87obih78wm.fsf@gmail.com> References: , <87mwy197wj.fsf@gmail.com>, <87y5hl264z.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([208.118.235.92]:49652) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TdoWU-0005tu-O3 for emacs-orgmode@gnu.org; Wed, 28 Nov 2012 15:46:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TdoWS-0003mX-W2 for emacs-orgmode@gnu.org; Wed, 28 Nov 2012 15:46:22 -0500 Received: from mail-we0-f169.google.com ([74.125.82.169]:63283) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TdoWS-0003jb-LP for emacs-orgmode@gnu.org; Wed, 28 Nov 2012 15:46:20 -0500 Received: by mail-we0-f169.google.com with SMTP id t49so4290208wey.0 for ; Wed, 28 Nov 2012 12:46:19 -0800 (PST) In-reply-to: <87y5hl264z.fsf@gmail.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Eric Schulte Cc: emacs-orgmode , Alan Schmitt , Nicolas Goaziou Hi, Eric Schulte writes: > In the interim it, one solution which I personally like for large > projects is to offload compilation into an external batch Emacs process. > I find this not only useful for compilation while working, but if you > place all relevant config into an init.el file loaded by the batch > Emacs, this also makes it possible to share and compile the project > separate of your personal Emacs config. > > Attached is a bare-bones Makefile supporting this sort of work-flow. This is probably too complicated for your immediate requirements but it is a good opportunity to share my solution using CMake. It does add more complexity though. It is for pdf production and uses something called UseLATEX.cmake. The main advantages are that: - it can also regenerate all my plots from standalone (e.g.) R scripts, so I don't have to do everything in org if I don't want to - it does 'out of source' builds - I don't know the make syntax - it would probably work on different OS Here is the non-barebones example: #+BEGIN_SRC sh :tangle CMakeLists.txt cmake_minimum_required(VERSION 2.8) project(thesis NONE) include(/usr/share/cmake-2.8/Modules/UseLATEX.cmake) # Set R executable set(R_COMPILE "/usr/bin/Rscript") # Set the location of data files ##set(DATA_DIR data) # Set the location of the directory for image files set(IMAGE_DIR graphicsauto) # Get a list of R files file(GLOB_RECURSE R_FILES "R/*.R") file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/R DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_DIR}) foreach(file ${R_FILES}) message("proceessing ${file}") get_filename_component(basename "${file}" NAME_WE) # Command to run R if(R_COMPILE) message("Adding ........... ${CMAKE_CURRENT_BINARY_DIR}/R/${basename}.R") add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_DIR}/${basename}.eps DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/R/${basename}.R # ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_DIR}/${DATA_DIR} COMMAND ${R_COMPILE} ARGS ${CMAKE_CURRENT_BINARY_DIR}/R/${basename}.R ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_DIR}/${basename}.eps ) message("Running ${R_COMPILE} ${CMAKE_CURRENT_BINARY_DIR}/R/${basename}.R ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_DIR}/${basename}.eps") endif(R_COMPILE) # Make a list of all R files (for ADD_LATEX_DOCUMENT depend) set(ALL_R_FILES ${ALL_R_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_DIR}/${basename}.eps ) endforeach(file) # ------- export mainThesis.org ----------------------- latex_get_output_path(OUTPUT_DIR) file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/mainThesis.org DESTINATION ${OUTPUT_DIR}/ ) file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/thesis.el DESTINATION ${OUTPUT_DIR}/ ) add_custom_target( orgfile ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mainThesis.org ) add_custom_target( elfile ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/thesis.el ) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mainThesis.tex COMMAND emacs -Q --batch --eval \"(progn (add-to-list 'load-path (expand-file-name \\"~/.emacs.d/plugins/org-mode/lisp/\\")) (add-to-list 'load-path (expand-file-name \\"~/.emacs.d/plugins/org-mode/contrib/lisp/\\" t)) (require 'org) (require 'org-export) (require 'org-exp) (require 'org-inlinetask) (require 'ob-plantuml) (setq org-plantuml-jar-path \\"/home/myles/Downloads/plantuml.jar\\") (org-babel-do-load-languages 'org-babel-load-languages '((emacs-lisp . t) (sh . t) (plantuml . t))) (setq org-confirm-babel-evaluate nil) (setq org-export-with-todo-keywords nil) (load-library \\"/home/myles/lib/lisp/my-export.el\\") (add-to-list 'org-export-before-processing-hook 'my-export-delete-headlines-tagged-noheading) (load-file \\"thesis.el\\") (find-file \\"${CMAKE_CURRENT_BINARY_DIR}/mainThesis.org\\") (org-e-latex-export-to-latex))\" DEPENDS orgfile elfile COMMENT "Exporting orgmode file to LaTeX using emacs") add_custom_target( mainfile ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mainThesis.tex ) add_latex_document(master.tex BIBFILES texlib/mybiblatex.bib INPUTS tex/title.tex tex/FEM_ch.tex tex/multiphase_flow.tex tex/sharedMemory_sec.tex tex/programming_ch.tex tex/bibliography.tex texlib/mystyle.sty tex/linked_nodes_test.tex IMAGE_DIRS ${IMAGE_DIR} ../graphics/thirdParty ../graphics/VE DEPENDS ${ALL_R_FILES} DEFAULT_PDF USE_NOMENCL) #+END_SRC Myles