From 3cff2a70e2b9eef086f3553dafdb378f963eb8c2 Mon Sep 17 00:00:00 2001 From: Xin LI Date: Fri, 1 Mar 2024 23:24:35 -0800 Subject: [PATCH] www/redmine51: Add new port Redmine is a flexible project management web application written using Ruby on Rails framework, it is cross-platform and cross-database. PR: ports/277661 --- www/Makefile | 1 + www/redmine50/Makefile | 2 +- www/redmine51/Makefile | 124 ++ www/redmine51/distinfo | 3 + www/redmine51/files/commonmark.rb | 2 + www/redmine51/files/markdown.rb | 1 + www/redmine51/files/mini_magick.rb | 1 + www/redmine51/files/mysql.rb | 2 + www/redmine51/files/patch-Gemfile | 123 ++ www/redmine51/files/pg.rb | 1 + www/redmine51/files/redmine.in | 39 + www/redmine51/files/thin.rb | 1 + www/redmine51/pkg-descr | 21 + www/redmine51/pkg-message | 18 + www/redmine51/pkg-plist | 2275 ++++++++++++++++++++++++++++ 15 files changed, 2613 insertions(+), 1 deletion(-) create mode 100644 www/redmine51/Makefile create mode 100644 www/redmine51/distinfo create mode 100644 www/redmine51/files/commonmark.rb create mode 100644 www/redmine51/files/markdown.rb create mode 100644 www/redmine51/files/mini_magick.rb create mode 100644 www/redmine51/files/mysql.rb create mode 100644 www/redmine51/files/patch-Gemfile create mode 100644 www/redmine51/files/pg.rb create mode 100644 www/redmine51/files/redmine.in create mode 100644 www/redmine51/files/thin.rb create mode 100644 www/redmine51/pkg-descr create mode 100644 www/redmine51/pkg-message create mode 100644 www/redmine51/pkg-plist diff --git a/www/Makefile b/www/Makefile index bba5288de4..5ff86cbbc7 100644 --- a/www/Makefile +++ b/www/Makefile @@ -1914,6 +1914,7 @@ SUBDIR += rearx SUBDIR += reddsaver SUBDIR += redmine50 + SUBDIR += redmine51 SUBDIR += rejik SUBDIR += remark42 SUBDIR += reportmagic diff --git a/www/redmine50/Makefile b/www/redmine50/Makefile index 0ddbbe96fa..73ce477527 100644 --- a/www/redmine50/Makefile +++ b/www/redmine50/Makefile @@ -51,7 +51,7 @@ RUN_DEPENDS+= rubygem-redcarpet>=3.5.1:textproc/rubygem-redcarpet \ USES= cpe ruby BROKEN_RUBY32= yes -CONFLICTS_INSTALL= redmine42 +CONFLICTS_INSTALL= redmine42 redmine51 NO_ARCH= yes NO_BUILD= yes diff --git a/www/redmine51/Makefile b/www/redmine51/Makefile new file mode 100644 index 0000000000..130a6adaae --- /dev/null +++ b/www/redmine51/Makefile @@ -0,0 +1,124 @@ +PORTNAME= redmine +PORTVERSION= 5.1.2 +CATEGORIES= www +MASTER_SITES= https://www.redmine.org/releases/ +PKGNAMESUFFIX= 51 + +MAINTAINER= delphij@FreeBSD.org +COMMENT= Flexible project management web application +WWW= https://www.redmine.org/ + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/doc/COPYING + +RUN_DEPENDS= rubygem-actionpack-xml_parser-rails61>=0:textproc/rubygem-actionpack-xml_parser-rails61 \ + rubygem-addressable>0:www/rubygem-addressable \ + rubygem-bundler>=1.12.0:sysutils/rubygem-bundler \ + rubygem-csv>=3.2.6:devel/rubygem-csv \ + rubygem-erb>0:devel/rubygem-erb \ + rubygem-globalid-rails61>0:databases/rubygem-globalid-rails61 \ + rubygem-i18n>=1.14.1:devel/rubygem-i18n \ + rubygem-mail>=2.8.1:mail/rubygem-mail \ + rubygem-marcel>0:devel/rubygem-marcel \ + rubygem-mini_mime>=1.1.0:mail/rubygem-mini_mime \ + rubygem-mini_portile2>=2.8.2:devel/rubygem-mini_portile2 \ + rubygem-mocha>=0.5.3:devel/rubygem-mocha \ + rubygem-net-imap>=0.3.4:mail/rubygem-net-imap \ + rubygem-net-ldap>=0.17.0:net/rubygem-net-ldap \ + rubygem-net-pop>=0.1.2:mail/rubygem-net-pop \ + rubygem-net-smtp>=0.3.3:mail/rubygem-net-smtp \ + rubygem-nokogiri>=1.15.2:textproc/rubygem-nokogiri \ + rubygem-psych>0:textproc/rubygem-psych \ + rubygem-rails61>=6.1:www/rubygem-rails61 \ + rubygem-rbpdf>=1.21.3:print/rubygem-rbpdf \ + rubygem-request_store15>=1.5.1:devel/rubygem-request_store15 \ + rubygem-roadie-rails-rails61>=3.1.0:mail/rubygem-roadie-rails-rails61 \ + rubygem-rotp>=5.0.0:devel/rubygem-rotp \ + rubygem-rouge>=4.2.0:textproc/rubygem-rouge \ + rubygem-rqrcode>0:www/rubygem-rqrcode \ + rubygem-rubocop-performance>=0:devel/rubygem-rubocop-performance \ + rubygem-rubocop-rails>0:devel/rubygem-rubocop-rails \ + rubygem-rubocop>0<2:devel/rubygem-rubocop \ + rubygem-rubyzip>0:archivers/rubygem-rubyzip \ + rubygem-simplecov>0:devel/rubygem-simplecov + +# Per https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=264638#c9 +# to be removed if https://www.redmine.org/issues/37394 is fixed +RUN_DEPENDS+= rubygem-redcarpet>=3.6.0:textproc/rubygem-redcarpet \ + rubygem-html-pipeline>=2.13.2:textproc/rubygem-html-pipeline \ + rubygem-commonmarker>=0.23.8:textproc/rubygem-commonmarker \ + rubygem-sanitize>=6.0:textproc/rubygem-sanitize \ + rubygem-deckar01-task_list>=2.3.2:www/rubygem-deckar01-task_list + +USES= cpe ruby + +NO_ARCH= yes +NO_BUILD= yes + +USERS= ${WWWOWN} +GROUPS= ${WWWGRP} +PLIST_SUB= WWWOWN=${WWWOWN} WWWGRP=${WWWGRP} +SUB_LIST= RUBY_SUFFIX=${RUBY_SUFFIX} + +OPTIONS_DEFINE= MYSQL POSTGRESQL MARKDOWN RMAGIC THIN +OPTIONS_DEFAULT=MYSQL MARKDOWN RMAGIC THIN +OPTIONS_SUB= yes +POSTGRESQL_DESC=Enable PostgreSQL support +MARKDOWN_DESC= Enable Markdown support +RMAGIC_DESC= Enable Gantt charts support +THIN_DESC= Use Thin WEB server +MYSQL_DESC= MySQL database support (via mysql2 rubygem) +NO_OPTIONS_SORT= yes +MYSQL_RUN_DEPENDS= rubygem-mysql2>=0.5.0:databases/rubygem-mysql2 \ + rubygem-with_advisory_lock>0:devel/rubygem-with_advisory_lock +POSTGRESQL_RUN_DEPENDS= rubygem-pg>=1.2.2:databases/rubygem-pg +MARKDOWN_RUN_DEPENDS= rubygem-redcarpet>=3.5.1:textproc/rubygem-redcarpet +RMAGIC_RUN_DEPENDS= rubygem-mini_magick>=4.11.0:graphics/rubygem-mini_magick +THIN_RUN_DEPENDS= rubygem-thin>=1.6.2:www/rubygem-thin +THIN_SUB_LIST= WWWOWN=${WWWOWN} WWWGRP=${WWWGRP} +THIN_VARS= USE_RC_SUBR=redmine + +.include + +post-extract: + @${RM} -r ${WRKSRC}/.hgignore ${WRKSRC}/.gitignore ${WRKSRC}/.github \ + ${WRKSRC}/files/delete.me ${WRKSRC}/log/delete.me + @${MV} ${WRKSRC}/config/settings.yml ${WRKSRC}/config/settings.yml.sample + @${MV} ${WRKSRC}/config/database.yml.example ${WRKSRC}/config/database.yml.sample + +post-patch: + @${RM} ${WRKSRC}/Gemfile.orig + +do-install: + ${MKDIR} ${STAGEDIR}${WWWDIR} + ${MKDIR} ${STAGEDIR}${WWWDIR}/bundler.d + ${MKDIR} ${STAGEDIR}${WWWDIR}/log + ${MKDIR} ${STAGEDIR}${WWWDIR}/public/plugin_assets + ${MKDIR} ${STAGEDIR}${WWWDIR}/tmp + + # https://www.redmine.org/issues/37394 + ${CP} ${FILESDIR}/commonmark.rb ${STAGEDIR}${WWWDIR}/bundler.d + cd ${WRKSRC} && ${COPYTREE_SHARE} . ${STAGEDIR}${WWWDIR} + ${TOUCH} ${STAGEDIR}${WWWDIR}/Gemfile.lock + +do-install-MYSQL-on: + ${CP} ${FILESDIR}/mysql.rb ${STAGEDIR}${WWWDIR}/bundler.d + +do-install-POSTGRESQL-on: + ${CP} ${FILESDIR}/pg.rb ${STAGEDIR}${WWWDIR}/bundler.d + +do-install-MARKDOWN-on: + ${CP} ${FILESDIR}/markdown.rb ${STAGEDIR}${WWWDIR}/bundler.d + +do-install-RMAGIC-on: + ${CP} ${FILESDIR}/mini_magick.rb ${STAGEDIR}${WWWDIR}/bundler.d + +do-install-THIN-on: + ${CP} ${FILESDIR}/thin.rb ${STAGEDIR}${WWWDIR}/bundler.d + +post-install: + (cd ${STAGEDIR}${WWWDIR} && ${RM} Gemfile.lock && bundle install --local) + ${RM} ${STAGEDIR}${WWWDIR}/package.json \ + ${STAGEDIR}${WWWDIR}/yarn.lock + +.include diff --git a/www/redmine51/distinfo b/www/redmine51/distinfo new file mode 100644 index 0000000000..c5c6868500 --- /dev/null +++ b/www/redmine51/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1710196029 +SHA256 (redmine-5.1.2.tar.gz) = 26c0ca0a9aaee1ceb983825bf1266c99b0850bf013c178713f5a3b0080012123 +SIZE (redmine-5.1.2.tar.gz) = 3249396 diff --git a/www/redmine51/files/commonmark.rb b/www/redmine51/files/commonmark.rb new file mode 100644 index 0000000000..45c9b6df5d --- /dev/null +++ b/www/redmine51/files/commonmark.rb @@ -0,0 +1,2 @@ +gem "commonmarker", ">= 0.23.8" +gem "deckar01-task_list", ">=2.3.2" diff --git a/www/redmine51/files/markdown.rb b/www/redmine51/files/markdown.rb new file mode 100644 index 0000000000..2e9cf42a29 --- /dev/null +++ b/www/redmine51/files/markdown.rb @@ -0,0 +1 @@ +gem "redcarpet", '~> 3.6.0' diff --git a/www/redmine51/files/mini_magick.rb b/www/redmine51/files/mini_magick.rb new file mode 100644 index 0000000000..5e3d7b1cac --- /dev/null +++ b/www/redmine51/files/mini_magick.rb @@ -0,0 +1 @@ +gem "mini_magick", ">= 4.12.0" diff --git a/www/redmine51/files/mysql.rb b/www/redmine51/files/mysql.rb new file mode 100644 index 0000000000..9d2627e1d8 --- /dev/null +++ b/www/redmine51/files/mysql.rb @@ -0,0 +1,2 @@ +gem "mysql2", "~> 0.5.0" +gem "with_advisory_lock" diff --git a/www/redmine51/files/patch-Gemfile b/www/redmine51/files/patch-Gemfile new file mode 100644 index 0000000000..f676c9fde3 --- /dev/null +++ b/www/redmine51/files/patch-Gemfile @@ -0,0 +1,123 @@ +--- Gemfile.orig 2023-11-27 20:30:03 UTC ++++ Gemfile +@@ -10,7 +10,7 @@ gem 'mail', '~> 2.8.1' + gem 'roadie-rails', '~> 3.1.0' + gem 'marcel' + gem 'mail', '~> 2.8.1' +-gem 'nokogiri', '~> 1.15.2' ++gem 'nokogiri', '~> 1.15' + gem 'i18n', '~> 1.14.1' + gem 'rbpdf', '~> 1.21.3' + gem 'addressable' +@@ -18,9 +18,9 @@ gem 'csv', '~> 3.2.6' + + # Ruby Standard Gems + gem 'csv', '~> 3.2.6' +-gem 'net-imap', '~> 0.3.4' ++gem 'net-imap', '~> 0.3' + gem 'net-pop', '~> 0.1.2' +-gem 'net-smtp', '~> 0.3.3' ++gem 'net-smtp', '~> 0.3' + gem 'rexml', require: false if Gem.ruby_version >= Gem::Version.new('3.0') + + # Windows does not include zoneinfo files, so bundle the tzinfo-data gem +@@ -31,88 +31,14 @@ gem 'rqrcode' + gem 'rqrcode' + + # HTML pipeline and sanitization +-gem "html-pipeline", "~> 2.13.2" ++gem "html-pipeline", "~> 2.13" + gem "sanitize", "~> 6.0" + + # Optional gem for LDAP authentication + group :ldap do +- gem 'net-ldap', '~> 0.17.0' ++ gem 'net-ldap', '~> 0.17' + end + +-# Optional gem for exporting the gantt to a PNG file +-group :minimagick do +- gem 'mini_magick', '~> 4.12.0' +-end +- +-# Optional Markdown support +-group :markdown do +- gem 'redcarpet', '~> 3.6.0' +-end +- +-# Optional CommonMark support, not for JRuby +-group :common_mark do +- gem "commonmarker", '~> 0.23.8' +- gem 'deckar01-task_list', '2.3.2' +-end +- +-# Include database gems for the adapters found in the database +-# configuration file +-require 'erb' +-require 'yaml' +-database_file = File.join(File.dirname(__FILE__), "config/database.yml") +-if File.exist?(database_file) +- yaml_config = ERB.new(IO.read(database_file)).result +- database_config = YAML.respond_to?(:unsafe_load) ? YAML.unsafe_load(yaml_config) : YAML.load(yaml_config) +- adapters = database_config.values.filter_map {|c| c['adapter']}.uniq +- if adapters.any? +- adapters.each do |adapter| +- case adapter +- when 'mysql2' +- gem "mysql2", "~> 0.5.0", :platforms => [:mri, :mingw, :x64_mingw] +- gem "with_advisory_lock" +- when /postgresql/ +- gem 'pg', '~> 1.5.3', :platforms => [:mri, :mingw, :x64_mingw] +- when /sqlite3/ +- gem 'sqlite3', '~> 1.6.0', :platforms => [:mri, :mingw, :x64_mingw] +- when /sqlserver/ +- gem "tiny_tds", "~> 2.1.2", :platforms => [:mri, :mingw, :x64_mingw] +- gem "activerecord-sqlserver-adapter", "~> 6.1.0", :platforms => [:mri, :mingw, :x64_mingw] +- else +- warn("Unknown database adapter `#{adapter}` found in config/database.yml, use Gemfile.local to load your own database gems") +- end +- end +- else +- warn("No adapter found in config/database.yml, please configure it first") +- end +-else +- warn("Please configure your config/database.yml first") +-end +- +-group :development do +- gem 'listen', '~> 3.3' +- gem "yard" +-end +- +-group :test do +- gem "rails-dom-testing" +- gem 'mocha', '>= 2.0.1' +- gem 'simplecov', '~> 0.22.0', :require => false +- gem "ffi", platforms: [:mingw, :x64_mingw, :mswin] +- # For running system tests +- gem 'puma' +- gem "capybara", ">= 3.39" +- if Gem.ruby_version < Gem::Version.new('3.0') +- gem "selenium-webdriver", "<= 4.9.0" +- gem "webdrivers", require: false +- else +- gem "selenium-webdriver", ">= 4.11.0" +- end +- # RuboCop +- gem 'rubocop', '~> 1.57.0', require: false +- gem 'rubocop-performance', '~> 1.19.0', require: false +- gem 'rubocop-rails', '~> 2.22.1', require: false +-end +- + local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local") + if File.exist?(local_gemfile) + eval_gemfile local_gemfile +@@ -121,4 +47,8 @@ Dir.glob File.expand_path("../plugins/*/{Gemfile,Plugi + # Load plugins' Gemfiles + Dir.glob File.expand_path("../plugins/*/{Gemfile,PluginGemfile}", __FILE__) do |file| + eval_gemfile file ++end ++ ++Dir["#{File.dirname(__FILE__)}/bundler.d/*.rb"].each do |bundle| ++ self.instance_eval(Bundler.read_file(bundle)) + end diff --git a/www/redmine51/files/pg.rb b/www/redmine51/files/pg.rb new file mode 100644 index 0000000000..9764e55e7a --- /dev/null +++ b/www/redmine51/files/pg.rb @@ -0,0 +1 @@ +gem "pg", "> 1.5.3" diff --git a/www/redmine51/files/redmine.in b/www/redmine51/files/redmine.in new file mode 100644 index 0000000000..00c82fa55d --- /dev/null +++ b/www/redmine51/files/redmine.in @@ -0,0 +1,39 @@ +#!/bin/sh + +# PROVIDE: redmine +# REQUIRE: LOGIN +# KEYWORD: shutdown + +# Add the following line to /etc/rc.conf[.local] to enable redmine +# +# redmine_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable redmine. +# redmine_flags (str): Custom additional arguments to be passed +# to redmine. +# redmine_user (str): User account to run thin with. (default: %%WWWOWN%%) +# redmine_group (str): Group to run thin with. (default: %%WWWGRP%%) + +. /etc/rc.subr + +name="redmine" +rcvar=redmine_enable +command=ruby%%RUBY_SUFFIX%% + +pidfile="%%WWWDIR%%/tmp/pids/thin.pid" +logfile="/var/log/thin.log" + +load_rc_config $name + +# add /usr/local/bin to path +export PATH=$PATH:%%PREFIX%%/bin + +# set defaults +: ${redmine_enable="NO"} +: ${redmine_flags="-a 0.0.0.0 -p 3000 -e production"} +: ${redmine_user="%%WWWOWN%%"} +: ${redmine_group="%%WWWGRP%%"} + +command_args="-d -D -c %%WWWDIR%% -u ${redmine_user} -g ${redmine_group} --log ${logfile}" +start_cmd="%%PREFIX%%/bin/thin ${command_args} ${redmine_flags} start" + +run_rc_command "$1" diff --git a/www/redmine51/files/thin.rb b/www/redmine51/files/thin.rb new file mode 100644 index 0000000000..40b0486c1d --- /dev/null +++ b/www/redmine51/files/thin.rb @@ -0,0 +1 @@ +gem "thin", ">= 1.6.2" diff --git a/www/redmine51/pkg-descr b/www/redmine51/pkg-descr new file mode 100644 index 0000000000..05b0f6fb97 --- /dev/null +++ b/www/redmine51/pkg-descr @@ -0,0 +1,21 @@ +Redmine is a flexible project management web application +written using Ruby on Rails framework, it is cross-platform +and cross-database. + +Feature Overview: +* Multiple projects support +* Flexible role based access control +* Flexible issue tracking system +* Gantt chart and calendar +* News, documents & files management +* Feeds & email notifications +* Per project wiki +* Per project forums +* Time tracking +* Custom fields for issues, time-entries, projects and users +* SCM integration (SVN, CVS, Git, Mercurial, Bazaar and Darcs) +* Issue creation via email +* Multiple LDAP authentication support +* User self-registration support +* Multilanguage support +* Multiple databases support diff --git a/www/redmine51/pkg-message b/www/redmine51/pkg-message new file mode 100644 index 0000000000..41fa764163 --- /dev/null +++ b/www/redmine51/pkg-message @@ -0,0 +1,18 @@ +[ +{ type: install + message: <