#############################################################
#
# google_buffet
#
#############################################################

BUFFET_CHROMEOS_VERSION = R44-7077.134
GOOGLE_BUFFET_SITE = repo://vendor/google/tarballs

ifeq ($(BR2_PACKAGE_GOOGLE_BUFFET_DEMOS),y)
define HOST_GOOGLE_BUFFET_DEMOS
		mkdir -p $(TARGET_DIR)/etc/buffet && \
		$(INSTALL) -m 0755 -D package/google/google_buffet/buffet.conf $(TARGET_DIR)/etc/buffet; \
		mkdir -p $(TARGET_DIR)/etc/buffet/commands && \
		$(INSTALL) -m 0755 -D package/google/google_buffet/test.json $(TARGET_DIR)/etc/buffet/commands
endef
else
define HOST_GOOGLE_BUFFET_DEMOS
	echo "Skip Buffet demos..."
endef
endif

define GOOGLE_BUFFET_INSTALL_TARGET_CMDS
	# Untar and place the chromeos rootdir under /chroot
	mkdir -p $(TARGET_DIR)/chroot && \
	tar -zxvf $(@D)/google_buffet-$(BUFFET_CHROMEOS_VERSION).tar.gz -C $(TARGET_DIR)/chroot
	# Copy global configs to /etc/buffet
	mkdir -p $(TARGET_DIR)/etc/buffet && \
	$(INSTALL) -m 0755 -D package/google/google_buffet/base_state.schema.json $(TARGET_DIR)/etc/buffet && \
	$(INSTALL) -m 0755 -D package/google/google_buffet/base_state.defaults.json $(TARGET_DIR)/etc/buffet && \
	$(INSTALL) -m 0755 -D package/google/google_buffet/gcd.json $(TARGET_DIR)/etc/buffet
	# Install Buffet demos
	$(HOST_GOOGLE_BUFFET_DEMOS)
	# Install /etc/init.d file
	mkdir -p $(TARGET_DIR)/etc/init.d && \
	$(INSTALL) -m 0755 -D package/google/google_buffet/S86buffet $(TARGET_DIR)/etc/init.d/
	# Install buffet monitor
	mkdir -p $(TARGET_DIR)/bin && \
	$(INSTALL) -m 0755 -D package/google/google_buffet/buffet_monitor $(TARGET_DIR)/bin/
	# Install customized dbus config to run in chroot.
	mkdir -p $(TARGET_DIR)/etc/dbus-1/system.d && \
	$(INSTALL) -m 0755 -D package/google/google_buffet/org.chromium.Buffet.conf $(TARGET_DIR)/etc/dbus-1/system.d/org.chromium.Buffet.conf
	# Create chroot binding point for dbus.
	mkdir -p $(TARGET_DIR)/chroot/chromeos/var/lib/buffet
	mkdir -p $(TARGET_DIR)/chroot/chromeos/var/run
	mkdir -p $(TARGET_DIR)/chroot/chromeos/etc
	mkdir -p $(TARGET_DIR)/chroot/chromeos/tmp

	# libcurl.so.4 in ChromeOS expected Equifax cert with hash name 578d5c04.0
	# In chromeos version <= R42, it is expected in /etc/ssl/certs. The following
	# line can probably be removed eventually since it should no longer look for
	# the cert here, but is being kept here in the interim just in case.
	cp -fp $(TARGET_DIR)/etc/ssl/certs/ca-certificates.crt $(TARGET_DIR)/etc/ssl/certs/578d5c04.0
	# In chromeos version >= R44, it is expected in
	# /usr/share/chromeos-ca-certificates. The following lines create this
	# directory and copy the cert to it.
	mkdir -p $(TARGET_DIR)/chroot/chromeos/usr/share/chromeos-ca-certificates
	cp -fp $(TARGET_DIR)/etc/ssl/certs/ca-certificates.crt $(TARGET_DIR)/chroot/chromeos/usr/share/chromeos-ca-certificates/578d5c04.0

	if [ "$(BR2_PACKAGE_GOOGLE_PROD)" = "y" ]; then \
		rm -f $(TARGET_DIR)/chroot/chromeos/bin/buffet_client; \
		rm -f $(TARGET_DIR)/chroot/chromeos/bin/buffet_test_daemon; \
	fi
endef

define GOOGLE_BUFFET_CLEAN_CMDS
	rm -rf $(TARGET_DIR)/etc/dbus-1/system.d/org.chromium.Buffet.conf
	rm -rf $(TARGET_DIR)/etc/init.d/S86buffet
	rm -rf $(TARGET_DIR)/bin/buffet_monitor
	rm -rf $(TARGET_DIR)/chroot/chromeos
endef

$(eval $(call GENTARGETS))
