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