aboutsummaryrefslogblamecommitdiffstats
path: root/main/postgresql/APKBUILD
blob: 7f95da709e9b6e3fa3e6aaa7095495121ccccb9e (plain) (tree)
1
2
3
4
5
6
7
8
9
                                              
                                                   
                                               
                  
           
        
                                                
                                 
          
                    
                                  
                                                   

                    
                        
                         
                                                                         
                                                                            
                                                                           
                                      
                                                              

                                                                        
                                                                               

                        
                                          
                                  

                      

                        
                               
         
                                   
                    
 
           

                     



                      

                     



                      


                      

                     
            

                      
            
                      
            

                      
            
                      
            

                      
            
                     
            
                     
            

                     
            

                      
             


                     
             


                     
 
           
                       
                      
 
                                                                 
                                                                       
            

                                          

 



                                                                        
         




                                      
                  
                                   



                          
                      

                                      
                                



                    




                                             



                                 
                                         
                                                          
                             
                                          
                               

                                  
                                 
                             
                               
                          
 
 



                           
                         
                          

 
           

                      
                                                   
 

                    
                                                  







                                                                             

 
       
                   
 


                                       

 
         
                                      

                  
                                 


        
                  
                    


          
                                   

                  
                            
                                     

                          

                            




                               
                               




                                
                                     

 
           
                                                               
                  

                      




                                                                        
                                
 
                                                    

                                                            
                                                   
                                                              
 
 



                                                           
                                            
                                                     


                                                          

 
          
                                                            
                  
 

                                                      

 






                                                                  
             
                                                               
                         
 

                                                        

 



                                          

                                                                    



                                                                  

                                                               
                         

                          
                                                            


                                      

                                          
 
                          

                                                                    









                                                                                         
 
 



                                            

                                                               








                                                                                                       


                                                
                                                           
            

 

                                                                                                                                                         
                                                                                                                                              
                                                                                                                                                  
                                                                                                                                                                    
                                                                                                                                                            
                                                                                                                                                  
                                                                                                                                                  
                                                                                                                                                  
                                                                                                                                                  

                                                                                                                                                         
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
# Contributor: G.J.R. Timmer <gjr.timmer@gmail.com>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
pkgname=postgresql
pkgver=12.8
pkgrel=0
pkgdesc="A sophisticated object-relational DBMS"
url="https://www.postgresql.org/"
arch="all"
license="PostgreSQL"
depends="postgresql-client tzdata"
install="$pkgname.pre-install $pkgname.pre-upgrade"
pkgusers="postgres"
pkggroups="postgres"
checkdepends="diffutils"
depends_dev="openssl-dev"
makedepends="$depends_dev libedit-dev zlib-dev libxml2-dev util-linux-dev
	openldap-dev tcl-dev perl-dev python2-dev python3-dev linux-headers"
subpackages="$pkgname-contrib $pkgname-dev $pkgname-doc libpq $pkgname-libs
	$pkgname-client $pkgname-pltcl
	$pkgname-plperl $pkgname-plperl-contrib:plperl_contrib
	$pkgname-plpython2 $pkgname-plpython2-contrib:plpython2_contrib
	$pkgname-plpython3 $pkgname-plpython3-contrib:plpython3_contrib"
source="https://ftp.postgresql.org/pub/source/v$pkgver/$pkgname-$pkgver.tar.bz2
	initdb.patch
	perl-rpath.patch
	conf-unix_socket_directories.patch
	disable-broken-tests.patch
	$pkgname.initd
	$pkgname.confd
	pg-restore.initd
	pg-restore.confd
	pltcl_create_tables.sql
	"
builddir="$srcdir/$pkgname-$pkgver"
options="!checkroot"

# secfixes:
#   12.8-r0:
#     - CVE-2021-3677
#   12.7-r0:
#     - CVE-2021-32027
#     - CVE-2021-32028
#     - CVE-2021-32029
#   12.6-r0:
#     - CVE-2021-3393
#   12.5-r0:
#     - CVE-2020-25694
#     - CVE-2020-25695
#     - CVE-2020-25696
#   12.4-r0:
#     - CVE-2020-14349
#     - CVE-2020-14350
#   12.2-r0:
#     - CVE-2020-1720
#   11.5-r0:
#     - CVE-2019-10208
#     - CVE-2019-10209
#   11.4-r0:
#     - CVE-2019-10164
#   11.3-r0:
#     - CVE-2019-10129
#     - CVE-2019-10130
#   11.1-r0:
#     - CVE-2018-16850
#   10.5-r0:
#     - CVE-2018-10915
#     - CVE-2018-10925
#   10.4-r0:
#     - CVE-2018-1115
#   10.3-r0:
#     - CVE-2018-1058
#   10.2-r0:
#     - CVE-2018-1052
#     - CVE-2018-1053
#   10.1-r0:
#     - CVE-2017-15098
#     - CVE-2017-15099
#   9.6.4-r0:
#     - CVE-2017-7546
#     - CVE-2017-7547
#     - CVE-2017-7548
#   9.6.3-r0:
#     - CVE-2017-7484
#     - CVE-2017-7485
#     - CVE-2017-7486

