diff --git a/Makefile b/Makefile
index 391ddc987902c26fcfc2f77535a35feb711a2ebb_TWFrZWZpbGU=..c1a3e388b0e4a7b7734d22bbcc88b6bc43c6e3ef_TWFrZWZpbGU= 100644
--- a/Makefile
+++ b/Makefile
@@ -226,6 +226,7 @@
   fedora \
   linux-wheels \
   linux-wheels-x86_64 \
+  linux-wheels-x86_64-musl \
   linux-wheels-i686 \
   ppa
 
diff --git a/contrib/packaging/Makefile b/contrib/packaging/Makefile
index 391ddc987902c26fcfc2f77535a35feb711a2ebb_Y29udHJpYi9wYWNrYWdpbmcvTWFrZWZpbGU=..c1a3e388b0e4a7b7734d22bbcc88b6bc43c6e3ef_Y29udHJpYi9wYWNrYWdpbmcvTWFrZWZpbGU= 100644
--- a/contrib/packaging/Makefile
+++ b/contrib/packaging/Makefile
@@ -45,5 +45,5 @@
 	@echo 'linux-wheels'
 	@echo '   Build Linux manylinux wheels using Docker.'
 	@echo ''
-	@echo 'linux-wheels-{x86_64, i686}'
+	@echo 'linux-wheels-{x86_64, i686}{,-musl}'
 	@echo '   Build Linux manylinux wheels for a specific architecture using Docker'
@@ -49,4 +49,6 @@
 	@echo '   Build Linux manylinux wheels for a specific architecture using Docker'
+	@echo '   The -musl variants is suitable for system using "musl" instead of "glibc",
+	@echo '   for example: Alpine linux.'
 	@echo ''
 	@echo 'deb'
 	@echo '   Build a Debian package locally targeting the current system'
@@ -125,8 +127,7 @@
 $(foreach release,$(RHEL_RELEASES),$(eval $(call rhel_targets,$(release))))
 
 .PHONY: linux-wheels
-linux-wheels: linux-wheels-x86_64
-
+linux-wheels: linux-wheels-x86_64 linux-wheels-x86_64-musl
 
 img_reg="registry.heptapod.net/mercurial/ci-images"
 img_tag="v3.0"
@@ -136,6 +137,10 @@
 linux-wheels-x86_64:
 	docker run --rm -ti -v `pwd`/../..:/src $(img_reg)/core-wheel-x86_64-c:$(img_tag) $(whl_sh)
 
+.PHONY: linux-wheels-x86_64-musl
+linux-wheels-x86_64-musl:
+	docker run --rm -ti -v `pwd`/../..:/src $(img_reg)/core-wheel-x86_64-musl-c:$(img_tag) $(whl_sh)
+
 .PHONY: linux-wheels-i686
 linux-wheels-i686:
 	docker run -e "HGTEST_JOBS=$(shell nproc)" --rm -ti -v `pwd`/../..:/src quay.io/pypa/manylinux1_i686 linux32 /src/contrib/packaging/build-linux-wheels.sh