Skip to content

Commit

Permalink
Merge pull request #1363 from henryso/fix-1362
Browse files Browse the repository at this point in the history
Changed from os.popen to os.execute due to TL2017 strangeness.
  • Loading branch information
rpspringuel authored May 24, 2017
2 parents 3c5fe96 + e48dccf commit cb4bc2e
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 23 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file.
As of v3.0.0 this project adheres to [Semantic Versioning](http://semver.org/). It follows [some conventions](http://keepachangelog.com/).

## [Unreleased][unreleased]

- Worked around an issue discovered during the TeX Live 2017 pre-test. See [#1362](https://github.com/gregorio-project/gregorio/issues/1362).

## [5.0.1] - 2017-04-16
- Fixed a bug in the TeXLive compatibility code for Windows users. Thanks to Akira Kakuto for the catch.
Expand Down
69 changes: 47 additions & 22 deletions tex/gregoriotex.lua
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ local new_score_last_syllables = nil
local state_hashes = nil
local new_state_hashes = nil
local auxname = nil
local tmpname = nil
local test_snippet_filename = nil
local snippet_filename = nil
local snippet_logname = nil

Expand Down Expand Up @@ -120,33 +122,53 @@ local translation_mark = 1
local abovelinestext_mark = 2
log("marker whatsit id is %d", marker_whatsit_id)

local function get_prog_output(cmd, fmt)
cmd = string.format(cmd, tmpname)
local rc = os.execute(cmd)
local content = nil
if rc == 0 then
local f = io.open(tmpname, 'r');
if f then
content = f:read(fmt)
f:close()
end
end
os.remove(tmpname)
return content
end

local function gregorio_exe()
if real_gregorio_exe == nil then
local tmp_gabcfile = io.open(test_snippet_filename, 'w')
tmp_gabcfile:write("name:test;\n%%\n(c4)(g)\n")
tmp_gabcfile:close()

local exe_version

-- first look for one with the exact version
real_gregorio_exe = 'gregorio-5_0_1' -- FILENAME_VERSION
exe_version = io.popen(real_gregorio_exe..' --version', 'r')
if exe_version then
exe_version = exe_version:read("*line")
end
local cmd = string.format("%s -o %%s %s", real_gregorio_exe,
test_snippet_filename)
exe_version = get_prog_output(cmd, '*line')
if not exe_version then
-- look for suffix-less executable
real_gregorio_exe = 'gregorio'
exe_version = io.popen(real_gregorio_exe..' --version', 'r')
exe_version = exe_version:read("*line")
if not exe_version or string.match(exe_version,"%d+%.%d+%.")
~= string.match(internalversion,"%d+%.%d+%.") then
real_gregorio_exe = nil
err("Unable to find gregorio executable.\n"..
"shell-escape mode may not be activated. Try\n\n"..
"%s --shell-escape %s.tex\n\n"..
"See the documentation of Gregorio or your TeX\n"..
"distribution to automatize it.",
tex.formatname, tex.jobname)
end
cmd = string.format("%s -o %%s %s", real_gregorio_exe,
test_snippet_filename)
exe_version = get_prog_output(cmd, '*line')
end
if not exe_version or string.match(exe_version,"%d+%.%d+%.")
~= string.match(internalversion,"%d+%.%d+%.") then
real_gregorio_exe = nil
err("Unable to find gregorio executable.\n"..
"shell-escape mode may not be activated. Try\n\n"..
"%s --shell-escape %s.tex\n\n"..
"See the documentation of Gregorio or your TeX\n"..
"distribution to automatize it.",
tex.formatname, tex.jobname)
end

os.remove(test_snippet_filename)
log("will use %s", real_gregorio_exe)
end

Expand Down Expand Up @@ -334,10 +356,14 @@ local function init(arg, enable_height_computation)
end
if outputdir and lfs.isdir(outputdir) then
auxname = outputdir..'/'..tex.jobname..'.gaux'
tmpname = outputdir..'/'..tex.jobname..'.gtmp'
test_snippet_filename = outputdir..'/'..tex.jobname..'.test.gsnippet'
snippet_filename = outputdir..'/'..tex.jobname..'.gsnippet'
snippet_logname = outputdir..'/'..tex.jobname..'.gsniplog'
else
auxname = tex.jobname..'.gaux'
tmpname = tex.jobname..'.gtmp'
test_snippet_filename = tex.jobname..'.test.gsnippet'
snippet_filename = tex.jobname..'.gsnippet'
snippet_logname = tex.jobname..'.gsniplog'
end
Expand Down Expand Up @@ -904,18 +930,17 @@ local function direct_gabc(gabc, header, allow_deprecated)
gabc = gabc:match('^()%s*$') and '' or gabc:match('^%s*(.*%S)')
f:write('name:direct-gabc;\n'..(header or '')..'\n%%\n'..gabc:gsub('\\par ', '\n'))
f:close()
local cmd = string.format('%s -W %s-S -l %s %s', gregorio_exe(), deprecated,
snippet_logname, snippet_filename)
local p = io.popen(cmd, 'r')
if p == nil then
local cmd = string.format('%s -W %s-o %%s -l %s %s', gregorio_exe(),
deprecated, snippet_logname, snippet_filename)
local content = get_prog_output(cmd, '*a')
if content == nil then
err("\nSomething went wrong when executing\n %s\n"
.."shell-escape mode may not be activated. Try\n\n"
.."%s --shell-escape %s.tex\n\n"
.."See the documentation of Gregorio or your TeX\n"
.."distribution to automatize it.", cmd, tex.formatname, tex.jobname)
else
tex.print(p:read("*a"):explode('\n'))
p:close()
tex.print(content:explode('\n'))
end
local glog = io.open(snippet_logname, 'a+')
if glog == nil then
Expand Down

0 comments on commit cb4bc2e

Please sign in to comment.