PerlBuildSystem

 view release on metacpan or  search on metacpan

Todo.txt  view on Meta::CPAN

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

Todo.txt  view on Meta::CPAN

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 )