# Contributor: Nathan Johnson <nathan@nathanjohnson.info>
# Maintainer: Nathan Johnson <nathan@nathanjohnson.info>
global pkgname := 'libcouchbase'
global pkgver := '2.8.1'
global pkgrel := '0'
global pkgdesc := '"C client library for Couchbase'"
global url := '"https://developer.couchbase.com/community'"
global arch := '"all'"
global license := '"ASL 2.0'"
global depends := ''
global depends_dev := '"musl-dev libressl-dev snappy-dev'"
global makedepends := ""$depends_dev cmake perl libtool libev-dev libevent-dev libuv-dev""
global subpackages := ""$pkgname-dev $pkgname-bin $pkgname-doc $pkgname-libevent $pkgname-libev $pkgname-libuv""
global source := ""$pkgname-$pkgver.tar.gz::https://github.com/couchbase/libcouchbase/archive/$pkgver.tar.gz
	disable_git_version_check.patch
	fix_snappy.patch
	fix_socktest.patch""
global builddir := ""$srcdir/$pkgname-$pkgver""

proc build {
	mkdir "$builddir"/build
	cd "$builddir"/build
	../cmake/configure \
		--prefix=/usr \
		--disable-couchbasemock \
		|| return 1
	make
}

proc check {
	cd "$builddir"/build
	ctest
}

proc package {
	make -C "$builddir"/build install DESTDIR="$pkgdir" || return 1
}

proc dev {
	default_dev || return 1
	mv "$subpkgdir"/usr/bin/cbc-write-config \
		"$pkgdir"/usr/bin || return 1
	rmdir "$subpkgdir"/usr/bin
}

proc libevent {
	global pkgdesc := ""$pkgdesc (libevent backend)""
	global depends := ""$pkgname libevent""

	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libcouchbase_libevent.so "$subpkgdir"/usr/lib
}

proc libev {
	global pkgdesc := ""$pkgdesc (libev backend)""
	global depends := ""$pkgname libev""

	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libcouchbase_libev.so "$subpkgdir"/usr/lib
}

proc libuv {
	global pkgdesc := ""$pkgdesc (libuv backend)""
	global depends := ""$pkgname libuv""

	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libcouchbase_libuv.so "$subpkgdir"/usr/lib
}

proc bin {
	global pkgdesc := ""$pkgdesc (command line utilities)""
	global depends := $pkgname

	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}

