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
Reviewed by:	mikael
This commit is contained in:
Xin LI 2024-03-31 22:41:13 -07:00
commit 1932cdae48

View file

@ -1914,6 +1914,7 @@
SUBDIR += rearx
SUBDIR += reddsaver
SUBDIR += redmine50
SUBDIR += redmine51
SUBDIR += rejik
SUBDIR += remark42
SUBDIR += reportmagic

124
www/redmine51/Makefile Normal file
View file

@ -0,0 +1,124 @@
PORTNAME= redmine
PORTVERSION= 5.1.2
CATEGORIES= www
MASTER_SITES= https://www.redmine.org/releases/
PKGNAMESUFFIX= 51
# mikael@FreeBSD.org also have full maintainership
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-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_lock61>0:devel/rubygem-with_advisory_lock61
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 <bsd.port.options.mk>
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 <bsd.port.mk>

View file

@ -0,0 +1,78 @@
# Module that simplifies installation of Redmine plugins.
#
# Date created: 2010-09-12
# Whom: Eygene Ryabinkin <rea-fbsd@codelabs.ru>
#
# We're assuming standard plugin installation sequence that is described
# in the https://www.redmine.org/projects/redmine/wiki/Plugins
#
# Basically, we need the following variables to be defined:
# - REDMINE_PLUGIN_NAME: the name of the plugin;
# - WWWDIR: the location of the Redmine installation;
# the default value is ${PREFIX}/www/redmine;
# the directory must lie under ${PREFIX} or such configuration
# will be IGNORE'd;
# - WRKSRC must be set to the root directory of the plugin contents:
# we will copy all objects in this directory to the plugin's
# destination directory, excluding all files named *.orig.
#
# PLIST will be generated automatically, there is no need to worry
# about it. But if you will need to use your own (even the standard
# packaging list in ${PORTDIR}/pkg-plist), set the variable PLIST
# pointing to that file.
#
# You can override the target 'do-build', but in this case, you should
# remember that the target named 'redmine-plugin-plist' does the
# automated generation of the PLIST: use it if you need.
#
#
# Here is an example of a simple Makefile for Redmine plugin:
# {{{
# PORTNAME= me-the-plugin
# PORTVERSION= 1.0
# CATEGORIES= www
# MASTER_SITES= http://cool.org.name/some/path/
#
# MAINTAINER= you@your.org
# COMMENT= Another cool plugin for Redmine
#
# REDMINE_PLUGIN_NAME= redmine_http_auth
#
# .include "${.CURDIR}/../../www/redmine/bsd.redmine.mk"
# }}}
PKGNAMEPREFIX?= redmine51-
RUN_DEPENDS+= redmine51>0:www/redmine51
USE_RUBY= yes
.if !defined(PLIST)
PLIST= ${WRKDIR}/PLIST
_GEN_PLIST= YesPlease
.endif
WWWDIR?= ${PREFIX}/www/redmine
WWWDIR_REL= ${WWWDIR:S|^${PREFIX}/||}
.if ${WWWDIR_REL} == ${WWWDIR}
IGNORE= WWWDIR is not a child of PREFIX (${PREFIX})
.endif
.if !defined(do-build)
do-build: redmine-plugin-plist
@${DO_NADA}
.endif
redmine-plugin-plist:
.if defined(_GEN_PLIST)
cd ${WRKSRC} && ${FIND} . -type f | ${GREP} -v '\.orig$$' | ${SED} -e's|^\.|${WWWDIR_REL}/plugins/${REDMINE_PLUGIN_NAME}|' >> ${PLIST}
cd ${WRKSRC} && ${FIND} -d . -empty -type d | ${SED} -e's|^\.|@dir ${WWWDIR_REL}/plugins/${REDMINE_PLUGIN_NAME}|' >> ${PLIST}
.else
@${DO_NADA}
.endif
do-install:
${MKDIR} "${STAGEDIR}${WWWDIR}/plugins/${REDMINE_PLUGIN_NAME}"
${TAR} -C "${WRKSRC}" -cf - --exclude '*.orig' . | ${TAR} -C "${STAGEDIR}${WWWDIR}/plugins/${REDMINE_PLUGIN_NAME}" -xf -
.include <bsd.port.mk>

3
www/redmine51/distinfo Normal file
View file

@ -0,0 +1,3 @@
TIMESTAMP = 1710196029
SHA256 (redmine-5.1.2.tar.gz) = 26c0ca0a9aaee1ceb983825bf1266c99b0850bf013c178713f5a3b0080012123
SIZE (redmine-5.1.2.tar.gz) = 3249396

View file

@ -0,0 +1,2 @@
gem "commonmarker", ">= 0.23.8"
gem "deckar01-task_list", ">=2.3.2"

View file

@ -0,0 +1 @@
gem "redcarpet", '~> 3.6.0'

View file

@ -0,0 +1 @@
gem "mini_magick", ">= 4.12.0"

View file

@ -0,0 +1,2 @@
gem "mysql2", "~> 0.5.0"
gem "with_advisory_lock"

View file

@ -0,0 +1,124 @@
--- Gemfile.orig 2024-03-04 19:55:03 UTC
+++ Gemfile
@@ -10,17 +10,17 @@ 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'
gem 'rubyzip', '~> 2.3.0'
# Ruby Standard Gems
-gem 'csv', '~> 3.2.6'
-gem 'net-imap', '~> 0.3.4'
+gem 'csv', '~> 3.2'
+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

View file

@ -0,0 +1 @@
gem "pg", "> 1.5.3"

View file

@ -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"

View file

@ -0,0 +1 @@
gem "thin", ">= 1.6.2"

21
www/redmine51/pkg-descr Normal file
View file

@ -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

18
www/redmine51/pkg-message Normal file
View file

@ -0,0 +1,18 @@
[
{ type: install
message: <<EOM
Redmine was installed.
You now need to setup your Redmine installation so
please have a look at the Installation Guide.
https://www.redmine.org/projects/redmine/wiki/RedmineInstall
If you are upgrading please read the Upgrading Guide
before starting the new version.
https://www.redmine.org/projects/redmine/wiki/RedmineUpgrade
EOM
}
]

2275
www/redmine51/pkg-plist Normal file

File diff suppressed because it is too large Load diff