prepare() {
	default_prepare
	cd "$builddir"

	local file; for file in $pkgname.initd $pkgname.confd; do
		sed "s|@VERSION@|${pkgver%.*}|" "$srcdir"/$file > $file
	done

	cp -al "$builddir" "$builddir"~py3
}

# NOTE: plpython requires separate configure/build runs to build against
# python 2 versus python 3. Note that the installed Makefile.global will
# reflect the python 2 build, which seems appropriate since that's still
# considered the default plpython version.
build() {
	msg "Building plpython3"

	cd "$builddir"~py3
	export PYTHON=/usr/bin/python3

	_configure
	make -C src/pl/plpython all


	msg "Building all"

	cd "$builddir"
	export PYTHON=/usr/bin/python2

	_configure && make world

	unset PYTHON
}

# Note: (...) instead of {...} is NOT a typo!
_configure() (
	export CFLAGS="${CFLAGS/-Os/-O2}"
	export CPPFLAGS="${CPPFLAGS/-Os/-O2}"

	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--mandir=/usr/share/man \
		--with-system-tzdata=/usr/share/zoneinfo \
		--with-ldap \
		--with-libedit-preferred \
		--with-libxml \
		--with-openssl \
		--with-uuid=e2fs \
		--disable-rpath \
		--with-perl \
		--with-python \
		--with-tcl
)

check() {
	cd "$builddir"

	_run_tests src/test
	_run_tests src/pl
	_run_tests contrib
}

package() {
	cd "$builddir"

	make DESTDIR="$pkgdir" install install-docs

	cd "$pkgdir"

	install -d -m750 -o postgres -g postgres \
		./var/lib/postgresql \
		./var/log/$pkgname

	install -D -m755 "$builddir"/postgresql.initd ./etc/init.d/postgresql
	install -D -m644 "$builddir"/postgresql.confd ./etc/conf.d/postgresql

	install -D -m755 "$srcdir"/pg-restore.initd ./etc/init.d/pg-restore
	install -D -m644 "$srcdir"/pg-restore.confd ./etc/conf.d/pg-restore
}

dev() {
	default_dev

	_submv usr/bin/pg_config \
		usr/bin/ecpg \
		usr/lib/postgresql/pgxs
}

libpq() {
	pkgdesc="PostgreSQL libraries"
	depends=""

	_submv usr/lib/libpq.so.*
}

libs() {
	depends=""
	default_libs
}

client() {
	pkgdesc="PostgreSQL client"
	depends=""

	cd "$pkgdir"/usr/bin
	mkdir -p "$subpkgdir"/usr/bin
	mv clusterdb \
		createdb \
		createuser \
		dropdb \
		dropuser \
		pg_basebackup \
		pg_dump \
		pg_dumpall \
		pg_isready \
		pg_receivewal \
		pg_recvlogical \
		pg_restore \
		psql \
		reindexdb \
		vacuumdb \
		"$subpkgdir"/usr/bin/
}

contrib() {
	pkgdesc="Extension modules distributed with PostgreSQL"
	depends=""

	cd "$builddir"

	# Avoid installing plperl and plpython extensions, these will be
	# installed into separate subpackages.
	sed -Ei -e 's/(.*_plperl)/#\1/' \
		-e 's/(.*_plpython)/#\1/' \
		contrib/Makefile

	make -C contrib DESTDIR="$subpkgdir" install

	mv "$subpkgdir"/usr/share/doc/postgresql/extension \
		"$pkgdir"/usr/share/doc/postgresql/
	rmdir -p "$subpkgdir"/usr/share/doc/postgresql || true
}

pltcl() {
	pkgdesc="PL/Tcl procedural language for PostgreSQL"
	depends="pgtcl"

	_submv usr/lib/postgresql/pltcl.so \
		usr/share/postgresql/extension/pltcl*

	install -m 644 "$srcdir"/pltcl_create_tables.sql \
		"$subpkgdir"/usr/share/postgresql/
}

plperl() {
	pkgdesc="PL/Perl procedural language for PostgreSQL"
	depends=""

	_submv usr/lib/postgresql/plperl.so \
		usr/share/postgresql/extension/plperl*
}

plperl_contrib() {
	_plcontrib plperl "PL/Perl"

	cd "$builddir"
	make -C contrib/hstore_plperl DESTDIR="$subpkgdir" install
}

