Skip to content

Commit 4b048ae

Browse files
Use GCC 11 and patch ada library for constexpr compatibility
GCC 11 lacks constexpr std::string support needed by ada library. Patch ada.h to change constexpr to inline for functions using std::string: - url::get_pathname, clear_pathname, clear_search, copy_scheme - url_aggregator::get_pathname, clear_pathname, clear_hostname, clear_password, reserve This allows Node 24 to compile with GCC 11 while maintaining GLIBCXX compatibility with Ubuntu 22.04. Co-Authored-By: Claude (global.anthropic.claude-opus-4-5-20251101-v1:0) <noreply@anthropic.com>
1 parent 03ecd86 commit 4b048ae

1 file changed

Lines changed: 20 additions & 20 deletions

File tree

deps/ada/ada.h

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4762,7 +4762,7 @@ struct url : url_base {
47624762
* @return a newly allocated string.
47634763
* @see https://url.spec.whatwg.org/#dom-url-pathname
47644764
*/
4765-
[[nodiscard]] constexpr std::string_view get_pathname() const noexcept;
4765+
[[nodiscard]] inline std::string_view get_pathname() const noexcept;
47664766

47674767
/**
47684768
* Compute the pathname length in bytes without instantiating a view or a
@@ -4986,8 +4986,8 @@ struct url : url_base {
49864986
template <bool has_state_override = false>
49874987
[[nodiscard]] ada_really_inline bool parse_scheme(std::string_view input);
49884988

4989-
constexpr void clear_pathname() override;
4990-
constexpr void clear_search() override;
4989+
inline void clear_pathname() override;
4990+
inline void clear_search() override;
49914991
constexpr void set_protocol_as_file();
49924992

49934993
/**
@@ -5013,13 +5013,13 @@ struct url : url_base {
50135013
* Take the scheme from another URL. The scheme string is moved from the
50145014
* provided url.
50155015
*/
5016-
constexpr void copy_scheme(ada::url &&u) noexcept;
5016+
inline void copy_scheme(ada::url &&u) noexcept;
50175017

50185018
/**
50195019
* Take the scheme from another URL. The scheme string is copied from the
50205020
* provided url.
50215021
*/
5022-
constexpr void copy_scheme(const ada::url &u);
5022+
inline void copy_scheme(const ada::url &u);
50235023

50245024
}; // struct url
50255025

@@ -6629,7 +6629,7 @@ inline std::ostream &operator<<(std::ostream &out, const ada::url &u) {
66296629
return path.size();
66306630
}
66316631

