diff options
author | Matsuu Takuto <matsuu@gentoo.org> | 2010-11-25 16:29:57 +0000 |
---|---|---|
committer | Matsuu Takuto <matsuu@gentoo.org> | 2010-11-25 16:29:57 +0000 |
commit | d74834af8c996a4aa1d76e4594ab2b2d5ed8b10b (patch) | |
tree | 4c30c6dc678f995a6c708292eca65c691d62547a /app-i18n | |
parent | Marked ~hppa (bug #340269). (diff) | |
download | gentoo-2-d74834af8c996a4aa1d76e4594ab2b2d5ed8b10b.tar.gz gentoo-2-d74834af8c996a4aa1d76e4594ab2b2d5ed8b10b.tar.bz2 gentoo-2-d74834af8c996a4aa1d76e4594ab2b2d5ed8b10b.zip |
Fixed sandbox violation. The patch is submitted by Muneyuki Noguchi, bug #345217.
(Portage version: 2.1.9.24/cvs/Linux x86_64)
Diffstat (limited to 'app-i18n')
-rw-r--r-- | app-i18n/uim/ChangeLog | 9 | ||||
-rw-r--r-- | app-i18n/uim/files/uim-1.6.0-sandbox-violation.patch | 240 | ||||
-rw-r--r-- | app-i18n/uim/uim-1.6.0-r1.ebuild | 220 |
3 files changed, 468 insertions, 1 deletions
diff --git a/app-i18n/uim/ChangeLog b/app-i18n/uim/ChangeLog index c947c86f06c5..3d970cbe199d 100644 --- a/app-i18n/uim/ChangeLog +++ b/app-i18n/uim/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for app-i18n/uim # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-i18n/uim/ChangeLog,v 1.223 2010/11/08 07:10:58 matsuu Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-i18n/uim/ChangeLog,v 1.224 2010/11/25 16:29:57 matsuu Exp $ + +*uim-1.6.0-r1 (25 Nov 2010) + + 25 Nov 2010; MATSUU Takuto <matsuu@gentoo.org> +uim-1.6.0-r1.ebuild, + +files/uim-1.6.0-sandbox-violation.patch: + Fixed sandbox violation. The patch is submitted by Muneyuki Noguchi, bug + #345217. *uim-1.6.0 (08 Nov 2010) diff --git a/app-i18n/uim/files/uim-1.6.0-sandbox-violation.patch b/app-i18n/uim/files/uim-1.6.0-sandbox-violation.patch new file mode 100644 index 000000000000..d0bb19ce5b07 --- /dev/null +++ b/app-i18n/uim/files/uim-1.6.0-sandbox-violation.patch @@ -0,0 +1,240 @@ +diff --git a/scm/custom-rt.scm b/scm/custom-rt.scm +index ea94593..967f3c7 100644 +--- a/scm/custom-rt.scm ++++ b/scm/custom-rt.scm +@@ -63,7 +63,10 @@ + (define custom-file-path + (lambda (gsym) + (let* ((group-name (symbol->string gsym)) +- (path (string-append (get-config-path! #f) ++ (config-path (get-config-path #f)) ++ (path (string-append (if config-path ++ config-path ++ "") + "/customs/custom-" + group-name + ".scm"))) +diff --git a/scm/dynlib.scm b/scm/dynlib.scm +index 991ed55..6b67a77 100644 +--- a/scm/dynlib.scm ++++ b/scm/dynlib.scm +@@ -34,14 +34,15 @@ + (define uim-dynlib-load-path + (if (setugid?) + (list (string-append (sys-pkglibdir) "/plugin")) +- (let ((home-dir (or (home-directory (user-name)) "")) +- (ld-library-path (getenv "LD_LIBRARY_PATH"))) ++ (let* ((ld-library-path (getenv "LD_LIBRARY_PATH")) ++ (config-path (get-config-path #f)) ++ (user-plugin-path (if config-path ++ (string-append config-path "/plugin") ++ '()))) + (filter string? + (append (list (getenv "LIBUIM_PLUGIN_LIB_DIR") +- (if home-dir +- (string-append (get-config-path! #f) "/plugin") +- '()) +- (string-append (sys-pkglibdir) "/plugin")) ++ user-plugin-path ++ (string-append (sys-pkglibdir) "/plugin")) + ;; XXX + (if ld-library-path + (string-split ld-library-path ":") +diff --git a/scm/plugin.scm b/scm/plugin.scm +index 2d5d74a..d187429 100644 +--- a/scm/plugin.scm ++++ b/scm/plugin.scm +@@ -39,12 +39,12 @@ + (define uim-plugin-scm-load-path + (if (setugid?) + (list (sys-pkgdatadir)) +- (let ((home-dir (or (home-directory (user-name)) "")) ++ (let ((config-path (get-config-path #f)) + (scm-paths (string-split (load-path) ":"))) + (filter string? + (append scm-paths +- (if home-dir +- (list (string-append (get-config-path! #f) "/plugin")) ++ (if config-path ++ (list (string-append config-path "/plugin")) + '()) + (list (sys-pkgdatadir))))))) + +@@ -71,9 +71,9 @@ + ;; TODO: write test + (define load-module-conf + (lambda () +- (let* ((home-dir (or (home-directory (user-name)) "")) +- (user-module-dir (if home-dir +- (string-append (get-config-path! #f) "/plugin/") ++ (let* ((config-path (get-config-path #f)) ++ (user-module-dir (if config-path ++ (string-append config-path "/plugin/") + #f)) + (conf-file "installed-modules.scm") + (user-conf-file (if user-module-dir +@@ -100,9 +100,9 @@ + ;; TODO: write test + (define load-enabled-modules + (lambda () +- (let* ((home-dir (or (home-directory (user-name)) "")) +- (user-module-dir (if home-dir +- (string-append (get-config-path! #f) "/plugin/") ++ (let* ((config-path (get-config-path #f)) ++ (user-module-dir (if config-path ++ (string-append config-path "/plugin/") + #f)) + (file "loader.scm") + (user-file (if user-module-dir +diff --git a/uim/uim-helper.c b/uim/uim-helper.c +index e4a558f..882aea6 100644 +--- a/uim/uim-helper.c ++++ b/uim/uim-helper.c +@@ -207,7 +207,11 @@ uim_helper_get_pathname(char *helper_path, int len) + return UIM_TRUE; + + path_error: +- uim_fatal_error("uim_helper_get_pathname()"); ++#if USE_UIM_NOTIFY && !UIM_NON_LIBUIM_PROG ++ uim_notify_fatal("uim_helper_get_pathname() failed"); ++#else ++ fprintf(stderr, "uim_helper_get_pathname() failed\n"); ++#endif + helper_path[0] = '\0'; + + UIM_CATCH_ERROR_END(); +diff --git a/uim/uim-posix.c b/uim/uim-posix.c +index 83691d8..de8a327 100644 +--- a/uim/uim-posix.c ++++ b/uim/uim-posix.c +@@ -141,21 +141,33 @@ home_directory(uim_lisp user_) + return MAKE_STR(home); + } + +-uim_bool +-uim_check_dir(const char *dir) ++static uim_bool ++uim_check_dir_internal(const char *dir, int need_prepare) + { + struct stat st; + + if (stat(dir, &st) < 0) +- return (mkdir(dir, 0700) < 0) ? UIM_FALSE : UIM_TRUE; ++ if (need_prepare) ++ return (mkdir(dir, 0700) < 0) ? UIM_FALSE : UIM_TRUE; ++ else ++ return UIM_FALSE; + else { + mode_t mode = S_IFDIR | S_IRUSR | S_IWUSR | S_IXUSR; + return ((st.st_mode & mode) == mode) ? UIM_TRUE : UIM_FALSE; + } + } + ++/* FIXME: use appropriate name for this API */ ++uim_bool ++uim_check_dir(const char *dir) ++{ ++ int need_prepare = UIM_TRUE; ++ ++ return uim_check_dir_internal(dir, need_prepare); ++} ++ + static uim_lisp +-c_check_dir(uim_lisp dir_) ++c_prepare_dir(uim_lisp dir_) + { + if (!uim_check_dir(REFER_C_STR(dir_))) { + return uim_scm_f(); +@@ -163,8 +175,8 @@ c_check_dir(uim_lisp dir_) + return uim_scm_t(); + } + +-uim_bool +-uim_get_config_path(char *path, int len, int is_getenv) ++static uim_bool ++uim_get_config_path_internal(char *path, int len, int is_getenv, int need_prepare) + { + char home[MAXPATHLEN]; + +@@ -174,34 +186,63 @@ uim_get_config_path(char *path, int len, int is_getenv) + if (!uim_get_home_directory(home, sizeof(home), getuid()) && is_getenv) { + char *home_env = getenv("HOME"); + +- if (!home_env) ++ if (!home_env) { ++ path[0] = '\0'; + return UIM_FALSE; ++ } + +- if (strlcpy(home, home_env, sizeof(home)) >= sizeof(home)) ++ if (strlcpy(home, home_env, sizeof(home)) >= sizeof(home)) { ++ path[0] = '\0'; + return UIM_FALSE; ++ } + } + +- if (snprintf(path, len, "%s/.uim.d", home) == -1) ++ if (snprintf(path, len, "%s/.uim.d", home) < 0) { ++ path[0] = '\0'; + return UIM_FALSE; ++ } + +- if (!uim_check_dir(path)) { ++ if (!uim_check_dir_internal(path, need_prepare)) { + return UIM_FALSE; + } + + return UIM_TRUE; + } + ++/* FIXME: use appropriate name for this API */ ++uim_bool ++uim_get_config_path(char *path, int len, int is_getenv) ++{ ++ int need_prepare = UIM_TRUE; ++ ++ return uim_get_config_path_internal(path, len, is_getenv, need_prepare); ++} ++ + static uim_lisp +-c_get_config_path(uim_lisp is_getenv_) ++c_prepare_config_path(uim_lisp is_getenv_) + { + char path[MAXPATHLEN]; ++ int need_prepare = UIM_TRUE; + +- if (!uim_get_config_path(path, sizeof(path), C_BOOL(is_getenv_))) ++ if (!uim_get_config_path_internal(path, sizeof(path), C_BOOL(is_getenv_), need_prepare)) + return uim_scm_f(); + return MAKE_STR(path); + } + + static uim_lisp ++c_get_config_path(uim_lisp is_getenv_) ++{ ++ char path[MAXPATHLEN]; ++ int need_prepare = UIM_FALSE; ++ int exist; ++ ++ /* No need to check the existence of path in this function */ ++ exist = uim_get_config_path_internal(path, sizeof(path), C_BOOL(is_getenv_), need_prepare); ++ ++ return MAKE_STR(path); ++} ++ ++static uim_lisp + file_stat_mode(uim_lisp filename, mode_t mode) + { + struct stat st; +@@ -391,8 +432,9 @@ uim_init_posix_subrs(void) + uim_scm_init_proc0("user-name", user_name); + uim_scm_init_proc1("home-directory", home_directory); + +- uim_scm_init_proc1("create/check-directory!", c_check_dir); +- uim_scm_init_proc1("get-config-path!", c_get_config_path); ++ uim_scm_init_proc1("create/check-directory!", c_prepare_dir); ++ uim_scm_init_proc1("get-config-path!", c_prepare_config_path); ++ uim_scm_init_proc1("get-config-path", c_get_config_path); + + uim_scm_init_proc1("file-readable?", file_readablep); + uim_scm_init_proc1("file-writable?", file_writablep); diff --git a/app-i18n/uim/uim-1.6.0-r1.ebuild b/app-i18n/uim/uim-1.6.0-r1.ebuild new file mode 100644 index 000000000000..dcd12b9da1d2 --- /dev/null +++ b/app-i18n/uim/uim-1.6.0-r1.ebuild @@ -0,0 +1,220 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-i18n/uim/uim-1.6.0-r1.ebuild,v 1.1 2010/11/25 16:29:57 matsuu Exp $ + +EAPI="3" +inherit autotools eutils multilib elisp-common flag-o-matic + +DESCRIPTION="Simple, secure and flexible input method library" +HOMEPAGE="http://code.google.com/p/uim/" +SRC_URI="http://uim.googlecode.com/files/${P}.tar.bz2" + +LICENSE="BSD GPL-2 LGPL-2.1" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~hppa ~ppc ~ppc64 ~sparc ~x86" +KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="+anthy canna curl eb emacs ffi gnome gtk kde libedit libnotify m17n-lib ncurses nls prime qt4 skk sqlite ssl test unicode X xft linguas_zh_CN linguas_zh_TW linguas_ja linguas_ko" + +RESTRICT="test" + +RDEPEND="X? ( + x11-libs/libX11 + x11-libs/libXft + x11-libs/libXt + x11-libs/libICE + x11-libs/libSM + x11-libs/libXext + x11-libs/libXrender + ) + anthy? ( + unicode? ( >=app-i18n/anthy-8622 ) + !unicode? ( app-i18n/anthy ) + ) + canna? ( app-i18n/canna ) + curl? ( >=net-misc/curl-7.16.4 ) + eb? ( dev-libs/eb ) + emacs? ( virtual/emacs ) + ffi? ( virtual/libffi ) + gnome? ( >=gnome-base/gnome-panel-2.14 ) + gtk? ( >=x11-libs/gtk+-2.4:2 ) + kde? ( >=kde-base/kdelibs-4 ) + libedit? ( dev-libs/libedit ) + libnotify? ( >=x11-libs/libnotify-0.4 ) + m17n-lib? ( >=dev-libs/m17n-lib-1.3.1 ) + ncurses? ( sys-libs/ncurses ) + nls? ( virtual/libintl ) + prime? ( app-i18n/prime ) + qt4? ( x11-libs/qt-gui:4[qt3support] ) + skk? ( app-i18n/skk-jisyo ) + sqlite? ( dev-db/sqlite:3 ) + ssl? ( dev-libs/openssl ) + !dev-scheme/sigscheme + !app-i18n/uim-svn + !<app-i18n/prime-0.9.4" +# >=dev-scheme/sigscheme-0.8.5 +# mana? ( app-i18n/mana ) +# scim? ( >=app-i18n/scim-1.3.0 ) # broken +# sj3? ( >=app-i18n/sj3-2.0.1.21 ) +# wnn? ( app-i18n/wnn ) + +DEPEND="${RDEPEND} + dev-util/pkgconfig + >=sys-devel/gettext-0.15 + kde? ( dev-util/cmake ) + X? ( + x11-proto/xextproto + x11-proto/xproto + )" + +RDEPEND="${RDEPEND} + X? ( + media-fonts/font-sony-misc + linguas_zh_CN? ( + || ( media-fonts/font-isas-misc media-fonts/intlfonts ) + ) + linguas_zh_TW? ( + media-fonts/intlfonts + ) + linguas_ja? ( + || ( media-fonts/font-jis-misc media-fonts/intlfonts ) + ) + linguas_ko? ( + || ( media-fonts/font-daewoo-misc media-fonts/intlfonts ) + ) + )" +# test? ( dev-scheme/gauche ) + +SITEFILE=50${PN}-gentoo.el + +pkg_setup() { + # An arch specific config directory is used on multilib systems + has_multilib_profile && GTK2_CONFDIR="/etc/gtk-2.0/${CHOST}" + GTK2_CONFDIR=${GTK2_CONFDIR:=/etc/gtk-2.0/} +} + +src_prepare() { + epatch \ + "${FILESDIR}/${P}-gentoo.patch" \ + "${FILESDIR}/${PN}-1.5.4-zhTW.patch" \ + "${FILESDIR}/${P}-sandbox-violation.patch" + + # bug 275420 + sed -i -e "s:\$libedit_path/lib:/$(get_libdir):g" configure.ac || die + eautoconf +} + +src_configure() { + local myconf + + if use gtk && (use anthy || use canna) ; then + myconf="${myconf} --enable-dict" + else + myconf="${myconf} --disable-dict" + fi + + if use gtk || use qt4 ; then + myconf="${myconf} --enable-pref" + else + myconf="${myconf} --disable-pref" + fi + + if use anthy ; then + if use unicode ; then + myconf="${myconf} --with-anthy-utf8" + else + myconf="${myconf} --with-anthy" + fi + else + myconf="${myconf} --without-anthy" + fi + + if use libnotify ; then + myconf="${myconf} --enable-notify=libnotify" + fi + + econf $(use_with X x) \ + $(use_with canna) \ + $(use_with curl) \ + $(use_with eb) \ + $(use_enable emacs) \ + $(use_with emacs lispdir "${SITELISP}") \ + $(use_with ffi) \ + $(use_enable gnome gnome-applet) \ + $(use_with gtk gtk2) \ + $(use_with libedit) \ + --disable-kde-applet \ + $(use_enable kde kde4-applet) \ + $(use_with m17n-lib m17nlib) \ + $(use_enable ncurses fep) \ + $(use_enable nls) \ + $(use_with prime) \ + --without-qt \ + --without-qt-immodule \ + $(use_with qt4 qt4) \ + $(use_with qt4 qt4-immodule) \ + $(use_with skk) \ + $(use_with sqlite sqlite3) \ + $(use_enable ssl openssl) \ + $(use_with xft) \ + ${myconf} + # $(use_enable qt4 qt4-qt3support) \ +} + +src_compile() { + emake || die "emake failed" + + if use emacs; then + cd emacs + elisp-compile *.el || die "elisp-compile failed" + fi +} + +src_install() { + # parallel make install b0rked, bug #222677 + emake -j1 INSTALL_ROOT="${D}" DESTDIR="${D}" install || die "make install failed" + + dodoc AUTHORS ChangeLog* NEWS README RELNOTE || die + if use emacs; then + elisp-install uim-el emacs/*.elc || die "elisp-install failed" + elisp-site-file-install "${FILESDIR}/${SITEFILE}" uim-el \ + || die "elisp-site-file-install failed" + fi + + # collision with dev-scheme/sigscheme, bug #330975 + # find "${ED}" -name '*gcroots*' -delete || die +} + +pkg_postinst() { + elog + elog "New input method switcher has been introduced. You need to set" + elog + elog "% GTK_IM_MODULE=uim ; export GTK_IM_MODULE" + elog "% QT_IM_MODULE=uim ; export QT_IM_MODULE" + elog "% XMODIFIERS=@im=uim ; export XMODIFIERS" + elog + elog "If you would like to use uim-anthy as default input method, put" + elog "(define default-im-name 'anthy)" + elog "to your ~/.uim." + elog + elog "All input methods can be found by running uim-im-switcher-gtk, " + elog "or uim-im-switcher-qt4." + elog + elog "If you upgrade from a version of uim older than 1.4.0," + elog "you should run revdep-rebuild." + + use gtk && gtk-query-immodules-2.0 > "${ROOT}/${GTK2_CONFDIR}/gtk.immodules" + if use emacs; then + elisp-site-regen + echo + elog "uim is autoloaded with Emacs with a minimal set of features:" + elog "There is no keybinding defined to call it directly, so please" + elog "create one yourself and choose an input method." + elog "Integration with LEIM is not done with this ebuild, please have" + elog "a look at the documentation how to achieve this." + fi +} + +pkg_postrm() { + use gtk && gtk-query-immodules-2.0 > "${ROOT}/${GTK2_CONFDIR}/gtk.immodules" + use emacs && elisp-site-regen +} |