github.com/hwaf/hwaf@v0.0.0-20140814122253-5465f73b20f1/test_hwaf_worch_test.go (about)

     1  package main_test
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"testing"
     7  )
     8  
     9  func TestWorchVcs(t *testing.T) {
    10  
    11  	workdir, err := ioutil.TempDir("", "hwaf-test-")
    12  	if err != nil {
    13  		t.Fatalf(err.Error())
    14  	}
    15  	defer os.RemoveAll(workdir)
    16  	//fmt.Printf(">>> test: %s\n", workdir)
    17  
    18  	err = os.Chdir(workdir)
    19  	if err != nil {
    20  		t.Fatalf(err.Error())
    21  	}
    22  
    23  	hwaf, err := newlogger("hwaf.log")
    24  	if err != nil {
    25  		t.Fatalf(err.Error())
    26  	}
    27  	defer hwaf.Close()
    28  
    29  	const worch_cfg_tmpl = `
    30  # test the vcs feature
    31  [start]
    32  groups = vcs
    33  group = vcs
    34  features = vcs autoconf makemake
    35  
    36  # Tags
    37  tags = debug
    38  
    39  # not actually used for vcs...
    40  download_dir = downloads
    41  
    42  source_dir = sources
    43  build_dir = builds/{package}-{version}-{tagsdashed}
    44  install_dir = {PREFIX}/{package}/{version}/{tagsdashed}
    45  unpacked_target = autogen.sh
    46  vcs_flavor = git
    47  
    48  [group vcs]
    49  packages = cjson
    50  
    51  [package cjson]
    52  version = master
    53  source_url = git://github.com/hwaf/hwaf-tests-worch-cjson
    54  vcs_tag = {version}
    55  build_dir = {source_dir}/{source_unpacked}
    56  prepare_cmd = {out}/{source_dir}/{source_unpacked}/autogen.sh --prefix={install_dir}
    57  prepare_target = config.status
    58  build_target = src/lib/libcjson.la
    59  install_target = lib/libcjson.so
    60  
    61  
    62  [keytype]
    63  groups = group
    64  packages = package
    65  `
    66  	f, err := os.Create("worch.cfg")
    67  	if err != nil {
    68  		t.Fatalf("error creating worch.cfg: %v\n", err)
    69  	}
    70  	defer f.Close()
    71  
    72  	_, err = f.WriteString(worch_cfg_tmpl)
    73  	if err != nil {
    74  		t.Fatalf("error generating worch.cfg: %v\n", err)
    75  	}
    76  
    77  	// build
    78  	for _, cmd := range [][]string{
    79  		{"hwaf", "init", "-v=1", "."},
    80  		{"hwaf", "setup", "-v=1", "."},
    81  		{"hwaf", "configure", "--prefix=" + workdir + "/install"},
    82  		{"hwaf"},
    83  	} {
    84  		err := hwaf.Run(cmd[0], cmd[1:]...)
    85  		if err != nil {
    86  			hwaf.Display()
    87  			t.Fatalf("cmd %v failed: %v", cmd, err)
    88  		}
    89  	}
    90  }
    91  
    92  func TestWorchAutoconf(t *testing.T) {
    93  	workdir, err := ioutil.TempDir("", "hwaf-test-")
    94  	if err != nil {
    95  		t.Fatalf(err.Error())
    96  	}
    97  	//defer os.RemoveAll(workdir)
    98  	//fmt.Printf(">>> test: %s\n", workdir)
    99  
   100  	err = os.Chdir(workdir)
   101  	if err != nil {
   102  		t.Fatalf(err.Error())
   103  	}
   104  
   105  	hwaf, err := newlogger("hwaf.log")
   106  	if err != nil {
   107  		t.Fatalf(err.Error())
   108  	}
   109  	defer hwaf.Close()
   110  
   111  	const worch_cfg_tmpl = `
   112  # Simple example orch.cfg file for installing a suite of software
   113  # packages.  An artificial dependency is setup so that hello "depends"
   114  # on "bc".
   115  
   116  # Note: additional interpolation is done by the waf scripts so some
   117  # variable may appear to be undefined but will be satisfied later.
   118  
   119  # The default starting section
   120  [start]
   121  # A comma-separated list of groups of packages.
   122  groups = gnuprograms
   123  
   124  # Default group
   125  group = gnuprograms
   126  
   127  # Tags
   128  tags = debug
   129  
   130  # The (default) features of a package build. Should be
   131  # space-separated.  Depending on what feature is active for a package
   132  # different variables are required to exist.  
   133  #features = dumpenv tarball autoconf
   134  features = tarball autoconf makemake
   135  
   136  # where tarballs or other source packages get downloaded
   137  download_dir = downloads
   138  
   139  # top directory holding unpacked source directories
   140  source_dir = sources
   141  
   142  # top directory where a build occurs.  {tagsdashed} is provided by the
   143  # application.
   144  build_dir = builds/{package}-{version}-{tagsdashed}
   145  
   146  # Installation area for the package 
   147  install_dir = {PREFIX}/{package}/{version}/{tagsdashed}
   148  
   149  # Depending on the feature, certain variables must be provided
   150  srcpkg_ext = tar.gz
   151  source_unpacked = {package}-{version}
   152  source_package = {source_unpacked}.{srcpkg_ext}
   153  
   154  
   155  # This section defines the schema of the configuration itself.  It is
   156  # required to be found in the configuration and should only be
   157  # modified by experts.  Worch requires "groups" and "packages".
   158  [keytype]
   159  groups = group
   160  packages = package
   161  
   162  [group gnuprograms]
   163  # Comma separated list of tags which should be honored when building
   164  # the package.  They may be used to dermine output locations where the
   165  # derived "tagsdashed" variable may be useful
   166  
   167  # A list of packages to build.  Note: "packages" is a keytype
   168  packages = hello, bc
   169  
   170  # set a common URL pattern for all gnu programs
   171  source_url = http://ftp.gnu.org/gnu/{package}/{source_package}
   172  
   173  # artificially require any environment variables defined by package or
   174  # groups of packages.  This example redundantly required cmake twice
   175  # since it's part of the buildtools group
   176  unpacked_target = configure
   177  prepare_target = config.status
   178  
   179  [package hello]
   180  version = 2.8
   181  
   182  # dependencies can be expressed as a comma-separated list.  Each
   183  # element is a package name or a <step>:<package>_<step> pair.  The
   184  # former will require the dependency to be fully installed before the
   185  # current package is started.  The latter sets up a fine-grained
   186  # dependecy requiring <package>_<step> to complete before this
   187  # package's <step> is started.
   188  depends = prepare:bc_install
   189  build_target = src/hello
   190  install_target = bin/hello
   191  
   192  [package bc]
   193  version = 1.06 
   194  build_target = bc/bc
   195  install_target = bin/bc
   196  `
   197  	f, err := os.Create("worch.cfg")
   198  	if err != nil {
   199  		t.Fatalf("error creating worch.cfg: %v\n", err)
   200  	}
   201  	defer f.Close()
   202  
   203  	_, err = f.WriteString(worch_cfg_tmpl)
   204  	if err != nil {
   205  		t.Fatalf("error generating worch.cfg: %v\n", err)
   206  	}
   207  
   208  	// build
   209  	for _, cmd := range [][]string{
   210  		{"hwaf", "init", "-v=1", "."},
   211  		{"hwaf", "setup", "-v=1", "."},
   212  		{"hwaf", "configure", "--prefix=" + workdir + "/install"},
   213  		{"hwaf", "build", "install", "--zones=orch"},
   214  	} {
   215  		err := hwaf.Run(cmd[0], cmd[1:]...)
   216  		if err != nil {
   217  			hwaf.Display()
   218  			t.Fatalf("cmd %v failed: %v", cmd, err)
   219  		}
   220  	}
   221  }
   222  
   223  // EOF