Faits:
Faits:
A. G._, né en 1955, a travaillé en qualité de magasinier au service de l'entreprise C._ et S._ SA. Parallèlement, il a occupé, à temps partiel, un emploi de placeur et contrôleur au service de l'entreprise G._. Souffrant de douleurs cervicales et lombaires, il a quitté son emploi de magasinier et s'est annoncé à l'assurance-invalidité le 25 mai 1999.
Dans ses rapports des 4 octobre et 21 décembre 1999, le docteur V._, médecin traitant, a fait état de cervicalgies sur discarthrose C5-C6, de lombalgies sur discopathies L3-L4 et L4-L5, d'une volumineuse hernie discale postéro-latérale L4-L5, d'arthrose L5-S1, d'une HTA labile et d'obésité. Selon ce médecin, la capacité de travail du patient est nulle dans l'ancienne activité de magasinier, tandis qu'un travail à mi-temps avec un rendement prévisible de 100 % demeure exigible dans un emploi adapté. Il a précisé que le patient ne devrait pas s'exposer au froid, au bruit et aux produits chimiques et poussières, ou rester immobile de façon prolongée, ou porter des charges pesant plus de 5 à 6 kg.
L'Office cantonal de l'assurance-invalidité du canton de Genève (l'offfice AI) a confié un mandat d'expertise au Centre d'intégration professionnelle de l'assurance-invalidité de Genève (COPAI). A l'issue d'un stage de huit semaines, les responsables du COPAI ont estimé que l'assuré pouvait être réinséré dans le circuit économique normal, où il pourrait exercer une activité légère autorisant les changements de position. Sa capacité de travail y serait de 56 %, correspondant à six heures de travail quotidien avec un rendement de 75 % (rapports du docteur L._, du 7 février 2001, et du directeur du COPAI, T._, du 13 février 2001). L'assuré a contesté le bien-fondé de cette évaluation, alléguant qu'elle ne tenait pas compte de ses souffrances.
Par décision du 13 décembre 2001, l'office AI a nié le droit de l'assuré à des mesures de réadaptation d'ordre professionnel, nonobstant le taux d'invalidité de 55 %, motif pris que ces mesures étaient vouées à l'échec. Par une seconde décision du 25 avril 2002, l'office AI a alloué une demi-rente d'invalidité à dater du 1er février 2000.
Par décision du 13 décembre 2001, l'office AI a nié le droit de l'assuré à des mesures de réadaptation d'ordre professionnel, nonobstant le taux d'invalidité de 55 %, motif pris que ces mesures étaient vouées à l'échec. Par une seconde décision du 25 avril 2002, l'office AI a alloué une demi-rente d'invalidité à dater du 1er février 2000.
B. G._ a recouru contre la décision du 25 avril 2002 en concluant au versement d'une rente entière d'invalidité.
Par jugement du 17 mars 2004, le Tribunal cantonal des assurances sociales du canton de Genève a rejeté le recours formé contre la décision du 25 avril 2002 et constaté que la décision du 13 décembre 2001 était entrée en force.
Par jugement du 17 mars 2004, le Tribunal cantonal des assurances sociales du canton de Genève a rejeté le recours formé contre la décision du 25 avril 2002 et constaté que la décision du 13 décembre 2001 était entrée en force.
C. G._ interjette recours de droit administratif contre ce jugement. A titre principal, il demande au Tribunal fédéral des assurances d'en constater la nullité, avec suite de dépens. Subsidiairement, le recourant invite la Cour de céans à constater que son droit d'être jugé dans un délai raisonnable n'a pas été respecté; il conclut par ailleurs au versement d'une rente entière d'invalidité depuis le 22 février 2000, avec intérêts. Plus subsidiairement, il demande le renvoi de la cause à la juridiction cantonale.
L'intimé conclut au rejet du recours. L'Office fédéral des assurances sociales a renoncé à se déterminer.

Considérant en droit:
Considérant en droit:
1. 1.1 Dans un premier moyen, le recourant invoque une violation des art. 6 ch. 1 CEDH et 30 Cst., alléguant que le Tribunal cantonal des assurances sociales du canton de Genève, qui a rendu le jugement attaqué, est dépourvu de base constitutionnelle. A l'appui de ses conclusions, il se réfère à l'arrêt (entré en force) du Tribunal administratif du canton de Genève du 30 mars 2004 en la cause Dobler (cf. Plädoyer 3/04 p. 49) dans lequel cette autorité judiciaire a constaté l'inconstitutionnalité du Tribunal cantonal des assurances sociales.
1.2 Par arrêt du 1er juillet 2004, concernant Olivier Dobler, le Tribunal fédéral a jugé que l'existence du Tribunal cantonal des assurances sociales du canton de Genève trouve son fondement directement dans le droit fédéral, soit l'<ref-law>, à teneur duquel chaque canton institue un tribunal des assurances, qui statue en instance unique sur les recours dans le domaine des assurances sociales. Le Tribunal fédéral en a déduit qu'une base constitutionnelle cantonale expresse n'était pas nécessaire pour la création de cette juridiction de recours (<ref-ruling>-231 consid. 2.4 à 2.6).
La Cour de céans fait siens les considérants du Tribunal fédéral et y renvoie. Le grief soulevé se révèle dès lors infondé.
La Cour de céans fait siens les considérants du Tribunal fédéral et y renvoie. Le grief soulevé se révèle dès lors infondé.
2. 2.1 Le recourant soutient ensuite que la juridiction cantonale a violé son droit d'être jugé dans un délai raisonnable, contrevenant aux mêmes dispositions conventionnelles et constitutionnelles (art. 6 ch. 1 CEDH et 30 Cst.).
2.2 A la suite d'une notification irrégulière, la décision du 25 mars 2002 n'a été déférée à la juridiction de recours que le 18 novembre 2002. Au cours de ce procès, le recourant s'est exprimé une dernière fois le 25 mai 2003, après que les parties eurent répliqué et dupliqué. Quant au dernier acte de procédure, il est intervenu le 6 octobre 2003, à réception d'une écriture d'un tiers invité à témoigner.
Dans de telles circonstances et en faisant abstraction d'un éventuel retard qui aurait pu découler de l'annulation de l'élection des juges assesseurs (cf. <ref-ruling>), on doit admettre que la juridiction cantonale a statué dans un délai raisonnable en rendant son jugement seize mois après avoir été saisie du recours dirigé contre la décision du 25 avril 2002.
Dans de telles circonstances et en faisant abstraction d'un éventuel retard qui aurait pu découler de l'annulation de l'élection des juges assesseurs (cf. <ref-ruling>), on doit admettre que la juridiction cantonale a statué dans un délai raisonnable en rendant son jugement seize mois après avoir été saisie du recours dirigé contre la décision du 25 avril 2002.
3. Le litige porte sur le degré d'invalidité du recourant, singulièrement sur son droit à une rente entière d'invalidité.
La solution du litige ressortit aux art. 4 et 28 LAI, dans leur teneur en vigueur jusqu'au 31 décembre 2002 et 31 décembre 2003, respectivement.
La solution du litige ressortit aux art. 4 et 28 LAI, dans leur teneur en vigueur jusqu'au 31 décembre 2002 et 31 décembre 2003, respectivement.
4. 4.1 Le recourant fait grief aux responsables du COPAI d'avoir tenu compte d'activités incompatibles avec son état de santé, faussant ainsi l'évaluation de l'étendue de sa capacité de travail. En particulier, il allègue que les emplois retenus par le COPAI requièrent le port de charges de 10 kg, alors que son médecin traitant avait pourtant limité l'effort admissible à 3 kg. Par ailleurs, le recourant reproche à l'intimé d'avoir repris à son compte l'appréciation du COPAI lors de l'évaluation de son invalidité, sans s'être interrogé sur l'exigibilité des emplois en cause.
4.2 Le rapport de synthèse du COPAI du 13 février 2001 émane d'une institution de l'AI dont la fonction est de compléter les données médicales en examinant concrètement dans quelle mesure l'assuré est à même de mettre en valeur une capacité de travail et de gain sur le marché du travail (voir au surplus, à propos du rôle des COPAI pour l'évaluation de l'invalidité : L'instruction des possibilités de gain des personnes prétendant une rente, compte-rendu d'une séance du 10 novembre 1989 consacrée aux problèmes de l'expertise médicale et professionnelle, RCC 1990 p. 59 ss; Karl Abegg, Coup d'oeil sur l'activité des centres d'observation professionnelle de l'AI [COPAI]; Plädoyer 3/2004 p. 64). Quoi qu'en dise le recourant, les conclusions du COPAI (rapport du 13 février 2001) et de son médecin-conseil en particulier (rapport du 7 février 2001) rejoignent en grande partie celles de son médecin traitant, aussi bien quant à la nature des travaux qui demeurent exigibles de sa part que du rendement qu'il pourrait obtenir. La seule divergence, d'ailleurs fort peu significative, consiste dans l'étendue de la capacité de travail que les spécialistes du COPAI ont évaluée à 56 % au lieu de 50 % (soit un rendement de 75 % durant six heures de travail quotidien), après avoir eu l'occasion de suivre le recourant durant huit semaines de stage. Dans son appréciation, le docteur L._ a du reste clairement indiqué qu'il avait tenu compte d'activités professionnelles adaptées au handicap du recourant, à ses douleurs et à la fatigabilité qu'il éprouve, en précisant qu'elles impliquent l'absence de port de charge et la conservation de la mobilité.
A cet égard, on ne saurait suivre le recourant lorsqu'il affirme que les activités raisonnablement exigibles de sa part sont peu nombreuses, à l'instar de l'emploi de placeur au service de l'entreprise G._ qu'il occupe déjà. En effet, le marché du travail offre un large éventail d'activités simples et répétitives dans les secteurs de la production et des services, parmi lesquelles figure un nombre significatif d'emplois qui ne requièrent aucun port de charges (voir par ex. le consid. 6 de l'arrêt B. du 17 août 2004, I 732/03). Quant aux activités de surveillant, de magasinier dans un secteur léger, de livreur ou de coursier dans le tertiaire retenues par le COPAI (rapport, p. 16), elles ne sont déconseillées ni par le médecin traitant ni par le médecin-conseil du COPAI. Le recourant peut d'ailleurs requérir une aide au placement de la part de l'office intimé, conformément à l'<ref-law>, s'il entend mettre sa capacité de gain à profit dans l'une ou l'autre de ces activités.
A cet égard, on ne saurait suivre le recourant lorsqu'il affirme que les activités raisonnablement exigibles de sa part sont peu nombreuses, à l'instar de l'emploi de placeur au service de l'entreprise G._ qu'il occupe déjà. En effet, le marché du travail offre un large éventail d'activités simples et répétitives dans les secteurs de la production et des services, parmi lesquelles figure un nombre significatif d'emplois qui ne requièrent aucun port de charges (voir par ex. le consid. 6 de l'arrêt B. du 17 août 2004, I 732/03). Quant aux activités de surveillant, de magasinier dans un secteur léger, de livreur ou de coursier dans le tertiaire retenues par le COPAI (rapport, p. 16), elles ne sont déconseillées ni par le médecin traitant ni par le médecin-conseil du COPAI. Le recourant peut d'ailleurs requérir une aide au placement de la part de l'office intimé, conformément à l'<ref-law>, s'il entend mettre sa capacité de gain à profit dans l'une ou l'autre de ces activités.
5. Pour procéder à la comparaison des revenus, il convient de se placer au moment de la naissance possible du droit à la rente : les revenus avec et sans invalidité sont déterminés par rapport à un même moment; les modifications de ces revenus, susceptibles d'influencer le droit à la rente, survenues jusqu'au moment où la décision est rendue, sont également prises en compte (<ref-ruling>-224 consid. 4.2). En l'occurrence, la comparaison doit se faire au regard de la situation existant en février 2000, soit une année après le début de l'incapacité de travail dans l'ancienne activité de magasinier (cf. <ref-law>).
Le revenu annuel d'assuré valide de 52'000 fr., que l'administration et le premier juge ont pris en compte, n'est pas contesté en tant que tel et ne paraît pas critiquable. Il sera donc retenu pour appliquer l'<ref-law>.
Quant au revenu d'invalide, il doit être fixé à la lumière des statistiques salariales ressortant de l'enquête suisse sur la structure des salaires 2000 publiée par l'Office fédéral de la statistique. Il faut ainsi partir d'un gain déterminant, selon la table TA1 (p. 31), toutes activités confondues dans le secteur privé, de 4'437 fr. par mois (valeur standardisée) pour des travaux simples et répétitifs (niveau 4) exercés par un homme. Ce salaire mensuel hypothétique de 4'437 fr. se base sur une durée hebdomadaire de travail de 40 heures, inférieure à la moyenne usuelle dans les entreprises; il convient dès lors de l'ajuster à 41,8 heures par semaine (Annuaire statistique 2002, p. 207, T3.2.3.5), ce qui aboutit à un salaire mensuel de 4'636 fr., ou annuel de 55'640 fr., soit 31'158 fr. en tenant compte d'une capacité de travail de 56 %. Par conséquent, dans l'éventualité la plus favorable au recourant, en appliquant un facteur - maximal - de réduction de 25 % à ce gain annuel statistique (cf. <ref-ruling>, 126 V 75), on obtiendrait un degré d'invalidité de 55 % (23'368 / 52'000) correspondant à celui que l'administration a retenu dans sa décision litigieuse.

Par ces motifs, le Tribunal fédéral des assurances prononce:
Par ces motifs, le Tribunal fédéral des assurances prononce:
1. Le recours est rejeté.
1. Le recours est rejeté.
2. Il n'est pas perçu de frais de justice.
2. Il n'est pas perçu de frais de justice.
3. Le présent arrêt sera communiqué aux parties, au Tribunal cantonal des assurances sociales du canton de Genève et à l'Office fédéral des assurances sociales.
Lucerne, le 20 septembre 2004
Au nom du Tribunal fédéral des assurances
Le Président de la IVe Chambre: Le Greffier: