Add an install target and PREFIX= option the makefile, and change the
artwork loading code to use the prefixed-path.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
TWIN_CFLAGS=$(shell pkg-config --cflags libtwin)
TWIN_LDFLAGS=$(shell pkg-config --libs libtwin)
LDFLAGS =
TWIN_CFLAGS=$(shell pkg-config --cflags libtwin)
TWIN_LDFLAGS=$(shell pkg-config --libs libtwin)
LDFLAGS =
-CFLAGS = -O0 -ggdb -Wall
+CFLAGS = -O0 -ggdb -Wall '-DPREFIX="$(PREFIX)"'
+ARTWORK = background.png cdrom.png hdd.png usbpen.png cursor
all: petitboot udev-helper
all: petitboot udev-helper
$(foreach p,$(PARSERS),devices/$(p)-parser.o)
$(CC) $(LDFLAGS) -o $@ $^
$(foreach p,$(PARSERS),devices/$(p)-parser.o)
$(CC) $(LDFLAGS) -o $@ $^
+devices/%: CFLAGS+=-I.
+
+install: all
+ $(INSTALL) -D petitboot $(PREFIX)/sbin/petitboot
+ $(INSTALL) -D udev-helper $(PREFIX)/sbin/udev-helper
+ $(INSTALL) -Dd $(PREFIX)/share/petitboot/artwork/
+ $(INSTALL) -t $(PREFIX)/share/petitboot/artwork/ \
+ $(foreach a,$(ARTWORK),artwork/$(a))
+
clean:
rm -f petitboot
rm -f udev-helper
clean:
rm -f petitboot
rm -f udev-helper
#include <libtwin/twin_png.h>
#include "petitboot.h"
#include <libtwin/twin_png.h>
#include "petitboot.h"
+#include "petitboot-paths.h"
#include "devices/message.h"
#include "devices/message.h"
-#define PBOOT_DEVICE_SOCKET "/var/tmp/petitboot-dev"
-#define PBOOT_DEFAULT_ICON "artwork/usbpen.png"
+#define PBOOT_DEFAULT_ICON "usbpen.png"
-static const char *default_icon = PBOOT_DEFAULT_ICON;
+static const char *default_icon = artwork_pathname(PBOOT_DEFAULT_ICON);
struct discovery_context {
/* nothing at present */
struct discovery_context {
/* nothing at present */
#include <asm/byteorder.h>
#include "udev-helper.h"
#include <asm/byteorder.h>
#include "udev-helper.h"
-
-#define parser_dir "."
-
-#define tmp_dir "/var/tmp/petitboot"
-#define socket_file "/var/tmp/petitboot-dev"
-#define mount_bin "/bin/mount"
-#define umount_bin "/bin/umount"
+#include "petitboot-paths.h"
extern struct parser native_parser;
static FILE *logf;
extern struct parser native_parser;
static FILE *logf;
}
addr.sun_family = AF_UNIX;
}
addr.sun_family = AF_UNIX;
- strcpy(addr.sun_path, socket_file);
+ strcpy(addr.sun_path, PBOOT_DEVICE_SOCKET);
if (connect(fd, (struct sockaddr *)&addr, sizeof(addr))) {
log("can't connect to %s: %s\n",
if (connect(fd, (struct sockaddr *)&addr, sizeof(addr))) {
log("can't connect to %s: %s\n",
int pid, status, rc = -1;
/* create a unique mountpoint */
int pid, status, rc = -1;
/* create a unique mountpoint */
- dir = malloc(strlen(tmp_dir) + 2 + strlen(template));
- sprintf(dir, "%s/%s", tmp_dir, template);
+ dir = malloc(strlen(TMP_DIR) + 2 + strlen(template));
+ sprintf(dir, "%s/%s", TMP_DIR, template);
if (!mkdtemp(dir)) {
log("failed to create temporary directory in %s: %s",
if (!mkdtemp(dir)) {
log("failed to create temporary directory in %s: %s",
- tmp_dir, strerror(errno));
+ TMP_DIR, strerror(errno));
- execl(mount_bin, mount_bin, dev_path, dir, "-o", "ro", NULL);
+ execl(MOUNT_BIN, MOUNT_BIN, dev_path, dir, "-o", "ro", NULL);
- execl(umount_bin, umount_bin, dev_path, NULL);
+ execl(UMOUNT_BIN, UMOUNT_BIN, dev_path, NULL);
{
switch (type) {
case ICON_TYPE_DISK:
{
switch (type) {
case ICON_TYPE_DISK:
- return "artwork/hdd.png";
+ return artwork_pathname("hdd.png");
- return "artwork/usbpen.png";
+ return artwork_pathname("usbpen.png");
- return "artwork/cdrom.png";
+ return artwork_pathname("cdrom.png");
case ICON_TYPE_NETWORK:
case ICON_TYPE_UNKNOWN:
break;
}
case ICON_TYPE_NETWORK:
case ICON_TYPE_UNKNOWN:
break;
}
- return "artwork/hdd.png";
+ return artwork_pathname("hdd.png");
}
static const struct device fake_boot_devices[] =
}
static const struct device fake_boot_devices[] =
{
.id = "fakeDisk0",
.name = "Hard Disk",
{
.id = "fakeDisk0",
.name = "Hard Disk",
- .icon_file = "artwork/hdd.png",
+ .icon_file = artwork_pathname("hdd.png"),
},
{
.id = "fakeDisk1",
.name = "PinkCat Linux CD",
},
{
.id = "fakeDisk1",
.name = "PinkCat Linux CD",
- .icon_file = "artwork/cdrom.png",
+ .icon_file = artwork_pathname("cdrom.png"),
.id = "fakeBoot0",
.name = "Bloobuntu Linux",
.description = "Boot Bloobuntu Linux",
.id = "fakeBoot0",
.name = "Bloobuntu Linux",
.description = "Boot Bloobuntu Linux",
- .icon_file = "artwork/hdd.png",
+ .icon_file = artwork_pathname("hdd.png"),
},
{
.id = "fakeBoot1",
.name = "Pendora Gore 6",
.description = "Boot Pendora Gora 6",
},
{
.id = "fakeBoot1",
.name = "Pendora Gore 6",
.description = "Boot Pendora Gora 6",
- .icon_file = "artwork/hdd.png",
+ .icon_file = artwork_pathname("hdd.png"),
},
{
.id = "fakeBoot2",
.name = "Genfoo Minux",
.description = "Boot Genfoo Minux",
},
{
.id = "fakeBoot2",
.name = "Genfoo Minux",
.description = "Boot Genfoo Minux",
- .icon_file = "artwork/hdd.png",
+ .icon_file = artwork_pathname("hdd.png"),
},
{
.id = "fakeBoot3",
.name = "PinkCat Linux",
.description = "Install PinkCat Linux - Graphical install",
},
{
.id = "fakeBoot3",
.name = "PinkCat Linux",
.description = "Install PinkCat Linux - Graphical install",
- .icon_file = "artwork/cdrom.png",
+ .icon_file = artwork_pathname("cdrom.png"),
--- /dev/null
+#ifndef _PATHS_H
+#define _PATHS_H
+
+#ifndef PREFIX
+#define PREFIX "/usr"
+#endif
+
+#ifndef PKG_SHARE_DIR
+#define PKG_SHARE_DIR PREFIX "/share/petitboot"
+#endif
+
+#ifndef TMP_DIR
+#define TMP_DIR "/var/tmp"
+#endif
+
+#define PBOOT_DEVICE_SOCKET "/var/tmp/petitboot-dev"
+#define MOUNT_BIN "/bin/mount"
+#define UMOUNT_BIN "/bin/umount"
+
+/* at present, all default artwork strings are const. */
+#define artwork_pathname(s) (PKG_SHARE_DIR "/artwork/" s)
+
+#endif /* _PATHS_H */
#include <libtwin/twin_png.h>
#include "petitboot.h"
#include <libtwin/twin_png.h>
#include "petitboot.h"
+#include "petitboot-paths.h"
int main(int argc, char **argv)
{
twin_pixmap_t *pic;
int main(int argc, char **argv)
{
twin_pixmap_t *pic;
+ const char *background_path;
atexit(exitfunc);
signal(SIGINT, sigint);
atexit(exitfunc);
signal(SIGINT, sigint);
#endif
if (pboot_fbdev != NULL) {
#endif
if (pboot_fbdev != NULL) {
- pboot_cursor = twin_load_X_cursor("artwork/cursor", 2,
+ char *cursor_path = artwork_pathname("cursor");
+ pboot_cursor = twin_load_X_cursor(cursor_path, 2,
&pboot_cursor_hx,
&pboot_cursor_hy);
if (pboot_cursor == NULL)
&pboot_cursor_hx,
&pboot_cursor_hy);
if (pboot_cursor == NULL)
}
/* Set background pixmap */
}
/* Set background pixmap */
- LOG("loading background...");
- pic = twin_png_to_pixmap("artwork/background.png", TWIN_ARGB32);
+ background_path = artwork_pathname("background.png");
+ LOG("loading background: %s...", background_path);
+ pic = twin_png_to_pixmap(background_path, TWIN_ARGB32);
LOG("%s\n", pic ? "ok" : "failed");
if (pic)
twin_screen_set_background(pboot_screen, pic);
LOG("%s\n", pic ? "ok" : "failed");
if (pic)
twin_screen_set_background(pboot_screen, pic);