5 Rules to writing portable build scripts