Projects
New Ticket     Wiki     Browse Source     Timeline     Roadmap     Bug Reports     Search

Ticket #14729 (assigned defect)

Opened 8 months ago

Last modified 3 weeks ago

gnome installations do not register the schema files with gconf

Reported by: reiffert@… Owned by: reiffert@…
Priority: Normal Milestone: Port Enhancements
Component: ports Version: 1.6.0
Keywords: gnome gconf gconftool-2 Cc: billitch@…, gerald@…, landonf@…, nox@…, rjt-gramps@…, shadow@…, toralf@…, vincent-opdarw@…
Port:

Description

Gnome ports install schema files to ${prefix}/etc/gconf/schema/ Those files need to be registered along with gconftool-2. Placing them in the directory is not enough.

I recently discovered the advantages and allready added the following scope to port:gnucash port:gnome-vfs and port:yelp It appears that port:gnome-control-center does it equally.

post-activate {
        # We need to register some stuff to gconf. Just putting the
        # schema files to the right place is not enough.
        # You can watch the successful installation with gconf-editor.

        system "cd ${prefix}/etc/gconf/schemas && \
        GCONF_CONFIG_SOURCE=`${prefix}/bin/gconftool-2 --get-default-source` ${p
refix}/bin/gconftool-2 --makefile-install-rule \
                desktop_default_applications.schemas \
                desktop_gnome_url_handlers.schemas \
                system_dns_sd.schemas \
                system_http_proxy.schemas \
                system_smb.schemas"
}

Please remember to replace those schemas through the port's schema files you are upgrading.

You can validate the successful schema registration by launching gconf-editor.

Kind regards Thomas

Change History

  Changed 8 months ago by reiffert@…

  • status changed from new to assigned

Unfourtunatly my first attempt doesnt work well on port variants. Currently I'm writing a gnome portgroup for handling the situation. Until the portgroup reaches your macports installation with a new macports release, use the following on your gnome port:

set storagedir  ${prefix}/etc/macports/gconf
set storagefile $storagedir/${name}

post-destroot {
 	# We need to register some stuff to gconf. Just putting the
 	# schema files to the right place is not enough.
	# For now we store the files in
	# ${prefix}/etc/macports/gconf/${name} and use that file
	# in post-activate. Until there is no better solution
	# this will make it into the gnomeportgroup

        # Find all .schemas file in the destroot
	fs-traverse schema ${destroot}${prefix}/etc/gconf/schemas {
		if { [ file isfile $schema ] } {
			lappend schemafiles $schema
		}
	}


        # And put them in etc/macports/gconf/$name
	if { [ llength $schemafiles ] > 0 } {
		file mkdir ${destroot}${storagedir}
		set fh [open ${destroot}${storagefile} w]
		foreach file $schemafiles {
			puts $fh [exec basename $file]
		}
		close $fh
	}
}

post-activate {
	if { [file exists ${storagefile} ] } {
		set fh [open ${storagefile} r]
		while { ! [eof $fh] } {
			lappend schemafiles [gets $fh]
		}
		close $fh
	}

	set schemastring [join $schemafiles " "]

         system "cd ${prefix}/etc/gconf/schemas && \
         GCONF_CONFIG_SOURCE=`${prefix}/bin/gconftool-2 --get-default-source` ${prefix}/bin/gconftool-2 --makefile-install-rule $schemastring"
 }

  Changed 8 months ago by jmr@…

MIME and desktop databases also need to be updated in post-activate, like so:

system "${prefix}/bin/update-desktop-database -q ${prefix}/share/applications; true"
system "${prefix}/bin/update-mime-database ${prefix}/share/mime; true"

The "; true" is so activate doesn't fail if the applications or mime directories don't exist. (See r35289.)

  Changed 8 months ago by jmr@…

  • cc changed from billitch@gmail.com,gerald@grisbi.org,landonf@macports.org,nox@macports.org,rjt-gramps@thegrindstone.me.uk,shadow@dementia.org,toralf@procaptura.com,vincent-opdarw@vinc17.org to billitch@gmail.com, gerald@grisbi.org, landonf@macports.org, nox@macports.org, rjt-gramps@thegrindstone.me.uk, shadow@dementia.org, toralf@procaptura.com, vincent-opdarw@vinc17.org

Oh, and --disable-update-mimedb --disable-update-desktopdb needs to be added to the configure args somewhere, otherwise conflicting files are created in the destroot.

follow-up: ↓ 5   Changed 8 months ago by gui_dos@…

Another command frequently needed after installing is

${prefix}/bin/gtk-update-icon-cache -f -t ${prefix}(bin/opt/local/share/icons/hicolor

in reply to: ↑ 4   Changed 8 months ago by gui_dos@…

{{{ ${prefix}/bin/gtk-update-icon-cache -f -t ${prefix}(bin/opt/local/share/icons/hicolor }}}

Oops: I meant:

${prefix}/bin/gtk-update-icon-cache -f -t ${prefix}/share/icons/hicolor

  Changed 3 weeks ago by nox@…

libgsf's GConf schemas are now properly registered during activation time since r41441.

  Changed 3 weeks ago by nox@…

Why do we need GCONF_CONFIG_SOURCE when we are registering in the default gconf source?

  Changed 3 weeks ago by nox@…

libgweather taken care of in r41484.

Note: See TracTickets for help on using tickets.