[Mod] First commit

This commit is contained in:
2022-10-31 22:18:58 +08:00
commit 1c8a3d9709
13090 changed files with 526733 additions and 0 deletions

View File

@ -0,0 +1,40 @@
config BR2_PACKAGE_POSTGRESQL
bool "postgresql"
depends on BR2_USE_MMU # fork()
depends on BR2_USE_WCHAR
# fails to build in a pure static linking scenario, and
# postgresql is unlikely to be used in a pure statically
# linked environment.
depends on !BR2_STATIC_LIBS
depends on !BR2_OPTIMIZE_FAST
select BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH if BR2_PACKAGE_LIBOPENSSL
select BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST if BR2_PACKAGE_LIBOPENSSL
select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL
help
PostgreSQL is a powerful, open source object-relational
database system.
Enable the readline package to gain readline support in
psql (the command line interpreter), which offers
command history and edit functions.
Enable the zlib package to gain builtin compression for
archives with pg_dump and pg_restore.
http://www.postgresql.org
if BR2_PACKAGE_POSTGRESQL
config BR2_PACKAGE_POSTGRESQL_FULL
bool "postgresql-full"
help
Build PostgreSQL, contrib, and documentation.
endif
comment "postgresql needs a toolchain w/ dynamic library, wchar"
depends on BR2_USE_MMU
depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR
comment "postgresql can't be built with Optimize for fast"
depends on BR2_OPTIMIZE_FAST

View File

@ -0,0 +1,44 @@
#!/bin/sh
#
# start postgresql
#
umask 077
if [ ! -f /var/lib/pgsql/PG_VERSION ]; then
echo "Initializing postgresql data base..."
su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql'
echo "done"
fi
start() {
printf "Starting postgresql: "
su - postgres -c '/usr/bin/pg_ctl start -w -D /var/lib/pgsql -l logfile'
echo "OK"
}
stop() {
printf "Stopping postgresql: "
su - postgres -c '/usr/bin/pg_ctl stop -D /var/lib/pgsql -m fast'
echo "OK"
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?

View File

@ -0,0 +1,79 @@
#!/bin/sh
#
# Minimal pg_config implementation as replacement for the native pg_config application
#
prefix=/usr
case "$1" in
--includedir)
echo "$prefix/include"
;;
--pkgincludedir)
echo "$prefix/include/postgresql"
;;
--includedir-server)
echo "$prefix/include/postgresql/server"
;;
--libdir)
echo "$prefix/lib"
;;
--version)
echo "PostgreSQL @POSTGRESQL_VERSION@"
;;
--configure)
echo "@POSTGRESQL_CONF_OPTIONS@"
;;
--pgxs)
echo "$prefix/lib/postgresql/pgxs/src/makefiles/pgxs.mk"
;;
--cflags)
echo "@TARGET_CFLAGS@"
;;
--cflags_sl)
# defined at src/template/linux
echo "-fPIC"
;;
--cc)
echo "@TARGET_CC@"
;;
--pkglibdir)
echo "/usr/lib/postgresql"
;;
--bindir)
echo "/usr/bin"
;;
--sharedir)
echo "/usr/share/postgresql"
;;
--localedir)
echo "/usr/share/locale"
;;
--docdir)
echo "/usr/share/doc/postgresql"
;;
--mandir)
echo "/usr/share/man"
;;
*)
echo "Usage: $0 {OPTION}"
echo
echo "Options:"
echo
echo " --includedir show location of C header files of the client interfaces"
echo " --pkgincludedir show location of other C header files"
echo " --includedir-server show location of C header files for the server"
echo " --libdir show location of object code libraries"
echo " --version show the PostgreSQL version"
echo " --configure show options given to configure script"
echo " --pgxs show location of extension makefile"
echo " --cflags show CFLAGS value used when PostgreSQL was built"
echo " --cc show CC value used when PostgreSQL was built"
echo " --pkglibdir show location of dynamically loadable modules"
echo " --bindir show location of user executables"
echo " --sharedir show location of architecture-independent support files"
echo " --localedir show location of locale support files"
echo " --docdir show location of documentation files"
echo " --mandir show location of manual pages"
esac

