/*
* libosinfo: OS installation script
*
* Copyright (C) 2009-2020 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see
* .
*/
#include
#include
#include
#include
#ifndef __OSINFO_INSTALL_SCRIPT_H__
# define __OSINFO_INSTALL_SCRIPT_H__
# define OSINFO_TYPE_INSTALL_SCRIPT (osinfo_install_script_get_type ())
OSINFO_DECLARE_TYPE_WITH_PRIVATE_AND_CLASS(OsinfoInstallScript,
osinfo_install_script,
OSINFO,
INSTALL_SCRIPT,
OsinfoEntity)
typedef struct _OsinfoOs OsinfoOs;
typedef struct _OsinfoMedia OsinfoMedia;
typedef struct _OsinfoTree OsinfoTree;
# define OSINFO_INSTALL_SCRIPT_PROFILE_JEOS "jeos"
# define OSINFO_INSTALL_SCRIPT_PROFILE_DESKTOP "desktop"
# define OSINFO_INSTALL_SCRIPT_PROP_TEMPLATE_URI "template-uri"
# define OSINFO_INSTALL_SCRIPT_PROP_TEMPLATE_DATA "template-data"
# define OSINFO_INSTALL_SCRIPT_PROP_PROFILE "profile"
# define OSINFO_INSTALL_SCRIPT_PROP_PRODUCT_KEY_FORMAT "product-key-format"
# define OSINFO_INSTALL_SCRIPT_PROP_EXPECTED_FILENAME "expected-filename"
# define OSINFO_INSTALL_SCRIPT_PROP_PATH_FORMAT "path-format"
# define OSINFO_INSTALL_SCRIPT_PROP_CAN_PRE_INSTALL_DRIVERS "can-pre-install-drivers"
# define OSINFO_INSTALL_SCRIPT_PROP_CAN_POST_INSTALL_DRIVERS "can-post-install-drivers"
# define OSINFO_INSTALL_SCRIPT_PROP_NEEDS_INTERNET "needs-internet"
# define OSINFO_INSTALL_SCRIPT_PROP_PRE_INSTALL_DRIVERS_SIGNING_REQ "pre-install-drivers-signing-req"
# define OSINFO_INSTALL_SCRIPT_PROP_POST_INSTALL_DRIVERS_SIGNING_REQ "post-install-drivers-signing-req"
# define OSINFO_INSTALL_SCRIPT_PROP_INJECTION_METHOD "injection-method"
# define OSINFO_INSTALL_SCRIPT_PROP_PREFERRED_INJECTION_METHOD "preferred-injection-method"
# define OSINFO_INSTALL_SCRIPT_PROP_INSTALLATION_SOURCE "installation-source"
/**
* OsinfoPathFormat:
* @OSINFO_PATH_FORMAT_UNIX: Unix/Linux path format, e.g /home/foo/bar.txt
* @OSINFO_PATH_FORMAT_DOS: DOS/Windows path format, e.g \My Documents\bar.txt
*/
typedef enum {
OSINFO_PATH_FORMAT_UNIX,
OSINFO_PATH_FORMAT_DOS
} OsinfoPathFormat;
/**
* OsinfoDeviceDriverSigningReq:
* @OSINFO_DEVICE_DRIVER_SIGNING_REQ_NONE: Script do not require device drivers
* to be signed.
* @OSINFO_DEVICE_DRIVER_SIGNING_REQ_STRICT: Script must only be given signed
* device drivers. Some scripts will allow overriding this requirement through
* #osinfo_install_config_set_driver_signing function. You can query if a
* script supports this by checking if
* #OSINFO_INSTALL_CONFIG_PROP_DRIVER_SIGNING configuration parameter is used
* by the script in question (or other scripts in the same profile).
* @OSINFO_DEVICE_DRIVER_SIGNING_REQ_WARN: A warning will be issued by OS
* installer if device drivers are not signed and most probably require user
* input (and thus breaking unattended installation). See
* #OSINFO_DEVICE_DRIVER_SIGNING_REQ_STRICT on how this warning can be disabled
* for some scripts.
*
* Since: 0.2.6
*/
typedef enum {
OSINFO_DEVICE_DRIVER_SIGNING_REQ_NONE,
OSINFO_DEVICE_DRIVER_SIGNING_REQ_STRICT,
OSINFO_DEVICE_DRIVER_SIGNING_REQ_WARN
} OsinfoDeviceDriverSigningReq;
/**
* OsinfoInstallScriptInjectionMethod:
* @OSINFO_INSTALL_SCRIPT_INJECTION_METHOD_CDROM: Support injection of the
* installation script trough a CD-ROM.
* @OSINFO_INSTALL_SCRIPT_INJECTION_METHOD_DISK: Support injection of the
* installation script trough a disk.
* @OSINFO_INSTALL_SCRIPT_INJECTION_METHOD_FLOPPY: Support injection of the
* installation script trough a floppy disk.
* @OSINFO_INSTALL_SCRIPT_INJECTION_METHOD_INITRD: Support injection of the
* installation script trough the initrd.
* @OSINFO_INSTALL_SCRIPT_INJECTION_METHOD_WEB: Support injection of the
* installation script from the web.
*
* Since: 0.2.10
*/
typedef enum {
OSINFO_INSTALL_SCRIPT_INJECTION_METHOD_CDROM = 1 << 0,
OSINFO_INSTALL_SCRIPT_INJECTION_METHOD_DISK = 1 << 1,
OSINFO_INSTALL_SCRIPT_INJECTION_METHOD_FLOPPY = 1 << 2,
OSINFO_INSTALL_SCRIPT_INJECTION_METHOD_INITRD = 1 << 3,
OSINFO_INSTALL_SCRIPT_INJECTION_METHOD_WEB = 1 << 4,
} OsinfoInstallScriptInjectionMethod;
/**
* OsinfoInstallScriptInstallationSource:
* @OSINFO_INSTALL_SCRIPT_INSTALLATION_SOURCE_MEDIA: A media will be used as
* the installation source.
* @OSINFO_INSTALL_SCRIPT_INSTALLATION_SOURCE_NETWORK: A network method will
* be used as installation source.
*
* Since: 1.3.0
*/
typedef enum {
OSINFO_INSTALL_SCRIPT_INSTALLATION_SOURCE_MEDIA,
OSINFO_INSTALL_SCRIPT_INSTALLATION_SOURCE_NETWORK
} OsinfoInstallScriptInstallationSource;
OsinfoInstallScript *osinfo_install_script_new(const gchar *id);
OsinfoInstallScript *osinfo_install_script_new_uri(const gchar *id,
const gchar *profile,
const gchar *templateUri);
OsinfoInstallScript *osinfo_install_script_new_data(const gchar *id,
const gchar *profile,
const gchar *templateData);
const gchar *osinfo_install_script_get_template_uri(OsinfoInstallScript *script);
const gchar *osinfo_install_script_get_template_data(OsinfoInstallScript *script);
const gchar *osinfo_install_script_get_profile(OsinfoInstallScript *script);
const gchar *osinfo_install_script_get_product_key_format(OsinfoInstallScript *script);
void osinfo_install_script_set_output_prefix(OsinfoInstallScript *script, const gchar *prefix);
const gchar *osinfo_install_script_get_output_prefix(OsinfoInstallScript *script);
const gchar *osinfo_install_script_get_output_filename(OsinfoInstallScript *script);
const gchar *osinfo_install_script_get_expected_filename(OsinfoInstallScript *script);
OsinfoAvatarFormat *osinfo_install_script_get_avatar_format(OsinfoInstallScript *script);
void osinfo_install_script_generate_async(OsinfoInstallScript *script,
OsinfoOs *os,
OsinfoInstallConfig *config,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gchar *osinfo_install_script_generate_finish(OsinfoInstallScript *script,
GAsyncResult *res,
GError **error);
gchar *osinfo_install_script_generate(OsinfoInstallScript *script,
OsinfoOs *os,
OsinfoInstallConfig *config,
GCancellable *cancellable,
GError **error);
void osinfo_install_script_generate_output_async(OsinfoInstallScript *script,
OsinfoOs *os,
OsinfoInstallConfig *config,
GFile *output_dir,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
GFile *osinfo_install_script_generate_output_finish(OsinfoInstallScript *script,
GAsyncResult *res,
GError **error);
GFile *osinfo_install_script_generate_output(OsinfoInstallScript *script,
OsinfoOs *os,
OsinfoInstallConfig *config,
GFile *output_dir,
GCancellable *cancellable,
GError **error);
void osinfo_install_script_generate_for_media_async(OsinfoInstallScript *script,
OsinfoMedia *media,
OsinfoInstallConfig *config,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gchar *osinfo_install_script_generate_for_media_finish(OsinfoInstallScript *script,
GAsyncResult *res,
GError **error);
gchar *osinfo_install_script_generate_for_media(OsinfoInstallScript *script,
OsinfoMedia *media,
OsinfoInstallConfig *config,
GCancellable *cancellable,
GError **error);
void osinfo_install_script_generate_output_for_media_async(OsinfoInstallScript *script,
OsinfoMedia *media,
OsinfoInstallConfig *config,
GFile *output_dir,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
GFile *osinfo_install_script_generate_output_for_media_finish(OsinfoInstallScript *script,
GAsyncResult *res,
GError **error);
GFile *osinfo_install_script_generate_output_for_media(OsinfoInstallScript *script,
OsinfoMedia *media,
OsinfoInstallConfig *config,
GFile *output_dir,
GCancellable *cancellable,
GError **error);
gchar *osinfo_install_script_generate_command_line(OsinfoInstallScript *script,
OsinfoOs *os,
OsinfoInstallConfig *config);
gchar *osinfo_install_script_generate_command_line_for_media(OsinfoInstallScript *script,
OsinfoMedia *media,
OsinfoInstallConfig *config);
gchar *osinfo_install_script_generate_command_line_for_tree(OsinfoInstallScript *script,
OsinfoTree *tree,
OsinfoInstallConfig *config);
gboolean osinfo_install_script_has_config_param(OsinfoInstallScript *script, OsinfoInstallConfigParam *config_param);
gboolean osinfo_install_script_has_config_param_name(OsinfoInstallScript *script, const gchar *name);
OsinfoInstallConfigParam *osinfo_install_script_get_config_param(OsinfoInstallScript *script, const gchar *name);
GList *osinfo_install_script_get_config_param_list(OsinfoInstallScript *script);
OsinfoInstallConfigParamList *osinfo_install_script_get_config_params(OsinfoInstallScript *script);
OsinfoPathFormat osinfo_install_script_get_path_format(OsinfoInstallScript *script);
gboolean osinfo_install_script_get_can_pre_install_drivers(OsinfoInstallScript *script);
gboolean osinfo_install_script_get_can_post_install_drivers(OsinfoInstallScript *script);
int osinfo_install_script_get_pre_install_drivers_signing_req(OsinfoInstallScript *script);
int osinfo_install_script_get_post_install_drivers_signing_req(OsinfoInstallScript *script);
unsigned int osinfo_install_script_get_injection_methods(OsinfoInstallScript *script);
gboolean osinfo_install_script_get_needs_internet(OsinfoInstallScript *script);
void osinfo_install_script_set_preferred_injection_method(OsinfoInstallScript *script,
OsinfoInstallScriptInjectionMethod method);
OsinfoInstallScriptInjectionMethod osinfo_install_script_get_preferred_injection_method(OsinfoInstallScript *script);
void osinfo_install_script_set_installation_source(OsinfoInstallScript *script,
OsinfoInstallScriptInstallationSource source);
OsinfoInstallScriptInstallationSource osinfo_install_script_get_installation_source(OsinfoInstallScript *script);
void osinfo_install_script_generate_for_tree_async(OsinfoInstallScript *script,
OsinfoTree *tree,
OsinfoInstallConfig *config,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gchar *osinfo_install_script_generate_for_tree_finish(OsinfoInstallScript *script,
GAsyncResult *res,
GError **error);
gchar *osinfo_install_script_generate_for_tree(OsinfoInstallScript *script,
OsinfoTree *tree,
OsinfoInstallConfig *config,
GCancellable *cancellable,
GError **error);
void osinfo_install_script_generate_output_for_tree_async(OsinfoInstallScript *script,
OsinfoTree *tree,
OsinfoInstallConfig *config,
GFile *output_dir,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
GFile *osinfo_install_script_generate_output_for_tree_finish(OsinfoInstallScript *script,
GAsyncResult *res,
GError **error);
GFile *osinfo_install_script_generate_output_for_tree(OsinfoInstallScript *script,
OsinfoTree *tree,
OsinfoInstallConfig *config,
GFile *output_dir,
GCancellable *cancellable,
GError **error);
#endif /* __OSINFO_INSTALL_SCRIPT_H__ */