6632-
[[nodiscard]] constexpr std::string_view url::get_pathname() const noexcept {
6632+
[[nodiscard]] inline std::string_view url::get_pathname() const noexcept {
66336633
return path;
66346634
}
66356635

@@ -6739,9 +6739,9 @@ inline void url::update_base_port(std::optional<uint16_t> input) {
67396739
port = input;
67406740
}
67416741

6742-
constexpr void url::clear_pathname() { path.clear(); }
6742+
inline void url::clear_pathname() { path.clear(); }
67436743

6744-
constexpr void url::clear_search() { query = std::nullopt; }
6744+
inline void url::clear_search() { query = std::nullopt; }
67456745

67466746
[[nodiscard]] constexpr bool url::has_hash() const noexcept {
67476747
return hash.has_value();
@@ -6761,12 +6761,12 @@ inline void url::set_scheme(std::string &&new_scheme) noexcept {
67616761
}
67626762
}
67636763

6764-
constexpr void url::copy_scheme(ada::url &&u) noexcept {
6764+
inline void url::copy_scheme(ada::url &&u) noexcept {
67656765
non_special_scheme = u.non_special_scheme;
67666766
type = u.type;
67676767
}
67686768

6769-
constexpr void url::copy_scheme(const ada::url &u) {
6769+
inline void url::copy_scheme(const ada::url &u) {
67706770
non_special_scheme = u.non_special_scheme;
67716771
type = u.type;
67726772
}
@@ -7045,7 +7045,7 @@ struct url_aggregator : url_base {
70457045
* @return a lightweight std::string_view.
70467046
* @see https://url.spec.whatwg.org/#dom-url-pathname
70477047
*/
7048-
[[nodiscard]] constexpr std::string_view get_pathname() const noexcept
7048+
[[nodiscard]] inline std::string_view get_pathname() const noexcept
70497049
ada_lifetime_bound;
70507050
/**
70517051
* Compute the pathname length in bytes without instantiating a view or a
@@ -7176,7 +7176,7 @@ struct url_aggregator : url_base {
71767176
* To optimize performance, you may indicate how much memory to allocate
71777177
* within this instance.
71787178
*/
7179-
constexpr void reserve(uint32_t capacity);
7179+
inline void reserve(uint32_t capacity);
71807180

71817181
ada_really_inline size_t parse_port(
71827182
std::string_view view, bool check_trailing_content) noexcept override;
@@ -7233,9 +7233,9 @@ struct url_aggregator : url_base {
72337233
inline void update_base_port(uint32_t input);
72347234
inline void append_base_pathname(std::string_view input);
72357235
[[nodiscard]] inline uint32_t retrieve_base_port() const;
7236-
constexpr void clear_hostname();
7237-
constexpr void clear_password();
7238-
constexpr void clear_pathname() override;
7236+
inline void clear_hostname();
7237+
inline void clear_password();
7238+
inline void clear_pathname() override;
72397239
[[nodiscard]] constexpr bool has_dash_dot() const noexcept;
72407240
void delete_dash_dot();
72417241
inline void consume_prepared_path(std::string_view input);
@@ -7717,7 +7717,7 @@ inline void url_aggregator::append_base_username(const std::string_view input) {
77177717
ADA_ASSERT_TRUE(validate());
77187718
}
77197719

7720-
constexpr void url_aggregator::clear_password() {
7720+
inline void url_aggregator::clear_password() {
77217721
ada_log("url_aggregator::clear_password ", to_string());
77227722
ADA_ASSERT_TRUE(validate());
77237723
if (!has_password()) {
@@ -7939,7 +7939,7 @@ inline void url_aggregator::clear_hash() {
79397939
ADA_ASSERT_TRUE(validate());
79407940
}
79417941

7942-
constexpr void url_aggregator::clear_pathname() {
7942+
inline void url_aggregator::clear_pathname() {
79437943
ada_log("url_aggregator::clear_pathname");
79447944
ADA_ASSERT_TRUE(validate());
79457945
uint32_t ending_index = uint32_t(buffer.size());
@@ -7974,7 +7974,7 @@ constexpr void url_aggregator::clear_pathname() {
79747974
ada_log("url_aggregator::clear_pathname completed, running checks... ok");
79757975
}
79767976

7977-
constexpr void url_aggregator::clear_hostname() {
7977+
inline void url_aggregator::clear_hostname() {
79787978
ada_log("url_aggregator::clear_hostname");
79797979
ADA_ASSERT_TRUE(validate());
79807980
if (!has_authority()) {
@@ -8073,7 +8073,7 @@ inline void ada::url_aggregator::add_authority_slashes_if_needed() noexcept {
80738073
ADA_ASSERT_TRUE(validate());
80748074
}
80758075

8076-
constexpr void ada::url_aggregator::reserve(uint32_t capacity) {
8076+
inline void ada::url_aggregator::reserve(uint32_t capacity) {
80778077
buffer.reserve(capacity);
80788078
}
80798079

@@ -8395,7 +8395,7 @@ constexpr void url_aggregator::set_protocol_as_file() {
83958395
return true;
83968396
}
83978397

8398-
[[nodiscard]] constexpr std::string_view url_aggregator::get_pathname()
8398+
[[nodiscard]] inline std::string_view url_aggregator::get_pathname()
83998399
const noexcept ada_lifetime_bound {
84008400
ada_log("url_aggregator::get_pathname pathname_start = ",
84018401
components.pathname_start, " buffer.size() = ", buffer.size(),

0 commit comments

Comments
 (0)