Issue about adapting japanese/ruby-mecab to new options framework
Scot Hetzel
swhetzel at gmail.com
Sun Jan 27 19:41:01 UTC 2013
On Sun, Jan 27, 2013 at 11:15 AM, Yasuhiro KIMURA <yasu at utahime.org> wrote:
> 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.
>
You could add OPTIONSFILE to japanese/ruby-mecab/Makefile as:
OPTIONSFILE= ${PORT_DBDIR}/ruby-mecab/options
This way it will always find it's own options file.
Scot
--
DISCLAIMER:
No electrons were maimed while sending this message. Only slightly bruised.
More information about the freebsd-ports
mailing list