Issue about adapting japanese/ruby-mecab to new options framework
Yasuhiro KIMURA
yasu at utahime.org
Sun Jan 27 17:17:14 UTC 2013
Hello all,
I adapted japanese/ruby-mecab to new options framework and sent
following PR.
http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/175258
But after submitting I found a issue that options setting dialog is
always displayed even if options save file is already created.
According to the output of 'make' with '-d' option, following things
seem to happen:
1. PKGNAMEPREFIX variable is assigned to "ja-" and that causes
OPTIONSFILE variable to be expanded to "/var/db/ports/ja-mecab/options".
2. /var/db/ports/ja-mecab/options is included as options save file.
3. PKGNAMEPREFIX is re-assigned to "ja-ruby19-" and that causes
OPTIONFILE to be expanded to "/var/db/ports/ja-ruby-mecab/options".
4. Options dialog is invoked and result is saved to /var/db/ports/ja-ruby-mecab/options.
5. Since input and output files of options setting are different,
dialog is displayed every time 'make' is invoked.
And below is detail:
01. RUBY_DEFAULT_VER is assigned to "1.9" in /etc/make.conf of my
machine.
02. PORTNAME is assigned to "mecab" in japanese/ruby-mecab/Makefile.
03. PKGNAMEPREFIX is assigned to "ja-" in japanese/Makefile.inc.
04. PORT_DBDIR is assigned to "/var/db/ports" in Mk/bsd.port.mk.
05. UNIQUENAME is assigned to "${PKGNAMEPREFIX}${PORTNAME}"
in Mk/bsd.port.mk.
06. OPTIONSFILE is assigned to "${PORT_DBDIR}/${UNIQUENAME}/options"
in Mk/bsd.options.mk.
07. Check is done if ${OPTIONSFILES} exists in Mk/bsd.options.mk.
At this point ${OPTIONSFILES} is expanded to "/var/db/ports/ja-mecab/options".
So file named /var/db/ports/ja-mecab/options is checked.
Since japanese/ruby-mecab is depend on japanese/mecab, this file
usually exists. So this file is included as saved options file of
japanese/ruby-mecab.
08. PKGNAMEPREFIX is assigned with expansion (':=' is used) to
"${PKGNAMEPREFIX}${RUBY_PKGNAMEPREFIX"} in japanese/ruby-mecab/Makefile.
09. RUBY_RELVERSION is assigned to "1.9.3" in Mk/bsd.ruby.mk.
10. RUBY_PATCHLEVEL is assigned to "327" in Mk/bsd.ruby.mk.
11. RUBY_VERSION is assigned to "${RUBY_RELVERSION}.${RUBY_PATCHLEVEL}
in Mk/bsd.ruby.mk.
12. RUBY_VER is assigned to "${RUBY_VERSION:C/([[:digit:]]+\.[[:digit:]]+).*/\1/}"
in Mk/bsd.ruby.mk.
13. RUBY_SUFFIX is assigned to "${RUBY_VER:S/.//}" in Mk/bsd.ruby.mk.
14. RUBY_PKGNAMEPREFIX is assigned to "ruby${RUBY_SUFFIX}-" in Mk/bsd.ruby.mk.
15. /usr/bin/dialog is invoked to show options setting dialog.
16. Result of step 15 is saved to ${OPTIONSFILE}. At this point
${OPTIONSFILE} is expanded to "/var/db/ports/ja-ruby19-mecab/options".
So file named /var/db/ports/ja-ruby19-mecab/options is created
and options setting is saved to it.
17. Now options settings are saved to /var/db/ports/ja-ruby19-mecab/options
at step 16, and it is different from the file included at step 07.
So it cause step 01 to 16 to be repeated every time 'make' is invoked.
And now, how should I fix this issue? Is it possible to fix it by only
patching japanese/ruby-mecab/Makefile? Or are some changes of Mk/bsd.*.mk
needed?
Any suggestion is welcome.
Best regards.
---
Yasuhiro KIMURA
More information about the freebsd-ports
mailing list