View File

@ -0,0 +1,4 @@
# From https://ftp.postgresql.org/pub/source/v14.5/postgresql-14.5.tar.bz2.sha256
sha256 d4f72cb5fb857c9a9f75ec8cf091a1771272802f2178f0b2e65b7b6ff64f4a30 postgresql-14.5.tar.bz2
# License file, Locally calculated
sha256 f6d6616acdb598742e2a7c64fa0551c1c72c309d279fd2d90370e5fdd41c8945 COPYRIGHT

View File

@ -0,0 +1,142 @@
################################################################################
#
# postgresql
#
################################################################################
POSTGRESQL_VERSION = 14.5
POSTGRESQL_SOURCE = postgresql-$(POSTGRESQL_VERSION).tar.bz2
POSTGRESQL_SITE = https://ftp.postgresql.org/pub/source/v$(POSTGRESQL_VERSION)
POSTGRESQL_LICENSE = PostgreSQL
POSTGRESQL_LICENSE_FILES = COPYRIGHT
POSTGRESQL_CPE_ID_VENDOR = postgresql
POSTGRESQL_SELINUX_MODULES = postgresql
POSTGRESQL_INSTALL_STAGING = YES
POSTGRESQL_CONFIG_SCRIPTS = pg_config
POSTGRESQL_CONF_ENV = \
ac_cv_type_struct_sockaddr_in6=yes \
LIBS=$(TARGET_NLS_LIBS)
POSTGRESQL_CONF_OPTS = --disable-rpath
POSTGRESQL_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)
# https://www.postgresql.org/docs/11/static/install-procedure.html:
# "If you want to invoke the build from another makefile rather than
# manually, you must unset MAKELEVEL or set it to zero"
POSTGRESQL_MAKE_OPTS = MAKELEVEL=0
ifeq ($(BR2_PACKAGE_POSTGRESQL_FULL),y)
POSTGRESQL_MAKE_OPTS += world
POSTGRESQL_INSTALL_TARGET_OPTS += DESTDIR=$(TARGET_DIR) install-world
POSTGRESQL_INSTALL_STAGING_OPTS += DESTDIR=$(STAGING_DIR) install-world
endif
ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)
# PostgreSQL does not build against uClibc with locales
# enabled, due to an uClibc bug, see
# http://lists.uclibc.org/pipermail/uclibc/2014-April/048326.html
# so overwrite automatic detection and disable locale support
POSTGRESQL_CONF_ENV += pgac_cv_type_locale_t=no
endif
ifneq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),y)
POSTGRESQL_CONF_OPTS += --disable-thread-safety
endif
ifeq ($(BR2_arcle)$(BR2_arceb)$(BR2_microblazeel)$(BR2_microblazebe)$(BR2_or1k)$(BR2_nios2)$(BR2_riscv)$(BR2_xtensa),y)
POSTGRESQL_CONF_OPTS += --disable-spinlocks
endif
ifeq ($(BR2_PACKAGE_READLINE),y)
POSTGRESQL_DEPENDENCIES += readline
else
POSTGRESQL_CONF_OPTS += --without-readline
endif
ifeq ($(BR2_PACKAGE_ZLIB),y)
POSTGRESQL_DEPENDENCIES += zlib
else
POSTGRESQL_CONF_OPTS += --without-zlib
endif
ifeq ($(BR2_PACKAGE_TZDATA),y)
POSTGRESQL_DEPENDENCIES += tzdata
POSTGRESQL_CONF_OPTS += --with-system-tzdata=/usr/share/zoneinfo
else
POSTGRESQL_DEPENDENCIES += host-zic
POSTGRESQL_CONF_ENV += ZIC="$(ZIC)"
endif
ifeq ($(BR2_PACKAGE_OPENSSL),y)
POSTGRESQL_DEPENDENCIES += openssl
POSTGRESQL_CONF_OPTS += --with-openssl
else
# PostgreSQL checks for /dev/urandom and fails if it's being cross-compiled and
# an SSL library isn't found. Since /dev/urandom is guaranteed to be provided
# on Linux systems, explicitly tell the configure script it's available.
POSTGRESQL_CONF_ENV += ac_cv_file__dev_urandom=yes
endif
ifeq ($(BR2_PACKAGE_OPENLDAP),y)
POSTGRESQL_DEPENDENCIES += openldap
POSTGRESQL_CONF_OPTS += --with-ldap
else
POSTGRESQL_CONF_OPTS += --without-ldap
endif
ifeq ($(BR2_PACKAGE_LIBXML2),y)
POSTGRESQL_DEPENDENCIES += libxml2
POSTGRESQL_CONF_OPTS += --with-libxml
POSTGRESQL_CONF_ENV += XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config
else
POSTGRESQL_CONF_OPTS += --without-libxml
endif
# required for postgresql.service Type=notify
ifeq ($(BR2_PACKAGE_SYSTEMD),y)
POSTGRESQL_DEPENDENCIES += systemd
POSTGRESQL_CONF_OPTS += --with-systemd
else
POSTGRESQL_CONF_OPTS += --without-systemd
endif
POSTGRESQL_CFLAGS = $(TARGET_CFLAGS)
ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)
POSTGRESQL_CFLAGS += -O0
endif
POSTGRESQL_CONF_ENV += CFLAGS="$(POSTGRESQL_CFLAGS)"
define POSTGRESQL_USERS
postgres -1 postgres -1 * /var/lib/pgsql /bin/sh - PostgreSQL Server
endef
define POSTGRESQL_INSTALL_TARGET_FIXUP
$(INSTALL) -dm 0700 $(TARGET_DIR)/var/lib/pgsql
$(RM) -rf $(TARGET_DIR)/usr/lib/postgresql/pgxs
endef
POSTGRESQL_POST_INSTALL_TARGET_HOOKS += POSTGRESQL_INSTALL_TARGET_FIXUP
define POSTGRESQL_INSTALL_CUSTOM_PG_CONFIG
$(INSTALL) -m 0755 -D package/postgresql/pg_config \
$(STAGING_DIR)/usr/bin/pg_config
$(SED) "s|@POSTGRESQL_CONF_OPTIONS@|$(POSTGRESQL_CONF_OPTS)|g" $(STAGING_DIR)/usr/bin/pg_config
$(SED) "s|@POSTGRESQL_VERSION@|$(POSTGRESQL_VERSION)|g" $(STAGING_DIR)/usr/bin/pg_config
$(SED) "s|@TARGET_CFLAGS@|$(TARGET_CFLAGS)|g" $(STAGING_DIR)/usr/bin/pg_config
$(SED) "s|@TARGET_CC@|$(TARGET_CC)|g" $(STAGING_DIR)/usr/bin/pg_config
endef
POSTGRESQL_POST_INSTALL_STAGING_HOOKS += POSTGRESQL_INSTALL_CUSTOM_PG_CONFIG
define POSTGRESQL_INSTALL_INIT_SYSV
$(INSTALL) -m 0755 -D package/postgresql/S50postgresql \
$(TARGET_DIR)/etc/init.d/S50postgresql
endef
define POSTGRESQL_INSTALL_INIT_SYSTEMD
$(INSTALL) -D -m 644 package/postgresql/postgresql.service \
$(TARGET_DIR)/usr/lib/systemd/system/postgresql.service
endef
$(eval $(autotools-package))

View File

@ -0,0 +1,27 @@
[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=notify
# start timeout disabled because initdb may run a little
# longer (eg. 5 minutes on RaspberryPi)
TimeoutStartSec=0
User=postgres
Group=postgres
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=postgres
ExecStartPre=/bin/sh -c "if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql; fi"
ExecStart=/usr/bin/postgres -D /var/lib/pgsql
ExecReload=/usr/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0
[Install]
WantedBy=multi-user.target