aboutsummaryrefslogblamecommitdiff
path: root/Makefile
blob: c63bb41c320f61aa7d7943d1fdc8935a6a04394e (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



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) \
	src/bin/paku         \


all: guix nix debian homebrew $(derived-assets)

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


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 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 result-packages.sentinel

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

result-local result-local.sentinel: result-packages.sentinel
	rm -f result-local
	guix system -v3 -Lsrc/ -K -r result-local build tests/local/system.scm
	touch result-local.sentinel

result-internet result-internet.sentinel: result-packages.sentinel
	rm -f result-internet
	guix system -v3 -Lsrc/ -K -r result-internet build tests/internet/system.scm
	touch result-internet.sentinel


nix: default.nix result.sentinel

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

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


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
	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             \
		*.sentinel                                                     \


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 \

check-guix: $(test-config-files)
	for f in $(local-files); do \
		diff -U5 --color=always result-local$$f tests/local$$f; \
	done
	for f in $(internet-files); do \
		diff -U5 --color=always result-internet$$f tests/internet$$f; \
	done

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: check-guix check-ubuntu check-debian