Changelog¶
v1.1.1¶
- Bug fixes
- Logging in Craftr RTS fails with Runtime Error (#104)
- Behaviour changes
- add
__no_default
target when there are no default targets, printing “no default target” - removed default
clean
target, use-c
or-cc
command-line option - catching
craftr.ModuleError
no longer prints the error text (#118)
- add
- API related changes
- add
frame
andmodule
argument tocraftr.log()
- add
Target.as_explicit()
- add
craftr.ext.platform.asm
compiler proxy craftr.memoize_tool()
will be deprecated in the future and is now a synonym forfunctools.lru_cache()
craftr.shell.run()
now manually checks if the program exists and raises aFileNotFoundError
exception if it does not (only ifshell=True
)- add
craftr.utils.override_environ()
- add
craftr.ext.rules.alias()
function - add
craftr.TargetBuilder.mkname()
method - add
craftr.TargetBuilder.setdefault()
method - add
craftr.FrameworkJoin.defaults
member - add
craftr.FrameworkJoin.iter_frameworks()
method - moved
craftr.ext.compiler.BaseCompiler
tocraftr.ext.compiler.base.BaseCompiler
, backwards compatible import exists - removed
BaseCompiler.__getitem__()
and~.__setitem__()
- add
BaseCompiler.register_hook()
craftr.TargetBuilder.add_framework()
was updated- replace
craftr.utils.slotobject()
withrecordclass()
(alias introduced for backwards compatibility) craftr.utils
is now a package, some name changes but backwards compatibility has been kept by introducing aliases- fix
Proxy
__name__
attribute always returningNone
instead of the underlying object’s member value - fix
craftr.path.buildlocal()
now usingproject_name
instead of__name__
cc
,cxx
,ld
etc. are no longer proxies but real objects
- add
- C/C++ related changes
- C/C++ compiler implementations now take
debug
option into account if no explicit value is passed to the generator function - removed
'clang'
as a compiler name - added support for
***_compile_remove_flags
and***_link_remove_flags
options where***
can bemsvc
,llvm
andgcc
- add support for
msvc_runtime_library
andforce_include
options - add support for
link_target
output variable
- C/C++ compiler implementations now take
- Cython related changes
- add Cython tutorial to docs
- Cython compiler program can now be overwritten with
CYTHONC
- add support for
embed
parameter tocompile()
- add
PythonInfo
class - add
compile_project()
method
craftr.ext.cmake
- renamed
render_config()
toconfigure_file()
to match the CMake naming and update parameter names
- renamed
v1.1.0¶
- NEW: Tasks (replaces
craftr.ext.rules.PythonTool
)- created with the new
task()
function/decorator - can be specified on the command-line
- exported to the Ninja manifest
- run through Craftr RTS
- created with the new
- huge file naming scheme changes (issue #95)
- rename
Craftfile
toCraftfile.py
- rename
.craftrc
tocraftrc.py
- rename
<some_module>.craftr
tocraftr.ext.<some_module>.py
- rename
- Standard Library
- remove
craftr.ext.options
module, usecraftr.options
instead (issue #97) - add support for
msvc_runtime_library_option
which can have the value'dynamic'
or'static'
- remove
craftr.ext.rules.PythonTool
and rewrite~.render_template()
- update
compiler.cython
documentation - fix missing
foreach=True
inCythonCompiler.compile()
- add
craftr.ext.python
module - fix
-shared
argument to LLVM/GCC.link()
rule (fix #109) - MSVC C++ compiler is now read from
CXX
variable instead ofCC
- Linux linker is now read from
CC
variable instead ofCCLD
- support for
CFLAGS
,CPPFLAGS
,ASMFLAGS
,LDFLAGS
andLDLIBS
(see issue #111) - Add
craftr.ext.cmake
module (issue #113)
- remove
- General
setup.py
now usesentry_points
to install console scripts (issue #94)
- Behaviour changes
- automatically import targets specified on the command-line (issue #96)
- catch possible PermissionError in
CraftrImporter._rebuild_cache()
(sha 16a6e307) - module and session context is now available when a task is executed (issue #99)
- fix
TargetBuilder.write_command_file()
, now correctly returns the filename even if no file is actually created - sophisticated target check on build-only invokation if RTS is required (and thus the execution step can not be skipped) (issue #98)
- new Craftr data caching method using JSON in the Ninja build manifest (also fixes #100) (issue #101)
- Craftr RTS now works with task-targets, removed
MSG_ARGUMENT
and_RequestHandler.arglist
- functions wrapped with the
task()
decorator can now be specified on the command-line just like normal targets (due to the fact that they are real targets also exported to the Ninja manifest) - if all targets specified on the command-line are tasks and do not depend on Ninja-buildable targets, the task(s) will be executed without Ninja (issue #103)
- if
-e
is not specified but the manifest does not exist, export will be forced unless the specified targets do not require it (ie. are plain tasks) (see #103) - calling
Session.update()
after alteringSession.path
is no longer necessary (issue #108)
- Command-line changes
- inverted behaviour of
-e
!! Now causes skip of the export and eventually execution step (if possible), short version of--skip-export
- inverted behaviour of
-b
!! Now causes skip of the build phase, short version for--skip-build
- removed
-f
and-F
command-line options completely (instead, tasks that do not depend on normal targets can be executed without Ninja, see #103) - deprecated
-b
flag, the build step is now always executed by default - add
-n
flag which is the inverse of the old-b
flag, skip the build phase if specified - updated command help
- passing
-v
will automatically add-v
to the Ninja invokation - add
--buildtype
option for which you can choose to pass the valuestandard
(default) orexternal
- inverted behaviour of
- API Changes
- add
task()
decorator function - add
TaskError
exception class TargetBuilder()
now accepts None for its inputs parameterTargetBuilder()
now has default values for the frameworks and kwargs parameters- removed
options.get_option()
options.get()
now accepts a default parameter, updated its docstrings- passing
NotImplemented
for default tooptions.get()
now raises aKeyError
if the option does not exist - add
option.get_bool()
- removed
Session.update()
(see issue #108) - removed
Session.rts_funcs
- add
Session.files_to_targets
- add
Session.finalized
- add
Session.finalize()
- add
Session.find_target_for_file()
- add
Session.buildtype
- add
Target.rts_func
- add
Target.requires
- add
Target.graph
- add
Target.finalize
- add
Target.finalized
property - add
Target.get_rts_mode()
- add
Target.execute_task()
- Targets can now also be tasks which will be executed through Craftr
RTS by passing a callable to the constructor for the command argument
(you should prefer the
task()
function though) - add
craftr.path.buildlocal()
function - add
craftr.shell.format()
and~.join()
functions craftr.shell.run()
now splits strings into a command list if the shell argument is False
- add
- Logging
- removed the
craftr: [INFO ]:
prefix stuff - logging functions only display the source module when at least
-v
is specified - updated output coloring and debug message strings
- stracktrace for log entries now skips builtin modules
- removed the
v1.0.0¶
- initial release version