Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

Revision 8161194d68665648b93389adb333e741ba230497 authored by Mohammad Akhlaghi on 22 May 2023, 22:44:20 UTC, committed by Mohammad Akhlaghi on 23 May 2023, 06:42:11 UTC
Configuration: portability fixes in Less and WCSLIB
SUMMARY: no change is necessary in your project, unless you use the Fortran
features of WCSLIB in your project.

Until now, there were two compilation failures on recent macOS computers
with an M1 CPU: Less would crash because it couldn't find the relevant PCRE
(perl-compatible regular expression) libraries and WCSLIB would crash
because the LLVM compiler's Fortran features could not be built.

With this commit, both issues have been fixed by disabling the relevant
feature. Extensive comments have been placed in both places in case your
project needs these features, so please see the comments in the relevant
part of 'reproduce/software/make/basic.mk' for Less and
'reproduce/software/make/high-level.mk' for WCSLIB. In fact the previous
solution (where we would not have Fortran features in WCSLIB on macOS
systems was problematic and non-reproducibile (the features of WCSLIB
depended on the operating system!).

Another minor change was that for macOS, we now directly use the
version-string of WCSLIB to fix the internal linking issue there. As a
result, WCSLIB is no longer a "Version-dependent build" software (in
'reproduce/software/config/versions.conf'). Recall that these are software
that when changing the version, it is also necessary to inspect their build
recipe.

These two issues and their fix were discovered and fixed with the help of
James Robinson.
1 parent 644a236
  • Files
  • Changes
  • 8a3a871
  • /
  • reproduce
  • /
  • software
  • /
  • make
  • /
  • xorg.mk
Raw File Download

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • revision
  • directory
  • content
revision badge
swh:1:rev:8161194d68665648b93389adb333e741ba230497
directory badge
swh:1:dir:aa89e939904800969c76d259c538d9f57b6b8fbb
content badge
swh:1:cnt:1cc87a56a01024c9865b751fb18e1598aebb56a9

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • revision
  • directory
  • content
(requires biblatex-software package)
Generating citation ...
(requires biblatex-software package)
Generating citation ...
(requires biblatex-software package)
Generating citation ...
xorg.mk
# Build the project's Xorg dependencies.
#
# ------------------------------------------------------------------------
#                      !!!!! IMPORTANT NOTES !!!!!
#
# This Makefile will be loaded into 'high-level.mk', which is called by the
# './project configure' script. It is not included into the project
# afterwards.
#
# This Makefile contains instructions to build all the Xorg-related
# software within the project. The build instructions here are taken from
# Linux From Scratch:
#     http://www.linuxfromscratch.org/blfs/view/svn/x/xorg7.html
#
# ------------------------------------------------------------------------
#
# Copyright (C) 2021-2023 Mohammad Akhlaghi <mohammad@akhlaghi.org>
# Copyright (C) 2021-2023 Raul Infante-Sainz <infantesainz@gmail.com>
#
# This Makefile 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 Makefile 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 Makefile.  If not, see <http://www.gnu.org/licenses/>.





# Environment variables
export XORG_PREFIX=$(idir)

# Common configuration options for all Xorg programs
export XORG_CONFIG = --disable-static --prefix=$(XORG_PREFIX) \
                     --sysconfdir=$(idir)/etc --localstatedir=$(idir)/var





# This is the basic Xorg configuration script. Note that '$(idir)/etc' was
# built in 'basic.mk'.
$(idir)/etc/profile.d:; mkdir
$(idir)/etc/profile.d/xorg.sh: | $(idir)/etc/profile.d
	echo "export XORG_PREFIX=\"$(XORG_PREFIX)\""  > $@
	echo "export XORG_CONFIG=\"$(XORG_CONFIG)\"" >> $@
	chmod 644 $@

# A set of m4 macros used in all Xorg packages.
$(ibidir)/util-macros-$(util-macros-version): \
                      $(idir)/etc/profile.d/xorg.sh \
                      $(ibidir)/automake-$(automake-version)
	tarball=util-macros-$(util-macros-version).tar.lz
	$(call import-source, $(util-macros-url), $(util-macros-checksum))
	$(call gbuild, util-macros-$(util-macros-version),,$(XORG_CONFIG),V=1)
	echo "util-macros (Xorg) $(util-macros-version)" > $@

# Necessaary headers to define the Xorg protocols.
$(ibidir)/xorgproto-$(xorgproto-version): \
                    $(ibidir)/util-macros-$(util-macros-version)
	tarball=xorgproto-$(xorgproto-version).tar.lz
	$(call import-source, $(xorg-proto-url), $(xorgproto-checksum))
	$(call gbuild, xorgproto-$(xorgproto-version),,$(XORG_CONFIG),V=1)
	echo "xorgproto $(xorgproto-version)" > $@

# Necessaary headers to define the Xorg protocols.
$(ibidir)/libxau-$(libxau-version): $(ibidir)/xorgproto-$(xorgproto-version)
	tarball=libXau-$(libxau-version).tar.lz
	$(call import-source, $(libaxu-url), $(libxau-checksum))
	$(call gbuild, libXau-$(libxau-version),,$(XORG_CONFIG), V=1)
	echo "libXau (Xorg) $(libxau-version)" > $@

# Library implementing the X Display Manager Control Protocol.
$(ibidir)/libxdmcp-$(libxdmcp-version): $(ibidir)/libxau-$(libxau-version)
	tarball=libXdmcp-$(libxdmcp-version).tar.bz2
	$(call import-source, $(libxdmcp-url), $(libxdmcp-checksum))
	$(call gbuild, libXdmcp-$(libxdmcp-version),,$(XORG_CONFIG), V=1)
	echo "libXdmcp (Xorg) $(libxdmcp-version)" > $@

# XML-XCB protocol descriptions
$(ibidir)/xcb-proto-$(xcb-proto-version): \
                    $(ibidir)/python-$(python-version) \
                    $(ibidir)/libxml2-$(libxml2-version)
	tarball=xcb-proto-$(xcb-proto-version).tar.lz
	$(call import-source, $(xcb-proto-url), $(xcb-proto-checksum))
	$(call gbuild, xcb-proto-$(xcb-proto-version),,$(XORG_CONFIG), V=1)
	echo "XCB-proto (Xorg) $(xcb-proto-version)" > $@

# Interface to the X Window System protocol, replaces current Xlib interface.
$(ibidir)/libxcb-$(libxcb-version): \
                 $(ibidir)/libxdmcp-$(libxdmcp-version) \
                 $(ibidir)/xcb-proto-$(xcb-proto-version) \
                 $(ibidir)/libpthread-stubs-$(libpthread-stubs-version)
	tarball=libxcb-$(libxcb-version).tar.lz
	$(call import-source, $(libxcb-url), $(libxcb-checksum))
	$(call gbuild, libxcb-$(libxcb-version),, \
	               $(XORG_CONFIG) --without-doxygen, \
	               V=1 -j$(numthreads))
	echo "libxcb (Xorg) $(libxcb-version)" > $@

$(ibidir)/libpthread-stubs-$(libpthread-stubs-version): \
                      $(ibidir)/automake-$(automake-version)
	tarball=libpthread-stubs-$(libpthread-stubs-version).tar.lz
	$(call import-source, $(libpthread-stubs-url), $(libpthread-stubs-checksum))
	$(call gbuild, libpthread-stubs-$(libpthread-stubs-version),, V=1)
	echo "libpthread-stubs (Xorg) $(libpthread-stubs-version)" > $@

# Library for configuring fonts, it needs util-linux for libuuid.
$(ibidir)/fontconfig-$(fontconfig-version): \
                     $(ibidir)/gperf-$(gperf-version) \
                     $(ibidir)/expat-$(expat-version) \
                     $(ibidir)/python-$(python-version) \
                     $(ibidir)/libxml2-$(libxml2-version) \
                     $(ibidir)/freetype-$(freetype-version) \
                     $(ibidir)/util-linux-$(util-linux-version)
#	Import the source.
	tarball=fontconfig-$(fontconfig-version).tar.lz
	$(call import-source, $(fontconfig-url), $(fontconfig-checksum))

#	Add the extra environment variables for using 'libuuid' of
#	'util-linux'.
	ulidir=$(idir)/util-linux
	export LDFLAGS="-L$$ulidir/lib $(LDFLAGS)"
	export CPPFLAGS="-I$$ulidir/include $(CPPFLAGS)"
	export PKG_CONFIG_PATH=$(PKG_CONFIG_PATH):$$ulidir/lib/pkgconfig

#	Build it.
	$(call gbuild, fontconfig-$(fontconfig-version),, \
	               $(XORG_CONFIG) --sysconfdir=$(idir)/etc \
	               --disable-docs, V=1 -j$(numthreads))
	echo "Fontconfig $(fontconfig-version)" > $@

$(ibidir)/xtrans-$(xtrans-version): \
                 $(ibidir)/libxcb-$(libxcb-version) \
                 $(ibidir)/fontconfig-$(fontconfig-version)
	tarball=xtrans-$(xtrans-version).tar.lz
	$(call import-source, $(xtrans-url), $(xtrans-checksum))
	$(call gbuild, xtrans-$(xtrans-version),,$(XORG_CONFIG), V=1)
	echo "xtrans (Xorg) $(xtrans-version)" > $@

$(ibidir)/libx11-$(libx11-version): $(ibidir)/xtrans-$(xtrans-version)
	tarball=libX11-$(libx11-version).tar.lz
	$(call import-source, $(libx11-url), $(libx11-checksum))
	$(call gbuild, libX11-$(libx11-version),,$(XORG_CONFIG), \
	               -j$(numthreads) V=1)
	echo "X11 library $(libx11-version)" > $@

$(ibidir)/libxext-$(libxext-version): $(ibidir)/libx11-$(libx11-version)
	tarball=libXext-$(libxext-version).tar.lz
	$(call import-source, $(libxext-url), $(libxext-checksum))
	$(call gbuild, libXext-$(libxext-version),,$(XORG_CONFIG), \
	               -j$(numthreads) V=1)
	echo "libXext $(libxext-version)" > $@

$(ibidir)/libice-$(libice-version): $(ibidir)/libxext-$(libxext-version)
	tarball=libICE-$(libice-version).tar.lz
	$(call import-source, $(libice-url), $(libice-checksum))
	$(call gbuild, libICE-$(libice-version),, \
	               $(XORG_CONFIG) ICE_LIBS=-lpthread, \
	               -j$(numthreads) V=1)
	echo "libICE $(libice-version)" > $@

$(ibidir)/libsm-$(libsm-version): $(ibidir)/libice-$(libice-version)
	tarball=libSM-$(libsm-version).tar.lz
	$(call import-source, $(libsm-url), $(libsm-checksum))
	$(call gbuild, libSM-$(libsm-version),, \
	               $(XORG_CONFIG), -j$(numthreads) V=1)
	echo "libSM $(libsm-version)" > $@

$(ibidir)/libxt-$(libxt-version): $(ibidir)/libsm-$(libsm-version)
	tarball=libXt-$(libxt-version).tar.lz
	$(call import-source, $(libxt-url), $(libxt-checksum))
	$(call gbuild, libXt-$(libxt-version),, \
	               $(XORG_CONFIG), -j$(numthreads) V=1)
	echo "libXt $(libxt-version)" > $@
The diff you're trying to view is too large. Only the first 1000 changed files have been loaded.
Showing with 0 additions and 0 deletions (0 / 0 diffs computed)
swh spinner

Computing file changes ...

back to top

Software Heritage — Copyright (C) 2015–2026, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Content policy— Contact— JavaScript license information— Web API