I learned a lot about Makefiles :D
So, basically I re-architeched things a bit:
The appliance/Makefile.inc fiels are now appliance/Makefile (again). The
main Makefile will call "make -C appliance preinstall" and "postinstall"
(and in future "clean"). So I got rid of the ugly make variables/include
thing. Some of the main Makefile's variables are exported to the
sub-makes. Appliances don't really need $(APPLIANCE) anymore as the
appliance directory is their CWD.
Added some new targets and smarter targets. I can do more with this, but
it's a big improvment from last time. Still learning a lot of Makefile
magic (been reading other people's Makefiles).
Verified that "make -j3" works (at least on the base appliance) but will
kill your hard drive :D
Introduced "profiles" Which are files with variables you want to override.
The file will be "include"ed by the main Makefile. For example, I have a
file, "local.cfg" that looks like this:
--- 8< -----------------------------
CHROOT = /var/scratch/marduk/vabuild
HEADLESS = YES
PRUNE_CRITICAL = NO
VIRTIO = YES
TIMEZONE = EST5EDT
DISK_SIZE = 60.0G
SWAP_SIZE = 48
PKGDIR = /var/scratch/packages
NBD_DEV = /dev/nbd8
all: qcow
--- 8< ------------------------------
Then, e.g. i can run "make PROFILE=local APPLIANCE=kde". If you don't
specify a PROFILE variable, then it will default to the empty string, which
means the main Makefile will attempt to include .cfg
So, for example i have:
$ ln -s local.cfg .cfg
$ make APPLIANCE=kde
Don't set PROFILE inside your .cfg file (why would you?). Also, if the
[pro]file does not exist, the include fails silently.
I will put this info in the wiki eventually...
2010-11-14 00:22:18 +01:00
|
|
|
HG_REPO = ../../teamplayer
|
|
|
|
TP_USER = teamplayer
|
|
|
|
TP_HOME = /opt/teamplayer
|
|
|
|
TP_DB = /var/lib/teamplayer
|
|
|
|
PGVER = 9.0
|
2010-11-21 01:52:00 +01:00
|
|
|
INSTALL = install
|
I learned a lot about Makefiles :D
So, basically I re-architeched things a bit:
The appliance/Makefile.inc fiels are now appliance/Makefile (again). The
main Makefile will call "make -C appliance preinstall" and "postinstall"
(and in future "clean"). So I got rid of the ugly make variables/include
thing. Some of the main Makefile's variables are exported to the
sub-makes. Appliances don't really need $(APPLIANCE) anymore as the
appliance directory is their CWD.
Added some new targets and smarter targets. I can do more with this, but
it's a big improvment from last time. Still learning a lot of Makefile
magic (been reading other people's Makefiles).
Verified that "make -j3" works (at least on the base appliance) but will
kill your hard drive :D
Introduced "profiles" Which are files with variables you want to override.
The file will be "include"ed by the main Makefile. For example, I have a
file, "local.cfg" that looks like this:
--- 8< -----------------------------
CHROOT = /var/scratch/marduk/vabuild
HEADLESS = YES
PRUNE_CRITICAL = NO
VIRTIO = YES
TIMEZONE = EST5EDT
DISK_SIZE = 60.0G
SWAP_SIZE = 48
PKGDIR = /var/scratch/packages
NBD_DEV = /dev/nbd8
all: qcow
--- 8< ------------------------------
Then, e.g. i can run "make PROFILE=local APPLIANCE=kde". If you don't
specify a PROFILE variable, then it will default to the empty string, which
means the main Makefile will attempt to include .cfg
So, for example i have:
$ ln -s local.cfg .cfg
$ make APPLIANCE=kde
Don't set PROFILE inside your .cfg file (why would you?). Also, if the
[pro]file does not exist, the include fails silently.
I will put this info in the wiki eventually...
2010-11-14 00:22:18 +01:00
|
|
|
|
|
|
|
M4_DEFS += -D TP_USER=$(TP_USER) -D TP_HOME=$(TP_HOME) -D TP_DB=$(TP_DB)
|
|
|
|
M4C = $(M4) $(M4_DEFS)
|
|
|
|
|
|
|
|
post_files = bash_profile settings_local.py start-teamplayer stop-teamplayer
|
|
|
|
post_files += local.start local.stop issue lighttpd.conf
|
|
|
|
|
|
|
|
preinstall:
|
|
|
|
|
|
|
|
postinstall: $(post_files)
|
|
|
|
chroot $(CHROOT) $(EMERGE) -n $(USEPKG) =dev-db/postgresql-server-$(PGVER)*
|
|
|
|
chroot $(CHROOT) passwd -d postgres
|
|
|
|
yes | chroot $(CHROOT) $(EMERGE) --config =postgresql-server-$(PGVER)*
|
|
|
|
chroot $(CHROOT) rc-update add postgresql-$(PGVER) default
|
|
|
|
chroot $(CHROOT) getent passwd $(TP_USER) || \
|
|
|
|
chroot $(CHROOT) useradd -c "Teamplayer Server" -G postgres -U -d $(TP_HOME) $(TP_USER)
|
|
|
|
rm -rf $(CHROOT)/$(TP_HOME)
|
|
|
|
hg clone --pull $(HG_REPO) $(CHROOT)/$(TP_HOME)
|
|
|
|
cp bash_profile $(CHROOT)$(TP_HOME)/.bash_profile
|
|
|
|
chroot $(CHROOT) mkdir -p /etc/teamplayer
|
|
|
|
$(M4C) settings_local.py > $(CHROOT)/etc/teamplayer/settings_local.py
|
|
|
|
mkdir -p $(CHROOT)$(TP_HOME)/bin
|
|
|
|
$(M4C) start-teamplayer > $(CHROOT)$(TP_HOME)/bin/start-teamplayer
|
|
|
|
chmod +x $(CHROOT)$(TP_HOME)/bin/start-teamplayer
|
|
|
|
$(M4C) stop-teamplayer > $(CHROOT)$(TP_HOME)/bin/stop-teamplayer
|
|
|
|
chmod +x $(CHROOT)$(TP_HOME)/bin/stop-teamplayer
|
|
|
|
chroot $(CHROOT) $(INSTALL) -d -o $(TP_USER) -g $(TP_USER) $(TP_DB)
|
|
|
|
chroot $(CHROOT) $(INSTALL) -d -o $(TP_USER) -g $(TP_USER) $(TP_DB)/songs
|
|
|
|
chroot $(CHROOT) rm -rf $(TP_HOME)/web/media/songs
|
|
|
|
chroot $(CHROOT) ln -s $(TP_DB)/songs $(TP_HOME)/web/media/songs
|
|
|
|
chroot $(CHROOT) $(INSTALL) -d -o $(TP_USER) -g $(TP_USER) $(TP_DB)/mpd
|
|
|
|
chroot $(CHROOT) $(INSTALL) -d -o $(TP_USER) -g $(TP_USER) /var/log/teamplayer
|
|
|
|
$(M4C) local.start > $(CHROOT)/etc/conf.d/local.start
|
|
|
|
$(M4C) local.stop > $(CHROOT)/etc/conf.d/local.stop
|
|
|
|
cp issue $(CHROOT)/etc/issue
|
|
|
|
$(M4C) lighttpd.conf > $(CHROOT)/etc/lighttpd/lighttpd.conf
|
|
|
|
chroot $(CHROOT) gpasswd -a lighttpd teamplayer
|
|
|
|
chroot $(CHROOT) rc-update add lighttpd default
|
|
|
|
chroot $(CHROOT) rc-update add ntpd default
|
|
|
|
|
|
|
|
clean:
|
|
|
|
|