cmd/gomobile/release: generate a tarball that contains OpenAL
Change-Id: I1a7282fcb31d778ff12d7a655eadbac1a01e584b Reviewed-on: https://go-review.googlesource.com/6720 Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com> Reviewed-by: David Crawshaw <crawshaw@golang.org>
This commit is contained in:
parent
c94142eb97
commit
42f807be2c
@ -57,6 +57,105 @@ func main() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
if err := mkALPkg(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func run(dir, path string, args ...string) error {
|
||||
cmd := exec.Command(path, args...)
|
||||
cmd.Dir = dir
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
return cmd.Run()
|
||||
}
|
||||
|
||||
func mkALPkg() (err error) {
|
||||
alTmpDir, err := ioutil.TempDir("", "openal-release-")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer os.RemoveAll(alTmpDir)
|
||||
|
||||
if err := run(alTmpDir, "git", "clone", "-v", "git://repo.or.cz/openal-soft.git", alTmpDir); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := run(alTmpDir, "git", "checkout", "19f79be57b8e768f44710b6d26017bc1f8c8fbda"); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := run(filepath.Join(alTmpDir, "cmake"), "cmake", "..", "-DCMAKE_TOOLCHAIN_FILE=../XCompile-Android.txt", "-DHOST=arm-linux-androideabi"); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := run(filepath.Join(alTmpDir, "cmake"), "make"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Build the tarball.
|
||||
f, err := os.Create("gomobile-openal-soft-1.16.0.1.tar.gz")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
bw := bufio.NewWriter(f)
|
||||
zw, err := gzip.NewWriterLevel(bw, gzip.BestCompression)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
tw := tar.NewWriter(zw)
|
||||
defer func() {
|
||||
err2 := f.Close()
|
||||
if err == nil {
|
||||
err = err2
|
||||
}
|
||||
}()
|
||||
defer func() {
|
||||
err2 := bw.Flush()
|
||||
if err == nil {
|
||||
err = err2
|
||||
}
|
||||
}()
|
||||
defer func() {
|
||||
err2 := zw.Close()
|
||||
if err == nil {
|
||||
err = err2
|
||||
}
|
||||
}()
|
||||
defer func() {
|
||||
err2 := tw.Close()
|
||||
if err == nil {
|
||||
err = err2
|
||||
}
|
||||
}()
|
||||
|
||||
files := map[string]string{
|
||||
"cmake/libopenal.so": "lib/armeabi/libopenal.so",
|
||||
"include/AL/al.h": "include/AL/al.h",
|
||||
"include/AL/alc.h": "include/AL/alc.h",
|
||||
"COPYING": "include/AL/COPYING",
|
||||
}
|
||||
for src, dst := range files {
|
||||
f, err := os.Open(filepath.Join(alTmpDir, src))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fi, err := f.Stat()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tw.WriteHeader(&tar.Header{
|
||||
Name: dst,
|
||||
Mode: int64(fi.Mode()),
|
||||
Size: fi.Size(),
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = io.Copy(tw, f)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
f.Close()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func mkpkg(host version) (err error) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user