PerlBuildSystem
view release on metacpan or search on metacpan
distributed pbs with zeroconf
Runshellcmd should have a 'no output' option
generate builders only when they are needed
multiple dependent => deps
=> this can be done very easilly with a depender
add the possiblity to add a dependency but know nothing about the dependency
=> late depend
gtk project manager (look at maketool too)
eclipse integration
generate/#read vcproj files
output everything and have a filter (settable at run time) display the output)
Support for remote build scheduling via XML-RPC, DBus, avahi.
config system
./configure support
some web based system to collect all the the latest builds
create node but do not depend them
=> sometimes we want to define a dependency to a node without
knowing anything about it. We just know that something
in the system is going to handle it sometime. As PBS works
today, this is not possible. All nodes are depended and nodes
without matching rules are marked as depended anyway
add possibility to register plugins (specially EvaluateShellCommand) per node
-e $file (in Check) could be replaced by a md5 check that would most likely be in the cache
Change watch server protocol to HTTP
=> at least the stat page
#windows watch server
how to find Pbsfile and emil's bug report
#--display_parent ovverride
=> overrides ':override_parent_config'
make all switches act on a specific PBS load package only
=> lower output spam.
=> filter the out put in an external viewer ?
Remove single node checker from PBS::Check
=> not used anymore
#remove any remains of NO_DIGEST
#Add wizard for new prf format
#warning about using absolute Pbsfile path should use same color as relocation warning
#both warning should tell where the warning comes from
#Give feed back while checking
#AddGetConfigList that dereferences list config variables
warp 1.6
# source files don't trigger
add subpbsfile triggering (trigger that have that as original package??)
add shadow nodes
add test
what happends when a source node becomes a generated nodes
what happends when a source node is removed but is in the cache
The load package changes from run to run and can't be used as unique index
#add some verbosity switch
show md5 diff or not
show the message for the node or not
show a dump of the pbsfil dependencoes or not
Ignoring Builder from rule: #10 'eca_subdirs'.
=> give more details in dpb mode
No builder failed message should include node name
done but not in because of failing tests
error at check time => die, since we don't want to generate a warpfile
=> return an error instead and see that no warp file should be generated
ispell all documents
^Add creator for C files
extra arguments to depender should be passed as a ref to @
Test for -gtg only if graphviz is installed
Information.pm could reuse some function defined in NodeBuilder.pm
check if $C_dependencies_cache and $Creator_dependencies_cache shouldn't be flushed
Release
Batch::PBS
#Data::Dumper
#Devel::Depend::Cpp/Cl
#PBS
The parsing and handling of the type of the rule should be left to perl like we do with AddRule.
=> SR[], => PR[] ...
=> we need overloading a la C++
ShellCommandGenerator in Builders.pm re-evaluates PBS_REPOSITORIES for every node
but BuilderFromStringOrArray doesn't! in any case the way to re-evaluate
PBS_REPOSITORIES modifies the config for all the nodes sharing the
pbs_config.
#what about the special %PBS_REPOSITORIES handling in Config.pm
handle -I vs /I in shell commands with %FILE_TO_BUILD
language simplified should also handle a plugin to make it possible to add, say, $build_directory, ...
=> euuu! $build_directory in the dependency definition !!!!!???
We need a unified way to present output, whatever mode we are running in
ex modes: progress_bar, -j, -ubs, -so, ...
node header missing when node build fails (when not in -j mode)
C_Depender and warp 1.5 dewarpifier could be the same code
_warp 1.5 doesn't rebuild the ancestor tree
=> OK, warp is not made for searching, only be fast
^ C dependencies cache doesn't rebuild ancestors properly
We should display a warning when intermediate file is excluded from digest
=> intermediate files should _aways_ have a digest
=> or is it nodes with builders that should always have a digest
what about having a creator?
At check or just after, a 30 MB memory usage boost appears???
document what warp 1.5 does, specially regeneration
_ We rebuild too much! when C_depender changes, we should rebuild only if the dependencies change md5.
when compiling error occurs open build buffer in editor
=> What about listing the file names somewhere where a post pbs or a script could take over?
=> this assumes the build buffers are kept
^^^^ AddEnvironmentDependencies does not work with warp as do the other AddDependency functions (Add Switch)
-p pbsfile displays warning about relocating pbsfile ????
=> couldn't reproduce at home!
Is LOCAL_NODES really needed when the node does have a a different path
META_NODE 1
one node is multiple files in the filesystem
Create a term and acronymes section
allow creation of builders that generate shell commands
=>type the builders or modify all the builders to have a special mode (bof)
ShellCommand(\&DoSomething, 'arg', 'arg') ;
sub DoSomething : ShellCommandsOnly
? should creators be tagged in that way too?
document how to write a builder override
^^Stop using closures!
# have minimized some of them in the builders section
=> generate builder when they are needed only!
_ verify config when linking to existing node?
_ parallel C depending
it it possible to build the dependency graph without C depend, depend each C
file separately and parallely then merge each C file dependencies back into
the dependency graph
...? micro warp file for each subpbs
=> usefull if the whole warp tree must be rebuild . ex a Pbsfile is changed
=> not realy usefull in common case where pbs is run in warp mode
=> might be used to speed up warp file creation which become a list of micro warps
=> decentralize warp files.
each warp file would depend on it's own dependencies instead for the global warp file to depend on all
Only the warp file part would need to be rebuild.
We might even be able to restart building from a specific node instead for the root
another example is subpbses, they could have their own warp files
=> hmmm isn't this no more than adding the pbsfiles as dependencies to the nodes?
=> except it is top down instead for bottom up!!!!
=> if every node in the tree has a dependency to a pbsfile-node, a modification in a pbs file
would 'trigger' the nodes, except that children to the triggered
nodes must also be removed as we don't know if they are part of the warp tree or not
Optimize memory usage
=> no separate packages for each subpbs
=> no reload of rules
=> hashes are expensive (but so cool)
find a pre_processor within a module
find a way to build with light weight processes
=> worker pool
socket communication so the workers can be remote if needed
=> use an existing RPC module if possible
_builders using shell commands only should automatically generate warp2 stubs
C depender should evaluate -I paths to reduce . and ..
triggers and subpbs are virtualy the same
instead for linking the node by hand in a subpbs, simply link it from the inserted nodes
add ./ to targets at PBS::PBS start BUT not when defining the root rule, or ??
Bundle
gtg_gm 1+ seems to crash GraphViz when used with gtg_p
Re-intrency
_ redirect stdout/err to file even when not using -j
_ INHERITANCE of PBS_CONFIG and CONFIG should be done through reference and override instead for copy
############################## Done ########################################
#Add GetBuildDirectory directely accessible from a pbsfile
#duhh! nadim@Korba /devel/Qix/QixApplication $ pbs -ndpb
Illegal division by zero at /usr/lib64/perl5/site_perl/5.8.8/PBS/Warp1_5.pm line 98.
in warp file $number_of_nodes_in_the_dependency_tree = 0;
#Error when pbsfile is not found
Reading from filehandle failed at /usr/lib64/perl5/site_perl/5.8.8/PBS/Digest.pm line 214.
...propagated at /usr/lib64/perl5/site_perl/5.8.8/PBS/PBS.pm line 599.
PBS run 1 building './AllRessources' with './'
#$shell_command =~ s/\%FILE_TO_BUILD_NO_EXT/$path\/$basename/g ;
#patch or immediate build in subpbs builds twice in Depend.pm:1066
if($tree->{__IMMEDIATE_BUILD} && ! exists $tree->{__BUILD_DONE})
{
PrintInfo2("** Immediate build of node $node_name **\n") ;
my(@build_sequence, %trigged_files) ;
my $nodes_checker ;
#Make IMMEDIATE_BUILD less noisy
#-w postpbs is not a wizard!
#Add the html documentation generation script to pbs
#directory cleanup
scripts
watcher modules
todo and div emil docs (integrate)
documentation
pbs completion
project generator
win32 specific scripts
#merge Adsubpbsrules from work
#Document the fact that warp1_5 doesn't have a warp tree
#relocated Pbsfile is psycho!
=> rewrote and added switches -display_subpbs_search_info -display_all_subpbs_alternatives
#Postpbs doest get a valid dependency tree if the build failed
return error code instead for exception
#add link to rt.cpan.org
#Apply patch
#Remove spurious PBSFILE HELP for -hu -hur output
#? AR [x => y], BuilderAndCreator(\creator) ;
=> AR [CREATOR], 'name', ['A' => 'B4], "touch %FILE_TO_BUILD" ;
#Check if CREATOR can be mixed with other rule types
#=> including CREATOR multiple times
#Should we ignore (or even warn) if a rule with creator also has a builder?
#wizard info and help
#Get the C depender (and other dependers) to exclusively use PBS md5 functions instead for defining it's own.
Let PBS check the C digest
=> used warp1_5
#Warp 1.0 (new) and 1.1 fail regenerating when an error occured
#... remove all non perl language interface: ie use regexes
#... simplified language could translate to perl regex.
# add the possibility to 'PbsUse' the translator => see language directory
=> fixed but discuss fix with Ali
#^Log of 230_000 lines for 700 nodes is a bit overkill
#this is a good candidate for a plugin
#add file name filtering function
? through a pbs config, ie AddPbsConfig DEPENDENCY_NAME_VALIDATOR => sub{} or regex
#Triggers use simplified regex and should use perl regex instead
=> had to temporarely add GenerateSimplifiedDependentRegex to Trigger.pm
so it could pass tests
#Subpbs regex definition should use pure perl or be overridden
=> hmm think it is already a regex
#AndMatch should not assume code but verify it at
PerlBuildSystem-0.28_10/PBSLib/Dependers/Matchers.pm' line 68.
! use make as a distributor !!!
make consumes 2M before it gets any input, so no significant memory saving
compared to Perl Build Server.
! -dac should be better indented and give better info in a better format
#verbose but not so bad
=> maybe a regex for what keys and/or packages and/or pbsfiles could be good
!can we thread the depend step too?
yes, and merge nodes if they should be linked but what's the use? there is very little IO involved so threading doesn't help
better to distribute it
( run in 0.964 second using v1.01-cache-2.11-cpan-5511b514fd6 )