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