aboutsummaryrefslogblamecommitdiff
path: root/Makefile
blob: 40a581656203c747b49e79ec34fb448357ae4e16 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
       
 
 









                                                
 
                                          
 
 
                                

                
 
                     


                                                 



                              







                                                                                                    
 
                                       
                                                
 


                                                                                
                                                 
                                            
                
 




                                



                                   
 





                                                                              


                                                                         
                
 


                                                                                    


                                                                               
                

 
                                

                      
                     
 
                            
                           
                
 
 
                    
                        

                 
                             
 



                   
                        

                
 
                     




                                                                      
                      


                                      


                                                                               


                                                                                
                                                                                

 
                                                        
                                                    
                        

                                                                                  
                             
                                                                                       
 

                                                                  





                                                                                  
.POSIX:


.SUFFIXES:
.SUFFIXES: .in

.in:
	sed \
		-e "s|@HOSTNAME@|`hostname`|g" \
		< $< > $@
	if [ -x $< ]; then chmod +x $@; fi



all: guix nix debian homebrew src/bin/paku


paku.lock: src/bin/paku Makefile
	touch $@


test-config-files = \
	tests/internet/etc/postfix/main.cf      \
	tests/internet/etc/dkimproxyout.conf    \
	tests/internet/etc/dovecot/dovecot.conf \

derived-assets = \
	$(test-config-files) \

guix: src/org/euandre/packages.scm channel-key.sentinel \
		result-packages.sentinel result-services.sentinel

channel-key.sentinel: paku.lock
	F="$$( perl -MJSON -0777 -E 'say $${decode_json <>}{maintainer}{name}'  < paku.lock).key"; \
	ID="$$(perl -MJSON -0777 -E 'say $${decode_json <>}{maintainer}{email}' < paku.lock)"; \
	gpg --armour --export "$$ID" > "$$F"
	touch $@

src/org/euandre/packages.scm: paku.lock
	paku guix > src/org/euandre/packages.scm

result-packages.sentinel: src/org/euandre/packages.scm src/org/euandre/queue.scm
	rm -f result-packages
	guix build -r result-packages -v3 -Lsrc/ -K \
		-f src/org/euandre/packages.scm \
		-f src/org/euandre/queue.scm
	touch $@

local-files = \
	/etc/postfix/master.cf \
	/etc/postfix/main.cf   \

internet-files = \
	$(local-files)            \
	/etc/sasl2/smtpd.conf     \
	/etc/dkimproxyout.conf    \
	/etc/dovecot/dovecot.conf \

result-services.sentinel: result-local.sentinel result-internet.sentinel
	touch $@

result-local.sentinel: result-packages.sentinel
	rm -f result-local
	guix system -v3 -Lsrc/ -K -r result-local build tests/local/system.scm
	for f in $(local-files); do \
		diff -U5 --color=always result-local$$f tests/local$$f; \
	done
	touch $@

result-internet.sentinel: result-packages.sentinel $(test-config-files)
	rm -f result-internet
	guix system -v3 -Lsrc/ -K -r result-internet build tests/internet/system.scm
	for f in $(internet-files); do \
		diff -U5 --color=always result-internet$$f tests/internet$$f; \
	done
	touch $@


nix: default.nix result.sentinel

default.nix: paku.lock
	paku nix > $@

result.sentinel: default.nix
	nix-build build.nix
	touch $@


debian.mk: paku.lock
	paku debian > $@

debian: debian.mk
	@$(MAKE) -f debian.mk

homebrew: Formula

Formula: paku.lock
	mkdir -p $@
	paku homebrew $@
	touch $@


public/debian: debian
	mkdir -p $(@D)
	rsync -avzP --delete `$(MAKE) -s -f debian.mk public-dir`/ $@/

public/paku.html: paku.lock src/bin/paku
	mkdir -p $(@D)
	paku html > $@

public: public/debian public/paku.html

upload: public
	rsync -avzP --delete public/ euandre.org:/srv/www/s/package-repository/

clean:
	rm -rf \
		$(derived-assets) result* .paku/ public/ debian.mk             \
		src/bin/paku *.sentinel                                        \


HTTP-REMOTE = 'https://euandre.org/s/package-repository'
GIT-REMOTE  = 'git://euandre.org/package-repository'
check-ubuntu-x86_64-deb:
	sh tests/vm-check.sh -x -H ubuntu-x86_64-headless -r $(HTTP-REMOTE) -t deb

check-ubuntu-x86_64-homebrew:
	sh tests/vm-check.sh -x -H ubuntu-x86_64-headless -r $(GIT-REMOTE)  -t homebrew

check-ubuntu: check-ubuntu-x86_64-deb check-ubuntu-x86_64-homebrew

check-debian-x86_64-deb:
	sh tests/vm-check.sh -x -H debian-x86_64-headless -r $(HTTP-REMOTE) -t deb

check-debian: check-debian-x86_64-deb

check: all check-ubuntu check-debian