1
0
mirror of https://github.com/natnat-mc/moonbuild synced 2026-05-28 18:49:40 +02:00

8 Commits

Author SHA1 Message Date
Nathan DECHER 0e23ccecfb Producing rockspec 1.1.2-1 2020-09-14 11:28:51 +02:00
Nathan DECHER ccce358155 min and max were broken, fixed them 2020-09-14 11:28:35 +02:00
Nathan DECHER a125eab22f Producing rockspec 1.1.1-1 2020-09-14 11:08:19 +02:00
Nathan DECHER 0c43e3a5b1 fixed broken cache 2020-09-14 11:08:04 +02:00
Nathan DECHER cf252749f4 Producing rockspec 1.1.0-1 2020-09-14 09:45:21 +02:00
Nathan DECHER 16673afc61 install actually installs with correct perms 2020-09-14 09:44:46 +02:00
Nathan DECHER a26a1500df added fs cache, closes #9 2020-09-14 09:44:30 +02:00
Nathan DECHER d2db470347 rockspec? 2020-09-13 21:40:35 +02:00
10 changed files with 420 additions and 95 deletions
+1
View File
@@ -23,6 +23,7 @@ public target 'install', from: OUT_AMALG, out: '/usr/local/bin/moonbuild', fn: =
dfd\write line, '\n' dfd\write line, '\n'
ifd\close! ifd\close!
dfd\close! dfd\close!
-chmod '+x', @outfile
#echo "Installed at:", @outfile #echo "Installed at:", @outfile
default target OUT_AMALG, from: {BINARY_LUA, OUT_LUA}, out: OUT_AMALG, fn: => default target OUT_AMALG, from: {BINARY_LUA, OUT_LUA}, out: OUT_AMALG, fn: =>
+58 -48
View File
@@ -1,43 +1,44 @@
#!/usr/bin/env moon #!/usr/bin/env moon
argparse=require 'argparse' argparse = require 'argparse'
require 'moonscript' require 'moonscript'
import loadfile from require 'moonscript.base' import loadfile from require 'moonscript.base'
import truncate_traceback, rewrite_traceback from require 'moonscript.errors' import truncate_traceback, rewrite_traceback from require 'moonscript.errors'
import trim from require 'moonscript.util' import trim from require 'moonscript.util'
util=require 'moonbuild.util' util = require 'moonbuild.util'
import freezecache, invalidatecache from require 'moonbuild.fsutil'
import exists, mtime, run, min, max, first, flatten, match, patsubst, sortedpairs from util import exists, mtime, run, min, max, first, flatten, match, patsubst, sortedpairs from util
import insert, concat from table import insert, concat from table
parser=argparse 'moonbuild' parser = argparse 'moonbuild'
parser\argument('targets', "Targets to run")\args '*' parser\argument('targets', "Targets to run")\args '*'
parser\flag '-a --noskip', "Always run targets" parser\flag '-a --noskip', "Always run targets"
parser\flag '-l --list', "List available targets" parser\flag '-l --list', "List available targets"
parser\flag '-d --deps', "List targets and their dependancies" parser\flag '-d --deps', "List targets and their dependancies"
args=parser\parse! args = parser\parse!
-- util functions -- util functions
loadwithscope= (file, scope) -> loadwithscope = (file, scope) ->
fn, err=loadfile file fn, err = loadfile file
error err or "failed to load code" unless fn error err or "failed to load code" unless fn
dumped, err=string.dump fn dumped, err = string.dump fn
error err or "failed to dump function" unless dumped error err or "failed to dump function" unless dumped
load dumped, file, 'b', scope load dumped, file, 'b', scope
pcall= (fn, ...) -> pcall = (fn, ...) ->
rewrite=(err) -> rewrite = (err) ->
trace=debug.traceback '', 2 trace = debug.traceback '', 2
trunc=truncate_traceback trim trace trunc = truncate_traceback trim trace
rewrite_traceback trunc, err (rewrite_traceback trunc, err) or trace
xpcall fn, rewrite, ... xpcall fn, rewrite, ...
-- command object -- command object
-- represents a command that can be called -- represents a command that can be called
class Command class Command
new: (@cmd, ...) => new: (@cmd, ...) =>
@args={...} @args = {...}
__unm: => @run error: true, print: true __unm: => @run error: true, print: true
__len: => @run error: true __len: => @run error: true
@@ -49,11 +50,11 @@ class Command
-- build object -- build object
-- represents a target -- represents a target
class BuildObject class BuildObject
all={} all = {}
skip={} skip = {}
@find: (name) => @find: (name) =>
target=all[name] target = all[name]
return target if target return target if target
for glob, tgt in pairs all for glob, tgt in pairs all
return tgt if match name, glob return tgt if match name, glob
@@ -63,16 +64,16 @@ class BuildObject
{target, {dep, @find dep for dep in *target.deps} for name, target in pairs all} {target, {dep, @find dep for dep in *target.deps} for name, target in pairs all}
@build: (name, upper) => @build: (name, upper) =>
target=(@find name) or error "No such target: #{name}" target = (@find name) or error "No such target: #{name}"
target\build name, upper target\build name, upper
__tostring: => __tostring: =>
"Target #{@name} (#{concat @deps, ', '})" "Target #{@name} (#{concat @deps, ', '})"
new: (@name, @outs={}, @ins={}, @deps={}, @fn= =>) => new: (@name, @outs={}, @ins={}, @deps={}, @fn= =>) =>
@skip=false @skip = false
error "Duplicate build name #{@name}" if all[@name] error "Duplicate build name #{@name}" if all[@name]
all[@name]=@ all[@name] = @
build: (name, upper={}) => build: (name, upper={}) =>
return if skip[name] return if skip[name]
@@ -84,54 +85,55 @@ class BuildObject
@@build dep, upper for dep in *@deps @@build dep, upper for dep in *@deps
return unless @shouldbuild name return unless @shouldbuild name
ins=@ins ins = @ins
outs=@outs outs = @outs
if @name!=name if @name!=name
ins=[patsubst name, @name, elem for elem in *@ins] ins = [patsubst name, @name, elem for elem in *@ins]
outs=[patsubst name, @name, elem for elem in *@outs] outs = [patsubst name, @name, elem for elem in *@outs]
print "Building #{@name} as #{name}" print "Building #{@name} as #{name}"
else else
print "Building #{name}" print "Building #{name}"
ok, err=pcall -> freezecache file for file in *outs
ok, err = pcall ->
@.fn @.fn
ins: ins ins: ins
outs: outs outs: outs
infile: ins[1] infile: ins[1]
outfile: outs[1] outfile: outs[1]
name: name name: name
invalidatecache file for file in *outs
error "Can't build #{@name}: lua error\n#{err}" unless ok error "Can't build #{@name}: lua error\n#{err}" unless ok
for f in *outs for f in *outs
error "Can't build #{@name}: output file #{f} not created" unless exists f error "Can't build #{@name}: output file #{f} not created" unless exists f
skip[name]=true skip[name] = true
shouldbuild: (name) => shouldbuild: (name) =>
return true if args.noskip return true if args.noskip
return true if #@ins==0 or #@outs==0 return true if #@ins==0 or #@outs==0
ins=if @name!=name ins = if @name!=name
[patsubst name, @name, elem for elem in *@ins] [patsubst name, @name, elem for elem in *@ins]
else else
@ins @ins
itimes=[mtime f for f in *ins] itimes = [mtime f for f in *ins]
for i=1, #@ins for i=1, #@ins
error "Can't build #{@name}: missing inputs" unless itimes[i] error "Can't build #{@name}: missing inputs" unless itimes[i]
outs=if @name!=name outs = if @name!=name
[patsubst name, @name, elem for elem in *@outs] [patsubst name, @name, elem for elem in *@outs]
else else
@outs @outs
otimes=[mtime f for f in *outs] otimes = [mtime f for f in *outs]
for i=1, #@outs for i=1, #@outs
return true if not otimes[i] return true if not otimes[i]
(max itimes)>=(min otimes) (max itimes)>(min otimes)
error "Need Lua >=5.2" if setfenv error "Need Lua >=5.2" if setfenv
targets={} local targets, defaulttarget
defaulttarget='all'
buildscope= buildscope =
default: (target) -> default: (target) ->
defaulttarget=target.name defaulttarget=target.name
target target
@@ -139,30 +141,41 @@ buildscope=
insert targets, target.name insert targets, target.name
target target
target: (name, params) -> target: (name, params) ->
tout=flatten params.out tout = flatten params.out
tin=flatten params.in tin = flatten params.in
tdeps=flatten params.deps tdeps = flatten params.deps
for f in *flatten params.from for f in *flatten params.from
insert tin, f insert tin, f
insert tdeps, f insert tdeps, f
BuildObject name, tout, tin, tdeps, params.fn BuildObject name, tout, tin, tdeps, params.fn
:Command :Command
buildscope[k]=fn for k, fn in pairs util buildscope[k] = fn for k, fn in pairs util
setmetatable buildscope, setmetatable buildscope,
__index: (k) => __index: (k) =>
global=rawget _G, k global = rawget _G, k
return global if global return global if global
(...) -> Command k, ... (...) -> Command k, ...
file=first {'Build.moon', 'Buildfile.moon', 'Build', 'Buildfile'}, exists loadtargets = ->
error "No Build.moon or Buildfile found" unless file targets = {}
buildfn=loadwithscope file, buildscope defaulttarget = 'all'
error "Failed to load build function" unless buildfn file = first {'Build.moon', 'Buildfile.moon', 'Build', 'Buildfile'}, exists
ok, err=pcall buildfn error "No Build.moon or Buildfile found" unless file
buildfn = loadwithscope file, buildscope
error "Failed to load build function" unless buildfn
buildfn!
buildtargets = ->
if #args.targets==0
BuildObject\build defaulttarget
for target in *args.targets
BuildObject\build target
ok, err = pcall loadtargets
unless ok unless ok
if err if err
io.stderr\write err, '\n' io.stderr\write "Error while loading build file: ", err, '\n'
else else
io.stderr\write "Unknown error\n" io.stderr\write "Unknown error\n"
os.exit 1 os.exit 1
@@ -194,7 +207,4 @@ if args.deps
io.write "\n" io.write "\n"
os.exit 0 os.exit 0
if #args.targets==0 buildtargets!
BuildObject\build defaulttarget
for target in *args.targets
BuildObject\build target
+192 -36
View File
@@ -1,11 +1,78 @@
do do
do
local _ENV = _ENV
package.preload[ "moonbuild.fscache" ] = function( ... ) local arg = _G.arg;
local attributes, dir
do
local _obj_0 = require('lfs')
attributes, dir = _obj_0.attributes, _obj_0.dir
end
local unpack = unpack or table.unpack
local FROZEN
FROZEN = function() end
local makecached
makecached = function(fn)
local cache = { }
local invalidate
invalidate = function(val)
cache[val] = nil
end
local freeze
freeze = function(val)
cache[val] = FROZEN
end
local clear
clear = function()
cache = { }
end
local get
get = function(val)
local cached = cache[val]
if cached ~= FROZEN and cached ~= nil then
return unpack(cached)
end
local ret = {
fn(val)
}
if cached ~= FROZEN then
cache[val] = ret
end
return unpack(ret)
end
return setmetatable({
get = get,
invalidate = invalidate,
freeze = freeze,
clear = clear
}, {
__call = function(self, val)
return get(val)
end
})
end
return {
attributes = makecached(attributes),
dir = makecached(function(file)
local _accum_0 = { }
local _len_0 = 1
for k in dir(file) do
_accum_0[_len_0] = k
_len_0 = _len_0 + 1
end
return _accum_0
end)
}
end
end
do do
local _ENV = _ENV local _ENV = _ENV
package.preload[ "moonbuild.fsutil" ] = function( ... ) local arg = _G.arg; package.preload[ "moonbuild.fsutil" ] = function( ... ) local arg = _G.arg;
local dir, attributes local dir, attributes
do do
local _obj_0 = require('lfs') local _obj_0 = require('moonbuild.fscache')
dir, attributes = _obj_0.dir, _obj_0.attributes dir, attributes = _obj_0.dir, _obj_0.attributes
end end
local gmatch, match, gsub, sub local gmatch, match, gsub, sub
@@ -13,16 +80,55 @@ do
local _obj_0 = string local _obj_0 = string
gmatch, match, gsub, sub = _obj_0.gmatch, _obj_0.match, _obj_0.gsub, _obj_0.sub gmatch, match, gsub, sub = _obj_0.gmatch, _obj_0.match, _obj_0.gsub, _obj_0.sub
end end
local insert, concat local insert, remove, concat
do do
local _obj_0 = table local _obj_0 = table
insert, concat = _obj_0.insert, _obj_0.concat insert, remove, concat = _obj_0.insert, _obj_0.remove, _obj_0.concat
end
local normalizepath
normalizepath = function(file)
local parts
do
local _accum_0 = { }
local _len_0 = 1
for part in gmatch(file, '[^/]+') do
_accum_0[_len_0] = part
_len_0 = _len_0 + 1
end
parts = _accum_0
end
local absolute = (sub(file, 1, 1)) == '/'
for i = 1, #parts do
local _continue_0 = false
repeat
if parts[i] == '.' then
remove(parts, i)
i = i - 1
_continue_0 = true
break
end
if parts[i] == '..' and i ~= 1 then
remove(parts, i)
remove(parts, i - 1)
i = i - 2
_continue_0 = true
break
end
_continue_0 = true
until true
if not _continue_0 then
break
end
end
return (absolute and '/' or '') .. concat(parts, '/')
end end
local ls local ls
ls = function(d) ls = function(d)
local _accum_0 = { } local _accum_0 = { }
local _len_0 = 1 local _len_0 = 1
for f in dir(d) do local _list_0 = dir(normalizepath(d))
for _index_0 = 1, #_list_0 do
local f = _list_0[_index_0]
if f ~= '.' and f ~= '..' then if f ~= '.' and f ~= '..' then
_accum_0[_len_0] = f _accum_0[_len_0] = f
_len_0 = _len_0 + 1 _len_0 = _len_0 + 1
@@ -37,7 +143,9 @@ lswithpath = function(d)
end end
local _accum_0 = { } local _accum_0 = { }
local _len_0 = 1 local _len_0 = 1
for f in dir(d) do local _list_0 = dir(normalizepath(d))
for _index_0 = 1, #_list_0 do
local f = _list_0[_index_0]
if f ~= '.' and f ~= '..' then if f ~= '.' and f ~= '..' then
_accum_0[_len_0] = d .. '/' .. f _accum_0[_len_0] = d .. '/' .. f
_len_0 = _len_0 + 1 _len_0 = _len_0 + 1
@@ -47,16 +155,16 @@ lswithpath = function(d)
end end
local exists local exists
exists = function(f) exists = function(f)
return (attributes(f)) ~= nil return (attributes(normalizepath(f))) ~= nil
end end
local isdir local isdir
isdir = function(f) isdir = function(f)
local a = attributes(f) local a = attributes(normalizepath(f))
return a and a.mode == 'directory' or false return a and a.mode == 'directory' or false
end end
local mtime local mtime
mtime = function(f) mtime = function(f)
local a = attributes(f) local a = attributes(normalizepath(f))
return a and a.modification return a and a.modification
end end
local matchglob local matchglob
@@ -152,11 +260,37 @@ wildcard = function(glob)
return { } return { }
end end
end end
local parentdir
parentdir = function(file)
return normalizepath(file .. '/..')
end
local freezecache
freezecache = function(file)
dir.freeze(file)
dir.freeze(parentdir(file))
return attributes.invalidate(file)
end
local invalidatecache
invalidatecache = function(file)
dir.invalidate(file)
dir.invalidate(parentdir(file))
return attributes.invalidate(file)
end
local clearcache
clearcache = function()
dir.clear()
return attributes.clear()
end
return { return {
wildcard = wildcard, wildcard = wildcard,
exists = exists, exists = exists,
isdir = isdir, isdir = isdir,
mtime = mtime mtime = mtime,
normalizepath = normalizepath,
parentdir = parentdir,
freezecache = freezecache,
invalidatecache = invalidatecache,
clearcache = clearcache
} }
end end
@@ -260,7 +394,7 @@ min = function(table, cmp)
local val = table[1] local val = table[1]
for i = 2, #table do for i = 2, #table do
local elem = table[i] local elem = table[i]
if cmp(val, elem) then if cmp(elem, val) then
val = elem val = elem
end end
end end
@@ -276,7 +410,7 @@ max = function(table, cmp)
local val = table[1] local val = table[1]
for i = 2, #table do for i = 2, #table do
local elem = table[i] local elem = table[i]
if not cmp(val, elem) then if not cmp(elem, val) then
val = elem val = elem
end end
end end
@@ -570,6 +704,11 @@ end
local trim local trim
trim = require('moonscript.util').trim trim = require('moonscript.util').trim
local util = require('moonbuild.util') local util = require('moonbuild.util')
local freezecache, invalidatecache
do
local _obj_0 = require('moonbuild.fsutil')
freezecache, invalidatecache = _obj_0.freezecache, _obj_0.invalidatecache
end
local exists, mtime, run, min, max, first, flatten, match, patsubst, sortedpairs local exists, mtime, run, min, max, first, flatten, match, patsubst, sortedpairs
exists, mtime, run, min, max, first, flatten, match, patsubst, sortedpairs = util.exists, util.mtime, util.run, util.min, util.max, util.first, util.flatten, util.match, util.patsubst, util.sortedpairs exists, mtime, run, min, max, first, flatten, match, patsubst, sortedpairs = util.exists, util.mtime, util.run, util.min, util.max, util.first, util.flatten, util.match, util.patsubst, util.sortedpairs
local insert, concat local insert, concat
@@ -602,7 +741,7 @@ pcall = function(fn, ...)
rewrite = function(err) rewrite = function(err)
local trace = debug.traceback('', 2) local trace = debug.traceback('', 2)
local trunc = truncate_traceback(trim(trace)) local trunc = truncate_traceback(trim(trace))
return rewrite_traceback(trunc, err) return (rewrite_traceback(trunc, err)) or trace
end end
return xpcall(fn, rewrite, ...) return xpcall(fn, rewrite, ...)
end end
@@ -721,6 +860,10 @@ do
else else
print("Building " .. tostring(name)) print("Building " .. tostring(name))
end end
for _index_0 = 1, #outs do
local file = outs[_index_0]
freezecache(file)
end
local ok, err = pcall(function() local ok, err = pcall(function()
return self.fn({ return self.fn({
ins = ins, ins = ins,
@@ -730,6 +873,10 @@ do
name = name name = name
}) })
end) end)
for _index_0 = 1, #outs do
local file = outs[_index_0]
invalidatecache(file)
end
if not (ok) then if not (ok) then
error("Can't build " .. tostring(self.name) .. ": lua error\n" .. tostring(err)) error("Can't build " .. tostring(self.name) .. ": lua error\n" .. tostring(err))
end end
@@ -812,7 +959,7 @@ do
return true return true
end end
end end
return (max(itimes)) >= (min(otimes)) return (max(itimes)) > (min(otimes))
end end
} }
_base_0.__index = _base_0 _base_0.__index = _base_0
@@ -887,8 +1034,7 @@ end
if setfenv then if setfenv then
error("Need Lua >=5.2") error("Need Lua >=5.2")
end end
local targets = { } local targets, defaulttarget
local defaulttarget = 'all'
local buildscope = { local buildscope = {
default = function(target) default = function(target)
defaulttarget = target.name defaulttarget = target.name
@@ -926,23 +1072,40 @@ setmetatable(buildscope, {
end end
end end
}) })
local file = first({ local loadtargets
'Build.moon', loadtargets = function()
'Buildfile.moon', targets = { }
'Build', defaulttarget = 'all'
'Buildfile' local file = first({
}, exists) 'Build.moon',
if not (file) then 'Buildfile.moon',
error("No Build.moon or Buildfile found") 'Build',
'Buildfile'
}, exists)
if not (file) then
error("No Build.moon or Buildfile found")
end
local buildfn = loadwithscope(file, buildscope)
if not (buildfn) then
error("Failed to load build function")
end
return buildfn()
end end
local buildfn = loadwithscope(file, buildscope) local buildtargets
if not (buildfn) then buildtargets = function()
error("Failed to load build function") if #args.targets == 0 then
BuildObject:build(defaulttarget)
end
local _list_0 = args.targets
for _index_0 = 1, #_list_0 do
local target = _list_0[_index_0]
BuildObject:build(target)
end
end end
local ok, err = pcall(buildfn) local ok, err = pcall(loadtargets)
if not (ok) then if not (ok) then
if err then if err then
io.stderr:write(err, '\n') io.stderr:write("Error while loading build file: ", err, '\n')
else else
io.stderr:write("Unknown error\n") io.stderr:write("Unknown error\n")
end end
@@ -983,11 +1146,4 @@ if args.deps then
end end
os.exit(0) os.exit(0)
end end
if #args.targets == 0 then return buildtargets()
BuildObject:build(defaulttarget)
end
local _list_0 = args.targets
for _index_0 = 1, #_list_0 do
local target = _list_0[_index_0]
BuildObject:build(target)
end
+33
View File
@@ -0,0 +1,33 @@
import attributes, dir from require 'lfs'
unpack or= table.unpack
FROZEN = ->
makecached = (fn) ->
cache = {}
invalidate = (val) ->
cache[val] = nil
freeze = (val) ->
cache[val] = FROZEN
clear = ->
cache = {}
get = (val) ->
cached = cache[val]
if cached!=FROZEN and cached!=nil
return unpack cached
ret = {fn val}
if cached!=FROZEN
cache[val] = ret
unpack ret
setmetatable { :get, :invalidate, :freeze, :clear },
__call: (val) => get val
{
attributes: makecached attributes
dir: makecached (file) -> [k for k in dir file]
}
+42 -9
View File
@@ -1,25 +1,39 @@
import dir, attributes from require 'lfs' import dir, attributes from require 'moonbuild.fscache'
import gmatch, match, gsub, sub from string import gmatch, match, gsub, sub from string
import insert, concat from table import insert, remove, concat from table
normalizepath = (file) ->
parts = [part for part in gmatch file, '[^/]+']
absolute = (sub file, 1, 1)=='/'
for i=1, #parts
if parts[i]=='.'
remove parts, i
i -= 1
continue
if parts[i]=='..' and i!=1
remove parts, i
remove parts, i-1
i -= 2
continue
(absolute and '/' or '') .. concat parts, '/'
ls = (d) -> ls = (d) ->
[f for f in dir d when f!='.' and f!='..'] [f for f in *dir normalizepath d when f!='.' and f!='..']
lswithpath = (d) -> lswithpath = (d) ->
if d=='' return ls '.' if d==''
return ls '.' [d..'/'..f for f in *dir normalizepath d when f!='.' and f!='..']
[d..'/'..f for f in dir d when f!='.' and f!='..']
exists = (f) -> exists = (f) ->
(attributes f) != nil (attributes normalizepath f) != nil
isdir = (f) -> isdir = (f) ->
a = attributes f a = attributes normalizepath f
a and a.mode == 'directory' or false a and a.mode == 'directory' or false
mtime = (f) -> mtime = (f) ->
a = attributes f a = attributes normalizepath f
a and a.modification a and a.modification
matchglob = (str, glob) -> matchglob = (str, glob) ->
@@ -81,8 +95,27 @@ wildcard = (glob) ->
else else
return {} return {}
parentdir = (file) ->
normalizepath file..'/..'
freezecache = (file) ->
dir.freeze file
dir.freeze parentdir file
attributes.invalidate file
invalidatecache = (file) ->
dir.invalidate file
dir.invalidate parentdir file
attributes.invalidate file
clearcache = ->
dir.clear!
attributes.clear!
{ {
:wildcard :wildcard
:exists, :isdir :exists, :isdir
:mtime :mtime
:normalizepath, :parentdir
:freezecache, :invalidatecache, :clearcache
} }
+2 -2
View File
@@ -12,7 +12,7 @@ min = (table, cmp=(a, b) -> a<b) ->
val = table[1] val = table[1]
for i=2, #table for i=2, #table
elem = table[i] elem = table[i]
if cmp val, elem if cmp elem, val
val = elem val = elem
val val
@@ -20,7 +20,7 @@ max = (table, cmp=(a, b) -> a<b) ->
val = table[1] val = table[1]
for i=2, #table for i=2, #table
elem = table[i] elem = table[i]
if not cmp val, elem if not cmp elem, val
val = elem val = elem
val val
+23
View File
@@ -0,0 +1,23 @@
build = {
install = {
bin = {
moonbuild = "moonbuild.lua"
}
},
type = "builtin"
}
dependencies = {
"lua >= 5.3",
"luafilesystem >= 1.7.0"
}
description = {
detailed = "moonbuild is a small build system that simplifies your build definitions by allowing you to use declarative as well as imperative rules. It represents the build as a DAG with explicit ordering, and doesn't give you any default confusing rules (unlike make)\n",
summary = "Small build system in between make and a build.sh"
}
package = "moonbuild"
rockspec_format = "3.0"
source = {
tag = "v1.0.3",
url = "git://github.com/natnat-mc/moonbuild"
}
version = "1.0.3-3"
+23
View File
@@ -0,0 +1,23 @@
build = {
install = {
bin = {
moonbuild = "moonbuild.lua"
}
},
type = "builtin"
}
dependencies = {
"lua >= 5.3",
"luafilesystem >= 1.7.0"
}
description = {
detailed = "moonbuild is a small build system that simplifies your build definitions by allowing you to use declarative as well as imperative rules. It represents the build as a DAG with explicit ordering, and doesn't give you any default confusing rules (unlike make)\n",
summary = "Small build system in between make and a build.sh"
}
package = "moonbuild"
rockspec_format = "3.0"
source = {
tag = "v1.1.0",
url = "git://github.com/natnat-mc/moonbuild"
}
version = "1.1.0-1"
+23
View File
@@ -0,0 +1,23 @@
build = {
install = {
bin = {
moonbuild = "moonbuild.lua"
}
},
type = "builtin"
}
dependencies = {
"lua >= 5.3",
"luafilesystem >= 1.7.0"
}
description = {
detailed = "moonbuild is a small build system that simplifies your build definitions by allowing you to use declarative as well as imperative rules. It represents the build as a DAG with explicit ordering, and doesn't give you any default confusing rules (unlike make)\n",
summary = "Small build system in between make and a build.sh"
}
package = "moonbuild"
rockspec_format = "3.0"
source = {
tag = "v1.1.1",
url = "git://github.com/natnat-mc/moonbuild"
}
version = "1.1.1-1"
+23
View File
@@ -0,0 +1,23 @@
build = {
install = {
bin = {
moonbuild = "moonbuild.lua"
}
},
type = "builtin"
}
dependencies = {
"lua >= 5.3",
"luafilesystem >= 1.7.0"
}
description = {
detailed = "moonbuild is a small build system that simplifies your build definitions by allowing you to use declarative as well as imperative rules. It represents the build as a DAG with explicit ordering, and doesn't give you any default confusing rules (unlike make)\n",
summary = "Small build system in between make and a build.sh"
}
package = "moonbuild"
rockspec_format = "3.0"
source = {
tag = "v1.1.2",
url = "git://github.com/natnat-mc/moonbuild"
}
version = "1.1.2-1"