libiconv and gettext have a circular dependency. In an ideal world we'd
build libiconv without gettext support first, then gettext and finally
libiconv again with gettext support.
However, if the libiconv port detects gettext on the host system while
the gettext port hasn't been built yet things break.
This disables gettext support for the libiconv port for now.
This is no longer true, I'm not sure where this got fixed, but I can
successfully connect via IP without specifying a port number using
the latest HEAD of master.
The `--openssldir` parameter was causing OpenSSL to search for its
resources in the wrong location, e.g.:
`/serenity/Build/i686/Root/usr/local/ssl/...`
By using `--install_prefix`, the build system understands where to put
the OpenSSL files and does not leak the build path into the compiled
binaries.
The Git repository is hosted on GitHub and is owned by the SerenityOS
GitHub organization which means our root of trust is GitHub anyway
(where did you get _this_ repository from?) So let's remove the
checksum.
Without a proper prefix, the `configure` script will probably pick up
the host's OpenSSL library. This change makes sure the script always
looks at the library present in the Serenity build dir.
The PCRE JIT creates memory that needs to be readable, writable and
executable at the same time. Serenity does not like this, so disable
it. This JIT is of limited use for the current applications of PHP
within Serenity anyway :-)
This changes the .port_include.sh script so that ports can more easily
create more than one launcher by making the install_launcher function
available to the port's package.sh script.
This creates launchers for the stpuzzles port in the Games/Puzzles
category.
Previously this port would just crash. There was a workaround in
the way the app launcher started the game but I'd really like to
get rid of that hack.
Previously we'd install mbedtls into /lib, /include, etc. Instead we
should install this port into /usr/local/lib.
This also builds shared libraries for this port.
This was breaking ports linting, which runs the script with the
'showproperty' option. This check is not needed for some other options
as well, so let's do it conditionally.
Simply by checking whether a built libc.so exists, we should be able to
avoid strange build errors where that's not the case and just tell the
user upfront.
Fixes#7309.
If you're on the new toolchain with std support already
you'd be unable to build libicu because <cmath> #undefs
some of the defines from <math.h> (e.g. isfinite).
This makes stdlib.h and stdio.h functions available in the std
namespace for C++.
libstdc++v3's link tests can fail if you don't have an up-to-date
build directory, for example:
1. Have libc with missing _Exit symbol because you haven't done
a build since that was added.
2. Run toolchain rebuild. libstdc++v3's configure script will
realize that it can do link tests in general but will fail
later on when it tries to link a program that tests for _Exit.
Even though this is a toolchain patch this does not necessarily
require rebuilding the toolchain right away. This is only required
once we start using any of these new members in the std namespace,
e.g. for ports.
This is used for `sys.platform`, so it's important to get it right and
ideally never change it again. When not cross-compiling this would
append the `uname -r` version number, so let's explicitly override the
generated value and set it to `serenityos`. Various other systems do
this as well.
This makes the following work:
>>> import webbrowser
>>> webbrowser.open("http://serenityos.org")
As well as this well-known easter egg:
>>> import antigravity
Pretty cool! :^)
This updates the way we verify signatures for the gcc
port because we were previously downloading the keychain
from the mirror which defeats the point of doing signature
checks.
We don't support hashes from external files (anymore), downloading
another file for integrity validation is pointless. As as result, these
two ports would refuse to build as their hashes were missing.
Fixes#6645.
Without a SONAME gcc will put the whole library path into executables
which link against these libraries:
$ readelf -d Root/usr/local/games/openttd
Dynamic section at offset 0xf0747c contains 32 entries:
Tag Type Name/Value
0x00000001 (NEEDED) [libgcc_s.so]
0x00000001 (NEEDED) [/serenity/Build/i686/Root/usr/local/lib/libpng.so]
0x00000001 (NEEDED) [/serenity/Build/i686/Root/usr/local/lib/libz.so]
0x00000001 (NEEDED) [/serenity/Build/i686/Root/usr/local/lib/liblzma.so]
0x00000001 (NEEDED) [libSDL2-2.0.so.1]
0x00000001 (NEEDED) [libicui18n.so.69]
0x00000001 (NEEDED) [libicuuc.so.69]
0x00000001 (NEEDED) [libicudata.so.69]
0x00000001 (NEEDED) [libpthread.so]
0x00000001 (NEEDED) [libm.so]
0x00000001 (NEEDED) [libc.so]
This causes the executable to fail because the dynamic linker
tries to find the library in the incorrect path.
I have my environment configured to use https://pre-commit.com/.
I guess the scripts were changed recently to lint all ports, and
the python port was barfing on my system because of this bug.
Commit b3db01e20 broke simple commands without arguments like:
./package.sh clean
Now, all available arguments are passed along, even if there are none.
This adds support for detecting incorrect version numbers and links
in the ports list.
Also, unlike before it doesn't parse the package.sh script but executes
it instead which allows us to detect syntax errors.
The hash for the master zip file changed again. Probably because
GitLab only caches those zip files for a bit and re-generates them
with slightly different zip headers after some time even though
the repository didn't change.
The new message for skipping builds makes it hard to
distinguish failed builds from builds that were just skipped
so change it back to the old one - but don't actually build
packages twice again.
This unbreaks the ScummVM port build. Some `[[noreturn]]` keywords were
added to `<assert.h>` recently and this required an additional flag to
the ScummVM configure script to fix.
Also removed the now unnecessary `export LIBS`.
Previously we'd end up building some ports multiple times, e.g.
as a dependency for another port. This changes the build_all.sh
script so that it builds ports only once.
we need to link against LibCrypt and subsubsequently LibCore (which
LibCrypt does not link against itself due to a circular dependency
issue).
Not sure why this broke, it worked when I last updated the port.
- Replaced /Root with
- Improved documentation.
- Removed a few typos.
- Replaced with
- Added brackets in some cases.
Most of the changes were reviewed and applied manually.
- SERENITY_ROOT is being kept around for compatibility reasons, and will
be removed gradually
- SERENITY_INSTALL_ROOT points to DESTDIR but will be preferred over
that in the future
- SERENITY_SOURCE_DIR points to the root folder of the repository. Let's
keep the root terminology in the directory structure sort of sense out
of here
When building with ccache these ports failed to build because
CC contains more than one word.
The ncurses port also doesn't like how ccache preprocesses
files. This patch fixes that.
This port was still using the upstream's master branch as opposed to
a fixed git commit.
Also, now that SDL2 is installed into /usr/local the build failed.
I have also removed an obsolete patch because we're now linking
against shared libraries for SDL2 and those already have appropriate
library dependencies.
This manually builds shared libraries for a bunch of ports. Using
libtool would be preferable but that's currently broken so I'm
linking the shared libraries manually.
According to @Baitinq the original port crashed with audio enabled.
I suspect that this was because the SDL2 headers didn't match between
the host and target system. Now that we properly use target's headers
this is no longer an issue so I enabled audio:
https://www.youtube.com/watch?v=ZTFvrcpZjY8
I was trying to port openttd which I ultimately gave up on because
too much of the C++ standard library's functionality is missing at this
point. The libicu library was a dependency for that.
In its current state the libicu port is not thread-safe because of
missing functionality in the C++ standard library (mainly std::mutex,
std::condition_variable, etc.).
This is useful for ports which depend on running tools on the host system.
In this case we can build the port twice - once for the host and once for
the target system.