global sha512sums := '"394c047f79ce7a976f76f07726a072cf16e8514481222d8867ea7eb863fcdfb94fa6301974708bea0390acf7a5234fff376a73da144a9c7a62616c9a3034de26  libcouchbase-2.8.1.tar.gz
987b76b9c8a38a1f144bcada3c24192b30b352c993c433f4a2a1e381b765ae6bb845ebc6393c794da1b4efbb68fd1d34b027104fecf5c9bcc29b0f58c7f6a474  disable_git_version_check.patch
9023fe6c0d88577f40598f201be121012199167e9eef7e99da29664d23fd5e0c488fad2eda88ed3b30ea089b60e760c1b472bb46bb0804b5f7bb7091f0d8a2ed  fix_snappy.patch
72319b86fdd91728723ccb091e72199788a84e2ec9ea12c0fcd1ed686eb155ec11e0addbff96735f83e7f31764a85650f0483b6e76d3a8bee16f71b2751fe4a9  fix_socktest.patch'"
(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:pkgname) op:Equal rhs:{(libcouchbase)} spids:[6])]
      spids: [6]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:pkgver) op:Equal rhs:{(2.8.1)} spids:[9])]
      spids: [9]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:pkgrel) op:Equal rhs:{(0)} spids:[12])]
      spids: [12]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:pkgdesc)
          op: Equal
          rhs: {(DQ ("C client library for Couchbase"))}
          spids: [15]
        )
      ]
      spids: [15]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:url)
          op: Equal
          rhs: {(DQ ("https://developer.couchbase.com/community"))}
          spids: [20]
        )
      ]
      spids: [20]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:arch) op:Equal rhs:{(DQ (all))} spids:[25])]
      spids: [25]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:license) op:Equal rhs:{(DQ ("ASL 2.0"))} spids:[30])]
      spids: [30]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:depends) op:Equal rhs:{(SQ )} spids:[35])]
      spids: [35]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:depends_dev)
          op: Equal
          rhs: {(DQ ("musl-dev libressl-dev snappy-dev"))}
          spids: [37]
        )
      ]
      spids: [37]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:makedepends)
          op: Equal
          rhs: 
            {
              (DQ ($ VSub_Name "$depends_dev") 
                (" cmake perl libtool libev-dev libevent-dev libuv-dev")
              )
            }
          spids: [42]
        )
      ]
      spids: [42]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:subpackages)
          op: Equal
          rhs: 
            {
              (DQ ($ VSub_Name "$pkgname") ("-dev ") ($ VSub_Name "$pkgname") ("-bin ") 
                ($ VSub_Name "$pkgname") ("-doc ") ($ VSub_Name "$pkgname") ("-libevent ") ($ VSub_Name "$pkgname") ("-libev ") 
                ($ VSub_Name "$pkgname") (-libuv)
              )
            }
          spids: [48]
        )
      ]
      spids: [48]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:source)
          op: Equal
          rhs: 
            {
              (DQ ($ VSub_Name "$pkgname") (-) ($ VSub_Name "$pkgver") 
                (".tar.gz::https://github.com/couchbase/libcouchbase/archive/") ($ VSub_Name "$pkgver") (".tar.gz\n") ("\tdisable_git_version_check.patch\n") ("\tfix_snappy.patch\n") 
                ("\tfix_socktest.patch")
              )
            }
          spids: [64]
        )
      ]
      spids: [64]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:builddir)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$srcdir") (/) ($ VSub_Name "$pkgname") (-) ($ VSub_Name "$pkgver"))}
          spids: [77]
        )
      ]
      spids: [77]
    )
    (FuncDef
      name: build
      body: 
        (BraceGroup
          children: [
            (C {(mkdir)} {(DQ ($ VSub_Name "$builddir")) (/build)})
            (C {(cd)} {(DQ ($ VSub_Name "$builddir")) (/build)})
            (AndOr
              children: [
                (C {(../cmake/configure)} {(--prefix) (Lit_Other "=") (/usr)} 
                  {(--disable-couchbasemock)}
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
              op_id: Op_DPipe
            )
            (C {(make)})
          ]
          spids: [91]
        )
      spids: [87 90]
    )
    (FuncDef
      name: check
      body: 
        (BraceGroup
          children: [(C {(cd)} {(DQ ($ VSub_Name "$builddir")) (/build)}) (C {(ctest)})]
          spids: [140]
        )
      spids: [136 139]
    )
    (FuncDef
      name: package
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(make)} {(-C)} {(DQ ($ VSub_Name "$builddir")) (/build)} {(install)} 
                  {(Lit_VarLike "DESTDIR=") (DQ ($ VSub_Name "$pkgdir"))}
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [160]
        )
      spids: [156 159]
    )
    (FuncDef
      name: dev
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(default_dev)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (C {(mv)} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/bin/cbc-write-config)} 
                  {(DQ ($ VSub_Name "$pkgdir")) (/usr/bin)}
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
              op_id: Op_DPipe
            )
            (C {(rmdir)} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/bin)})
          ]
          spids: [192]
        )
      spids: [188 191]
    )
    (FuncDef
      name: libevent
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pkgdesc)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$pkgdesc") (" (libevent backend)"))}
                  spids: [242]
                )
              ]
              spids: [242]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:depends)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$pkgname") (" libevent"))}
                  spids: [249]
                )
              ]
              spids: [249]
            )
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/lib)})
            (C {(mv)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/lib/libcouchbase_libevent.so)} 
              {(DQ ($ VSub_Name "$subpkgdir")) (/usr/lib)}
            )
          ]
          spids: [239]
        )
      spids: [235 238]
    )
    (FuncDef
      name: libev
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pkgdesc)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$pkgdesc") (" (libev backend)"))}
                  spids: [289]
                )
              ]
              spids: [289]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:depends)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$pkgname") (" libev"))}
                  spids: [296]
                )
              ]
              spids: [296]
            )
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/lib)})
            (C {(mv)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/lib/libcouchbase_libev.so)} 
              {(DQ ($ VSub_Name "$subpkgdir")) (/usr/lib)}
            )
          ]
          spids: [286]
        )
      spids: [282 285]
    )
    (FuncDef
      name: libuv
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pkgdesc)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$pkgdesc") (" (libuv backend)"))}
                  spids: [336]
                )
              ]
              spids: [336]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:depends)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$pkgname") (" libuv"))}
                  spids: [343]
                )
              ]
              spids: [343]
            )
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/lib)})
            (C {(mv)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/lib/libcouchbase_libuv.so)} 
              {(DQ ($ VSub_Name "$subpkgdir")) (/usr/lib)}
            )
          ]
          spids: [333]
        )
      spids: [329 332]
    )
    (FuncDef
      name: bin
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pkgdesc)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$pkgdesc") (" (command line utilities)"))}
                  spids: [383]
                )
              ]
              spids: [383]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:depends)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$pkgname"))}
                  spids: [390]
                )
              ]
              spids: [390]
            )
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/bin)})
            (C {(mv)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/bin)} 
              {(DQ ($ VSub_Name "$subpkgdir")) (/usr/)}
            )
          ]
          spids: [380]
        )
      spids: [376 379]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:sha512sums)
          op: Equal
          rhs: 
            {
              (DQ 
                (
"394c047f79ce7a976f76f07726a072cf16e8514481222d8867ea7eb863fcdfb94fa6301974708bea0390acf7a5234fff376a73da144a9c7a62616c9a3034de26  libcouchbase-2.8.1.tar.gz\n"
                ) 
                (
"987b76b9c8a38a1f144bcada3c24192b30b352c993c433f4a2a1e381b765ae6bb845ebc6393c794da1b4efbb68fd1d34b027104fecf5c9bcc29b0f58c7f6a474  disable_git_version_check.patch\n"
                ) 
                (
"9023fe6c0d88577f40598f201be121012199167e9eef7e99da29664d23fd5e0c488fad2eda88ed3b30ea089b60e760c1b472bb46bb0804b5f7bb7091f0d8a2ed  fix_snappy.patch\n"
                ) 
                (
"72319b86fdd91728723ccb091e72199788a84e2ec9ea12c0fcd1ed686eb155ec11e0addbff96735f83e7f31764a85650f0483b6e76d3a8bee16f71b2751fe4a9  fix_socktest.patch"
                )
              )
            }
          spids: [422]
        )
      ]
      spids: [422]
    )
  ]
)