diff --git a/MOVED b/MOVED index 7f91b9a3adbf..249bef301f4d 100644 --- a/MOVED +++ b/MOVED @@ -4221,7 +4221,6 @@ www/ytdl|www/yt-dlp|2025-03-24|ytdl doesn't work and is archived upstream, www/y textproc/py-docstring-parser|textproc/py-docstring_parser|2025-03-25|Renamed to match upstream naming www/py-flask-security||2025-03-31|Has expired: Depends on expired devel/py-pytest-runner devel/py-aiocontextvars||2025-03-31|Has expired: Depends on expired devel/py-pytest-runner -finance/odoo||2025-03-31|Has expired: Depends on expired print/py-pypdf2 converters/libutf-8||2025-03-31|Has expired: Upstream disapeared and distfile is no more available science/py-moltemplate||2025-03-31|Has expired: Depends on expired devel/py-pytest-runner math/py-numdifftools||2025-03-31|Has expired: Depends on expired devel/py-pytest-runner @@ -4250,7 +4249,6 @@ net/opensips31||2025-03-31|Has expired: Deprecated upstream security/py-python-jose||2025-03-31|Has expired: Depends on expired devel/py-pytest-runner textproc/rubygem-nokogumbo||2025-03-31|Has expired: Upstream has merged into textproc/rubygem-nokogiri net/libmediawiki||2025-03-31|Has expired: Project abandoned upstream -finance/odoo16||2025-03-31|Has expired: Depends on expired print/py-pypdf2 net/py-tacacs_plus||2025-03-31|Has expired: Depends on expired devel/py-pytest-runner devel/py-imgkit||2025-03-31|Has expired: Depends on expired converters/wkhtmltopdf sysutils/py-google-compute-engine||2025-03-31|Has expired: Depends on expired devel/py-boto @@ -4265,7 +4263,6 @@ textproc/p5-PDF-WebKit||2025-03-31|Has expired: Depends on expired converters/wk net-im/py-telepot||2025-03-31|Has expired: Upstream repository has been archived on Jun 2, 2019 multimedia/msdl||2025-03-31|Has expired: Obsolete utility for obsolete protocols net-im/sayaka||2025-03-31|Has expired: Depends on expired security/mbedtls2 -finance/odoo17||2025-03-31|Has expired: Depends on expired print/py-pypdf2 databases/grass7|databases/grass8|2025-03-31|Has expired: Please use databases/grass8 multimedia/tcmplex-panteltje||2025-03-31|Has expired: Abandonware, upstream is gone and no consumers in tree games/minecraft-client||2025-03-31|Has expired: dead upstream, no longer functional diff --git a/finance/Makefile b/finance/Makefile index 3e8b24876cb2..64d9d880c75e 100644 --- a/finance/Makefile +++ b/finance/Makefile @@ -54,6 +54,9 @@ SUBDIR += moneymanagerex SUBDIR += myphpmoney SUBDIR += nextcloud-cospend + SUBDIR += odoo + SUBDIR += odoo16 + SUBDIR += odoo17 SUBDIR += ord SUBDIR += p5-Business-CreditCard SUBDIR += p5-Business-MaxMind-CreditCardFraudDetection diff --git a/finance/odoo/Makefile b/finance/odoo/Makefile new file mode 100644 index 000000000000..f15da50ac39b --- /dev/null +++ b/finance/odoo/Makefile @@ -0,0 +1,110 @@ +PORTNAME= odoo +PORTVERSION= 18.0.20250108 +PORTREVISION= 1 +CATEGORIES= finance www +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= acm@FreeBSD.org +COMMENT= Suite of web based open source business apps +WWW= https://www.odoo.com + +LICENSE= LGPL3 + +DERPECATED= Depends on expired print/py-pypdf2 +EXPIRATION_DATE=2025-03-31 + +USE_GITHUB= yes +GH_TAGNAME= aaa05b66fc789e8b76ba5223c08b9a8ef5179808 + +LIB_DEPENDS= libxslt.so:textproc/libxslt \ + libevent.so:devel/libevent \ + libsasl2.so:security/cyrus-sasl2 +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}Babel>=1.3:devel/py-babel@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}GeoIP2>0:net/py-GeoIP2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}XlsxWriter>=0:textproc/py-xlsxwriter@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}asn1crypto>=0:devel/py-asn1crypto@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}cbor2>0:devel/py-cbor2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}chardet>=0:textproc/py-chardet@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}decorator>0:devel/py-decorator@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}docutils>=0:textproc/py-docutils@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}freezegun>0:devel/py-freezegun@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}gevent>=0:devel/py-gevent@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}greenlet>=0:devel/py-greenlet@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}html2text>=0:textproc/py-html2text@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}idna>0:dns/py-idna@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}libsass>0:www/py-libsass@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}lxml-html-clean>=0:devel/py-lxml-html-clean@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}lxml>=0:devel/py-lxml@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}mako>=0:textproc/py-mako@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}markupsafe>=0:textproc/py-markupsafe@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}mock>=0:devel/py-mock@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}num2words>=0:devel/py-num2words@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}ofxparse>=0.20:finance/py-ofxparse@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}openpyxl>0:textproc/py-openpyxl@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}openssl>0:security/py-openssl@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}passlib>0:security/py-passlib@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pillow>=7.0.0:graphics/py-pillow@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}polib>=0:devel/py-polib@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}psutil>0:sysutils/py-psutil@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}psycopg2>0:databases/py-psycopg2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pydot>=0:graphics/py-pydot@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyparsing>=0:devel/py-pyparsing@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pypdf2>0:print/py-pypdf2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyserial>=0:comms/py-pyserial@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}python-dateutil>=0:devel/py-python-dateutil@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}python-ldap>=0:net/py-python-ldap@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pytz>=0:devel/py-pytz@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyusb>=0:devel/py-pyusb@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}qrcode>=0:textproc/py-qrcode@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}reportlab>0:print/py-reportlab@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}rjsmin>0:archivers/py-rjsmin@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}stdnum>0:devel/py-stdnum@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}urllib3>0:net/py-urllib3@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}vobject>=0:deskutils/py-vobject@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}werkzeug>0:www/py-werkzeug@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}xlrd>=1.2.0:textproc/py-xlrd@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}xlwt>=1.3.0:textproc/py-xlwt@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}zeep>=0:net/py-zeep@${PY_FLAVOR} + +USES= cpe gnome ldap python pgsql shebangfix +USE_GNOME= libxml2 +USE_PYTHON= cryptography distutils + +SHEBANG_LANG= python +SHEBANG_FILES= ${WRKSRC}/${PORTNAME}/addons/web/tooling/*.sh \ + ${WRKSRC}/${PORTNAME}/addons/web/tooling/hooks/pre-commit \ + ${WRKSRC}/${PORTNAME}/addons/mail/static/scripts/odoo-mailgate.py \ + ${WRKSRC}/${PORTNAME}-bin + +USERS= odoo +GROUPS= ${USERS} + +USE_RC_SUBR= ${PORTNAME} +SUB_FILES= pkg-message + +CONFLICTS= odoo14 odoo15 odoo16 odoo17 + +ETCDIR= ${PREFIX}/etc/odoo + +.include + +.if ${PYTHON_REL} < 31000 +IGNORE= odoo requires Python 3.10+ +.endif + +post-patch: + @${REINPLACE_CMD} -i "" -e 's|(index !== |(index == |g' \ + ${WRKSRC}/odoo/addons/web/static/src/core/network/download.js + +post-extract: + @cd ${WRKSRC}/addons/ && ${MV} * ${WRKSRC}/odoo/addons/ + +pre-install: + @${MKDIR} ${STAGEDIR}${ETCDIR} + +post-install: + @${INSTALL_SCRIPT} ${FILESDIR}/odoo.conf ${STAGEDIR}${ETCDIR}/odoo.conf.sample + +.include diff --git a/finance/odoo/distinfo b/finance/odoo/distinfo new file mode 100644 index 000000000000..caee49908ae9 --- /dev/null +++ b/finance/odoo/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1736413377 +SHA256 (odoo-odoo-18.0.20250108-aaa05b66fc789e8b76ba5223c08b9a8ef5179808_GH0.tar.gz) = 31ff11dcfad9cb29b1db76e844de7d2f1002f9a9b171702f4435493ffae916ef +SIZE (odoo-odoo-18.0.20250108-aaa05b66fc789e8b76ba5223c08b9a8ef5179808_GH0.tar.gz) = 177865603 diff --git a/finance/odoo/files/odoo.conf b/finance/odoo/files/odoo.conf new file mode 100644 index 000000000000..3f460b703cc5 --- /dev/null +++ b/finance/odoo/files/odoo.conf @@ -0,0 +1,7 @@ +[options] +#admin_passwd = secretpassword +db_host = localhost +db_port = 5432 +db_user = odoouser +db_password = odoopwd +;addons_path = /usr/local/lib/python3.11/site-packages/odoo/addons/ diff --git a/finance/odoo/files/odoo.in b/finance/odoo/files/odoo.in new file mode 100644 index 000000000000..1c1f3285e9f9 --- /dev/null +++ b/finance/odoo/files/odoo.in @@ -0,0 +1,115 @@ +#!/bin/sh + +# PROVIDE: odoo +# REQUIRE: NETWORKING +# KEYWORD: shutdown +# +# Configuration settings for odoo in /etc/rc.conf: +# +# odoo_enable: run odoo server (default=NO) +# odoo_database: define odoo database name (default=odoodb) +# odoo_datadir: directory where odoo store data (default=/var/lib/odoo) +# odoo_flags: additional flags for odoo server (default=--without-demo=all) +# + +. /etc/rc.subr + +name=odoo +rcvar=odoo_enable + +load_rc_config ${name} + +: ${odoo_enable:=NO} +: ${odoo_database:="odoodb"} +: ${odoo_datadir:="/var/lib/${name}"} +: ${odoo_flags="--without-demo=all"} + +odoo_user="odoo" +pidfile=/var/run/odoo.pid +extra_commands="initdb" + +su_cmd="/usr/bin/su" +chown_cmd="/usr/sbin/chown" +mkdir_cmd="/bin/mkdir" + +start_cmd="odoo_start" +stop_cmd="odoo_stop" +status_cmd="odoo_status" +restart_cmd="odoo_restart" +initdb_cmd="odoo_initdb" +start_precmd="odoo_start_precmd" + +command=/usr/local/bin/odoo +command_args="--database=${odoo_database} --data-dir=${odoo_datadir} --logfile=/var/log/${name}.log --config=%%LOCALBASE%%/etc/odoo/odoo.conf ${odoo_flags}" + +odoo_start_precmd() { + odoo_datadir_check + touch ${pidfile} + touch /var/log/${name}.log + ${chown_cmd} -R ${odoo_user}:${odoo_user} ${pidfile} + ${chown_cmd} -R ${odoo_user}:${odoo_user} /var/log/${name}.log +} + +odoo_start() +{ + daemon -p ${pidfile} -u ${odoo_user} \ + ${command} ${command_args} + echo "Starting ${name}" +} + +odoo_datadir_check() +{ + if [ ! -d "${odoo_datadir}" ]; then + ${mkdir_cmd} -p ${odoo_datadir} + ${chown_cmd} -R ${odoo_user}:${odoo_user} ${odoo_datadir} + echo "${name} data directory created" + fi +} + +odoo_initdb() +{ + echo " " + echo "#################################################################" + echo "# #" + echo "# Don't use initdb if you are updating from previous version of #" + echo "# Odoo. Cancel if this is your case (Ctrl + C) #" + echo "# #" + echo "#################################################################" + echo " " + sleep 10 + odoo_start_precmd + daemon -p ${pidfile} -u ${odoo_user} \ + ${command} ${command_args} -i all + echo "Initializing database and starting ${name} server" +} + +odoo_restart() +{ + echo "Performing restart ${name}" + odoo_stop + sleep 5 + odoo_start +} + +odoo_status() +{ + # If running, show pid + if [ -f ${pidfile} ] + then + echo "${name} is running as pid" `cat ${pidfile}` + else + echo "${name} is not running" + fi +} + +odoo_stop() +{ + if [ -f ${pidfile} ] + then + kill `cat ${pidfile}` + rm ${pidfile} + echo "Stopping ${name}" + fi +} + +run_rc_command "$1" diff --git a/finance/odoo/files/pkg-message.in b/finance/odoo/files/pkg-message.in new file mode 100644 index 000000000000..614bbe527eb3 --- /dev/null +++ b/finance/odoo/files/pkg-message.in @@ -0,0 +1,44 @@ +[ +{ type: install + message: <=1.3:devel/py-babel@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}XlsxWriter>=0:textproc/py-xlsxwriter@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}chardet>=0:textproc/py-chardet@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}decorator>0:devel/py-decorator@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}docutils>=0:textproc/py-docutils@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}ebaysdk>=2.1.3:finance/py-ebaysdk@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}feedparser>=0:textproc/py-feedparser@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}freezegun>0:devel/py-freezegun@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}gevent>=0:devel/py-gevent@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}greenlet>=0:devel/py-greenlet@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}html2text>=0:textproc/py-html2text@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}idna>0:dns/py-idna@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}libsass>0:www/py-libsass@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}lxml-html-clean>=0:devel/py-lxml-html-clean@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}lxml>=0:devel/py-lxml@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}mako>=0:textproc/py-mako@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}markupsafe>=0:textproc/py-markupsafe@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}mock>=0:devel/py-mock@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}num2words>=0:devel/py-num2words@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}ofxparse>=0.20:finance/py-ofxparse@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}openssl>0:security/py-openssl@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}passlib>0:security/py-passlib@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pillow>=7.0.0:graphics/py-pillow@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}polib>=0:devel/py-polib@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}psutil>0:sysutils/py-psutil@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}psycopg2>0:databases/py-psycopg2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pydot>=0:graphics/py-pydot@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyparsing>=0:devel/py-pyparsing@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pypdf2>0:print/py-pypdf2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyserial>=0:comms/py-pyserial@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}python-dateutil>=0:devel/py-python-dateutil@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}python-ldap>=0:net/py-python-ldap@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pytz>=0:devel/py-pytz@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyusb>=0:devel/py-pyusb@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}qrcode>=0:textproc/py-qrcode@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}reportlab>0:print/py-reportlab@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}secure-cookie>0:www/py-secure-cookie@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}stdnum>0:devel/py-stdnum@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}urllib3>0:net/py-urllib3@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}vatnumber>=0:finance/py-vatnumber@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}vobject>=0:deskutils/py-vobject@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}werkzeug>0:www/py-werkzeug@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}xlrd>=1.2.0:textproc/py-xlrd@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}xlwt>=1.3.0:textproc/py-xlwt@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}zeep>=0:net/py-zeep@${PY_FLAVOR} \ + +USES= cpe gnome ldap python pgsql shebangfix +USE_GNOME= libxml2 +USE_PYTHON= cryptography distutils + +SHEBANG_LANG= python +SHEBANG_FILES= ${WRKSRC}/${PORTNAME}/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init.d/odoo \ + ${WRKSRC}/${PORTNAME}/addons/web/static/lib/select2/release.sh \ + ${WRKSRC}/${PORTNAME}/addons/web/tooling/*.sh \ + ${WRKSRC}/${PORTNAME}/addons/web/tooling/hooks/pre-commit \ + ${WRKSRC}/${PORTNAME}/addons/mail/static/scripts/odoo-mailgate.py \ + ${WRKSRC}/${PORTNAME}-bin + +USERS= odoo +GROUPS= ${USERS} + +USE_RC_SUBR= ${PORTNAME} +SUB_FILES= pkg-message + +CONFLICTS= odoo odoo14 odoo15 odoo17 + +ETCDIR= ${PREFIX}/etc/odoo + +post-patch: + @${REINPLACE_CMD} -i "" -e 's|(index !== |(index == |g' \ + ${WRKSRC}/odoo/addons/web/static/src/legacy/js/libs/content-disposition.js \ + ${WRKSRC}/odoo/addons/web/static/src/core/network/download.js + @${RM} ${WRKSRC}/odoo/release.py.orig + +post-extract: + @cd ${WRKSRC}/addons/ && ${MV} * ${WRKSRC}/odoo/addons/ + +pre-install: + @${MKDIR} ${STAGEDIR}${ETCDIR} + +post-install: + @${INSTALL_SCRIPT} ${FILESDIR}/odoo.conf ${STAGEDIR}${ETCDIR}/odoo.conf.sample + +.include diff --git a/finance/odoo16/distinfo b/finance/odoo16/distinfo new file mode 100644 index 000000000000..775c515eb8bc --- /dev/null +++ b/finance/odoo16/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1736412559 +SHA256 (odoo-odoo-16.0.20250108-f4c41aa2836cd937cd476e50dcd494fc8549476a_GH0.tar.gz) = 423e87302ee593a117986333d4dd90251eafba27e41197042a4008d70486d0fa +SIZE (odoo-odoo-16.0.20250108-f4c41aa2836cd937cd476e50dcd494fc8549476a_GH0.tar.gz) = 165625561 diff --git a/finance/odoo16/files/odoo.conf b/finance/odoo16/files/odoo.conf new file mode 100644 index 000000000000..3f460b703cc5 --- /dev/null +++ b/finance/odoo16/files/odoo.conf @@ -0,0 +1,7 @@ +[options] +#admin_passwd = secretpassword +db_host = localhost +db_port = 5432 +db_user = odoouser +db_password = odoopwd +;addons_path = /usr/local/lib/python3.11/site-packages/odoo/addons/ diff --git a/finance/odoo16/files/odoo.in b/finance/odoo16/files/odoo.in new file mode 100644 index 000000000000..1c1f3285e9f9 --- /dev/null +++ b/finance/odoo16/files/odoo.in @@ -0,0 +1,115 @@ +#!/bin/sh + +# PROVIDE: odoo +# REQUIRE: NETWORKING +# KEYWORD: shutdown +# +# Configuration settings for odoo in /etc/rc.conf: +# +# odoo_enable: run odoo server (default=NO) +# odoo_database: define odoo database name (default=odoodb) +# odoo_datadir: directory where odoo store data (default=/var/lib/odoo) +# odoo_flags: additional flags for odoo server (default=--without-demo=all) +# + +. /etc/rc.subr + +name=odoo +rcvar=odoo_enable + +load_rc_config ${name} + +: ${odoo_enable:=NO} +: ${odoo_database:="odoodb"} +: ${odoo_datadir:="/var/lib/${name}"} +: ${odoo_flags="--without-demo=all"} + +odoo_user="odoo" +pidfile=/var/run/odoo.pid +extra_commands="initdb" + +su_cmd="/usr/bin/su" +chown_cmd="/usr/sbin/chown" +mkdir_cmd="/bin/mkdir" + +start_cmd="odoo_start" +stop_cmd="odoo_stop" +status_cmd="odoo_status" +restart_cmd="odoo_restart" +initdb_cmd="odoo_initdb" +start_precmd="odoo_start_precmd" + +command=/usr/local/bin/odoo +command_args="--database=${odoo_database} --data-dir=${odoo_datadir} --logfile=/var/log/${name}.log --config=%%LOCALBASE%%/etc/odoo/odoo.conf ${odoo_flags}" + +odoo_start_precmd() { + odoo_datadir_check + touch ${pidfile} + touch /var/log/${name}.log + ${chown_cmd} -R ${odoo_user}:${odoo_user} ${pidfile} + ${chown_cmd} -R ${odoo_user}:${odoo_user} /var/log/${name}.log +} + +odoo_start() +{ + daemon -p ${pidfile} -u ${odoo_user} \ + ${command} ${command_args} + echo "Starting ${name}" +} + +odoo_datadir_check() +{ + if [ ! -d "${odoo_datadir}" ]; then + ${mkdir_cmd} -p ${odoo_datadir} + ${chown_cmd} -R ${odoo_user}:${odoo_user} ${odoo_datadir} + echo "${name} data directory created" + fi +} + +odoo_initdb() +{ + echo " " + echo "#################################################################" + echo "# #" + echo "# Don't use initdb if you are updating from previous version of #" + echo "# Odoo. Cancel if this is your case (Ctrl + C) #" + echo "# #" + echo "#################################################################" + echo " " + sleep 10 + odoo_start_precmd + daemon -p ${pidfile} -u ${odoo_user} \ + ${command} ${command_args} -i all + echo "Initializing database and starting ${name} server" +} + +odoo_restart() +{ + echo "Performing restart ${name}" + odoo_stop + sleep 5 + odoo_start +} + +odoo_status() +{ + # If running, show pid + if [ -f ${pidfile} ] + then + echo "${name} is running as pid" `cat ${pidfile}` + else + echo "${name} is not running" + fi +} + +odoo_stop() +{ + if [ -f ${pidfile} ] + then + kill `cat ${pidfile}` + rm ${pidfile} + echo "Stopping ${name}" + fi +} + +run_rc_command "$1" diff --git a/finance/odoo16/files/pkg-message.in b/finance/odoo16/files/pkg-message.in new file mode 100644 index 000000000000..5e270da93bc9 --- /dev/null +++ b/finance/odoo16/files/pkg-message.in @@ -0,0 +1,44 @@ +[ +{ type: install + message: <=1.3:devel/py-babel@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}GeoIP2>0:net/py-GeoIP2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}XlsxWriter>=0:textproc/py-xlsxwriter@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}chardet>=0:textproc/py-chardet@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}decorator>0:devel/py-decorator@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}docutils>=0:textproc/py-docutils@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}ebaysdk>=2.1.3:finance/py-ebaysdk@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}feedparser>=0:textproc/py-feedparser@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}freezegun>0:devel/py-freezegun@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}gevent>=0:devel/py-gevent@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}greenlet>=0:devel/py-greenlet@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}html2text>=0:textproc/py-html2text@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}idna>0:dns/py-idna@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}libsass>0:www/py-libsass@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}lxml-html-clean>=0:devel/py-lxml-html-clean@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}lxml>=0:devel/py-lxml@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}mako>=0:textproc/py-mako@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}markupsafe>=0:textproc/py-markupsafe@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}mock>=0:devel/py-mock@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}num2words>=0:devel/py-num2words@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}ofxparse>=0.20:finance/py-ofxparse@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}openssl>0:security/py-openssl@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}passlib>0:security/py-passlib@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pillow>=7.0.0:graphics/py-pillow@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}polib>=0:devel/py-polib@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}psutil>0:sysutils/py-psutil@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}psycopg2>0:databases/py-psycopg2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pydot>=0:graphics/py-pydot@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyparsing>=0:devel/py-pyparsing@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pypdf2>0:print/py-pypdf2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyserial>=0:comms/py-pyserial@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}python-dateutil>=0:devel/py-python-dateutil@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}python-ldap>=0:net/py-python-ldap@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pytz>=0:devel/py-pytz@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyusb>=0:devel/py-pyusb@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}qrcode>=0:textproc/py-qrcode@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}reportlab>0:print/py-reportlab@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}rjsmin>0:archivers/py-rjsmin@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}secure-cookie>0:www/py-secure-cookie@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}stdnum>0:devel/py-stdnum@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}urllib3>0:net/py-urllib3@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}vatnumber>=0:finance/py-vatnumber@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}vobject>=0:deskutils/py-vobject@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}werkzeug>0:www/py-werkzeug@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}xlrd>=1.2.0:textproc/py-xlrd@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}xlwt>=1.3.0:textproc/py-xlwt@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}zeep>=0:net/py-zeep@${PY_FLAVOR} + +USES= cpe gnome ldap python pgsql shebangfix +USE_GNOME= libxml2 +USE_PYTHON= cryptography distutils + +SHEBANG_LANG= python +SHEBANG_FILES= ${WRKSRC}/${PORTNAME}/addons/web/static/lib/select2/release.sh \ + ${WRKSRC}/${PORTNAME}/addons/web/tooling/*.sh \ + ${WRKSRC}/${PORTNAME}/addons/web/tooling/hooks/pre-commit \ + ${WRKSRC}/${PORTNAME}/addons/mail/static/scripts/odoo-mailgate.py \ + ${WRKSRC}/${PORTNAME}-bin + +USERS= odoo +GROUPS= ${USERS} + +USE_RC_SUBR= ${PORTNAME} +SUB_FILES= pkg-message + +CONFLICTS= odoo14 odoo15 odoo16 odoo + +ETCDIR= ${PREFIX}/etc/odoo + +.include + +.if ${PYTHON_REL} < 31000 +IGNORE= odoo requires Python 3.10+ +.endif + +post-patch: + @${REINPLACE_CMD} -i "" -e 's|(index !== |(index == |g' \ + ${WRKSRC}/odoo/addons/web/static/src/core/network/download.js + +post-extract: + @cd ${WRKSRC}/addons/ && ${MV} * ${WRKSRC}/odoo/addons/ + +pre-install: + @${MKDIR} ${STAGEDIR}${ETCDIR} + +post-install: + @${INSTALL_SCRIPT} ${FILESDIR}/odoo.conf ${STAGEDIR}${ETCDIR}/odoo.conf.sample + +.include diff --git a/finance/odoo17/distinfo b/finance/odoo17/distinfo new file mode 100644 index 000000000000..a461c2c67a2b --- /dev/null +++ b/finance/odoo17/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1736413286 +SHA256 (odoo-odoo-17.0.20250108-a2657d18e61fa22619702b35a56376991d18cf80_GH0.tar.gz) = b532c3f79b41cd8456418fac6653c90e29adeadb5fd58105a3fe02c27e7d28cd +SIZE (odoo-odoo-17.0.20250108-a2657d18e61fa22619702b35a56376991d18cf80_GH0.tar.gz) = 165678428 diff --git a/finance/odoo17/files/odoo.conf b/finance/odoo17/files/odoo.conf new file mode 100644 index 000000000000..3f460b703cc5 --- /dev/null +++ b/finance/odoo17/files/odoo.conf @@ -0,0 +1,7 @@ +[options] +#admin_passwd = secretpassword +db_host = localhost +db_port = 5432 +db_user = odoouser +db_password = odoopwd +;addons_path = /usr/local/lib/python3.11/site-packages/odoo/addons/ diff --git a/finance/odoo17/files/odoo.in b/finance/odoo17/files/odoo.in new file mode 100644 index 000000000000..1c1f3285e9f9 --- /dev/null +++ b/finance/odoo17/files/odoo.in @@ -0,0 +1,115 @@ +#!/bin/sh + +# PROVIDE: odoo +# REQUIRE: NETWORKING +# KEYWORD: shutdown +# +# Configuration settings for odoo in /etc/rc.conf: +# +# odoo_enable: run odoo server (default=NO) +# odoo_database: define odoo database name (default=odoodb) +# odoo_datadir: directory where odoo store data (default=/var/lib/odoo) +# odoo_flags: additional flags for odoo server (default=--without-demo=all) +# + +. /etc/rc.subr + +name=odoo +rcvar=odoo_enable + +load_rc_config ${name} + +: ${odoo_enable:=NO} +: ${odoo_database:="odoodb"} +: ${odoo_datadir:="/var/lib/${name}"} +: ${odoo_flags="--without-demo=all"} + +odoo_user="odoo" +pidfile=/var/run/odoo.pid +extra_commands="initdb" + +su_cmd="/usr/bin/su" +chown_cmd="/usr/sbin/chown" +mkdir_cmd="/bin/mkdir" + +start_cmd="odoo_start" +stop_cmd="odoo_stop" +status_cmd="odoo_status" +restart_cmd="odoo_restart" +initdb_cmd="odoo_initdb" +start_precmd="odoo_start_precmd" + +command=/usr/local/bin/odoo +command_args="--database=${odoo_database} --data-dir=${odoo_datadir} --logfile=/var/log/${name}.log --config=%%LOCALBASE%%/etc/odoo/odoo.conf ${odoo_flags}" + +odoo_start_precmd() { + odoo_datadir_check + touch ${pidfile} + touch /var/log/${name}.log + ${chown_cmd} -R ${odoo_user}:${odoo_user} ${pidfile} + ${chown_cmd} -R ${odoo_user}:${odoo_user} /var/log/${name}.log +} + +odoo_start() +{ + daemon -p ${pidfile} -u ${odoo_user} \ + ${command} ${command_args} + echo "Starting ${name}" +} + +odoo_datadir_check() +{ + if [ ! -d "${odoo_datadir}" ]; then + ${mkdir_cmd} -p ${odoo_datadir} + ${chown_cmd} -R ${odoo_user}:${odoo_user} ${odoo_datadir} + echo "${name} data directory created" + fi +} + +odoo_initdb() +{ + echo " " + echo "#################################################################" + echo "# #" + echo "# Don't use initdb if you are updating from previous version of #" + echo "# Odoo. Cancel if this is your case (Ctrl + C) #" + echo "# #" + echo "#################################################################" + echo " " + sleep 10 + odoo_start_precmd + daemon -p ${pidfile} -u ${odoo_user} \ + ${command} ${command_args} -i all + echo "Initializing database and starting ${name} server" +} + +odoo_restart() +{ + echo "Performing restart ${name}" + odoo_stop + sleep 5 + odoo_start +} + +odoo_status() +{ + # If running, show pid + if [ -f ${pidfile} ] + then + echo "${name} is running as pid" `cat ${pidfile}` + else + echo "${name} is not running" + fi +} + +odoo_stop() +{ + if [ -f ${pidfile} ] + then + kill `cat ${pidfile}` + rm ${pidfile} + echo "Stopping ${name}" + fi +} + +run_rc_command "$1" diff --git a/finance/odoo17/files/pkg-message.in b/finance/odoo17/files/pkg-message.in new file mode 100644 index 000000000000..c090ea7a6e15 --- /dev/null +++ b/finance/odoo17/files/pkg-message.in @@ -0,0 +1,44 @@ +[ +{ type: install + message: <