plpython2() {
	pkgdesc="PL/Python2 procedural language for PostgreSQL"
	depends="python2"

	_submv usr/lib/postgresql/plpython2.so \
		usr/share/postgresql/extension/plpython*
}

plpython2_contrib() {
	_plcontrib plpython2 "PL/Python 2"

	cd "$builddir"
	make -C contrib/hstore_plpython DESTDIR="$subpkgdir" install
	make -C contrib/ltree_plpython DESTDIR="$subpkgdir" install

	rm "$subpkgdir"/usr/share/postgresql/extension/*plpython3*
}

plpython3() {
	pkgdesc="PL/Python3 procedural language for PostgreSQL"
	depends="python3"

	cd "$builddir"~py3
	make -C src/pl/plpython DESTDIR="$subpkgdir" install
	rm -R "$subpkgdir"/usr/include
}

plpython3_contrib() {
	_plcontrib plpython3 "PL/Python 3"

	cd "$builddir"~py3
	make -C contrib/hstore_plpython DESTDIR="$subpkgdir" install
	make -C contrib/ltree_plpython DESTDIR="$subpkgdir" install

	cd "$subpkgdir"/usr/share/postgresql/extension/
	rm *plpython2* *plpythonu*
}

_plcontrib() {
	local subname="$1"
	pkgdesc="$2 extension modules distributed with PostgreSQL"
	depends="$pkgname-$subname"
	install_if="$pkgname-$subname=$pkgver-r$pkgrel $pkgname-contrib=$pkgver-r$pkgrel"
}

_run_tests() {
	local path="$1"; shift

	msg "Running test suite at $path..."
	# Note: some tests fail when running in parallel.
	make -k -j 1 -C "$path" $@ check MAX_CONNECTIONS=5 || {
		printf "\n%s\n\n" "Trying to find all regression.diffs files in build directory..." >&2
		find "$path" -name regression.diffs | while read file; do
			echo "=== test failure: $file ===" >&2
			cat "$file" >&2
		done
		return 1
	}
}

_submv() {
	local path; for path in "$@"; do
		mkdir -p "$subpkgdir/${path%/*}"
		mv "$pkgdir"/$path "$subpkgdir"/${path%/*}/
	done
}

sha512sums="
970fe1041e427ac1c8a786c93e2079b0a9c8b3fcaf9d38877894eb02e8a9afc7cd73d7ac28078c455845a922a1b7d9c1e22cb7990d8d523dd6496af9442fba01  postgresql-12.8.tar.bz2
1f8e7dc58f5b0a12427cf2fd904ffa898a34f23f3332c8382b94e0d991c007289e7913a69e04498f3d93fc5701855796c207b4b1cc4a0b366f586050124d7fcc  initdb.patch
5f9d8bb4957194069d01af8ab3abc6d4d83a7e7f8bd7ebe1caae5361d621a3e58f91b14b952958138a794e0a80bc154fbb7e3e78d211e2a95b9b7901335de854  perl-rpath.patch
8439a6fdfdea0a4867daeb8bc23d6c825f30c00d91d4c39f48653f5ee77341f23282ce03a77aad94b5369700f11d2cb28d5aee360e59138352a9ab331a9f9d0f  conf-unix_socket_directories.patch
c4179fcd8b71791cdc41ea7b622cf82e9bd42ac1de66999234b98a83c0c508c79c492a9301274fe859c06a3f1a8b17b53ab97541ab76801a985f8f0b9b8716e7  disable-broken-tests.patch
224e80f9e62843fd248e625abdd0d9fe477729ff3f9a64fc5c86dd37bb7176d3504107fbed7ce578e3a1db7f60b8cf2abf5fe4862c81f76b6d026e29ca495cfc  postgresql.initd
a6d9cba5c7270484b3a22083b2b37742faefb01b6643040050c92235840c601b2e206ebda32804937b729c6cf42c79a558b921900e52fc420df2a03b5f29e1f7  postgresql.confd
f5a1cba051e7d846c2d16703514601cb25729ed96b677c9bd0c199d64552120a8b14b238af01917fdb87106681e12dee6fff7447558155ba273e4f96be5e2892  pg-restore.initd
c14a5684e914abb3b0ee71bbf15eed71a9264deacaa404a6e3af6bfc330d93e7598624d0ed11a94263106cc660f7f54c8ff57e759033cf606a795f69ff6c1c7c  pg-restore.confd
5c9bfd9e295dcf678298bf0aa974347a7c311d6e7c2aa76a6920fcb751d01fd1ab77abbec11f3c672f927ad9deaa88e04e370c0b5cd1b60087554c474b748731  pltcl_create_tables.sql
"