ninux.l0g.in / Rakefile.rb

BUILD_CMD = "ionice -c 3 nice -n 20 make -j 2 V=99 CONFIG_DEBUG_SECTION_MISMATCH=y 2>&1 | tee build.log | egrep -i '(warn|error)'"

folder = 'trunk'
dest = File.join(Dir.pwd,'www')

task :compile => [:feed_update, :feed_install] do
	cd(folder) do
		sh BUILD_CMD do |ok, res|
    		if ! ok
      			puts "BUILD FAILED!"
      			cp 'build.log', File.join(dest, DateTime.now.to_s + "error.log")
      		end
    	end
	end
end

def update_folder(folder)
	desc 'Upgrade svn in #{folder}'
	task "svn_update_#{folder}" do
		cd(folder) do
			sh 'svn update'
		end
	end
end

# desc 'Build an publish to the web'
# task :publish do
# 	cd(folder) do
# 		rm_rf dest
# 		cp_r 'bin', dest
# 		cp 'build.log', dest
# 	end
# end

desc "Copile for all target"
task :compile_all

desc "Publish all compiled"
task :publish_all

def compile_for(arch, folder)	
	my_task = "compile_#{arch}_#{folder}".to_sym
	desc "Compile for #{folder}/#{arch}"
	task my_task => ["feed_install_#{folder}"] do
		cd(folder) do
			cp "config.#{arch}", ".config"
			sh BUILD_CMD do |ok, res|
	    		if ! ok
	      			puts "BUILD FAILED!"
	      			cp 'build.log', File.join(dest, DateTime.now.to_s + "#{arch}_error.log")
	      		end
	    	end
		end
	end
	task :compile_all => my_task
end

def publish_folder(folder)
	my_task = "publish_#{folder}".to_sym
	desc "publish #{folder}"
	task my_task do
		www = File.join(Dir.pwd,'www', folder)
		cd(folder) do
			rm_rf www
			cp_r 'bin', www
			cp 'build.log', www
		end
	end	

	task :publish_all => my_task
end

def feeds_folder(folder)
	task "feed_update_#{folder}" do
		cd(folder) do
			sh './scripts/feeds update -a'
		end
	end

	task "feed_install_#{folder}" => ["feed_update_#{folder}"] do
		cd(folder) do
			sh './scripts/feeds install -a -d n'
		end
	end
end

compile_for 'fonera', 'trunk'
compile_for 'ar71xx', 'attitude_adjustment'

publish_folder 'trunk'
publish_folder 'attitude_adjustment'
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.