# Copyright (C) 2023-2024 Denis 'GNUtoo' Carikli # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . CURL ?= curl BLOG_URL ?= https://blog.replicant.us/page # gnu: guile-next: Update to commit 3b76a30. GUIX_COMMIT ?= b1365a032613e7756aca892a7422fda0b26b0627 GUIX_SHELL ?= guix time-machine --commit=$(GUIX_COMMIT) -- shell GUIX_PYTHON_PACKAGES ?= python python-beautifulsoup4 python-html2text python-sh CONVERT ?= $(GUIX_SHELL) -C $(GUIX_PYTHON_PACKAGES) -- python3 wordpresshtml2commonmark.py HAUNT ?= $(GUIX_SHELL) -C --with-input=guile=guile-next haunt -- haunt HAUNT_SERVE ?= $(GUIX_SHELL) -N -C --with-input=guile=guile-next haunt -- haunt serve HAUNT_PORT ?= 1968 VENDOR_REPLICANT_ARTWORK_REV ?= fc213d2ca94cef9047d1e4a71c21c4c4c87f349d VENDOR_REPLICANT_ARTWORK_PATH ?= external/vendor_replicant_artwork SENTINEL = .PHONY: \ all \ build \ publish \ generate-wordpress-articles \ help \ markdown \ other-tests \ serve \ update-makefile \ update-makefile-tests \ $(SENTINEL) include build/get-wordpress-article-url.scm WORDPRESS_PAGES = \ wordpress/pages/replicant_blog_page_8.html \ wordpress/pages/replicant_blog_page_7.html \ wordpress/pages/replicant_blog_page_6.html \ wordpress/pages/replicant_blog_page_5.html \ wordpress/pages/replicant_blog_page_4.html \ wordpress/pages/replicant_blog_page_3.html \ wordpress/pages/replicant_blog_page_2.html \ wordpress/pages/replicant_blog_page_1.html \ wordpress/pages/replicant_blog_page_0.html \ $(SENTINEL) # If there is a MARKDOWN_ARTICLES variable below it is auto-generated # from links.txt by the build/update-makefile.scm script. You can use # the update-makefile target to update the list below. MARKDOWN_ARTICLES = \ markdown/2010_09_welcome-to-replicant.md \ markdown/2010_11_fdroid-a-free-software-alternative-to-google-market.md \ markdown/2011_03_new-replicant-test-images-available.md \ markdown/2011_04_replicant-2-2-sdk-available.md \ markdown/2011_04_replicant-lacks-tracking-antifeatures.md \ markdown/2011_05_replicant-2-2-preview-007.md \ markdown/2011_06_replicant-2-2-preview-008-is-out.md \ markdown/2011_08_nexus-s-support-in-replicant-being-worked-on.md \ markdown/2011_09_introducing-replicant-on-htc-dream-video.md \ markdown/2011_10_new-replicant-2-2-preview-images-0009-released.md \ markdown/2011_11_replicant-2-3-preview-images-for-nexus-one-released.md \ markdown/2011_11_replicant-on-nexus-s-preview.md \ markdown/2012_01_nexus-s-status-update-with-new-images.md \ markdown/2012_02_wiki-and-tracker-are-now-powered-by-redmine.md \ markdown/2012_03_galaxy-s-support-upcoming.md \ markdown/2012_04_new-set-of-replicant-2-3-images-including-galaxy-s-support.md \ markdown/2012_04_nexus-sgalaxy-s-privacy-issues.md \ markdown/2012_09_replicant-2-3-0004-images-release.md \ markdown/2012_09_replicant-2-3-0005-images-fixing-the-ussd-vulnerability.md \ markdown/2012_11_replicant-4-0-0001-images-release.md \ markdown/2013_01_replicant-4-0-sdk-release.md \ markdown/2013_02_replicant-4-0-0002-images-release.md \ markdown/2013_04_replicant-4-0-0003-images-release.md \ markdown/2013_07_announcing-the-free-software-foundation-fundraising-program-for-replicant.md \ markdown/2013_07_replicant-4-0-0004-images-release.md \ markdown/2013_08_opening-the-replicant-forums.md \ markdown/2013_10_replicant-4-0-0005-images-release.md \ markdown/2013_11_fairphone.md \ markdown/2014_01_replicant-4-2-kicks-out.md \ markdown/2014_03_unveiling-the-samsung-galaxy-back-door.md \ markdown/2014_06_replicant-4-2-on-the-goldelico-gta04.md \ markdown/2014_06_replicant-at-the-15th-libre-software-meeting-in-montpellier-france-this-july.md \ markdown/2014_07_replicant-4-2-0002-images-release.md \ markdown/2014_09_replicant-homepage-and-roadmap-for-the-future.md \ markdown/2014_12_replicant-4-2-0003-images-release.md \ markdown/2015_01_replicant-at-fosdem-2015.md \ markdown/2015_04_whats-happening-or-not-at-replicant.md \ markdown/2015_07_replicant-source-code-hosting-and-rmll-2015.md \ markdown/2015_07_rmll-feedback-optimus-black-advancement-and-cccamp.md \ markdown/2015_08_replicant-and-friends-at-chaos-communication-camp-2015.md \ markdown/2015_09_replicant-4-2-0004-images-release.md \ markdown/2015_09_upcoming-events-for-replicant-in-octobernovember-2015.md \ markdown/2015_12_shops-selling-devices-pre-installed-with-replicant.md \ markdown/2016_01_replicant-at-fosdem-2016.md \ markdown/2016_05_coliberator-2016-keynotes-and-workshops.md \ markdown/2016_07_media-from-2016-replicant-talks.md \ markdown/2016_07_replicant-at-pseshsf-2016.md \ markdown/2016_08_replicant-6-early-work-upstream-work-and-f-droid-issue.md \ markdown/2017_02_replicant-6-0-development-updates.md \ markdown/2017_04_there-wont-be-a-replicant-6-0-sdk-because-there-is-already-something-better.md \ markdown/2017_05_replicant-6-0-released.md \ markdown/2017_09_a-new-replicant-6-0-release.md \ markdown/2017_12_contributions-to-arcep-work-on-terminal-devices-and-public-consultation.md \ markdown/2017_12_third-replicant-6-0-release.md \ markdown/2018_01_les-terminaux-sont-ils-le-maillon-faible-de-louverture-dinternet.md \ markdown/2018_03_final-days-for-the-upstream-linux-allwinner-vpu-support-crowdfunding-campaign.md \ markdown/2019_01_meeting-point-at-fosdem.md \ markdown/2019_01_replicant-meeting-at-fosdem-2019.md \ markdown/2019_01_replicant-will-receive-a-device-from-necuno-solutions.md \ markdown/2019_06_replicant-contributors-meeting-the-2728-july-in-france.md \ markdown/2019_07_graphics-support-for-replicant-9.md \ markdown/2019_12_replicant-36c3.md \ markdown/2020_01_replicant-at-fosdem-2020.md \ markdown/2020_04_what-could-go-wrong-with-devices-that-have-non-replaceable-batteries.md \ markdown/2020_07_late-report-from-fosdem-2020.md \ markdown/2020_12_call-for-a-community-manager.md \ markdown/2021_05_presenting-replicants-community-manager.md \ markdown/2021_06_replicant-is-looking-for-volunteers-to-add-support-for-the-gsd4t-gps-chip.md \ markdown/2022_06_new-replicant-6-0-0004-release-and-replicant-11-status.md \ markdown/2023_02_replicant-at-fosdem-2023.md \ markdown/2023_12_replicant-37c3.md \ markdown/2024_03_replicant-status-and-report-of-the-37c3-and-fosdem-2024-conferences.md \ $(SENTINEL) all: help wordpress/articles: mkdir -p $@ wordpress/pages: mkdir -p $@ wordpress/pages/replicant_blog_page_%.html: wordpress/pages $(CURL) $(BLOG_URL)/$(subst replicant_blog_page_,,$*)/ -o $@ generate-wordpress-articles: build $(GUIX_SHELL) -C $(GUIX_PYTHON_PACKAGES) \ -- \ python3 haunthtml2wordpress.py \ ./site/future-of-ngi-funding.html links.txt: $(WORDPRESS_PAGES) @echo -n '' > $@ @for f in $(WORDPRESS_PAGES) ; do \ echo "Processing $$f" > /dev/stderr ; \ guix shell -C python python-beautifulsoup4 -- \ python3 get_links.py $$f | sort -u >> $@ ; \ done # do not depend on links.txt as a human is supposed to review it manually update-makefile: bash -c 'tmp=`mktemp` && \ guile \ -L . \ -c \ "(display (@@ (build update-makefile) new-makefile-text))" \ > $${tmp} && \ cp $${tmp} Makefile && rm -f $${tmp}' wordpress/articles/%.html: curl "$(guile $(get-wordpress-article-url))" -o $@ markdown/%.md: wordpress/articles/%.html mkdir -p markdown $(CONVERT) $^ $@ markdown: $(MARKDOWN_ARTICLES) $(VENDOR_REPLICANT_ARTWORK_PATH): git clone \ https://git.replicant.us/replicant/vendor_replicant_artwork \ $(VENDOR_REPLICANT_ARTWORK_PATH) static/replicant_banner_white.png: vendor_replicant_artwork_revision.txt install -m 644 \ $(VENDOR_REPLICANT_ARTWORK_PATH)/replicant_banner_white.png \ $@ vendor_replicant_artwork_revision.txt: $(VENDOR_REPLICANT_ARTWORK_PATH) Makefile if [ ! -f $@ ] || [ "`cat $@`" != "$(VENDOR_REPLICANT_ARTWORK_REV)" ] ; \ then \ rm -f $@ ; \ git -C $(VENDOR_REPLICANT_ARTWORK_PATH) fetch origin ; \ git -C $(VENDOR_REPLICANT_ARTWORK_PATH) \ checkout -f $(VENDOR_REPLICANT_ARTWORK_REV) ; \ git -C $(VENDOR_REPLICANT_ARTWORK_PATH) reset --hard ; \ git -C $(VENDOR_REPLICANT_ARTWORK_PATH) clean -dfx ; \ echo $(VENDOR_REPLICANT_ARTWORK_REV) > $@ ; \ fi build: static/replicant_banner_white.png $(HAUNT) build publish: build rsync -av site/ root@git.replicant.us:/var/www/blog.test.replicant.us/ help: @printf "%s\n\t%s\n\t%s\n\t%s\n\t%s\n\t%s\n\t%s\n\t%s\n\t%s\n" \ "Available commands:" \ "make build # Generate the HTML files with haunt." \ "make serve # run haunt serve -w -p $(HAUNT_PORT)" \ "make publish # Copy the html files to https://blog.test.replicant.us" \ "make links.txt # Create links.txt file with blog post links." \ " # For security reasons This file needs to be manually" \ " # reviewed manually before usage." \ "make markdown # create markdown pages. To be done after reviewing links.txt." \ "make check # Run tests." \ serve: build $(HAUNT_SERVE) -w -p $(HAUNT_PORT) website.tar.gz: build tar \ --exclude-vcs \ --format=gnu \ --owner=0 --group=0 --numeric-owner \ --sort=name \ -czf \ website.tar.gz \ site \ pages/img \ index.html \ --transform="s#^site#web#" \ --transform="s#^pages/img/#web/img/#" ######### # Tests # ######### check: other-tests update-makefile-tests other-tests: build tests/tests.sh update-makefile-tests: guile -L . tests/update-makefile.scm